libgit2/tests
Patrick Steinhardt 0dea429978 ignore: allow unignoring basenames in subdirectories
The .gitignore file allows for patterns which unignore previous
ignore patterns. When unignoring a previous pattern, there are
basically three cases how this is matched when no globbing is
used:

1. when a previous file has been ignored, it can be unignored by
   using its exact name, e.g.

   foo/bar
   !foo/bar

2. when a file in a subdirectory has been ignored, it can be
   unignored by using its basename, e.g.

   foo/bar
   !bar

3. when all files with a basename are ignored, a specific file
   can be unignored again by specifying its path in a
   subdirectory, e.g.

   bar
   !foo/bar

The first problem in libgit2 is that we did not correctly treat
the second case. While we verified that the negative pattern
matches the tail of the positive one, we did not verify if it
only matches the basename of the positive pattern. So e.g. we
would have also negated a pattern like

    foo/fruz_bar
    !bar

Furthermore, we did not check for the third case, where a
basename is being unignored in a certain subdirectory again.

Both issues are fixed with this commit.
2016-10-01 17:41:28 +02:00
..
attr ignore: don't use realpath to canonicalize path 2016-04-11 15:58:58 -04:00
blame blame: use size_t for line counts in git_blame_hunk 2015-12-01 09:02:47 +01:00
buf buf test: cleanup memory leak 2015-02-13 09:28:12 -05:00
checkout checkout: use empty baseline when no index 2016-10-01 17:40:38 +02:00
cherrypick merge: rename git_merge_tree_flags_t -> git_merge_flags_t 2015-11-25 15:37:05 -05:00
clar clar: test chdir 2015-06-29 22:13:40 +00:00
clone clone::nonetwork: don't use fixed size buffer 2015-09-14 13:58:38 -04:00
commit commit: fix extraction of single-line signatures 2016-04-11 15:58:57 -04:00
config leaks: fix some leaks in the tests 2016-04-11 16:16:55 -04:00
core Fixed bug while parsing INT64_MIN 2016-10-01 17:40:40 +02:00
date Added RFC2822 date format test cases 2014-04-11 21:55:36 +02:00
describe describe: only abort without tags if fallback is not allowed. 2015-04-07 17:32:56 +02:00
diff tree: re-use the id and filename in the odb object 2016-04-11 15:58:58 -04:00
fetchhead index, iterator, fetchhead: plug leaks 2015-06-26 19:00:33 +02:00
filter wildcard filters: move CHANGELOG message to 0.23+1 2015-07-10 09:53:30 -05:00
graph Added a no path test for git_graph_descendant_of 2014-04-08 16:32:06 +02:00
index test: ensure we can round-trip a written tree 2016-10-01 17:40:37 +02:00
merge win32: introduce p_timeval that isn't stupid 2016-02-12 10:34:15 -08:00
network Tell the git_transport about the custom_headers 2015-09-08 14:02:33 -04:00
notes note: use a git_buf to return the default namespace 2015-03-17 20:50:02 +01:00
object threads: split up OS-dependent thread code 2016-10-01 17:40:38 +02:00
odb odb: Prioritize alternate backends 2015-10-14 20:53:01 +02:00
online refspec: do not set empty rhs for fetch refspecs 2016-10-01 17:40:41 +02:00
pack Silence unused return value warning 2014-09-26 12:12:09 +02:00
path index: allow read of index w/ illegal entries 2016-02-17 13:10:33 +00:00
perf repository: remove log message override for switching the active branch 2015-03-03 14:40:50 +01:00
rebase rebase: persist a single in-memory index 2016-02-15 19:27:06 +00:00
refs refs::create: strict object creation on by default 2016-04-11 15:58:58 -04:00
remote remote: test insteadOf for anonymous remotes 2015-05-31 13:26:05 +02:00
repo Fix repository discovery with ceiling_dirs at current directory 2016-10-01 17:40:40 +02:00
reset reset: use real ids for the tests 2016-04-11 15:58:58 -04:00
resources tests: use legitimate object ids 2016-02-28 18:54:56 -05:00
revert merge: rename git_merge_tree_flags_t -> git_merge_flags_t 2015-11-25 15:37:05 -05:00
revwalk merge: Fix memory leak in test 2015-11-02 13:47:04 +01:00
stash stash: const up conflict params 2015-06-29 21:23:09 +00:00
status ignore: allow unignoring basenames in subdirectories 2016-10-01 17:41:28 +02:00
stress diff: introduce binary diff callbacks 2015-06-12 09:39:20 -04:00
submodule typos in comments 2015-12-21 22:18:07 +03:00
threads threads: split up OS-dependent thread code 2016-10-01 17:40:38 +02:00
trace Include stacktrace summary in memory leak output. 2015-06-29 16:39:11 -04:00
transport tests: transport: fix memory leaks with registering transports 2016-04-11 14:15:28 -04:00
win32 Merge pull request #3613 from ethomson/fixups 2016-02-18 12:31:56 +01:00
clar_libgit2_timer.c Converted cl_perf_timer to use git__timer internally. 2015-03-03 09:57:50 -05:00
clar_libgit2_timer.h Converted cl_perf_timer to use git__timer internally. 2015-03-03 09:57:50 -05:00
clar_libgit2_trace.c Include stacktrace summary in memory leak output. 2015-06-29 16:39:11 -04:00
clar_libgit2_trace.h Provide mechanism to let CLAR globally setup git_trace() 2015-03-02 08:20:27 -05:00
clar_libgit2.c tests: use out-of-the-way config dir in sandbox 2015-11-17 11:22:01 -05:00
clar_libgit2.h git__getenv: utf-8 aware env reader 2015-07-02 16:35:43 +00:00
clar.c clar: update to 08f434d 2015-03-17 19:04:48 -04:00
clar.h Update to clar 2b73f5e 2015-02-27 00:30:50 -05:00
generate_crlf.sh crlf: script to generate expected crlf data 2015-06-22 11:59:58 -04:00
generate.py Update clar to e3985dd 2014-12-07 22:09:00 +08:00
main.c Include stacktrace summary in memory leak output. 2015-06-29 16:39:11 -04:00
README.md Rename tests-clar to tests 2013-11-14 14:05:52 -08:00
valgrind-supp-mac.txt Test cancel from indexer progress callback 2013-12-11 15:02:20 -08:00

Writing Clar tests for libgit2

For information on the Clar testing framework and a detailed introduction please visit:

https://github.com/vmg/clar

  • Write your modules and tests. Use good, meaningful names.

  • Make sure you actually build the tests by setting:

      cmake -DBUILD_CLAR=ON build/
    
  • Test:

      ./build/libgit2_clar
    
  • Make sure everything is fine.

  • Send your pull request. That's it.