#!/bin/sh test_description='test wildcards and literals with git add/commit (subshell style)' . ./test-lib.sh test_have_prereq FUNNYNAMES || { skip_all='skipping: needs FUNNYNAMES (non-Windows only)' test_done } prepare_test_files () { for f in "*" "**" "?" "[abc]" "a" "f*" "f**" "f?z" "foo*bar" "hello?world" "hello_world" do >"$f" || return done } test_expect_success 'add wildcard *' ' git init test-asterisk && ( cd test-asterisk && prepare_test_files && git add "*" && cat >expect <<-EOF && * ** ? [abc] a f* f** f?z foo*bar hello?world hello_world EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add literal \*' ' git init test-asterisk-literal && ( cd test-asterisk-literal && prepare_test_files && git add "\*" && cat >expect <<-EOF && * EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard **' ' git init test-dstar && ( cd test-dstar && prepare_test_files && git add "**" && cat >expect <<-EOF && * ** ? [abc] a f* f** f?z foo*bar hello?world hello_world EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard ?' ' git init test-qmark && ( cd test-qmark && prepare_test_files && git add "?" && cat >expect <<-\EOF | sort && * ? a EOF git ls-files | sort >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard [abc]' ' git init test-brackets && ( cd test-brackets && prepare_test_files && git add "[abc]" && cat >expect <<-\EOF | sort && [abc] a EOF git ls-files | sort >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard f*' ' git init test-f-wild && ( cd test-f-wild && prepare_test_files && git add "f*" && cat >expect <<-\EOF | sort && f* f** f?z foo*bar EOF git ls-files | sort >actual && test_cmp expect actual ) ' test_expect_success 'add literal f\*' ' git init test-f-lit && ( cd test-f-lit && prepare_test_files && git add "f\*" && cat >expect <<-\EOF && f* EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard f**' ' git init test-fdstar && ( cd test-fdstar && prepare_test_files && git add "f**" && cat >expect <<-\EOF | sort && f* f** f?z foo*bar EOF git ls-files | sort >actual && test_cmp expect actual ) ' test_expect_success 'add literal f\*\*' ' git init test-fdstar-lit && ( cd test-fdstar-lit && prepare_test_files && git add "f\*\*" && cat >expect <<-\EOF && f** EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard f?z' ' git init test-fqz && ( cd test-fqz && prepare_test_files && git add "f?z" && cat >expect <<-\EOF && f?z EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add literal \? literal' ' git init test-q-lit && ( cd test-q-lit && prepare_test_files && git add "\?" && cat >expect <<-\EOF && ? EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard foo*bar' ' git init test-foobar && ( cd test-foobar && prepare_test_files && git add "foo*bar" && cat >expect <<-\EOF && foo*bar EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add wildcard hello?world' ' git init test-hellowild && ( cd test-hellowild && prepare_test_files && git add "hello?world" && cat >expect <<-\EOF && hello?world hello_world EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add literal hello\?world' ' git init test-hellolit && ( cd test-hellolit && prepare_test_files && git add "hello\?world" && cat >expect <<-\EOF && hello?world EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'add literal [abc]' ' git init test-brackets-lit && ( cd test-brackets-lit && prepare_test_files && git add "\[abc\]" && cat >expect <<-\EOF && [abc] EOF git ls-files >actual && test_cmp expect actual ) ' test_expect_success 'commit: wildcard *' ' git init test-c-asterisk && ( cd test-c-asterisk && prepare_test_files && git add . && git commit -m "c1" -- "*" && cat >expect <<-EOF && * ** ? [abc] a f* f** f?z foo*bar hello?world hello_world EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_expect_success 'commit: literal *' ' git init test-c-asterisk-lit && ( cd test-c-asterisk-lit && prepare_test_files && git add . && git commit -m "c2" -- "\*" && cat >expect <<-EOF && * EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_expect_success 'commit: wildcard f*' ' git init test-c-fwild && ( cd test-c-fwild && prepare_test_files && git add . && git commit -m "c3" -- "f*" && cat >expect <<-EOF && f* f** f?z foo*bar EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_expect_success 'commit: literal f\*' ' git init test-c-flit && ( cd test-c-flit && prepare_test_files && git add . && git commit -m "c4" -- "f\*" && cat >expect <<-EOF && f* EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_expect_success 'commit: wildcard pathspec limits commit' ' git init test-c-pathlimit && ( cd test-c-pathlimit && prepare_test_files && git add . && git commit -m "c5" -- "f**" && cat >expect <<-EOF && f* f** f?z foo*bar EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_expect_success 'commit: literal f\*\*' ' git init test-c-fdstar-lit && ( cd test-c-fdstar-lit && prepare_test_files && git add . && git commit -m "c6" -- "f\*\*" && cat >expect <<-EOF && f** EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_expect_success 'commit: wildcard ?' ' git init test-c-qwild && ( cd test-c-qwild && prepare_test_files && git add . && git commit -m "c7" -- "?" && cat >expect <<-EOF && * ? a EOF git ls-tree -r --name-only HEAD | sort >actual && sort expect >expect.sorted && test_cmp expect.sorted actual ) ' test_expect_success 'commit: literal \?' ' git init test-c-qlit && ( cd test-c-qlit && prepare_test_files && git add . && git commit -m "c8" -- "\?" && cat >expect <<-EOF && ? EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_expect_success 'commit: wildcard hello?world' ' git init test-c-hellowild && ( cd test-c-hellowild && prepare_test_files && git add . && git commit -m "c9" -- "hello?world" && cat >expect <<-EOF && hello?world hello_world EOF git ls-tree -r --name-only HEAD | sort >actual && sort expect >expect.sorted && test_cmp expect.sorted actual ) ' test_expect_success 'commit: literal hello\?world' ' git init test-c-hellolit && ( cd test-c-hellolit && prepare_test_files && git add . && git commit -m "c10" -- "hello\?world" && cat >expect <<-EOF && hello?world EOF git ls-tree -r --name-only HEAD >actual && test_cmp expect actual ) ' test_done