#!/bin/sh test_description='git for-each-repo builtin' TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh test_expect_success 'run based on configured value' ' git init one && git init two && git init three && git init ~/four && git -C two commit --allow-empty -m "DID NOT RUN" && git config run.key "$TRASH_DIRECTORY/one" && git config --add run.key "$TRASH_DIRECTORY/three" && git config --add run.key "~/four" && git for-each-repo --config=run.key commit --allow-empty -m "ran" && git -C one log -1 --pretty=format:%s >message && grep ran message && git -C two log -1 --pretty=format:%s >message && ! grep ran message && git -C three log -1 --pretty=format:%s >message && grep ran message && git -C ~/four log -1 --pretty=format:%s >message && grep ran message && git for-each-repo --config=run.key -- commit --allow-empty -m "ran again" && git -C one log -1 --pretty=format:%s >message && grep again message && git -C two log -1 --pretty=format:%s >message && ! grep again message && git -C three log -1 --pretty=format:%s >message && grep again message && git -C ~/four log -1 --pretty=format:%s >message && grep again message ' test_expect_success 'do nothing on empty config' ' # the whole thing would fail if for-each-ref iterated even # once, because "git help --no-such-option" would fail git for-each-repo --config=bogus.config -- help --no-such-option ' test_expect_success 'error on bad config keys' ' test_expect_code 129 git for-each-repo --config=a && test_expect_code 129 git for-each-repo --config=a.b. && test_expect_code 129 git for-each-repo --config="'\''.b" ' test_expect_success 'error on NULL value for config keys' ' cat >>.git/config <<-\EOF && [empty] key EOF cat >expect <<-\EOF && error: missing value for '\''empty.key'\'' EOF test_expect_code 129 git for-each-repo --config=empty.key 2>actual.raw && grep ^error actual.raw >actual && test_cmp expect actual ' test_done