[PATCH 21/24] t7063: tests for untracked cache
Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com Signed-off-by: Junio C Hamano gits...@pobox.com --- .gitignore | 1 + Makefile | 1 + t/t7063-status-untracked-cache.sh (new +x) | 353 + test-dump-untracked-cache.c (new) | 61 + 4 files changed, 416 insertions(+) create mode 100755 t/t7063-status-untracked-cache.sh create mode 100644 test-dump-untracked-cache.c diff --git a/.gitignore b/.gitignore index 81e12c0..e2bb375 100644 --- a/.gitignore +++ b/.gitignore @@ -182,6 +182,7 @@ /test-delta /test-dump-cache-tree /test-dump-split-index +/test-dump-untracked-cache /test-scrap-cache-tree /test-genrandom /test-hashmap diff --git a/Makefile b/Makefile index 9f984a9..fa58a53 100644 --- a/Makefile +++ b/Makefile @@ -555,6 +555,7 @@ TEST_PROGRAMS_NEED_X += test-date TEST_PROGRAMS_NEED_X += test-delta TEST_PROGRAMS_NEED_X += test-dump-cache-tree TEST_PROGRAMS_NEED_X += test-dump-split-index +TEST_PROGRAMS_NEED_X += test-dump-untracked-cache TEST_PROGRAMS_NEED_X += test-genrandom TEST_PROGRAMS_NEED_X += test-hashmap TEST_PROGRAMS_NEED_X += test-index-version diff --git a/t/t7063-status-untracked-cache.sh b/t/t7063-status-untracked-cache.sh new file mode 100755 index 000..2b2ffd7 --- /dev/null +++ b/t/t7063-status-untracked-cache.sh @@ -0,0 +1,353 @@ +#!/bin/sh + +test_description='test untracked cache' + +. ./test-lib.sh + +avoid_racy() { + sleep 1 +} + +git update-index --untracked-cache +# It's fine if git update-index returns an error code other than one, +# it'll be caught in the first test. +if test $? -eq 1; then + skip_all='This system does not support untracked cache' + test_done +fi + +test_expect_success 'setup' ' + git init worktree + cd worktree + mkdir done dtwo dthree + touch one two three done/one dtwo/two dthree/three + git add one two done/one + : .git/info/exclude + git update-index --untracked-cache +' + +test_expect_success 'untracked cache is empty' ' + test-dump-untracked-cache ../actual + cat ../expect EOF +info/exclude +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +EOF + test_cmp ../expect ../actual +' + +cat ../status.expect EOF +A done/one +A one +A two +?? dthree/ +?? dtwo/ +?? three +EOF + +cat ../dump.expect EOF +info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +/ recurse valid +dthree/ +dtwo/ +three +/done/ recurse valid +/dthree/ recurse check_only valid +three +/dtwo/ recurse check_only valid +two +EOF + +test_expect_success 'status first time (empty cache)' ' + avoid_racy + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 3 +gitignore invalidation: 1 +directory invalidation: 0 +opendir: 4 +EOF + test_cmp ../trace.expect ../trace +' + +test_expect_success 'untracked cache after first status' ' + test-dump-untracked-cache ../actual + test_cmp ../dump.expect ../actual +' + +test_expect_success 'status second time (fully populated cache)' ' + avoid_racy + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 0 +gitignore invalidation: 0 +directory invalidation: 0 +opendir: 0 +EOF + test_cmp ../trace.expect ../trace +' + +test_expect_success 'untracked cache after second status' ' + test-dump-untracked-cache ../actual + test_cmp ../dump.expect ../actual +' + +test_expect_success 'modify in root directory, one dir invalidation' ' + avoid_racy + : four + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + cat ../status.expect EOF +A done/one +A one +A two +?? dthree/ +?? dtwo/ +?? four +?? three +EOF + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 0 +gitignore invalidation: 0 +directory invalidation: 1 +opendir: 1 +EOF + test_cmp ../trace.expect ../trace + +' + +test_expect_success 'verify untracked cache dump' ' + test-dump-untracked-cache ../actual + cat ../expect EOF +info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +/
[PATCH 21/24] t7063: tests for untracked cache
Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com Signed-off-by: Junio C Hamano gits...@pobox.com --- .gitignore | 1 + Makefile | 1 + t/t7063-status-untracked-cache.sh (new +x) | 353 + test-dump-untracked-cache.c (new) | 61 + 4 files changed, 416 insertions(+) create mode 100755 t/t7063-status-untracked-cache.sh create mode 100644 test-dump-untracked-cache.c diff --git a/.gitignore b/.gitignore index 81e12c0..e2bb375 100644 --- a/.gitignore +++ b/.gitignore @@ -182,6 +182,7 @@ /test-delta /test-dump-cache-tree /test-dump-split-index +/test-dump-untracked-cache /test-scrap-cache-tree /test-genrandom /test-hashmap diff --git a/Makefile b/Makefile index 9f984a9..fa58a53 100644 --- a/Makefile +++ b/Makefile @@ -555,6 +555,7 @@ TEST_PROGRAMS_NEED_X += test-date TEST_PROGRAMS_NEED_X += test-delta TEST_PROGRAMS_NEED_X += test-dump-cache-tree TEST_PROGRAMS_NEED_X += test-dump-split-index +TEST_PROGRAMS_NEED_X += test-dump-untracked-cache TEST_PROGRAMS_NEED_X += test-genrandom TEST_PROGRAMS_NEED_X += test-hashmap TEST_PROGRAMS_NEED_X += test-index-version diff --git a/t/t7063-status-untracked-cache.sh b/t/t7063-status-untracked-cache.sh new file mode 100755 index 000..2b2ffd7 --- /dev/null +++ b/t/t7063-status-untracked-cache.sh @@ -0,0 +1,353 @@ +#!/bin/sh + +test_description='test untracked cache' + +. ./test-lib.sh + +avoid_racy() { + sleep 1 +} + +git update-index --untracked-cache +# It's fine if git update-index returns an error code other than one, +# it'll be caught in the first test. +if test $? -eq 1; then + skip_all='This system does not support untracked cache' + test_done +fi + +test_expect_success 'setup' ' + git init worktree + cd worktree + mkdir done dtwo dthree + touch one two three done/one dtwo/two dthree/three + git add one two done/one + : .git/info/exclude + git update-index --untracked-cache +' + +test_expect_success 'untracked cache is empty' ' + test-dump-untracked-cache ../actual + cat ../expect EOF +info/exclude +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +EOF + test_cmp ../expect ../actual +' + +cat ../status.expect EOF +A done/one +A one +A two +?? dthree/ +?? dtwo/ +?? three +EOF + +cat ../dump.expect EOF +info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +/ recurse valid +dthree/ +dtwo/ +three +/done/ recurse valid +/dthree/ recurse check_only valid +three +/dtwo/ recurse check_only valid +two +EOF + +test_expect_success 'status first time (empty cache)' ' + avoid_racy + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 3 +gitignore invalidation: 1 +directory invalidation: 0 +opendir: 4 +EOF + test_cmp ../trace.expect ../trace +' + +test_expect_success 'untracked cache after first status' ' + test-dump-untracked-cache ../actual + test_cmp ../dump.expect ../actual +' + +test_expect_success 'status second time (fully populated cache)' ' + avoid_racy + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 0 +gitignore invalidation: 0 +directory invalidation: 0 +opendir: 0 +EOF + test_cmp ../trace.expect ../trace +' + +test_expect_success 'untracked cache after second status' ' + test-dump-untracked-cache ../actual + test_cmp ../dump.expect ../actual +' + +test_expect_success 'modify in root directory, one dir invalidation' ' + avoid_racy + : four + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + cat ../status.expect EOF +A done/one +A one +A two +?? dthree/ +?? dtwo/ +?? four +?? three +EOF + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 0 +gitignore invalidation: 0 +directory invalidation: 1 +opendir: 1 +EOF + test_cmp ../trace.expect ../trace + +' + +test_expect_success 'verify untracked cache dump' ' + test-dump-untracked-cache ../actual + cat ../expect EOF +info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +/
[PATCH 21/24] t7063: tests for untracked cache
Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com Signed-off-by: Junio C Hamano gits...@pobox.com --- .gitignore | 1 + Makefile | 1 + t/t7063-status-untracked-cache.sh (new +x) | 353 + test-dump-untracked-cache.c (new) | 61 + 4 files changed, 416 insertions(+) create mode 100755 t/t7063-status-untracked-cache.sh create mode 100644 test-dump-untracked-cache.c diff --git a/.gitignore b/.gitignore index 81e12c0..e2bb375 100644 --- a/.gitignore +++ b/.gitignore @@ -182,6 +182,7 @@ /test-delta /test-dump-cache-tree /test-dump-split-index +/test-dump-untracked-cache /test-scrap-cache-tree /test-genrandom /test-hashmap diff --git a/Makefile b/Makefile index 9f984a9..fa58a53 100644 --- a/Makefile +++ b/Makefile @@ -555,6 +555,7 @@ TEST_PROGRAMS_NEED_X += test-date TEST_PROGRAMS_NEED_X += test-delta TEST_PROGRAMS_NEED_X += test-dump-cache-tree TEST_PROGRAMS_NEED_X += test-dump-split-index +TEST_PROGRAMS_NEED_X += test-dump-untracked-cache TEST_PROGRAMS_NEED_X += test-genrandom TEST_PROGRAMS_NEED_X += test-hashmap TEST_PROGRAMS_NEED_X += test-index-version diff --git a/t/t7063-status-untracked-cache.sh b/t/t7063-status-untracked-cache.sh new file mode 100755 index 000..2b2ffd7 --- /dev/null +++ b/t/t7063-status-untracked-cache.sh @@ -0,0 +1,353 @@ +#!/bin/sh + +test_description='test untracked cache' + +. ./test-lib.sh + +avoid_racy() { + sleep 1 +} + +git update-index --untracked-cache +# It's fine if git update-index returns an error code other than one, +# it'll be caught in the first test. +if test $? -eq 1; then + skip_all='This system does not support untracked cache' + test_done +fi + +test_expect_success 'setup' ' + git init worktree + cd worktree + mkdir done dtwo dthree + touch one two three done/one dtwo/two dthree/three + git add one two done/one + : .git/info/exclude + git update-index --untracked-cache +' + +test_expect_success 'untracked cache is empty' ' + test-dump-untracked-cache ../actual + cat ../expect EOF +info/exclude +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +EOF + test_cmp ../expect ../actual +' + +cat ../status.expect EOF +A done/one +A one +A two +?? dthree/ +?? dtwo/ +?? three +EOF + +cat ../dump.expect EOF +info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +/ recurse valid +dthree/ +dtwo/ +three +/done/ recurse valid +/dthree/ recurse check_only valid +three +/dtwo/ recurse check_only valid +two +EOF + +test_expect_success 'status first time (empty cache)' ' + avoid_racy + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 3 +gitignore invalidation: 1 +directory invalidation: 0 +opendir: 4 +EOF + test_cmp ../trace.expect ../trace +' + +test_expect_success 'untracked cache after first status' ' + test-dump-untracked-cache ../actual + test_cmp ../dump.expect ../actual +' + +test_expect_success 'status second time (fully populated cache)' ' + avoid_racy + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 0 +gitignore invalidation: 0 +directory invalidation: 0 +opendir: 0 +EOF + test_cmp ../trace.expect ../trace +' + +test_expect_success 'untracked cache after second status' ' + test-dump-untracked-cache ../actual + test_cmp ../dump.expect ../actual +' + +test_expect_success 'modify in root directory, one dir invalidation' ' + avoid_racy + : four + : ../trace + GIT_TRACE_UNTRACKED_STATS=$TRASH_DIRECTORY/trace \ + git status --porcelain ../actual + cat ../status.expect EOF +A done/one +A one +A two +?? dthree/ +?? dtwo/ +?? four +?? three +EOF + test_cmp ../status.expect ../actual + cat ../trace.expect EOF +node creation: 0 +gitignore invalidation: 0 +directory invalidation: 1 +opendir: 1 +EOF + test_cmp ../trace.expect ../trace + +' + +test_expect_success 'verify untracked cache dump' ' + test-dump-untracked-cache ../actual + cat ../expect EOF +info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 +core.excludesfile +exclude_per_dir .gitignore +flags 0006 +/