Git fork
at reftables-rust 77 lines 2.4 kB view raw
1#!/bin/sh 2 3test_description='git for-each-repo builtin' 4 5. ./test-lib.sh 6 7test_expect_success 'run based on configured value' ' 8 git init one && 9 git init two && 10 git init three && 11 git init ~/four && 12 git -C two commit --allow-empty -m "DID NOT RUN" && 13 git config run.key "$TRASH_DIRECTORY/one" && 14 git config --add run.key "$TRASH_DIRECTORY/three" && 15 git config --add run.key "~/four" && 16 git for-each-repo --config=run.key commit --allow-empty -m "ran" && 17 git -C one log -1 --pretty=format:%s >message && 18 grep ran message && 19 git -C two log -1 --pretty=format:%s >message && 20 ! grep ran message && 21 git -C three log -1 --pretty=format:%s >message && 22 grep ran message && 23 git -C ~/four log -1 --pretty=format:%s >message && 24 grep ran message && 25 git for-each-repo --config=run.key -- commit --allow-empty -m "ran again" && 26 git -C one log -1 --pretty=format:%s >message && 27 grep again message && 28 git -C two log -1 --pretty=format:%s >message && 29 ! grep again message && 30 git -C three log -1 --pretty=format:%s >message && 31 grep again message && 32 git -C ~/four log -1 --pretty=format:%s >message && 33 grep again message 34' 35 36test_expect_success 'do nothing on empty config' ' 37 # the whole thing would fail if for-each-ref iterated even 38 # once, because "git help --no-such-option" would fail 39 git for-each-repo --config=bogus.config -- help --no-such-option 40' 41 42test_expect_success 'error on bad config keys' ' 43 test_expect_code 129 git for-each-repo --config=a && 44 test_expect_code 129 git for-each-repo --config=a.b. && 45 test_expect_code 129 git for-each-repo --config="'\''.b" 46' 47 48test_expect_success 'error on NULL value for config keys' ' 49 cat >>.git/config <<-\EOF && 50 [empty] 51 key 52 EOF 53 cat >expect <<-\EOF && 54 error: missing value for '\''empty.key'\'' 55 EOF 56 test_expect_code 129 git for-each-repo --config=empty.key 2>actual.raw && 57 grep ^error actual.raw >actual && 58 test_cmp expect actual 59' 60 61test_expect_success '--keep-going' ' 62 git config keep.going non-existing && 63 git config --add keep.going . && 64 65 test_must_fail git for-each-repo --config=keep.going \ 66 -- branch >out 2>err && 67 test_grep "cannot change to .*non-existing" err && 68 test_must_be_empty out && 69 70 test_must_fail git for-each-repo --config=keep.going --keep-going \ 71 -- branch >out 2>err && 72 test_grep "cannot change to .*non-existing" err && 73 git branch >expect && 74 test_cmp expect out 75' 76 77test_done