THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

Git Source Code Mirror - This is a publish-only repository and all pull requests are ignored. Please follow Documentation/SubmittingPatches procedure for any of your improvements.
git
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Junio C Hamano 1ef3bd362a Merge branch 'dl/format-patch-doc-test-cleanup' 1 day ago
..
Git-SVN mark perl test scripts executable 5 years ago
chainlint chainlint: match "quoted" here-doc tags 1 year ago
diff-lib tests: do not borrow from COPYING and README from the real source 4 years ago
helper Merge branch 'ew/hashmap' 1 day ago
interop git-daemon: use 'test_atexit` to stop 'git-daemon' 7 months ago
lib-gpg t/t7510-signed-commit.sh: add signing subkey to Eris Discordia key 11 months ago
lib-httpd t/lib-httpd: pass LSAN_OPTIONS through apache 5 months ago
oid-info t: add test functions to translate hash-related values 1 year ago
perf t/perf: rename duplicate-numbered test script 2 months ago
t0013 t0013: add a basic sha1 collision detection test 2 years ago
t0019 tests: fix version-specific portability issue in Perl JSON 1 year ago
t0021 mingw: handle GITPERLLIB in t0021 in a Windows-compatible way 1 year ago
t0110 config: parse http.<url>.<variable> using urlmatch 6 years ago
t0200 i18n: add infrastructure for translating Git with gettext 7 years ago
t0202 i18n: add--interactive: mark patch prompt for translation 2 years ago
t0210 trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh 7 months ago
t0211 trace2: t/helper/test-trace2, t0210.sh, t0211.sh, t0212.sh 7 months ago
t0212 trace2: rename environment variables to GIT_TRACE2* 4 months ago
t1509 t1509: update prepare script to be able to run t1509 in chroot again 4 years ago
t3206 range-diff: don't segfault with mode-only changes 1 week ago
t3900 Add missing test file for UTF-16. 6 years ago
t3901 t3901: move supporting files into t/t3901/ 2 years ago
t4013 Merge branch 'nd/diff-parseopt' 4 months ago
t4018 userdiff: add a builtin pattern for dts files 1 month ago
t4020 t4020: don't use grep -a 11 years ago
t4034 userdiff: add a builtin pattern for dts files 1 month ago
t4051 t4051: add test for comments preceding function lines 1 year ago
t4100 Use correct grammar in diffstat summary line 7 years ago
t4101 Make t4101-apply-nonl bring along its patches 13 years ago
t4109 tests: do not rely on external "patch" 11 years ago
t4110 tests: do not rely on external "patch" 11 years ago
t4135 apply: handle patches with funny filename and colon in timezone 9 years ago
t4211 t4211: fix broken test when one -L range is subset of another 6 years ago
t4252 git-am: implement --reject option passed to git-apply 10 years ago
t4256/1 mailinfo: support format=flowed 1 year ago
t5000 t5000: make hash independent 3 months ago
t5003 t5003: check if unzip supports symlinks 6 years ago
t5004 archive-zip: add tests for big ZIP archives 2 years ago
t5100 Merge branch 'kd/mailinfo-quoted-string' 3 years ago
t5515 fetch --tags: fetch tags *in addition to* other stuff 6 years ago
t5562 t5562: fix perl path 10 months ago
t5801 Merge branch 'fc/fetch-with-import-fix' 3 months ago
t7500 commit: make default of "cleanup" option configurable 6 years ago
t7505 rebase -i: always update HEAD before rewording 1 month ago
t7519 fsmonitor: simplify determining the git worktree under Windows 1 year ago
t8005 Remove unused t/t8005/iso8859-5.txt 10 years ago
t9110 git-svn: fix useSvmProps, hopefully for the last time 12 years ago
t9111 War on whitespace 12 years ago
t9115 git-svn: fix commiting renames over DAV with funky file names 12 years ago
t9121 git-svn: fix following renamed paths when tracking a single path 11 years ago
t9126 git-svn: Always create a new RA when calling do_switch for svn:// 11 years ago
t9135 test case for regression caused by git-svn empty symlink fix 10 years ago
t9136 git-svn: fix delete+add branch tracking with empty files 10 years ago
t9150 mark perl test scripts executable 5 years ago
t9151 mark perl test scripts executable 5 years ago
t9153 git-svn: allow UUID to be manually remapped via rewriteUUID 9 years ago
t9154 git-svn: allow subset of branches/tags to be specified in glob spec 9 years ago
t9161 Disambiguate duplicate t9160* tests 8 years ago
t9350 fast-export: avoid stripping encoding header if we cannot reencode 5 months ago
t9601/cvsroot Add some tests of git-cvsimport's handling of vendor branches 10 years ago
t9602 Add a test of "git cvsimport"'s handling of tags and branches 10 years ago
t9603/cvsroot cvsimport: extend testcase about patchset order to contain branches 10 years ago
t9604/cvsroot git-cvsimport: allow author-specific timezones 7 years ago
t9700 t9700: add tests for Git::unquote_path() 2 years ago
valgrind valgrind: support test helpers 3 years ago
.gitattributes Merge branch 'js/mailinfo-format-flowed-fix' into maint 10 months ago
.gitignore tests: optionally write results as JUnit-style .xml 8 months ago
Makefile t/Makefile: add machinery to check correctness of chainlint.sed 1 year ago
README tests: make GIT_TEST_FAIL_PREREQS a boolean 3 months ago
aggregate-results.sh tests: print failed test numbers at the end of the test run 8 years ago
annotate-tests.sh blame: default to HEAD in a bare repo when no start commit is given 6 months ago
chainlint.sed Merge branch 'es/chain-lint-more' 1 year ago
check-non-portable-shell.pl check-non-portable-shell: support Perl versions older than 5.10 5 months ago
diff-lib.sh t: switch $_x40 to $OID_REGEX 1 year ago
gitweb-lib.sh gitweb tests: skip tests when we don't have Time::HiRes 2 years ago
lib-bash.sh test: replace shebangs with descriptions in shell libraries 5 years ago
lib-credential.sh t0302: check helper can handle empty credentials 1 year ago
lib-cvs.sh lib-cvs.sh: use the $( ... ) construct for command substitution 5 years ago
lib-diff-alternative.sh t/lib-diff-alternative: abstract away SHA-1-specific constants 1 year ago
lib-gettext.sh Merge branch 'js/test-git-installed' 11 months ago
lib-git-daemon.sh tests: replace test_tristate with "git env--helper" 3 months ago
lib-git-p4.sh git p4 test: disable '-x' tracing in the p4d watchdog loop 7 months ago
lib-git-svn.sh t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests 1 month ago
lib-gpg.sh Merge branch 'tz/gpg-test-fix' 8 months ago
lib-httpd.sh tests: replace test_tristate with "git env--helper" 3 months ago
lib-pack.sh Sync with Git 2.17.1 1 year ago
lib-pager.sh test: replace shebangs with descriptions in shell libraries 5 years ago
lib-patch-mode.sh t: add tests for restore 5 months ago
lib-proto-disable.sh t/lib-proto-disable: restore protocol.allow after config tests 2 years ago
lib-read-tree-m-3way.sh Rewrite "git-frotz" to "git frotz" 12 years ago
lib-read-tree.sh Merge branch 'jn/scripts-updates' 5 years ago
lib-rebase.sh t/lib-rebase: prepare for testing `git rebase --rebase-merges` 2 months ago
lib-submodule-update.sh t/lib-submodule-update: use appropriate length constant 6 months ago
lib-t6000.sh t: make many tests depend less on the refs being files 1 year ago
lib-terminal.sh t: prevent '-x' tracing from interfering with test helpers' stderr 1 year ago
t0000-basic.sh Merge branch 'dl/t0000-skip-test-test' 1 day ago
t0001-init.sh Merge branch 'jh/msvc' 3 months ago
t0002-gitfile.sh t0002: abstract away SHA-1 specific constants 1 year ago
t0003-attributes.sh attr: do not mark queried macros as unset 8 months ago
t0004-unwritable.sh t0004 (unwritable files): simplify error handling 9 years ago
t0005-signals.sh t/helper: merge test-sigchain into test-tool 1 year ago
t0006-date.sh Merge branch 'lt/date-human' 8 months ago
t0007-git-var.sh tests: mark two failing tests under FAIL_PREREQS 3 months ago
t0008-ignores.sh tests: make use of the test_must_be_empty function 1 year ago
t0009-prio-queue.sh prio-queue: add 'peek' operation 11 months ago
t0010-racy-git.sh t0010-racy-git.sh: use the $( ... ) construct for command substitution 5 years ago
t0011-hashmap.sh t: sort output of hashmap iteration 2 months ago
t0012-help.sh help -a: improve and make --verbose default 1 year ago
t0013-sha1dc.sh t/helper: merge test-sha1 into test-tool 1 year ago
t0014-alias.sh sq_quote_buf_pretty: don't drop empty arguments 1 week ago
t0015-hash.sh Add a base implementation of SHA-256 support 11 months ago
t0016-oidmap.sh t: sort output of hashmap iteration 2 months ago
t0017-env-helper.sh tests: make GIT_TEST_GETTEXT_POISON a boolean 3 months ago
t0019-json-writer.sh json_writer: new routines to create JSON data 1 year ago
t0020-crlf.sh Merge branch 'sg/t0020-conversion-fix' 1 year ago
t0021-conversion.sh t0021: make sure clean filter runs 1 month ago
t0022-crlf-rename.sh t0022: replace non-portable literal CR 9 years ago
t0023-crlf-am.sh diff --stat: use less columns for change counts 7 years ago
t0024-crlf-archive.sh test-lib: factor out $GIT_UNZIP setup 6 years ago
t0025-crlf-renormalize.sh add: use separate ADD_CACHE_RENORMALIZE flag 9 months ago
t0026-eol-config.sh Makefile: propagate NATIVE_CRLF to C 5 years ago
t0027-auto-crlf.sh t0027: make hash size independent 3 months ago
t0028-working-tree-encoding.sh t0028: add more tests 2 weeks ago
t0029-core-unsetenvvars.sh mingw: unset PERL5LIB by default 11 months ago
t0030-stripspace.sh stripspace: allow -s/-c outside git repository 9 months ago
t0040-parse-options.sh parse-options: allow --end-of-options as a synonym for "--" 2 months ago
t0041-usage.sh parse-options: do not show usage upon invalid option value 1 year ago
t0050-filesystem.sh dir: special case check for the possibility that pathspec is NULL 2 weeks ago
t0051-windows-named-pipe.sh mingw: fix mingw_open_append to work with named pipes 1 year ago
t0055-beyond-symlinks.sh Use prerequisite tags to skip tests that depend on symbolic links 10 years ago
t0056-git-C.sh git: treat "git -C '<path>'" as a no-op when <path> is empty 4 years ago
t0060-path-utils.sh Add a place for (not) sharing stuff between worktrees 1 year ago
t0061-run-command.sh t0061: fix test for argv[0] with spaces (MINGW only) 2 weeks ago
t0062-revision-walking.sh t/helper: merge test-revision-walking into test-tool 1 year ago
t0063-string-list.sh t/helper: merge test-string-list into test-tool 1 year ago
t0064-sha1-array.sh t0064: make hash size independent 1 year ago
t0065-strcmp-offset.sh t/helper: merge test-strcmp-offset into test-tool 1 year ago
t0066-dir-iterator.sh test-dir-iterator: do not assume errno values 2 months ago
t0070-fundamental.sh Merge branch 'jc/clean-after-sanity-tests' 1 year ago
t0081-line-buffer.sh test prerequisites: eradicate NOT_FOO 5 years ago
t0090-cache-tree.sh t0090: make test pass with SHA-256 3 months ago
t0100-previous.sh interpret_branch_name(): handle auto-namelen for @{-1} 2 years ago
t0101-at-syntax.sh t0101: use absolute date 9 years ago
t0110-urlmatch-normalization.sh t/helper: merge test-urlmatch-normalization into test-tool 1 year ago
t0200-gettext-basic.sh i18n: add infrastructure for translating Git with gettext 7 years ago
t0201-gettext-fallbacks.sh t: fix trivial &&-chain breakage 4 years ago
t0202-gettext-perl.sh t: use perl instead of "$PERL_PATH" where applicable 6 years ago
t0203-gettext-setlocale-sanity.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t0204-gettext-reencode-sanity.sh t0204: clarify the "observe undefined behaviour" test 7 years ago
t0205-gettext-poison.sh tests: make GIT_TEST_GETTEXT_POISON a boolean 3 months ago
t0210-trace2-normal.sh trace2: rename environment variables to GIT_TRACE2* 4 months ago
t0211-trace2-perf.sh trace2: cleanup whitespace in perf format 2 months ago
t0212-trace2-event.sh trace2: write discard message to sentinel files 1 week ago
t0300-credentials.sh tests: make use of the test_must_be_empty function 1 year ago
t0301-credential-cache.sh t0301-credential-cache: use 'test_atexit' to stop the credentials helper 7 months ago
t0302-credential-store.sh t0302 & t3900: add forgotten quotes 1 year ago
t0303-credential-external.sh t0303: resurrect commit message as test documentation 7 years ago
t0410-partial-clone.sh Merge branch 'cc/multi-promisor' 1 week ago
t0500-progress-display.sh Test the progress display 4 weeks ago
t556x_common t5561: get rid of racy appending to logfile 4 years ago
t1000-read-tree-m-3way.sh t: switch $_x40 to $OID_REGEX 1 year ago
t1001-read-tree-m-2way.sh t: switch $_x40 to $OID_REGEX 1 year ago
t1002-read-tree-m-u-2way.sh t: switch $_x40 to $OID_REGEX 1 year ago
t1003-read-tree-prefix.sh t1003-read-tree-prefix.sh: use the $( ... ) construct for command substitution 5 years ago
t1004-read-tree-m-u-wf.sh t1000-t1999: fix broken &&-chains 1 year ago
t1005-read-tree-reset.sh t1000-t1999: fix broken &&-chains 1 year ago
t1006-cat-file.sh Merge branch 'md/test-cleanup' 1 year ago
t1007-hash-object.sh t1007: remove SHA1 prerequisites 3 months ago
t1008-read-tree-overlay.sh t: use test_write_lines() instead of series of 'echo' commands 1 year ago
t1009-read-tree-new-index.sh read-tree: Fix regression with creation of a new index file. 10 years ago
t1010-mktree.sh t: use perl instead of "$PERL_PATH" where applicable 6 years ago
t1011-read-tree-sparse-checkout.sh tests: make use of the test_must_be_empty function 1 year ago
t1012-read-tree-df.sh t: switch $_x40 to $OID_REGEX 1 year ago
t1013-read-tree-submodule.sh Merge branch 'sb/submodule-blanket-recursive' 2 years ago
t1014-read-tree-confusing.sh read-cache: optionally disallow NTFS .git variants 4 years ago
t1015-read-index-unmerged.sh read-cache: fix directory/file conflict handling in read_index_unmerged() 1 year ago
t1020-subdirectory.sh t1000-t1999: fix broken &&-chains 1 year ago
t1021-rerere-in-workdir.sh rerere: make sure it works even in a workdir attached to a young repository 8 years ago
t1050-large.sh tests: avoid calling Perl just to determine file sizes 8 months ago
t1051-large-conversion.sh do not stream large files to pack when filters are in use 7 years ago
t1060-object-corruption.sh Merge branch 'jk/virtual-objects-do-exist' 7 months ago
t1090-sparse-checkout-scope.sh switch: no worktree status unless real branch switch happens 6 months ago
t1100-commit-tree-options.sh test-lib.sh: introduce and use $EMPTY_TREE 3 years ago
t1300-config.sh t: use common $SQ variable 1 month ago
t1301-shared-repo.sh init: make --template path relative to $CWD 5 months ago
t1302-repo-version.sh config: only read .git/config from configured repos 3 years ago
t1303-wacky-config.sh t/*: fix ordering of expected/observed arguments 1 year ago
t1304-default-acl.sh t1304: abstract away SHA-1-specific constants 1 year ago
t1305-config-include.sh Merge branch 'ab/test-env' 2 months ago
t1306-xdg-files.sh tests: make use of the test_must_be_empty function 1 year ago
t1307-config-blob.sh config: die when --blob is used outside a repository 1 year ago
t1308-config-set.sh builtin/config.c: mark more strings for translation 1 year ago
t1309-early-config.sh config: stop checking whether the_repository is NULL 2 months ago
t1310-config-default.sh builtin/config: introduce `--default` 1 year ago
t1350-config-hooks-path.sh rev-parse: respect core.hooksPath in --git-path 3 years ago
t1400-update-ref.sh Merge branch 'ma/t1400-undebug-test' 1 year ago
t1401-symbolic-ref.sh t: make many tests depend less on the refs being files 1 year ago
t1402-check-ref-format.sh check-ref-format --branch: do not expand @{...} outside repository 2 years ago
t1403-show-ref.sh tests: make use of the test_must_be_empty function 1 year ago
t1404-update-ref-errors.sh t: use common $SQ variable 1 month ago
t1405-main-ref-store.sh t1405: make hash size independent 1 year ago
t1406-submodule-ref-store.sh t1406: make hash-size independent 1 year ago
t1407-worktree-ref-store.sh t1407: make hash size independent 1 year ago
t1408-packed-refs.sh t1408: add a test of stale packed refs covered by loose refs 2 years ago
t1409-avoid-packing-refs.sh files-backend: don't rewrite the `packed-refs` file unnecessarily 1 year ago
t1410-reflog.sh t1410: make hash size independent 3 months ago
t1411-reflog-show.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t1412-reflog-loop.sh test: fix '&&' chaining 7 years ago
t1413-reflog-detach.sh reflog test: test interaction with detached HEAD 5 years ago
t1414-reflog-walk.sh t: use common $SQ variable 1 month ago
t1415-worktree-refs.sh Make sure refs/rewritten/ is per-worktree 7 months ago
t1420-lost-found.sh git-fsck: add --lost-found option 12 years ago
t1430-bad-ref-name.sh branch: correctly reject refs/heads/{-dash,HEAD} 1 year ago
t1450-fsck.sh tests: remove "cat foo" before "test_i18ngrep bar foo" 1 week ago
t1500-rev-parse.sh rev-parse: --show-superproject-working-tree should work during a merge 1 year ago
t1501-work-tree.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t1502-rev-parse-parseopt.sh parse-options: only insert newline in help text if needed 2 years ago
t1503-rev-parse-verify.sh files_read_raw_ref: avoid infinite loop on broken symlinks 3 years ago
t1504-ceiling-dirs.sh Provide a mechanism to turn off symlink resolution in ceiling paths 6 years ago
t1505-rev-parse-last.sh tests: move test_cmp_rev to test-lib-functions 6 years ago
t1506-rev-parse-diagnosis.sh Merge branch 'rs/nth-parent-parse' 1 week ago
t1507-rev-parse-upstream.sh t: use common $SQ variable 1 month ago
t1508-at-combinations.sh mingw: skip test in t1508 that fails due to path conversion 3 years ago
t1509-root-work-tree.sh tests: rename work-tree tests to *work-tree* 3 years ago
t1510-repo-setup.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t1511-rev-parse-caret.sh Merge branch 'wp/sha1-name-negative-match' 3 years ago
t1512-rev-parse-disambiguation.sh t1512: test ambiguous cat-file --batch and --batch-output 8 months ago
t1513-rev-parse-prefix.sh rev-parse: add --prefix option 6 years ago
t1514-rev-parse-push.sh rev-parse: match @{upstream}, @{u} and @{push} case-insensitively 2 years ago
t1515-rev-parse-outside-repo.sh rev-parse: let some options run outside repository 3 years ago
t1600-index.sh repo-settings: create feature.manyFiles setting 2 months ago
t1601-index-bogus.sh t: switch $_z40 to $ZERO_OID 1 year ago
t1700-split-index.sh t1710: make hash independent 3 months ago
t1701-racy-split-index.sh split-index: smudge and add racily clean cache entries to split index 1 year ago
t2000-conflict-when-checking-files-out.sh t2000: rename and combine checkout clash tests 11 months ago
t2002-checkout-cache-u.sh Use the modern syntax of git-diff-files in t2002-checkout-cache-u.sh 11 years ago
t2003-checkout-cache-mkdir.sh t2003: work around path mangling issue on Windows 6 years ago
t2004-checkout-cache-temp.sh checkout-index: fix --temp relative path mangling 4 years ago
t2005-checkout-index-symlinks.sh Avoid using non-portable `echo -n` in tests. 11 years ago
t2006-checkout-index-basic.sh Fix tests under GETTEXT_POISON on parseopt 7 years ago
t2007-checkout-symlink.sh tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases) 6 years ago
t2008-checkout-subdir.sh checkout test: enable test with complex relative path 6 years ago
t2009-checkout-statinfo.sh Write index file on any checkout of files 11 years ago
t2010-checkout-ambiguous.sh checkout: fix ambiguity check in subdir 3 years ago
t2011-checkout-invalid-head.sh t: switch $_z40 to $ZERO_OID 1 year ago
t2012-checkout-last.sh checkout: respect GIT_REFLOG_ACTION 6 years ago
t2013-checkout-submodule.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t2014-checkout-switch.sh t: rename t2014-switch.sh to t2014-checkout-switch.sh 6 months ago
t2015-checkout-unborn.sh checkout: do not corrupt HEAD on empty repo 7 years ago
t2016-checkout-patch.sh t: use test_write_lines() instead of series of 'echo' commands 1 year ago
t2017-checkout-orphan.sh git-checkout: disallow --detach on unborn branch 7 years ago
t2018-checkout-branch.sh branch: make create_branch accept a merge base rev 5 months ago
t2019-checkout-ambiguous-ref.sh check_filename: tighten dwim-wildcard ambiguity 3 years ago
t2020-checkout-detach.sh doc: promote "git switch" 6 months ago
t2021-checkout-overwrite.sh tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases) 6 years ago
t2022-checkout-paths.sh checkout.c: unstage empty deleted ita files 2 months ago
t2023-checkout-m.sh unpack-trees: fix oneway_merge accidentally carry over stage index 6 months ago
t2024-checkout-dwim.sh checkout: disambiguate dwim tracking branches and local files 11 months ago
t2025-checkout-no-overlay.sh revert "checkout: introduce checkout.overlayMode config" 8 months ago
t2030-unresolve-info.sh rerere forget: do not segfault if not all stages are present 6 years ago
t2050-git-dir-relative.sh tests: add missing && 9 years ago
t2060-switch.sh t: add tests for switch 6 months ago
t2070-restore.sh restore: add test for deleted ita files 2 months ago
t2071-restore-patch.sh t: add tests for restore 5 months ago
t2100-update-cache-badpath.sh Use prerequisite tags to skip tests that depend on symbolic links 10 years ago
t2101-update-index-reupdate.sh t/*: fix ordering of expected/observed arguments 1 year ago
t2102-update-index-symlinks.sh t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution 3 years ago
t2103-update-index-ignore-missing.sh t2000-t2999: fix broken &&-chains 1 year ago
t2104-update-index-skip-worktree.sh t/helper: merge test-index-version into test-tool 1 year ago
t2105-update-index-gitfile.sh t2105 (gitfile): add missing && 9 years ago
t2106-update-index-assume-unchanged.sh do not overwrite files marked "assume unchanged" 9 years ago
t2107-update-index-basic.sh t: switch $_z40 to $ZERO_OID 1 year ago
t2200-add-update.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t2201-add-update-typechange.sh t: switch $_z40 to $ZERO_OID 1 year ago
t2202-add-addremove.sh Merge branch 'ab/test-must-be-empty-for-master' 1 year ago
t2203-add-intent.sh t2203: avoid hard-coded object ID values 3 months ago
t2204-add-ignored.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t2300-cd-to-toplevel.sh t2300: "git --exec-path" is not usable in $PATH on Windows as-is 3 years ago
t2400-worktree-add.sh Merge branch 'nd/corrupt-worktrees' 4 months ago
t2401-worktree-prune.sh move worktree tests to t24* 9 months ago
t2402-worktree-list.sh move worktree tests to t24* 9 months ago
t2403-worktree-move.sh Merge branch 'tg/checkout-no-overlay' 7 months ago
t2404-worktree-config.sh move worktree tests to t24* 9 months ago
t3000-ls-files-others.sh t3000 (ls-files -o): widen description to reflect current tests 6 months ago
t3001-ls-files-others-exclude.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t3002-ls-files-dashpath.sh tests: do not use implicit "git diff --no-index" 11 years ago
t3003-ls-files-exclude.sh ls-files: unbreak "ls-files -i" 10 years ago
t3004-ls-files-basic.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t3005-ls-files-relative.sh Merge branch 'dl/use-sq-from-test-lib' 2 weeks ago
t3006-ls-files-long.sh t3000-t3999: fix broken &&-chains 1 year ago
t3007-ls-files-recurse-submodules.sh ls-files: use repository object 2 years ago
t3008-ls-files-lazy-init-name-hash.sh t3000-t3999: fix broken &&-chains 1 year ago
t3009-ls-files-others-nonsubmodule.sh dir: do not traverse repositories with no commits 6 months ago
t3010-ls-files-killed-modified.sh t: fix some trivial cases of ignored exit codes in loops 4 years ago
t3020-ls-files-error-unmatch.sh Merge branch 'sg/t3020-typofix' 4 years ago
t3030-merge-recursive.sh Merge branch 'en/merge-recursive-cleanup' 1 day ago
t3031-merge-criscross.sh t3031: update test description to mention desired behavior 1 year ago
t3032-merge-recursive-space-options.sh t3034: add rename threshold tests 3 years ago
t3033-merge-toplevel.sh t3033: avoid 'ambiguous refs' warning 3 years ago
t3034-merge-recursive-rename-options.sh merge: add merge.renames config setting 1 year ago
t3035-merge-sparse.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t3040-subprojects-basic.sh print_sha1_ellipsis: introduce helper 1 year ago
t3050-subprojects-fetch.sh t3000-t3999: fix broken &&-chains 1 year ago
t3060-ls-files-with-tree.sh t: simplify loop exit-code status variables 4 years ago
t3070-wildmatch.sh Merge branch 'nd/wildmatch-double-asterisk' 11 months ago
t3100-ls-tree-restrict.sh t: switch $_x40 to $OID_REGEX 1 year ago
t3101-ls-tree-dirname.sh t: switch $_x40 to $OID_REGEX 1 year ago
t3102-ls-tree-wildcards.sh t: drop unnecessary terminating semicolon in subshell 1 year ago
t3103-ls-tree-misc.sh t3103: abstract away SHA-1-specific constants 1 year ago
t3200-branch.sh Merge branch 'nb/branch-show-other-worktrees-head' 3 months ago
t3201-branch-contains.sh t3201: abstract away SHA-1-specific constants 1 month ago
t3202-show-branch-octopus.sh t: fix some trivial cases of ignored exit codes in loops 4 years ago
t3203-branch-output.sh Merge branch 'nb/branch-show-other-worktrees-head' 3 months ago
t3204-branch-name-interpretation.sh checkout: restrict @-expansions when finding branch 2 years ago
t3205-branch-color.sh t3205: use --color instead of color.branch=always 2 years ago
t3206-range-diff.sh Merge branch 'tg/range-diff-output-update' 1 day ago
t3210-pack-refs.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t3211-peel-ref.sh repack_without_ref(): write peeled refs in the rewritten file 6 years ago
t3300-funny-names.sh mingw: do not bother to test funny file names 3 years ago
t3301-notes.sh t3301: abstract away SHA-1-specific constants 1 month ago
t3302-notes-index-expensive.sh tests: drop GIT_*_TIMING_TESTS environment variable support 5 years ago
t3303-notes-subtrees.sh notes.c: Use two newlines (instead of one) when concatenating notes 9 years ago
t3304-notes-mixed.sh builtin-notes: Deprecate the -m/-F options for "git notes edit" 9 years ago
t3305-notes-fanout.sh t3305: make hash size independent 1 month ago
t3306-notes-prune.sh t3306: abstract away SHA-1-specific constants 1 month ago
t3307-notes-man.sh tests: cleanup binary test vector files 8 years ago
t3308-notes-merge.sh tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>' 1 year ago
t3309-notes-merge-auto-resolve.sh notes: teach git-notes about notes.<name>.mergeStrategy option 4 years ago
t3310-notes-merge-manual-resolve.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t3311-notes-merge-fanout.sh t3311: use test_commit_bulk 3 months ago
t3320-notes-merge-worktrees.sh t/*: fix ordering of expected/observed arguments 1 year ago
t3400-rebase.sh Merge branch 'dl/rebase-i-keep-base' 2 weeks ago
t3401-rebase-and-am-rename.sh merge-recursive: switch directory rename detection default 6 months ago
t3402-rebase-merge.sh t3000-t3999: fix broken &&-chains 1 year ago
t3403-rebase-skip.sh t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution 3 years ago
t3404-rebase-interactive.sh Merge branch 'pw/rebase-i-show-HEAD-to-reword' 5 days ago
t3405-rebase-malformed.sh sequencer: fix --allow-empty-message behavior, make it smarter 1 year ago
t3406-rebase-message.sh rebase: implement --merge via the interactive machinery 9 months ago
t3407-rebase-abort.sh rebase: add --quit to cleanup rebase, leave everything else untouched 2 years ago
t3408-rebase-multi-line.sh tests: optionally skip `git rebase -p` tests 11 months ago
t3409-rebase-preserve-merges.sh tests: optionally skip `git rebase -p` tests 11 months ago
t3410-rebase-preserve-dropped-merges.sh tests: optionally skip `git rebase -p` tests 11 months ago
t3411-rebase-preserve-around-merges.sh tests: optionally skip `git rebase -p` tests 11 months ago
t3412-rebase-root.sh tests: optionally skip `git rebase -p` tests 11 months ago
t3413-rebase-hook.sh tests: use "env" to run commands with temporary env-var settings 5 years ago
t3414-rebase-preserve-onto.sh tests: optionally skip `git rebase -p` tests 11 months ago
t3415-rebase-autosquash.sh tests (rebase): spell out the `--force-rebase` option 6 months ago
t3416-rebase-onto-threedots.sh rebase: teach rebase --keep-base 1 month ago
t3417-rebase-whitespace-fix.sh t/*: fix ordering of expected/observed arguments 1 year ago
t3418-rebase-continue.sh Merge branch 'js/rebase-r-strategy' 3 weeks ago
t3419-rebase-patch-id.sh t9100,t3419: enclose all test code in single-quotes 3 years ago
t3420-rebase-autostash.sh builtin/rebase.c: Remove pointless message 1 month ago
t3421-rebase-topology-linear.sh rebase tests: test linear branch topology 1 month ago
t3422-rebase-incompatible-options.sh rebase -r: support merge strategies other than `recursive` 2 months ago
t3423-rebase-reword.sh sequencer: do not squash 'reword' commits when we hit conflicts 1 year ago
t3425-rebase-topology-merges.sh rebase: define linearization ordering and enforce it 9 months ago
t3426-rebase-submodule.sh wt-status: actually ignore submodules when requested 1 year ago
t3427-rebase-subtree.sh t3427: accelerate this test by using fast-export and fast-import 1 month ago
t3428-rebase-signoff.sh rebase: extend --signoff support 1 year ago
t3429-rebase-edit-todo.sh rebase -i: check for updated todo after squash and reword 1 month ago
t3430-rebase-merges.sh Merge branch 'dl/use-sq-from-test-lib' 2 weeks ago
t3431-rebase-fork-point.sh rebase: teach rebase --keep-base 1 month ago
t3432-rebase-fast-forward.sh rebase: teach rebase --keep-base 1 month ago
t3500-cherry.sh war on "sleep" in tests 9 years ago
t3501-revert-cherry-pick.sh merge-recursive: avoid triggering add_cacheinfo error with dirty mod 1 year ago
t3502-cherry-pick-merge.sh t3502: validate '-m 1' argument is now accepted for non-merge commits 9 months ago
t3503-cherry-pick-root.sh Merge branch 'jn/plug-empty-tree-leak' 8 years ago
t3504-cherry-pick-rerere.sh cherry-pick/revert: reject --rerere-autoupdate when continuing 2 years ago
t3505-cherry-pick-empty.sh sequencer: fix --allow-empty-message behavior, make it smarter 1 year ago
t3506-cherry-pick-ff.sh t3506: make hash independent 1 month ago
t3507-cherry-pick-conflict.sh Merge branch 'pw/clean-sequencer-state-upon-final-commit' 5 months ago
t3508-cherry-pick-many-commits.sh commit: print "Date" line when the user has set date 5 years ago
t3509-cherry-pick-merge-df.sh typofix: commit is spelled with two ems 6 years ago
t3510-cherry-pick-sequence.sh cherry-pick/revert: advise using --skip 3 months ago
t3511-cherry-pick-x.sh sequencer: fix cleanup with --signoff and -x 6 months ago
t3512-cherry-pick-submodule.sh Merge branch 'pw/sequencer-in-process-commit' 1 year ago
t3513-revert-submodule.sh t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 1 year ago
t3600-rm.sh t3600: make hash size independent 1 month ago
t3700-add.sh add: error appropriately on repository with no commits 6 months ago
t3701-add-interactive.sh add -i: show progress counter in the prompt 1 week ago
t3702-add-edit.sh t/*: fix ordering of expected/observed arguments 1 year ago
t3703-add-magic-pathspec.sh mingw: do not bother to test funny file names 3 years ago
t3800-mktag.sh t3800: make hash-size independent 1 month ago
t3900-i18n-commit.sh t3900: add some more quotes 1 year ago
t3901-i18n-patch.sh t3901: move supporting files into t/t3901/ 2 years ago
t3902-quoted.sh mingw: do not bother to test funny file names 3 years ago
t3903-stash.sh Merge branch 'tg/stash-refresh-index' 1 week ago
t3904-stash-patch.sh t: use test_write_lines() instead of series of 'echo' commands 1 year ago
t3905-stash-include-untracked.sh built-in stash: handle :(glob) pathspecs again 7 months ago
t3906-stash-submodule.sh stash: add t3906 for submodule updates 5 years ago
t3907-stash-show-config.sh stash: add tests for `git stash show` config 7 months ago
t3908-stash-in-worktree.sh stash apply: report status correctly even in a worktree's subdirectory 1 week ago
t3910-mac-os-precompose.sh tests: make use of the test_must_be_empty function 1 year ago
t4000-diff-format.sh t4000: make hash size independent 1 month ago
t4001-diff-rename.sh t4000-t4999: fix broken &&-chains 1 year ago
t4002-diff-basic.sh t4002: make hash independent 1 month ago
t4003-diff-rename-1.sh tests: do not borrow from COPYING and README from the real source 4 years ago
t4004-diff-rename-symlink.sh diffcore-rename: properly honor the difference between -M and -C 8 years ago
t4005-diff-rename-2.sh t4005: modernize style and drop hard coded sha1 2 years ago
t4006-diff-mode.sh t4006: resurrect commented-out tests 8 months ago
t4007-rename-3.sh t4007: abstract away SHA-1-specific constants 1 year ago
t4008-diff-break-rewrite.sh t4008: abstract away SHA-1-specific constants 1 year ago
t4009-diff-rename-4.sh t4009: make hash size independent 1 month ago
t4010-diff-pathspec.sh Merge branch 'ab/test-must-be-empty-for-master' 1 year ago
t4011-diff-symlink.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t4012-diff-binary.sh t: use test_might_fail() instead of manipulating exit code manually 1 year ago
t4013-diff-various.sh t: use LF variable defined in the test harness 1 month ago
t4014-format-patch.sh t4014: treat rev-list output as the expected value 1 week ago
t4015-diff-whitespace.sh Merge branch 'jk/xdiff-clamp-funcname-context-index' 2 months ago
t4016-diff-quote.sh mingw: do not bother to test funny file names 3 years ago
t4017-diff-retval.sh t4017 (diff-retval): replace manual exit code check with test_expect_code 9 years ago
t4018-diff-funcname.sh userdiff: add a builtin pattern for dts files 1 month ago
t4019-diff-wserror.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t4020-diff-external.sh t4020: abstract away SHA-1-specific constants 1 year ago
t4021-format-patch-numbered.sh format-patch: show 0/1 and 1/1 for singleton patch with cover letter 3 years ago
t4022-diff-rewrite.sh t4022: abstract away SHA-1-specific constants 1 year ago
t4023-diff-rename-typechange.sh diff -B -M: fix output for "copy and then rewrite" case 5 years ago
t4024-diff-optimize-common.sh t4000-t4999: fix broken &&-chains 1 year ago
t4025-hunk-header.sh t/*: fix ordering of expected/observed arguments 1 year ago
t4026-color.sh color_parse_mem: allow empty color spec 2 years ago
t4027-diff-submodule.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t4028-format-patch-mime-headers.sh format-patch: generate MIME header as needed even when there is format.header 11 years ago
t4029-diff-trailing-space.sh t4029: abstract away SHA-1-specific constants 1 year ago
t4030-diff-textconv.sh t4030: abstract away SHA-1-specific constants 1 year ago
t4031-diff-rewrite-binary.sh tests: enclose $PERL_PATH in double quotes 7 years ago
t4032-diff-inter-hunk-context.sh diff: add interhunk context config option 2 years ago
t4033-diff-patience.sh diff: fix a double off-by-one with --ignore-space-at-eol 3 years ago
t4034-diff-words.sh userdiff: add a builtin pattern for dts files 1 month ago
t4035-diff-quiet.sh t/helper: merge test-chmtime into test-tool 1 year ago
t4036-format-patch-signer-mime.sh t4036-format-patch-signer-mime.sh: use the $( ... ) construct for command substitution 5 years ago
t4037-diff-r-t-dirs.sh diff-tree -r -t: include added/removed directories in the output 10 years ago
t4038-diff-combined.sh t4038: Remove non-portable '-a' option passed to test_cmp 2 weeks ago
t4039-diff-assume-unchanged.sh tests: make use of the test_must_be_empty function 1 year ago
t4040-whitespace-status.sh Merge branch 'jk/diff-not-so-quick' 8 years ago
t4041-diff-submodule-option.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t4042-diff-textconv-caching.sh t4042: abstract away SHA-1-specific constants 1 year ago
t4043-diff-rename-binary.sh diffstat summary line varies by locale: miscellany 7 years ago
t4044-diff-index-unique-abbrev.sh t4044: skip test if not using SHA-1 1 year ago
t4045-diff-relative.sh t4045: abstract away SHA-1-specific constants 1 year ago
t4046-diff-unmerged.sh t: switch $_z40 to $ZERO_OID 1 year ago
t4047-diff-dirstat.sh tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>' 1 year ago
t4048-diff-combined-binary.sh combine-diff: respect textconv attributes 8 years ago
t4049-diff-stat-count.sh t: fix trivial &&-chain breakage 4 years ago
t4050-diff-histogram.sh Make test number unique 8 years ago
t4051-diff-function-context.sh Merge branch 'sg/t4051-fix' 1 year ago
t4052-stat-output.sh format-patch: respect --stat in cover letter's diffstat 11 months ago
t4053-diff-no-index.sh Merge branch 'nd/diff-parseopt-4' 5 months ago
t4054-diff-bogus-tree.sh t: switch $_z40 to $ZERO_OID 1 year ago
t4055-diff-context.sh rewrite git_config() to use the config-set API 5 years ago
t4056-diff-order.sh diff: make -O and --output work in subdirectory 3 years ago
t4057-diff-combined-paths.sh t4057-diff-combined-paths.sh: use the $( ... ) construct for command substitution 5 years ago
t4058-diff-duplicates.sh t: switch $_z40 to $ZERO_OID 1 year ago
t4059-diff-submodule-not-initialized.sh submodule: correct error message for missing commits 2 years ago
t4060-diff-submodule-option-diff-format.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t4061-diff-indent.sh diff: enable indent heuristic by default 2 years ago
t4062-diff-pickaxe.sh Merge branch 'rs/t4062-obsd' 2 years ago
t4063-diff-blobs.sh diff: use blob path for blob/file diffs 2 years ago
t4064-diff-oidfind.sh diffcore: add a pickaxe option to find a specific blob 1 year ago
t4065-diff-anchored.sh diff: support anchoring line(s) 1 year ago
t4066-diff-emit-delay.sh diff: clear emitted_symbols flag after use 8 months ago
t4067-diff-partial-clone.sh diff: skip GITLINK when lazy fetching missing objs 1 month ago
t4100-apply-stat.sh test: use test_i18ncmp when checking --stat output 7 years ago
t4101-apply-nonl.sh tests: use $TEST_DIRECTORY to refer to the t/ directory 11 years ago
t4102-apply-rename.sh t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>" 5 years ago
t4103-apply-binary.sh t: use perl instead of "$PERL_PATH" where applicable 6 years ago
t4104-apply-boundary.sh t4104: drop hand-rolled error reporting 4 years ago
t4105-apply-fuzz.sh add test_cmp function for test scripts 11 years ago
t4106-apply-stdin.sh Resurrect "git apply --flags -" to read from the standard input 10 years ago
t4107-apply-ignore-whitespace.sh apply: update line lengths for --inaccurate-eof 1 year ago
t4108-apply-threeway.sh apply: tests for the --3way option 7 years ago
t4109-apply-multifrag.sh tests: do not rely on external "patch" 11 years ago
t4110-apply-scan.sh tests: do not rely on external "patch" 11 years ago
t4111-apply-subdir.sh apply: carefully strdup a possibly-NULL name 6 years ago
t4112-apply-renames.sh apply: fix copy/rename breakage 11 years ago
t4113-apply-ending.sh t/: Use "test_must_fail git" instead of "! git" 11 years ago
t4114-apply-typechange.sh t3509, t4023, t4114: use test_ln_s_add to remove SYMLINKS prerequisite 6 years ago
t4115-apply-symlink.sh tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases) 6 years ago
t4116-apply-reverse.sh tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>' 1 year ago
t4117-apply-reject.sh t/*: fix ordering of expected/observed arguments 1 year ago
t4118-apply-empty-context.sh t4118: avoid sed invocation on file without terminating newline 10 years ago
t4119-apply-config.sh Merge branch 'jc/apply-ws-prefix' 5 years ago
t4120-apply-popt.sh test: make FILEMODE a lazy prereq 5 years ago
t4121-apply-diffs.sh t4000-t4999: fix broken &&-chains 1 year ago
t4122-apply-symlink-inside.sh Merge branch 'jc/apply-beyond-symlink' 4 years ago
t4123-apply-shrink.sh git-apply: do not read past the end of buffer 12 years ago
t4124-apply-ws-rule.sh t/*: fix ordering of expected/observed arguments 1 year ago
t4125-apply-ws-fuzz.sh fix portability issues with $ in double quotes 9 years ago
t4126-apply-empty.sh t4126: fix test that happened to work due to timing 11 years ago
t4127-apply-same-fn.sh tests: add missing && 9 years ago
t4128-apply-root.sh builtin-apply.c: pay attention to -p<n> when determining the name 10 years ago
t4129-apply-samemode.sh apply: check git diffs for invalid file modes 2 years ago
t4130-apply-criss-cross-rename.sh t4130: work around Windows limitation 3 years ago
t4131-apply-fake-ancestor.sh t/t4131-apply-fake-ancestor.sh: fix broken test 7 years ago
t4132-apply-removal.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t4133-apply-filenames.sh apply: check git diffs for missing old filenames 2 years ago
t4134-apply-submodule.sh tests: add missing && 9 years ago
t4135-apply-weird-filenames.sh t: factor out FUNNYNAMES as shared lazy prereq 1 year ago
t4136-apply-check.sh apply --recount: allow "no-op hunks" 11 months ago
t4137-apply-submodule.sh apply: add t4137 for submodule updates 5 years ago
t4138-apply-ws-expansion.sh t/*: fix ordering of expected/observed arguments 1 year ago
t4139-apply-escape.sh apply: do not touch a file beyond a symbolic link 4 years ago
t4150-am.sh am: reload .gitattributes after patching it 1 month ago
t4151-am-abort.sh t/helper: merge test-chmtime into test-tool 1 year ago
t4152-am-subjects.sh format-patch: preserve subject newlines with -k 8 years ago
t4153-am-resume-override-opts.sh t4153: fix negated test_i18ngrep call 3 years ago
t4200-rerere.sh Merge branch 'en/rerere-multi-stage-1-fix' 1 year ago
t4201-shortlog.sh tests: use 'test_must_be_empty' instead of 'test ! -s' 1 year ago
t4202-log.sh Merge branch 'rs/simplify-by-deco-with-deco-refs-exclude' 1 week ago
t4203-mailmap.sh log: really flip the --mailmap default 2 months ago
t4204-patch-id.sh Merge branch 'jk/setup-sequence-update' 3 years ago
t4205-log-pretty-formats.sh Merge branch 'aw/pretty-trailers' 7 months ago
t4206-log-follow-harder-copies.sh tests: rename duplicate t4205 9 years ago
t4207-log-decoration-colors.sh t: use test_decode_color rather than literal ANSI codes 2 years ago
t4208-log-magic-pathspec.sh Merge branch 'wc/find-commit-with-pattern-on-detached-head' 1 year ago
t4209-log-pickaxe.sh log -G: ignore binary files 9 months ago
t4210-log-i18n.sh t4210: skip more command-line encoding tests on MinGW 3 months ago
t4211-line-log.sh line-log: avoid unnecessary full tree diffs 1 month ago
t4212-log-corrupt.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t4213-log-tabexpand.sh Spelling fixes 2 years ago
t4214-log-graph-octopus.sh t4214: demonstrate octopus graph coloring failure 1 week ago
t4252-am-options.sh tests: add missing && 9 years ago
t4253-am-keep-cr-dos.sh t4253-am-keep-cr-dos: avoid using pipes 5 months ago
t4254-am-corrupt.sh am: move advice.amWorkDir parsing back to advice.c 1 year ago
t4255-am-submodule.sh format-patch: ignore diff.submodule setting 4 years ago
t4256-am-format-flowed.sh mailinfo: support format=flowed 1 year ago
t4257-am-interactive.sh am: fix --interactive HEAD tree resolution 4 months ago
t4300-merge-tree.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t5000-tar-tree.sh t5000: make hash independent 3 months ago
t5001-archive-attr.sh archive: don't add empty directories to archives 2 years ago
t5002-archive-attr-pattern.sh archive: don't add empty directories to archives 2 years ago
t5003-archive-zip.sh archive: initialize archivers earlier 11 months ago
t5004-archive-corner-cases.sh archive-tar: turn length miscalculation warning into BUG 1 month ago
t5100-mailinfo.sh Merge branch 'km/test-mailinfo-b-failure' 2 years ago
t5150-request-pull.sh request-pull: warn if the remote object is not the same as the local one 4 months ago
t5200-update-server-info.sh update-server-info: avoid needless overwrites 5 months ago
t5300-pack-object.sh pack-objects tests: don't leave test .git corrupt at end 11 months ago
t5301-sliding-window.sh t/helper: merge test-genrandom into test-tool 1 year ago
t5302-pack-index.sh t5000-t5999: fix broken &&-chains 1 year ago
t5303-pack-corruption-resilience.sh t5303: use printf to generate delta bases 1 year ago
t5304-prune.sh t5304: add a test for pruning with bitmaps 6 months ago
t5305-include-tag.sh pack-objects: walk tag chains for --include-tag 3 years ago
t5306-pack-nobase.sh pack-objects: Allow missing base objects when creating thin packs 11 years ago
t5307-pack-missing-commit.sh commit-graph: turn on commit-graph by default 2 months ago
t5308-pack-detect-duplicates.sh t: skip pack tests if not using SHA-1 1 year ago
t5309-pack-delta-cycles.sh t: skip pack tests if not using SHA-1 1 year ago
t5310-pack-bitmaps.sh t5310: increase the number of bitmapped commits 3 months ago
t5311-pack-bitmaps-shallow.sh pack-objects: turn off bitmaps when we see --shallow lines 5 years ago
t5312-prune-corruption.sh tests: remove some direct access to .git/logs 4 years ago
t5313-pack-bounds-checks.sh tests: make use of the test_must_be_empty function 1 year ago
t5314-pack-cycle-detection.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t5315-pack-objects-compression.sh tests: avoid calling Perl just to determine file sizes 8 months ago
t5316-pack-delta-depth.sh t/helper: merge test-genrandom into test-tool 1 year ago
t5317-pack-objects-filter-objects.sh list-objects-filter: disable 'sparse:path' filters 4 months ago
t5318-commit-graph.sh Merge branch 'tb/commit-graph-harden' 1 week ago
t5319-multi-pack-index.sh t5319: use 'test-tool path-utils' instead of 'ls -l' 3 months ago
t5320-delta-islands.sh t5320: tests for delta islands 1 year ago
t5321-pack-large-objects.sh pack-objects (mingw): initialize `packing_data` mutex in the correct spot 1 year ago
t5322-pack-objects-sparse.sh pack-objects: create GIT_TEST_PACK_SPARSE 9 months ago
t5323-pack-redundant.sh pack-redundant: consistent sort method 8 months ago
t5324-split-commit-graph.sh commit-graph: add --[no-]progress to write and verify 3 weeks ago
t5400-send-pack.sh tests: define GIT_TEST_PROTOCOL_VERSION 7 months ago
t5401-update-hooks.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t5402-post-merge-hook.sh tests: use "git xyzzy" form (t3600 - t6999) 11 years ago
t5403-post-checkout-hook.sh t5403: correct bash ambiguous redirect error in subtest 8 by quoting $GIT_DIR 8 months ago
t5404-tracking-branches.sh t5404: relax overzealous test 1 year ago
t5405-send-pack-rewind.sh t5405: use test_must_fail() instead of checking exit code manually 1 year ago
t5406-remote-rejects.sh t5406: use write_script() instead of birthing shell script manually 1 year ago
t5407-post-rewrite-hook.sh tests (rebase): spell out the `--keep-empty` option 6 months ago
t5408-send-pack-stdin.sh send-pack: take refspecs over stdin 5 years ago
t5409-colorize-remote-messages.sh sideband: color lines with keyword only 10 months ago
t5410-receive-pack-alternates.sh t5410: use longer path for sample script 11 months ago
t5500-fetch-pack.sh Merge branch 'jk/disable-commit-graph-during-upload-pack' 1 week ago
t5501-fetch-push-alternates.sh t5501-*.sh: Fix url passed to clone in setup test 8 years ago
t5502-quickfetch.sh tests: add missing && 9 years ago
t5503-tagfollow.sh t5503: fix overspecification of trace expectation 7 months ago
t5504-fetch-receive-strict.sh fsck: rename and touch up init_skiplist() 5 months ago
t5505-remote.sh push: test that <src> doesn't DWYM if <dst> is unqualified 11 months ago
t5506-remote-groups.sh t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution 3 years ago
t5507-remote-environment.sh git_connect: clear GIT_* environment for ssh 4 years ago
t5509-fetch-push-namespaces.sh upload-pack: strip namespace from symref data 4 months ago
t5510-fetch.sh Merge branch 'ds/commit-graph-on-fetch' 2 weeks ago
t5511-refspec.sh refs: loosen restriction on wildcard "*" refspecs 4 years ago
t5512-ls-remote.sh tests: replace test_tristate with "git env--helper" 3 months ago
t5513-fetch-track.sh Replace "remote tracking" with "remote-tracking" 9 years ago
t5514-fetch-multiple.sh fetch: let --jobs=<n> parallelize --multiple, too 1 week ago
t5515-fetch-merge-logic.sh t: use LF variable defined in the test harness 1 month ago
t5516-fetch-push.sh Merge branch 'jk/fetch-reachability-error-fix' 5 months ago
t5517-push-mirror.sh push: disallow --all and refspecs when remote.<name>.mirror is set 1 month ago
t5518-fetch-exit-status.sh Use 'fast-forward' all over the place 10 years ago
t5519-push-alternates.sh t5519: do not assume the "matching" push is the default 6 years ago
t5520-pull.sh tests: optionally skip `git rebase -p` tests 11 months ago
t5521-pull-options.sh merge: cleanup messages like commit 6 months ago
t5522-pull-symlink.sh t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution 3 years ago
t5523-push-upstream.sh tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>' 1 year ago
t5524-pull-msg.sh pull: handle --log=<n> 4 years ago
t5525-fetch-tagopt.sh fetch --tags: fetch tags *in addition to* other stuff 6 years ago
t5526-fetch-submodules.sh Merge branch 'sb/submodule-recursive-fetch-gets-the-tip' 8 months ago
t5527-fetch-odd-refs.sh t: switch $_z40 to $ZERO_OID 1 year ago
t5528-push-default.sh push: test pushing ambiguously named branches 2 years ago
t5529-push-errors.sh push: detect local refspec errors early 5 years ago
t5530-upload-pack-error.sh upload-pack: send ERR packet for non-tip objects 6 months ago
t5531-deep-submodule-push.sh t5531: avoid using an abbreviated option 6 months ago
t5532-fetch-proxy.sh Git 2.7.6 2 years ago
t5533-push-cas.sh tests: make use of the test_must_be_empty function 1 year ago
t5534-push-signed.sh gpg-interface t: extend the existing GPG tests with GPGSM 1 year ago
t5535-fetch-push-symref.sh fetch: ignore wildcarded refspecs that update local symbolic refs 6 years ago
t5536-fetch-conflicts.sh t5536: simplify checking of messages output to stderr 1 year ago
t5537-fetch-shallow.sh t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd' 2 months ago
t5538-push-shallow.sh t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution 3 years ago
t5539-fetch-http-shallow.sh Merge branch 'sg/test-atexit' 5 months ago
t5540-http-push-webdav.sh tests: use 'test_atexit' to stop httpd 7 months ago
t5541-http-push-smart.sh Revert "progress: use term_clear_line()" 4 weeks ago
t5542-push-http-shallow.sh tests: use 'test_atexit' to stop httpd 7 months ago
t5543-atomic-push.sh t5000-t5999: fix broken &&-chains 1 year ago
t5544-pack-objects-hook.sh upload-pack: provide a hook for running pack-objects 3 years ago
t5545-push-options.sh t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd' 2 months ago
t5546-receive-limits.sh t/helper: merge test-genrandom into test-tool 1 year ago
t5547-push-quarantine.sh t/helper: merge test-genrandom into test-tool 1 year ago
t5550-http-fetch-dumb.sh Merge branch 'sg/test-atexit' 5 months ago
t5551-http-fetch-smart.sh Merge branch 'jt/t5551-test-chunked' 3 months ago
t5552-skipping-fetch-negotiator.sh repo-settings: create feature.experimental setting 2 months ago
t5553-set-upstream.sh pull, fetch: add --set-upstream option 1 month ago
t5560-http-backend-noserver.sh Merge branch 'sb/http-flaky-test-fix' 4 years ago
t5561-http-backend.sh tests: use 'test_atexit' to stop httpd 7 months ago
t5562-http-backend-content-length.sh Merge branch 'mk/t5562-no-input-to-too-large-an-input-test' 7 months ago
t5570-git-daemon.sh Merge branch 'jk/server-info-rabbit-hole' 5 months ago
t5571-pre-push-hook.sh t: switch $_z40 to $ZERO_OID 1 year ago
t5572-pull-submodule.sh submodule: do not pass null OID to setup_revisions 1 year ago
t5573-pull-verify-signatures.sh pull: handle --verify-signatures for unborn branch 11 months ago
t5580-clone-push-unc.sh t5580: verify that alternates can be UNC paths 5 months ago
t5581-http-curl-verbose.sh tests: use 'test_atexit' to stop httpd 7 months ago
t5600-clone-fail-cleanup.sh clone: do not clean up directories we didn't create 1 year ago
t5601-clone.sh Merge branch 'dl/use-sq-from-test-lib' 2 weeks ago
t5602-clone-remote-exec.sh tests: use "env" to run commands with temporary env-var settings 5 years ago
t5603-clone-dirname.sh ssh: 'simple' variant does not support --port 1 year ago
t5604-clone-reference.sh clone: copy hidden paths at local clone 3 months ago
t5605-clone-local.sh t5000-t5999: fix broken &&-chains 1 year ago
t5606-clone-options.sh clone tests: rename t57* => t56* 3 years ago
t5607-clone-bundle.sh transport: teach all vtables to allow fetch first 1 month ago
t5608-clone-2gb.sh t5608: fix broken &&-chain 1 year ago
t5609-clone-branch.sh clone tests: rename t57* => t56* 3 years ago
t5610-clone-detached.sh clone tests: rename t57* => t56* 3 years ago
t5611-clone-config.sh clone: respect additional configured fetch refspecs during initial fetch 11 months ago
t5612-clone-refspec.sh Merge branch 'ab/fetch-tags-noclobber' 1 year ago
t5613-info-alternate.sh alternates: use fspathcmp to detect duplicates 3 years ago
t5614-clone-submodules-shallow.sh Spelling fixes 2 years ago
t5615-alternate-env.sh t5615: avoid re-using descriptor 4 1 year ago
t5616-partial-clone.sh Merge branch 'jk/partial-clone-sparse-blob' 1 week ago
t5617-clone-submodules-remote.sh clone: add `--remote-submodules` flag 4 months ago
t5618-alternate-refs.sh check_everything_connected: assume alternate ref tips are valid 3 months ago
t5700-protocol-v1.sh t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd' 2 months ago
t5701-git-serve.sh Turn `git serve` into a test helper 6 months ago
t5702-protocol-v2.sh transport-helper: skip ls-refs if unnecessary 1 month ago
t5703-upload-pack-ref-in-want.sh t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh' 2 months ago
t5801-remote-helpers.sh tests: remove "cat foo" before "test_i18ngrep bar foo" 1 week ago
t5802-connect-helper.sh transport: add protocol policy config option 2 years ago
t5810-proto-disable-local.sh connect: reject paths that look like command line options 2 years ago
t5811-proto-disable-git.sh transport: add a protocol-whitelist environment variable 4 years ago
t5812-proto-disable-http.sh tests: use 'test_atexit' to stop httpd 7 months ago
t5813-proto-disable-ssh.sh connect: reject paths that look like command line options 2 years ago
t5814-proto-disable-ext.sh transport: add a protocol-whitelist environment variable 4 years ago
t5815-submodule-protos.sh submodule: allow only certain protocols for submodule fetches 4 years ago
t5900-repo-selection.sh t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution 3 years ago
t6000-rev-list-misc.sh revision: allow --end-of-options to end option parsing 2 months ago
t6001-rev-list-graft.sh Deprecate support for .git/info/grafts 1 year ago
t6002-rev-list-bisect.sh rev-parse: don't trim bisect refnames 2 years ago
t6003-rev-list-topo-order.sh t6003: add --author-date-order test 6 years ago
t6004-rev-list-path-optim.sh t6004: add pathspec globbing test for log family 8 years ago
t6005-rev-list-count.sh Rewrite "git-frotz" to "git frotz" 12 years ago
t6006-rev-list-format.sh t6006: simplify, fix, and optimize empty message test 1 month ago
t6007-rev-list-cherry-pick-file.sh tests: fix diff order arguments in test_cmp 2 years ago
t6008-rev-list-submodule.sh git-submodule - make "submodule add" more strict, and document it 11 years ago
t6009-rev-list-parent.sh tests: make use of the test_must_be_empty function 1 year ago
t6010-merge-base.sh t6000-t6999: fix broken &&-chains 1 year ago
t6011-rev-list-with-bad-commit.sh commit-graph: turn on commit-graph by default 2 months ago
t6012-rev-list-simplify.sh t6012: make rev-list tests more interesting 11 months ago
t6013-rev-list-reverse-parents.sh tests: fix diff order arguments in test_cmp 2 years ago
t6014-rev-list-all.sh revision: forbid combining --graph and --no-walk 4 years ago
t6016-rev-list-graph-simplify-history.sh t6016 (rev-list-graph-simplify-history): add missing && 9 years ago
t6017-rev-list-stdin.sh setup_revisions(): take pathspec from command line and --stdin correctly 8 years ago
t6018-rev-list-glob.sh Merge branch 'ra/rev-parse-exclude-glob' 11 months ago
t6019-rev-list-ancestry-path.sh tests: make use of the test_must_be_empty function 1 year ago
t6020-merge-df.sh read-cache: fix directory/file conflict handling in read_index_unmerged() 1 year ago
t6021-merge-criss-cross.sh merge: deprecate 'git merge <message> HEAD <commit>' syntax 4 years ago
t6022-merge-rename.sh tests: make use of the test_must_be_empty function 1 year ago
t6023-merge-file.sh t/*: fix ordering of expected/observed arguments 1 year ago
t6024-recursive-merge.sh commit-graph: define GIT_TEST_COMMIT_GRAPH 1 year ago
t6025-merge-symlinks.sh Avoid using non-portable `echo -n` in tests. 11 years ago
t6026-merge-attr.sh t6026: clarify the point of "kill $(cat sleep.pid)" 2 years ago
t6027-merge-binary.sh t/*: fix ordering of expected/observed arguments 1 year ago
t6028-merge-up-to-date.sh t: fix moderate &&-chain breakage 4 years ago
t6029-merge-subtree.sh Merge branch 'jk/merge-subtree-heuristics' 1 year ago
t6030-bisect-porcelain.sh t6030: make test work with SHA-256 3 months ago
t6031-merge-filemode.sh t/*: fix ordering of expected/observed arguments 1 year ago
t6032-merge-large-rename.sh t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution 3 years ago
t6033-merge-crlf.sh tests: consolidate CR removal/addition functions 9 years ago
t6034-merge-rename-nocruft.sh t6034: use modern test_* helpers 4 years ago
t6035-merge-dir-to-symlink.sh t6035: use test_ln_s_add to remove SYMLINKS prerequisite 6 years ago
t6036-recursive-corner-cases.sh merge-recursive: provide a better label for diff3 common ancestor 1 month ago
t6037-merge-ours-theirs.sh merge: teach -Xours/-Xtheirs to symbolic link merge 1 year ago
t6038-merge-text-auto.sh merge: avoid "safer crlf" during recording of merge results 3 years ago
t6039-merge-ignorecase.sh t6039: fix broken && chain 4 years ago
t6040-tracking-info.sh Merge branch 'ab/test-env' 2 months ago
t6041-bisect-submodule.sh t6041: do not compress backup tar file 3 years ago
t6042-merge-rename-corner-cases.sh merge-recursive: restore accidentally dropped setting of path 4 months ago
t6043-merge-rename-directories.sh merge-recursive: avoid directory rename detection in recursive case 2 months ago
t6044-merge-unrelated-index-changes.sh merge-recursive: enforce rule that index matches head before merging 1 year ago
t6045-merge-rename-delete.sh merge-recursive: make "CONFLICT (rename/delete)" message show both paths 2 years ago
t6046-merge-skip-unneeded-updates.sh merge-recursive: switch directory rename detection default 6 months ago
t6047-diff3-conflict-markers.sh merge-recursive: fix the diff3 common ancestor label for virtual commits 2 weeks ago
t6050-replace.sh replace: peel tag when passing a tag first to --graft 6 months ago
t6060-merge-index.sh tests: make use of the test_must_be_empty function 1 year ago
t6100-rev-list-in-order.sh revision.h: introduce blob/tree walking in order of the commits 1 year ago
t6101-rev-parse-parents.sh rev-parse: check lookup'ed commit references for NULL 1 year ago
t6102-rev-list-unexpected-objects.sh rev-list: detect broken root trees 6 months ago
t6110-rev-list-sparse.sh Merge branch 'jc/maint-rev-list-culled-boundary' 8 years ago
t6111-rev-list-treesame.sh t: switch $_x40 to $OID_REGEX 1 year ago
t6112-rev-list-filters-objects.sh list-objects-filter-options: allow mult. --filter 3 months ago
t6120-describe.sh name-rev: avoid cutoff timestamp underflow 2 weeks ago
t6130-pathspec-noglob.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t6131-pathspec-icase.sh pathspec: rename match_pathspec_depth() to match_pathspec() 5 years ago
t6132-pathspec-exclude.sh tree-walk.c: fix overoptimistic inclusion in :(exclude) matching 11 months ago
t6133-pathspec-rev-dwim.sh get_sha1: don't die() on bogus search strings 3 years ago
t6134-pathspec-in-submodule.sh Merge branch 'bw/pathspec-sans-the-index' 2 years ago
t6135-pathspec-with-attrs.sh tree-walk: support :(attr) matching 11 months ago
t6200-fmt-merge-msg.sh t6200: use test_commit_bulk 2 months ago
t6300-for-each-ref.sh Merge branch 'mp/for-each-ref-missing-name-or-email' 1 month ago
t6301-for-each-ref-errors.sh t: switch $_z40 to $ZERO_OID 1 year ago
t6302-for-each-ref-filter.sh ref-filter: add worktreepath atom 5 months ago
t6500-gc.sh server-info: do not list unlinked packs 4 months ago
t6501-freshen-objects.sh t6501: use 'git gc' in quiet mode 2 months ago
t6600-test-reach.sh Merge branch 'ds/reachable-topo-order' 11 months ago
t7001-mv.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t7003-filter-branch.sh Merge branch 'mb/filter-branch-optim' 1 year ago
t7004-tag.sh tag: add tag.gpgSign config option to force all tags be GPG-signed 4 months ago
t7005-editor.sh t7005-editor: quote filename to fix whitespace-issue 1 year ago
t7006-pager.sh log: flip the --mailmap default unconditionally 2 months ago
t7007-show.sh revision: forbid combining --graph and --no-walk 4 years ago
t7008-filter-branch-null-sha1.sh grep tests: move "grep binary" alongside the rest 3 months ago
t7010-setup.sh ls-files: allow relative pathspec 9 years ago
t7011-skip-worktree-reading.sh t: switch $_z40 to $ZERO_OID 1 year ago
t7012-skip-worktree-writing.sh test-lib.sh: introduce and use $EMPTY_BLOB 3 years ago
t7030-verify-tag.sh Merge branch 'ab/test-must-be-empty-for-master' 1 year ago
t7060-wtstatus.sh status: remove the empty line after hints 3 months ago
t7061-wtstatus-ignore.sh status: do not get confused by submodules in excluded directories 2 years ago
t7062-wtstatus-ignorecase.sh name-hash.c: fix endless loop with core.ignorecase=true 6 years ago
t7063-status-untracked-cache.sh t/helper: merge test-dump-untracked-cache into test-tool 1 year ago
t7064-wtstatus-pv2.sh status: ignore status.aheadbehind in porcelain formats 3 months ago
t7101-reset-empty-subdirs.sh t7101, t7014: rename test files to indicate what that file is for 5 years ago
t7102-reset.sh tests: make use of the test_must_be_empty function 1 year ago
t7103-reset-bare.sh t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution 3 years ago
t7104-reset-hard.sh Merge branch 'jl/nor-or-nand-and' 5 years ago
t7105-reset-patch.sh t: use test_write_lines() instead of series of 'echo' commands 1 year ago
t7106-reset-unborn-branch.sh tests: make use of the test_must_be_empty function 1 year ago
t7110-reset-merge.sh i18n: use test_i18ncmp and test_i18ngrep in t7102 and t7110 8 years ago
t7111-reset-table.sh reset: disallow using --keep when there are unmerged entries 9 years ago
t7112-reset-submodule.sh submodule test invocation: only pass additional arguments 2 years ago
t7113-post-index-change-hook.sh read-cache: add post-index-change hook 8 months ago
t7201-co.sh tests: make GIT_TEST_GETTEXT_POISON a boolean 3 months ago
t7300-clean.sh clean: avoid removing untracked files in a nested git repository 4 weeks ago
t7301-clean-interactive.sh t: use test_write_lines() instead of series of 'echo' commands 1 year ago
t7400-submodule-basic.sh tests: remove "cat foo" before "test_i18ngrep bar foo" 1 week ago
t7401-submodule-summary.sh tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>' 1 year ago
t7402-submodule-rebase.sh git-am: record full index line in the patch used while rebasing 6 years ago
t7403-submodule-sync.sh Merge branch 'va/i18n-even-more' 3 years ago
t7405-submodule-merge.sh tests: add a special setup where prerequisites fail 5 months ago
t7406-submodule-update.sh t: use common $SQ variable 1 month ago
t7407-submodule-foreach.sh Merge branch 'ms/submodule-foreach-fix' 3 months ago
t7408-submodule-reference.sh t7000-t7999: fix broken &&-chains 1 year ago
t7409-submodule-detached-work-tree.sh t/: correct obvious typo "detahced" 1 year ago
t7410-submodule-checkout-to.sh t7410: update to new style 1 year ago
t7411-submodule-config.sh get_oid: handle NULL repo->index 5 months ago
t7412-submodule-absorbgitdirs.sh submodule update: add regression test with old style setups 9 months ago
t7413-submodule-is-active.sh Spelling fixes 2 years ago
t7414-submodule-mistakes.sh add: warn when adding an embedded repository 2 years ago
t7415-submodule-names.sh fsck: mark strings for translation 11 months ago
t7416-submodule-dash-url.sh fsck: detect submodule urls starting with dash 1 year ago
t7417-submodule-path-url.sh fsck: detect submodule paths starting with dash 1 year ago
t7418-submodule-sparse-gitmodules.sh submodule: support reading .gitmodules when it's not in the working tree 11 months ago
t7419-submodule-set-branch.sh submodule: teach set-branch subcommand 6 months ago
t7500-commit-template-squash-signoff.sh t7500: rename commit tests script to comply with naming convention 11 months ago
t7501-commit-basic-functionality.sh t7501: rename commit test to comply with naming convention 11 months ago
t7502-commit-porcelain.sh tests: mark two failing tests under FAIL_PREREQS 3 months ago
t7503-pre-commit-and-pre-merge-commit-hooks.sh merge: --no-verify to bypass pre-merge-commit hook 2 months ago
t7504-commit-msg-hook.sh merge-recursive: enforce rule that index matches head before merging 1 year ago
t7505-prepare-commit-msg-hook.sh rebase -i: always update HEAD before rewording 1 month ago
t7506-status-submodule.sh t7506: clean up .gitmodules properly before setting up new scenario 1 year ago
t7507-commit-verbose.sh commit: add a commit.verbose config variable 3 years ago
t7508-status.sh status: remove the empty line after hints 3 months ago
t7509-commit-authorship.sh t7509: cleanup description and filename 11 months ago
t7510-signed-commit.sh commit-tree: add missing --gpg-sign flag 8 months ago
t7511-status-index.sh t7511: avoid use of reserved filename on Windows. 8 years ago
t7512-status-help.sh status: mention --skip for revert and cherry-pick 1 month ago
t7513-interpret-trailers.sh interpret-trailers: load default config 3 months ago
t7514-commit-patch.sh commit: fix patch hunk editing with "commit -p -m" 5 years ago
t7515-status-symlinks.sh read-cache: check for leading symlinks when refreshing index 5 years ago
t7516-commit-races.sh commit: avoid race when creating orphan commits 4 years ago
t7517-per-repo-email.sh config: allow giving separate author and committer idents 8 months ago
t7518-ident-corner-cases.sh ident: do not ignore empty config name/email 2 years ago
t7519-status-fsmonitor.sh fsmonitor: force a refresh after the index was discarded 5 months ago
t7520-ignored-hook-warning.sh run-command: add hint when a hook is ignored 2 years ago
t7521-ignored-mode.sh status: test ignored modes 1 year ago
t7525-status-rename.sh tests (status): spell out the `--find-renames` option in full 6 months ago
t7600-merge.sh Merge branch 'vv/merge-squash-with-explicit-commit' 4 months ago
t7601-merge-pull-config.sh pull: make pull.ff=true override merge.ff 4 years ago
t7602-merge-octopus-many.sh t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution 3 years ago
t7603-merge-reduce-heads.sh fmt-merge-msg: discard needless merge parents 7 years ago
t7604-merge-custom-message.sh merge: cleanup messages like commit 6 months ago
t7605-merge-resolve.sh builtin/merge.c: fix a bug with trivial merges 3 years ago
t7606-merge-custom.sh t7606: Avoid using head as a file name 9 years ago
t7607-merge-overwrite.sh merge-recursive: fix overwriting dirty files involved in renames 1 year ago
t7608-merge-messages.sh merge: notice local merging of tags and keep it unwrapped 8 years ago
t7609-merge-co-error-msgs.sh Merge branch 'sb/unpack-trees-grammofix' 2 years ago
t7610-mergetool.sh t7610-mergetool: use test_cmp instead of test $(cat file) = $txt 4 months ago
t7611-merge-abort.sh merge-recursive: enforce rule that index matches head before merging 1 year ago
t7612-merge-verify-signatures.sh merge: handle --verify-signatures for unborn branch 11 months ago
t7613-merge-submodule.sh merge: add t7613 for submodule updates 5 years ago
t7614-merge-signoff.sh merge: add a --signoff flag 2 years ago
t7700-repack.sh repack: simplify handling of auto-bitmaps and .keep files 2 months ago
t7701-repack-unpack-unreachable.sh Merge branch 'ps/test-chmtime-get' 1 year ago
t7702-repack-cyclic-alternate.sh sha1_file: do not add own object directory as alternate 5 years ago
t7800-difftool.sh Merge branch 'dl/difftool-mergetool' 5 months ago
t7810-grep.sh tests: add a special setup where prerequisites fail 5 months ago
t7811-grep-open.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t7812-grep-icase-non-ascii.sh grep: do not enter PCRE2_UTF mode on fixed matching 2 months ago
t7813-grep-icase-iso.sh test-lib: rename the LIBPCRE prerequisite to PCRE 2 years ago
t7814-grep-recurse-submodules.sh Merge branch 'mt/grep-submodules-working-tree' 1 month ago
t7815-grep-binary.sh grep tests: move binary pattern tests into their own file 3 months ago
t7816-grep-binary-pattern.sh grep: drop support for \0 in --fixed-strings <pattern> 3 months ago
t8001-annotate.sh t8001/t8002 (blame): modernize style 6 years ago
t8002-blame.sh exclude-promisor-objects: declare when option is allowed 11 months ago
t8003-blame-corner-cases.sh blame: add a test to cover blame_coalesce() 3 months ago
t8004-blame-with-conflicts.sh blame: allow "blame file" in the middle of a conflicted merge 7 years ago
t8005-blame-i18n.sh t8005: avoid grep on non-ASCII data 3 years ago
t8006-blame-textconv.sh tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases) 6 years ago
t8007-cat-file-textconv.sh Merge branch 'mg/more-textconv' 6 years ago
t8008-blame-formats.sh t8008: rely on rev-parse'd HEAD instead of sha1 value 2 years ago
t8009-blame-vs-topicbranches.sh blame: allow blame --reverse --first-parent when it makes sense 4 years ago
t8010-cat-file-filters.sh tests: use 'test_must_be_empty' instead of 'test ! -s' 1 year ago
t8011-blame-split-file.sh blame: output porcelain "previous" header for each file 2 years ago
t8012-blame-colors.sh builtin/blame: add new coloring scheme config 1 year ago
t8013-blame-ignore-revs.sh blame: add config options for the output of ignored or unblamable lines 5 months ago
t8014-blame-ignore-fuzzy.sh t8014: remove unnecessary braces 3 months ago
t9001-send-email.sh Merge branch 'ab/send-email-transferencoding-fix' 4 months ago
t9002-column.sh column: add dense layout support 7 years ago
t9003-help-autocorrect.sh t9003: become resilient to GETTEXT_POISON 3 years ago
t9004-example.sh t/helper: merge test-example-decorate into test-tool 1 year ago
t9010-svn-fe.sh t: switch $_x40 to $OID_REGEX 1 year ago
t9011-svn-da.sh tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>' 1 year ago
t9020-remote-svn.sh Allow the test suite to pass in a directory whose name contains spaces 1 year ago
t9100-git-svn-basic.sh t/*: fix ordering of expected/observed arguments 1 year ago
t9101-git-svn-props.sh t9109: don't swallow Git errors upstream of pipes 1 year ago
t9102-git-svn-deep-rmdir.sh t/lib-git-svn: drop $remote_git_svn and $git_svn_id 3 years ago
t9103-git-svn-tracked-directory-removed.sh t9103: modernize test style 3 years ago
t9104-git-svn-follow-parent.sh Merge branch 'cc/tests-without-assuming-ref-files-backend' 1 year ago
t9105-git-svn-commit-diff.sh t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution 3 years ago
t9106-git-svn-commit-diff-clobber.sh t/lib-git-svn: drop $remote_git_svn and $git_svn_id 3 years ago
t9107-git-svn-migrate.sh Allow the test suite to pass in a directory whose name contains spaces 1 year ago
t9108-git-svn-glob.sh test: avoid pipes in git related commands for test 1 year ago
t9109-git-svn-multi-glob.sh test: avoid pipes in git related commands for test 1 year ago
t9110-git-svn-use-svm-props.sh test: avoid pipes in git related commands for test 1 year ago
t9111-git-svn-use-svnsync-props.sh test: avoid pipes in git related commands for test 1 year ago
t9112-git-svn-md5less-file.sh many small typofixes 6 years ago
t9113-git-svn-dcommit-new-file.sh git-svn testsuite: use standard configuration for Subversion tools 10 years ago
t9114-git-svn-dcommit-merge.sh test: avoid pipes in git related commands for test 1 year ago
t9115-git-svn-dcommit-funky-renames.sh tests: use 'test_atexit' to stop httpd 7 months ago
t9116-git-svn-log.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9117-git-svn-init-clone.sh don't use test_must_fail with grep 2 years ago
t9118-git-svn-funky-branch-names.sh tests: use 'test_atexit' to stop httpd 7 months ago
t9119-git-svn-info.sh t9119: fix broken &&-chains 1 year ago
t9120-git-svn-clone-with-percent-escapes.sh tests: use 'test_atexit' to stop httpd 7 months ago
t9121-git-svn-fetch-renamed-dir.sh t/t91XX git-svn tests: run "git svn" not "git-svn" 11 years ago
t9122-git-svn-author.sh t9000-t9999: fix broken &&-chains 1 year ago
t9123-git-svn-rebuild-with-rewriteroot.sh t/lib-git-svn: drop $remote_git_svn and $git_svn_id 3 years ago
t9124-git-svn-dcommit-auto-props.sh mingw: handle the missing POSIXPERM prereq in t9124 3 years ago
t9125-git-svn-multi-glob-branch-names.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9126-git-svn-follow-deleted-readded-directory.sh git-svn: Always create a new RA when calling do_switch for svn:// 11 years ago
t9127-git-svn-partial-rebuild.sh Several tests: cd inside subshell instead of around 9 years ago
t9128-git-svn-cmd-branch.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9129-git-svn-i18n-commitencoding.sh t9000-t9999: fix broken &&-chains 1 year ago
t9130-git-svn-authors-file.sh t9000-t9999: fix broken &&-chains 1 year ago
t9131-git-svn-empty-symlink.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t9132-git-svn-broken-symlink.sh t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution 3 years ago
t9133-git-svn-nested-git-repo.sh t/*: fix ordering of expected/observed arguments 1 year ago
t9134-git-svn-ignore-paths.sh t9000-t9999: fix broken &&-chains 1 year ago
t9135-git-svn-moved-branch-empty-file.sh tests: use 'test_must_be_empty' instead of '! test -s' 1 year ago
t9136-git-svn-recreated-branch-empty-file.sh git-svn: fix delete+add branch tracking with empty files 10 years ago
t9137-git-svn-dcommit-clobber-series.sh t9000-t9999: fix broken &&-chains 1 year ago
t9138-git-svn-authors-prog.sh t9000-t9999: fix broken &&-chains 1 year ago
t9139-git-svn-non-utf8-commitencoding.sh Convert "! git" to "test_must_fail git" 9 years ago
t9140-git-svn-reset.sh Convert "! git" to "test_must_fail git" 9 years ago
t9141-git-svn-multiple-branches.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9142-git-svn-shallow-clone.sh tests: use 'test_atexit' to stop httpd 7 months ago
t9143-git-svn-gc.sh t9143: do not fail when unhandled.log.gz is not created 8 years ago
t9144-git-svn-old-rev_map.sh svn: allow branches outside of refs/remotes 10 years ago
t9145-git-svn-master-branch.sh t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution 3 years ago
t9146-git-svn-empty-dirs.sh t9000-t9999: fix broken &&-chains 1 year ago
t9147-git-svn-include-paths.sh t9000-t9999: fix broken &&-chains 1 year ago
t9148-git-svn-propset.sh git-svn: support for git-svn propset 4 years ago
t9150-svk-mergetickets.sh t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution 3 years ago
t9151-svn-mergeinfo.sh tests: add missing && 9 years ago
t9152-svn-empty-dirs-after-gc.sh t9000-t9999: fix broken &&-chains 1 year ago
t9153-git-svn-rewrite-uuid.sh test: avoid pipes in git related commands for test 1 year ago
t9154-git-svn-fancy-glob.sh t: prefer "git config --file" to GIT_CONFIG 5 years ago
t9155-git-svn-fetch-deleted-tag.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9156-git-svn-fetch-deleted-tag-2.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9157-git-svn-fetch-merge.sh t9157-*.sh: Make the svn version check more precise 8 years ago
t9158-git-svn-mergeinfo.sh t/t91*: do not say how to avoid the tests 3 years ago
t9159-git-svn-no-parent-mergeinfo.sh t9159-*.sh: skip for mergeinfo test for svn <= 1.4 8 years ago
t9160-git-svn-preserve-empty-dirs.sh t/t91*: do not say how to avoid the tests 3 years ago
t9161-git-svn-mergeinfo-push.sh t9158, t9161: fix broken &&-chain in git-svn tests 4 years ago
t9162-git-svn-dcommit-interactive.sh git svn dcommit: new option --interactive. 8 years ago
t9163-git-svn-reset-clears-caches.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9164-git-svn-dcommit-concurrent.sh t9000-t9999: fix broken &&-chains 1 year ago
t9165-git-svn-fetch-merge-branch-of-branch.sh t9000-t9999: fix broken &&-chains 1 year ago
t9166-git-svn-fetch-merge-branch-of-branch2.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9167-git-svn-cmd-branch-subproject.sh Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 5 years ago
t9168-git-svn-partially-globbed-names.sh test: avoid pipes in git related commands for test 1 year ago
t9169-git-svn-dcommit-crlf.sh git-svn: convert CRLF to LF in commit message to SVN 1 year ago
t9200-git-cvsexportcommit.sh Merge branch 'sg/test-must-be-empty' 1 year ago
t9300-fast-import.sh Merge branch 'en/fast-imexport-nested-tags' 1 day ago
t9301-fast-import-notes.sh fast-import: properly fanout notes when tree is imported 2 years ago
t9302-fast-import-unpack-limit.sh t9000-t9999: fix broken &&-chains 1 year ago
t9303-fast-import-compression.sh tests: avoid calling Perl just to determine file sizes 8 months ago
t9350-fast-export.sh fast-export: handle nested tags 1 week ago
t9351-fast-export-anonymize.sh teach fast-export an --anonymize option 5 years ago
t9400-git-cvsserver-server.sh t9000-t9999: fix broken &&-chains 1 year ago
t9401-git-cvsserver-crlf.sh Spelling fixes 3 years ago
t9402-git-cvsserver-refs.sh t9402-git-cvsserver-refs: don't check the stderr of a subshell 1 year ago
t9500-gitweb-standalone-no-errors.sh t3901: move supporting files into t/t3901/ 2 years ago
t9501-gitweb-standalone-http-status.sh t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution 3 years ago
t9502-gitweb-standalone-parse-output.sh t9502: fix &&-chain breakage 4 years ago
t9600-cvsimport.sh t/*: fix ordering of expected/observed arguments 1 year ago
t9601-cvsimport-vendor-branch.sh cvs tests: do not touch test CVS repositories shipped with source 9 years ago
t9602-cvsimport-branches-tags.sh cvs tests: do not touch test CVS repositories shipped with source 9 years ago
t9603-cvsimport-patchsets.sh t/*: fix ordering of expected/observed arguments 1 year ago
t9604-cvsimport-timestamps.sh t/*: fix ordering of expected/observed arguments 1 year ago
t9700-perl-git.sh t: use perl instead of "$PERL_PATH" where applicable 6 years ago
t9800-git-p4-basic.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9801-git-p4-branch.sh Merge branch 'am/p4-branches-excludes' 3 months ago
t9802-git-p4-filetype.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9803-git-p4-shell-metachars.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9804-git-p4-label.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9805-git-p4-skip-submit-edit.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9806-git-p4-options.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9807-git-p4-submit.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9808-git-p4-chdir.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9809-git-p4-client-view.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9810-git-p4-rcs.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9811-git-p4-label-import.sh t9811-git-p4-label-import: fix pipeline negation 7 months ago
t9812-git-p4-wildcards.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9813-git-p4-preserve-users.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9814-git-p4-rename.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9815-git-p4-submit-fail.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9816-git-p4-locked.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9817-git-p4-exclude.sh Merge branch 'am/p4-branches-excludes' 3 months ago
t9818-git-p4-block.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9819-git-p4-case-folding.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9820-git-p4-editor-handling.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9821-git-p4-path-variations.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9822-git-p4-path-encoding.sh Merge branch 'js/iso8895-test-on-apfs' 5 months ago
t9823-git-p4-mock-lfs.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9824-git-p4-git-lfs.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9825-git-p4-handle-utf16-without-bom.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9826-git-p4-keep-empty-commits.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9827-git-p4-change-filetype.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9828-git-p4-map-user.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9829-git-p4-jobs.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9830-git-p4-symlink-dir.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9831-git-p4-triggers.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9832-unshelve.sh Merge branch 'sw/git-p4-unshelve-branched-files' 4 months ago
t9833-errors.sh git p4 test: use 'test_atexit' to kill p4d and the watchdog process 7 months ago
t9901-git-web--browse.sh t9901-git-web--browse.sh: use the $( ... ) construct for command substitution 3 years ago
t9902-completion.sh Merge branch 'en/filter-branch-deprecation' 2 weeks ago
t9903-bash-prompt.sh git-prompt: improve cherry-pick/revert detection 3 months ago
test-binary-1.png tests: cleanup binary test vector files 8 years ago
test-binary-2.png tests: cleanup binary test vector files 8 years ago
test-lib-functions.sh Merge branch 'dl/octopus-graph-bug' 1 day ago
test-lib.sh Merge branch 'js/azure-pipelines-msvc' 1 day ago
test-terminal.perl test-terminal: set TERM=vt100 2 years ago

README

Core GIT Tests
==============

This directory holds many test scripts for core GIT tools. The
first part of this short document describes how to run the tests
and read their output.

When fixing the tools or adding enhancements, you are strongly
encouraged to add tests in this directory to cover what you are
trying to fix or enhance. The later part of this short document
describes how your test scripts should be organized.


Running Tests
-------------

The easiest way to run tests is to say "make". This runs all
the tests.

*** t0000-basic.sh ***
ok 1 - .git/objects should be empty after git init in an empty repo.
ok 2 - .git/objects should have 3 subdirectories.
ok 3 - success is reported like this
...
ok 43 - very long name in the index handled sanely
# fixed 1 known breakage(s)
# still have 1 known breakage(s)
# passed all remaining 42 test(s)
1..43
*** t0001-init.sh ***
ok 1 - plain
ok 2 - plain with GIT_WORK_TREE
ok 3 - plain bare

Since the tests all output TAP (see http://testanything.org) they can
be run with any TAP harness. Here's an example of parallel testing
powered by a recent version of prove(1):

$ prove --timer --jobs 15 ./t[0-9]*.sh
[19:17:33] ./t0005-signals.sh ................................... ok 36 ms
[19:17:33] ./t0022-crlf-rename.sh ............................... ok 69 ms
[19:17:33] ./t0024-crlf-archive.sh .............................. ok 154 ms
[19:17:33] ./t0004-unwritable.sh ................................ ok 289 ms
[19:17:33] ./t0002-gitfile.sh ................................... ok 480 ms
===( 102;0 25/? 6/? 5/? 16/? 1/? 4/? 2/? 1/? 3/? 1... )===

prove and other harnesses come with a lot of useful options. The
--state option in particular is very useful:

# Repeat until no more failures
$ prove -j 15 --state=failed,save ./t[0-9]*.sh

You can give DEFAULT_TEST_TARGET=prove on the make command (or define it
in config.mak) to cause "make test" to run tests under prove.
GIT_PROVE_OPTS can be used to pass additional options, e.g.

$ make DEFAULT_TEST_TARGET=prove GIT_PROVE_OPTS='--timer --jobs 16' test

You can also run each test individually from command line, like this:

$ sh ./t3010-ls-files-killed-modified.sh
ok 1 - git update-index --add to add various paths.
ok 2 - git ls-files -k to show killed files.
ok 3 - validate git ls-files -k output.
ok 4 - git ls-files -m to show modified files.
ok 5 - validate git ls-files -m output.
# passed all 5 test(s)
1..5

You can pass --verbose (or -v), --debug (or -d), and --immediate
(or -i) command line argument to the test, or by setting GIT_TEST_OPTS
appropriately before running "make".

-v::
--verbose::
This makes the test more verbose. Specifically, the
command being run and their output if any are also
output.

--verbose-only=<pattern>::
Like --verbose, but the effect is limited to tests with
numbers matching <pattern>. The number matched against is
simply the running count of the test within the file.

-x::
Turn on shell tracing (i.e., `set -x`) during the tests
themselves. Implies `--verbose`.
Ignored in test scripts that set the variable 'test_untraceable'
to a non-empty value, unless it's run with a Bash version
supporting BASH_XTRACEFD, i.e. v4.1 or later.

-d::
--debug::
This may help the person who is developing a new test.
It causes the command defined with test_debug to run.
The "trash" directory (used to store all temporary data
during testing) is not deleted even if there are no
failed tests so that you can inspect its contents after
the test finished.

-i::
--immediate::
This causes the test to immediately exit upon the first
failed test. Cleanup commands requested with
test_when_finished are not executed if the test failed,
in order to keep the state for inspection by the tester
to diagnose the bug.

-l::
--long-tests::
This causes additional long-running tests to be run (where
available), for more exhaustive testing.

-r::
--run=<test-selector>::
Run only the subset of tests indicated by
<test-selector>. See section "Skipping Tests" below for
<test-selector> syntax.

--valgrind=<tool>::
Execute all Git binaries under valgrind tool <tool> and exit
with status 126 on errors (just like regular tests, this will
only stop the test script when running under -i).

Since it makes no sense to run the tests with --valgrind and
not see any output, this option implies --verbose. For
convenience, it also implies --tee.

<tool> defaults to 'memcheck', just like valgrind itself.
Other particularly useful choices include 'helgrind' and
'drd', but you may use any tool recognized by your valgrind
installation.

As a special case, <tool> can be 'memcheck-fast', which uses
memcheck but disables --track-origins. Use this if you are
running tests in bulk, to see if there are _any_ memory
issues.

Note that memcheck is run with the option --leak-check=no,
as the git process is short-lived and some errors are not
interesting. In order to run a single command under the same
conditions manually, you should set GIT_VALGRIND to point to
the 't/valgrind/' directory and use the commands under
't/valgrind/bin/'.

--valgrind-only=<pattern>::
Like --valgrind, but the effect is limited to tests with
numbers matching <pattern>. The number matched against is
simply the running count of the test within the file.

--tee::
In addition to printing the test output to the terminal,
write it to files named 't/test-results/$TEST_NAME.out'.
As the names depend on the tests' file names, it is safe to
run the tests with this option in parallel.

-V::
--verbose-log::
Write verbose output to the same logfile as `--tee`, but do
_not_ write it to stdout. Unlike `--tee --verbose`, this option
is safe to use when stdout is being consumed by a TAP parser
like `prove`. Implies `--tee` and `--verbose`.

--with-dashes::
By default tests are run without dashed forms of
commands (like git-commit) in the PATH (it only uses
wrappers from ../bin-wrappers). Use this option to include
the build directory (..) in the PATH, which contains all
the dashed forms of commands. This option is currently
implied by other options like --valgrind and
GIT_TEST_INSTALLED.

--no-bin-wrappers::
By default, the test suite uses the wrappers in
`../bin-wrappers/` to execute `git` and friends. With this option,
`../git` and friends are run directly. This is not recommended
in general, as the wrappers contain safeguards to ensure that no
files from an installed Git are used, but can speed up test runs
especially on platforms where running shell scripts is expensive
(most notably, Windows).

--root=<directory>::
Create "trash" directories used to store all temporary data during
testing under <directory>, instead of the t/ directory.
Using this option with a RAM-based filesystem (such as tmpfs)
can massively speed up the test suite.

--chain-lint::
--no-chain-lint::
If --chain-lint is enabled, the test harness will check each
test to make sure that it properly "&&-chains" all commands (so
that a failure in the middle does not go unnoticed by the final
exit code of the test). This check is performed in addition to
running the tests themselves. You may also enable or disable
this feature by setting the GIT_TEST_CHAIN_LINT environment
variable to "1" or "0", respectively.

--stress::
Run the test script repeatedly in multiple parallel jobs until
one of them fails. Useful for reproducing rare failures in
flaky tests. The number of parallel jobs is, in order of
precedence: the value of the GIT_TEST_STRESS_LOAD
environment variable, or twice the number of available
processors (as shown by the 'getconf' utility), or 8.
Implies `--verbose -x --immediate` to get the most information
about the failure. Note that the verbose output of each test
job is saved to 't/test-results/$TEST_NAME.stress-<nr>.out',
and only the output of the failed test job is shown on the
terminal. The names of the trash directories get a
'.stress-<nr>' suffix, and the trash directory of the failed
test job is renamed to end with a '.stress-failed' suffix.

--stress-jobs=<N>::
Override the number of parallel jobs. Implies `--stress`.

--stress-limit=<N>::
When combined with --stress run the test script repeatedly
this many times in each of the parallel jobs or until one of
them fails, whichever comes first. Implies `--stress`.

You can also set the GIT_TEST_INSTALLED environment variable to
the bindir of an existing git installation to test that installation.
You still need to have built this git sandbox, from which various
test-* support programs, templates, and perl libraries are used.
If your installed git is incomplete, it will silently test parts of
your built version instead.

When using GIT_TEST_INSTALLED, you can also set GIT_TEST_EXEC_PATH to
override the location of the dashed-form subcommands (what
GIT_EXEC_PATH would be used for during normal operation).
GIT_TEST_EXEC_PATH defaults to `$GIT_TEST_INSTALLED/git --exec-path`.


Skipping Tests
--------------

In some environments, certain tests have no way of succeeding
due to platform limitation, such as lack of 'unzip' program, or
filesystem that do not allow arbitrary sequence of non-NUL bytes
as pathnames.

You should be able to say something like

$ GIT_SKIP_TESTS=t9200.8 sh ./t9200-git-cvsexport-commit.sh

and even:

$ GIT_SKIP_TESTS='t[0-4]??? t91?? t9200.8' make

to omit such tests. The value of the environment variable is a
SP separated list of patterns that tells which tests to skip,
and either can match the "t[0-9]{4}" part to skip the whole
test, or t[0-9]{4} followed by ".$number" to say which
particular test to skip.

For an individual test suite --run could be used to specify that
only some tests should be run or that some tests should be
excluded from a run.

The argument for --run is a list of individual test numbers or
ranges with an optional negation prefix that define what tests in
a test suite to include in the run. A range is two numbers
separated with a dash and matches a range of tests with both ends
been included. You may omit the first or the second number to
mean "from the first test" or "up to the very last test"
respectively.

Optional prefix of '!' means that the test or a range of tests
should be excluded from the run.

If --run starts with an unprefixed number or range the initial
set of tests to run is empty. If the first item starts with '!'
all the tests are added to the initial set. After initial set is
determined every test number or range is added or excluded from
the set one by one, from left to right.

Individual numbers or ranges could be separated either by a space
or a comma.

For example, to run only tests up to a specific test (21), one
could do this:

$ sh ./t9200-git-cvsexport-commit.sh --run='1-21'

or this:

$ sh ./t9200-git-cvsexport-commit.sh --run='-21'

Common case is to run several setup tests (1, 2, 3) and then a
specific test (21) that relies on that setup:

$ sh ./t9200-git-cvsexport-commit.sh --run='1 2 3 21'

or:

$ sh ./t9200-git-cvsexport-commit.sh --run=1,2,3,21

or:

$ sh ./t9200-git-cvsexport-commit.sh --run='-3 21'

As noted above, the test set is built by going through the items
from left to right, so this:

$ sh ./t9200-git-cvsexport-commit.sh --run='1-4 !3'

will run tests 1, 2, and 4. Items that come later have higher
precedence. It means that this:

$ sh ./t9200-git-cvsexport-commit.sh --run='!3 1-4'

would just run tests from 1 to 4, including 3.

You may use negation with ranges. The following will run all
test in the test suite except from 7 up to 11:

$ sh ./t9200-git-cvsexport-commit.sh --run='!7-11'

Some tests in a test suite rely on the previous tests performing
certain actions, specifically some tests are designated as
"setup" test, so you cannot _arbitrarily_ disable one test and
expect the rest to function correctly.

--run is mostly useful when you want to focus on a specific test
and know what setup is needed for it. Or when you want to run
everything up to a certain test.


Running tests with special setups
---------------------------------

The whole test suite could be run to test some special features
that cannot be easily covered by a few specific test cases. These
could be enabled by running the test suite with correct GIT_TEST_
environment set.

GIT_TEST_FAIL_PREREQS=<boolean> fails all prerequisites. This is
useful for discovering issues with the tests where say a later test
implicitly depends on an optional earlier test.

There's a "FAIL_PREREQS" prerequisite that can be used to test for
whether this mode is active, and e.g. skip some tests that are hard to
refactor to deal with it. The "SYMLINKS" prerequisite is currently
excluded as so much relies on it, but this might change in the future.

GIT_TEST_GETTEXT_POISON=<boolean> turns all strings marked for
translation into gibberish if true. Used for spotting those tests that
need to be marked with a C_LOCALE_OUTPUT prerequisite when adding more
strings for translation. See "Testing marked strings" in po/README for
details.

GIT_TEST_SPLIT_INDEX=<boolean> forces split-index mode on the whole
test suite. Accept any boolean values that are accepted by git-config.

GIT_TEST_PROTOCOL_VERSION=<n>, when set, overrides the
'protocol.version' setting to n if it is less than n.

GIT_TEST_FULL_IN_PACK_ARRAY=<boolean> exercises the uncommon
pack-objects code path where there are more than 1024 packs even if
the actual number of packs in repository is below this limit. Accept
any boolean values that are accepted by git-config.

GIT_TEST_OE_SIZE=<n> exercises the uncommon pack-objects code path
where we do not cache object size in memory and read it from existing
packs on demand. This normally only happens when the object size is
over 2GB. This variable forces the code path on any object larger than
<n> bytes.

GIT_TEST_OE_DELTA_SIZE=<n> exercises the uncommon pack-objects code
path where deltas larger than this limit require extra memory
allocation for bookkeeping.

GIT_TEST_VALIDATE_INDEX_CACHE_ENTRIES=<boolean> checks that cache-tree
records are valid when the index is written out or after a merge. This
is mostly to catch missing invalidation. Default is true.

GIT_TEST_COMMIT_GRAPH=<boolean>, when true, forces the commit-graph to
be written after every 'git commit' command, and overrides the
'core.commitGraph' setting to true.

GIT_TEST_FSMONITOR=$PWD/t7519/fsmonitor-all exercises the fsmonitor
code path for utilizing a file system monitor to speed up detecting
new or changed files.

GIT_TEST_INDEX_VERSION=<n> exercises the index read/write code path
for the index version specified. Can be set to any valid version
(currently 2, 3, or 4).

GIT_TEST_PACK_SPARSE=<boolean> if enabled will default the pack-objects
builtin to use the sparse object walk. This can still be overridden by
the --no-sparse command-line argument.

GIT_TEST_PRELOAD_INDEX=<boolean> exercises the preload-index code path
by overriding the minimum number of cache entries required per thread.

GIT_TEST_STASH_USE_BUILTIN=<boolean>, when false, disables the
built-in version of git-stash. See 'stash.useBuiltin' in
git-config(1).

GIT_TEST_INDEX_THREADS=<n> enables exercising the multi-threaded loading
of the index for the whole test suite by bypassing the default number of
cache entries and thread minimums. Setting this to 1 will make the
index loading single threaded.

GIT_TEST_MULTI_PACK_INDEX=<boolean>, when true, forces the multi-pack-
index to be written after every 'git repack' command, and overrides the
'core.multiPackIndex' setting to true.

GIT_TEST_SIDEBAND_ALL=<boolean>, when true, overrides the
'uploadpack.allowSidebandAll' setting to true, and when false, forces
fetch-pack to not request sideband-all (even if the server advertises
sideband-all).

GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=<boolean>, when true (which is
the default when running tests), errors out when an abbreviated option
is used.

Naming Tests
------------

The test files are named as:

tNNNN-commandname-details.sh

where N is a decimal digit.

First digit tells the family:

0 - the absolute basics and global stuff
1 - the basic commands concerning database
2 - the basic commands concerning the working tree
3 - the other basic commands (e.g. ls-files)
4 - the diff commands
5 - the pull and exporting commands
6 - the revision tree commands (even e.g. merge-base)
7 - the porcelainish commands concerning the working tree
8 - the porcelainish commands concerning forensics
9 - the git tools

Second digit tells the particular command we are testing.

Third digit (optionally) tells the particular switch or group of switches
we are testing.

If you create files under t/ directory (i.e. here) that is not
the top-level test script, never name the file to match the above
pattern. The Makefile here considers all such files as the
top-level test script and tries to run all of them. Care is
especially needed if you are creating a common test library
file, similar to test-lib.sh, because such a library file may
not be suitable for standalone execution.


Writing Tests
-------------

The test script is written as a shell script. It should start
with the standard "#!/bin/sh", and an
assignment to variable 'test_description', like this:

#!/bin/sh

test_description='xxx test (option --frotz)

This test registers the following structure in the cache
and tries to run git-ls-files with option --frotz.'


Source 'test-lib.sh'
--------------------

After assigning test_description, the test script should source
test-lib.sh like this:

. ./test-lib.sh

This test harness library does the following things:

- If the script is invoked with command line argument --help
(or -h), it shows the test_description and exits.

- Creates an empty test directory with an empty .git/objects database
and chdir(2) into it. This directory is 't/trash
directory.$test_name_without_dotsh', with t/ subject to change by
the --root option documented above, and a '.stress-<N>' suffix
appended by the --stress option.

- Defines standard test helper functions for your scripts to
use. These functions are designed to make all scripts behave
consistently when command line arguments --verbose (or -v),
--debug (or -d), and --immediate (or -i) is given.

Do's & don'ts
-------------

Here are a few examples of things you probably should and shouldn't do
when writing tests.

Here are the "do's:"

- Put all code inside test_expect_success and other assertions.

Even code that isn't a test per se, but merely some setup code
should be inside a test assertion.

- Chain your test assertions

Write test code like this:

git merge foo &&
git push bar &&
test ...

Instead of:

git merge hla
git push gh
test ...

That way all of the commands in your tests will succeed or fail. If
you must ignore the return value of something, consider using a
helper function (e.g. use sane_unset instead of unset, in order
to avoid unportable return value for unsetting a variable that was
already unset), or prepending the command with test_might_fail or
test_must_fail.

- Check the test coverage for your tests. See the "Test coverage"
below.

Don't blindly follow test coverage metrics; if a new function you added
doesn't have any coverage, then you're probably doing something wrong,
but having 100% coverage doesn't necessarily mean that you tested
everything.

Tests that are likely to smoke out future regressions are better
than tests that just inflate the coverage metrics.

- When a test checks for an absolute path that a git command generated,
construct the expected value using $(pwd) rather than $PWD,
$TEST_DIRECTORY, or $TRASH_DIRECTORY. It makes a difference on
Windows, where the shell (MSYS bash) mangles absolute path names.
For details, see the commit message of 4114156ae9.

- Remember that inside the <script> part, the standard output and
standard error streams are discarded, and the test harness only
reports "ok" or "not ok" to the end user running the tests. Under
--verbose, they are shown to help debug the tests.

And here are the "don'ts:"

- Don't exit() within a <script> part.

The harness will catch this as a programming error of the test.
Use test_done instead if you need to stop the tests early (see
"Skipping tests" below).

- Don't use '! git cmd' when you want to make sure the git command
exits with failure in a controlled way by calling "die()". Instead,
use 'test_must_fail git cmd'. This will signal a failure if git
dies in an unexpected way (e.g. segfault).

On the other hand, don't use test_must_fail for running regular
platform commands; just use '! cmd'. We are not in the business
of verifying that the world given to us sanely works.

- Don't feed the output of a git command to a pipe, as in:

git -C repo ls-files |
xargs -n 1 basename |
grep foo

which will discard git's exit code and may mask a crash. In the
above example, all exit codes are ignored except grep's.

Instead, write the output of that command to a temporary
file with ">" or assign it to a variable with "x=$(git ...)" rather
than pipe it.

- Don't use command substitution in a way that discards git's exit
code. When assigning to a variable, the exit code is not discarded,
e.g.:

x=$(git cat-file -p $sha) &&
...

is OK because a crash in "git cat-file" will cause the "&&" chain
to fail, but:

test "refs/heads/foo" = "$(git symbolic-ref HEAD)"

is not OK and a crash in git could go undetected.

- Don't use perl without spelling it as "$PERL_PATH". This is to help
our friends on Windows where the platform Perl often adds CR before
the end of line, and they bundle Git with a version of Perl that
does not do so, whose path is specified with $PERL_PATH. Note that we
provide a "perl" function which uses $PERL_PATH under the hood, so
you do not need to worry when simply running perl in the test scripts
(but you do, for example, on a shebang line or in a sub script
created via "write_script").

- Don't use sh without spelling it as "$SHELL_PATH", when the script
can be misinterpreted by broken platform shell (e.g. Solaris).

- Don't chdir around in tests. It is not sufficient to chdir to
somewhere and then chdir back to the original location later in
the test, as any intermediate step can fail and abort the test,
causing the next test to start in an unexpected directory. Do so
inside a subshell if necessary.

- Don't save and verify the standard error of compound commands, i.e.
group commands, subshells, and shell functions (except test helper
functions like 'test_must_fail') like this:

( cd dir && git cmd ) 2>error &&
test_cmp expect error

When running the test with '-x' tracing, then the trace of commands
executed in the compound command will be included in standard error
as well, quite possibly throwing off the subsequent checks examining
the output. Instead, save only the relevant git command's standard
error:

( cd dir && git cmd 2>../error ) &&
test_cmp expect error

- Don't break the TAP output

The raw output from your test may be interpreted by a TAP harness. TAP
harnesses will ignore everything they don't know about, but don't step
on their toes in these areas:

- Don't print lines like "$x..$y" where $x and $y are integers.

- Don't print lines that begin with "ok" or "not ok".

TAP harnesses expect a line that begins with either "ok" and "not
ok" to signal a test passed or failed (and our harness already
produces such lines), so your script shouldn't emit such lines to
their output.

You can glean some further possible issues from the TAP grammar
(see https://metacpan.org/pod/TAP::Parser::Grammar#TAP-GRAMMAR)
but the best indication is to just run the tests with prove(1),
it'll complain if anything is amiss.


Skipping tests
--------------

If you need to skip tests you should do so by using the three-arg form
of the test_* functions (see the "Test harness library" section
below), e.g.:

test_expect_success PERL 'I need Perl' '
perl -e "hlagh() if unf_unf()"
'

The advantage of skipping tests like this is that platforms that don't
have the PERL and other optional dependencies get an indication of how
many tests they're missing.

If the test code is too hairy for that (i.e. does a lot of setup work
outside test assertions) you can also skip all remaining tests by
setting skip_all and immediately call test_done:

if ! test_have_prereq PERL
then
skip_all='skipping perl interface tests, perl not available'
test_done
fi

The string you give to skip_all will be used as an explanation for why
the test was skipped.

End with test_done
------------------

Your script will be a sequence of tests, using helper functions
from the test harness library. At the end of the script, call
'test_done'.


Test harness library
--------------------

There are a handful helper functions defined in the test harness
library for your script to use.

- test_expect_success [<prereq>] <message> <script>

Usually takes two strings as parameters, and evaluates the
<script>. If it yields success, test is considered
successful. <message> should state what it is testing.

Example:

test_expect_success \
'git-write-tree should be able to write an empty tree.' \
'tree=$(git-write-tree)'

If you supply three parameters the first will be taken to be a
prerequisite; see the test_set_prereq and test_have_prereq
documentation below:

test_expect_success TTY 'git --paginate rev-list uses a pager' \
' ... '

You can also supply a comma-separated list of prerequisites, in the
rare case where your test depends on more than one:

test_expect_success PERL,PYTHON 'yo dawg' \
' test $(perl -E 'print eval "1 +" . qx[python -c "print 2"]') == "4" '

- test_expect_failure [<prereq>] <message> <script>

This is NOT the opposite of test_expect_success, but is used
to mark a test that demonstrates a known breakage. Unlike
the usual test_expect_success tests, which say "ok" on
success and "FAIL" on failure, this will say "FIXED" on
success and "still broken" on failure. Failures from these
tests won't cause -i (immediate) to stop.

Like test_expect_success this function can optionally use a three
argument invocation with a prerequisite as the first argument.

- test_debug <script>

This takes a single argument, <script>, and evaluates it only
when the test script is started with --debug command line
argument. This is primarily meant for use during the
development of a new test script.

- debug <git-command>

Run a git command inside a debugger. This is primarily meant for
use when debugging a failing test script.

- test_done

Your test script must have test_done at the end. Its purpose
is to summarize successes and failures in the test script and
exit with an appropriate error code.

- test_tick

Make commit and tag names consistent by setting the author and
committer times to defined state. Subsequent calls will
advance the times by a fixed amount.

- test_commit <message> [<filename> [<contents>]]

Creates a commit with the given message, committing the given
file with the given contents (default for both is to reuse the
message string), and adds a tag (again reusing the message
string as name). Calls test_tick to make the SHA-1s
reproducible.

- test_merge <message> <commit-or-tag>

Merges the given rev using the given message. Like test_commit,
creates a tag and calls test_tick before committing.

- test_set_prereq <prereq>

Set a test prerequisite to be used later with test_have_prereq. The
test-lib will set some prerequisites for you, see the
"Prerequisites" section below for a full list of these.

Others you can set yourself and use later with either
test_have_prereq directly, or the three argument invocation of
test_expect_success and test_expect_failure.

- test_have_prereq <prereq>

Check if we have a prerequisite previously set with test_set_prereq.
The most common way to use this explicitly (as opposed to the
implicit use when an argument is passed to test_expect_*) is to skip
all the tests at the start of the test script if we don't have some
essential prerequisite:

if ! test_have_prereq PERL
then
skip_all='skipping perl interface tests, perl not available'
test_done
fi

- test_external [<prereq>] <message> <external> <script>

Execute a <script> with an <external> interpreter (like perl). This
was added for tests like t9700-perl-git.sh which do most of their
work in an external test script.

test_external \
'GitwebCache::*FileCache*' \
perl "$TEST_DIRECTORY"/t9503/test_cache_interface.pl

If the test is outputting its own TAP you should set the
test_external_has_tap variable somewhere before calling the first
test_external* function. See t9700-perl-git.sh for an example.

# The external test will outputs its own plan
test_external_has_tap=1

- test_external_without_stderr [<prereq>] <message> <external> <script>

Like test_external but fail if there's any output on stderr,
instead of checking the exit code.

test_external_without_stderr \
'Perl API' \
perl "$TEST_DIRECTORY"/t9700/test.pl

- test_expect_code <exit-code> <command>

Run a command and ensure that it exits with the given exit code.
For example:

test_expect_success 'Merge with d/f conflicts' '
test_expect_code 1 git merge "merge msg" B master
'

- test_must_fail [<options>] <git-command>

Run a git command and ensure it fails in a controlled way. Use
this instead of "! <git-command>". When git-command dies due to a
segfault, test_must_fail diagnoses it as an error; "! <git-command>"
treats it as just another expected failure, which would let such a
bug go unnoticed.

Accepts the following options:

ok=<signal-name>[,<...>]:
Don't treat an exit caused by the given signal as error.
Multiple signals can be specified as a comma separated list.
Currently recognized signal names are: sigpipe, success.
(Don't use 'success', use 'test_might_fail' instead.)

- test_might_fail [<options>] <git-command>

Similar to test_must_fail, but tolerate success, too. Use this
instead of "<git-command> || :" to catch failures due to segv.

Accepts the same options as test_must_fail.

- test_cmp <expected> <actual>

Check whether the content of the <actual> file matches the
<expected> file. This behaves like "cmp" but produces more
helpful output when the test is run with "-v" option.

- test_cmp_rev <expected> <actual>

Check whether the <expected> rev points to the same commit as the
<actual> rev.

- test_line_count (= | -lt | -ge | ...) <length> <file>

Check whether a file has the length it is expected to.

- test_path_is_file <path> [<diagnosis>]
test_path_is_dir <path> [<diagnosis>]
test_path_is_missing <path> [<diagnosis>]

Check if the named path is a file, if the named path is a
directory, or if the named path does not exist, respectively,
and fail otherwise, showing the <diagnosis> text.

- test_when_finished <script>

Prepend <script> to a list of commands to run to clean up
at the end of the current test. If some clean-up command
fails, the test will not pass.

Example:

test_expect_success 'branch pointing to non-commit' '
git rev-parse HEAD^{tree} >.git/refs/heads/invalid &&
test_when_finished "git update-ref -d refs/heads/invalid" &&
...
'

- test_atexit <script>

Prepend <script> to a list of commands to run unconditionally to
clean up before the test script exits, e.g. to stop a daemon:

test_expect_success 'test git daemon' '
git daemon &
daemon_pid=$! &&
test_atexit 'kill $daemon_pid' &&
hello world
'

The commands will be executed before the trash directory is removed,
i.e. the atexit commands will still be able to access any pidfiles or
socket files.

Note that these commands will be run even when a test script run
with '--immediate' fails. Be careful with your atexit commands to
minimize any changes to the failed state.

- test_write_lines <lines>

Write <lines> on standard output, one line per argument.
Useful to prepare multi-line files in a compact form.

Example:

test_write_lines a b c d e f g >foo

Is a more compact equivalent of:
cat >foo <<-EOF
a
b
c
d
e
f
g
EOF


- test_pause

This command is useful for writing and debugging tests and must be
removed before submitting. It halts the execution of the test and
spawns a shell in the trash directory. Exit the shell to continue
the test. Example:

test_expect_success 'test' '
git do-something >actual &&
test_pause &&
test_cmp expected actual
'

- test_ln_s_add <path1> <path2>

This function helps systems whose filesystem does not support symbolic
links. Use it to add a symbolic link entry to the index when it is not
important that the file system entry is a symbolic link, i.e., instead
of the sequence

ln -s foo bar &&
git add bar

Sometimes it is possible to split a test in a part that does not need
the symbolic link in the file system and a part that does; then only
the latter part need be protected by a SYMLINKS prerequisite (see below).

- test_oid_init

This function loads facts and useful object IDs related to the hash
algorithm(s) in use from the files in t/oid-info.

- test_oid_cache

This function reads per-hash algorithm information from standard
input (usually a heredoc) in the format described in
t/oid-info/README. This is useful for test-specific values, such as
object IDs, which must vary based on the hash algorithm.

Certain fixed values, such as hash sizes and common placeholder
object IDs, can be loaded with test_oid_init (described above).

- test_oid <key>

This function looks up a value for the hash algorithm in use, based
on the key given. The value must have been loaded using
test_oid_init or test_oid_cache. Providing an unknown key is an
error.

- yes [<string>]

This is often seen in modern UNIX but some platforms lack it, so
the test harness overrides the platform implementation with a
more limited one. Use this only when feeding a handful lines of
output to the downstream---unlike the real version, it generates
only up to 99 lines.


Prerequisites
-------------

These are the prerequisites that the test library predefines with
test_have_prereq.

See the prereq argument to the test_* functions in the "Test harness
library" section above and the "test_have_prereq" function for how to
use these, and "test_set_prereq" for how to define your own.

- PYTHON

Git wasn't compiled with NO_PYTHON=YesPlease. Wrap any tests that
need Python with this.

- PERL

Git wasn't compiled with NO_PERL=YesPlease.

Even without the PERL prerequisite, tests can assume there is a
usable perl interpreter at $PERL_PATH, though it need not be
particularly modern.

- POSIXPERM

The filesystem supports POSIX style permission bits.

- BSLASHPSPEC

Backslashes in pathspec are not directory separators. This is not
set on Windows. See 6fd1106a for details.

- EXECKEEPSPID

The process retains the same pid across exec(2). See fb9a2bea for
details.

- PIPE

The filesystem we're on supports creation of FIFOs (named pipes)
via mkfifo(1).

- SYMLINKS

The filesystem we're on supports symbolic links. E.g. a FAT
filesystem doesn't support these. See 704a3143 for details.

- SANITY

Test is not run by root user, and an attempt to write to an
unwritable file is expected to fail correctly.

- PCRE

Git was compiled with support for PCRE. Wrap any tests
that use git-grep --perl-regexp or git-grep -P in these.

- LIBPCRE1

Git was compiled with PCRE v1 support via
USE_LIBPCRE1=YesPlease. Wrap any PCRE using tests that for some
reason need v1 of the PCRE library instead of v2 in these.

- LIBPCRE2

Git was compiled with PCRE v2 support via
USE_LIBPCRE2=YesPlease. Wrap any PCRE using tests that for some
reason need v2 of the PCRE library instead of v1 in these.

- CASE_INSENSITIVE_FS

Test is run on a case insensitive file system.

- UTF8_NFD_TO_NFC

Test is run on a filesystem which converts decomposed utf-8 (nfd)
to precomposed utf-8 (nfc).

- PTHREADS

Git wasn't compiled with NO_PTHREADS=YesPlease.

Tips for Writing Tests
----------------------

As with any programming projects, existing programs are the best
source of the information. However, do _not_ emulate
t0000-basic.sh when writing your tests. The test is special in
that it tries to validate the very core of GIT. For example, it
knows that there will be 256 subdirectories under .git/objects/,
and it knows that the object ID of an empty tree is a certain
40-byte string. This is deliberately done so in t0000-basic.sh
because the things the very basic core test tries to achieve is
to serve as a basis for people who are changing the GIT internal
drastically. For these people, after making certain changes,
not seeing failures from the basic test _is_ a failure. And
such drastic changes to the core GIT that even changes these
otherwise supposedly stable object IDs should be accompanied by
an update to t0000-basic.sh.

However, other tests that simply rely on basic parts of the core
GIT working properly should not have that level of intimate
knowledge of the core GIT internals. If all the test scripts
hardcoded the object IDs like t0000-basic.sh does, that defeats
the purpose of t0000-basic.sh, which is to isolate that level of
validation in one place. Your test also ends up needing
updating when such a change to the internal happens, so do _not_
do it and leave the low level of validation to t0000-basic.sh.

Test coverage
-------------

You can use the coverage tests to find code paths that are not being
used or properly exercised yet.

To do that, run the coverage target at the top-level (not in the t/
directory):

make coverage

That'll compile Git with GCC's coverage arguments, and generate a test
report with gcov after the tests finish. Running the coverage tests
can take a while, since running the tests in parallel is incompatible
with GCC's coverage mode.

After the tests have run you can generate a list of untested
functions:

make coverage-untested-functions

You can also generate a detailed per-file HTML report using the
Devel::Cover module. To install it do:

# On Debian or Ubuntu:
sudo aptitude install libdevel-cover-perl

# From the CPAN with cpanminus
curl -L http://cpanmin.us | perl - --sudo --self-upgrade
cpanm --sudo Devel::Cover

Then, at the top-level:

make cover_db_html

That'll generate a detailed cover report in the "cover_db_html"
directory, which you can then copy to a webserver, or inspect locally
in a browser.