(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'per-repo forced setting of email address'>)} spids: [16] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {(SQ <'setup a likely user.useConfigOnly use case'>)} { (SQ <'\n'> <'\t# we want to make sure a reflog is written, since that needs\n'> <'\t# a non-strict ident. So be sure we have an actual commit.\n'> <'\ttest_commit foo &&\n'> <'\n'> <'\tsane_unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL &&\n'> <'\tsane_unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL &&\n'> <'\tgit config user.name "test" &&\n'> <'\tgit config --global user.useConfigOnly true\n'> ) } ) (C {<test_expect_success>} {(SQ <'fails committing if clone email is not set'>)} {(SQ <'\n'> <'\ttest_must_fail git commit --allow-empty -m msg\n'>)} ) (C {<test_expect_success>} {(SQ <'fails committing if clone email is not set, but EMAIL set'>)} {(SQ <'\n'> <'\ttest_must_fail env EMAIL=test@fail.com git commit --allow-empty -m msg\n'>)} ) (C {<test_expect_success>} {(SQ <'succeeds committing if clone email is set'>)} { (SQ <'\n'> <'\ttest_config user.email "test@ok.com" &&\n'> <'\tgit commit --allow-empty -m msg\n'> ) } ) (C {<test_expect_success>} {(SQ <'succeeds cloning if global email is not set'>)} {(SQ <'\n'> <'\tgit clone . clone\n'>)} ) (C {<test_expect_success>} {(SQ <'set up rebase scenarios'>)} { (SQ <'\n'> <'\t# temporarily enable an actual ident for this setup\n'> <'\ttest_config user.email foo@example.com &&\n'> <'\ttest_commit new &&\n'> <'\tgit branch side-without-commit HEAD^ &&\n'> <'\tgit checkout -b side-with-commit HEAD^ &&\n'> <'\ttest_commit side\n'> ) } ) (C {<test_expect_success>} {(SQ <'fast-forward rebase does not care about ident'>)} {(SQ <'\n'> <'\tgit checkout -B tmp side-without-commit &&\n'> <'\tgit rebase master\n'>)} ) (C {<test_expect_success>} {(SQ <'non-fast-forward rebase refuses to write commits'>)} { (SQ <'\n'> <'\ttest_when_finished "git rebase --abort || true" &&\n'> <'\tgit checkout -B tmp side-with-commit &&\n'> <'\ttest_must_fail git rebase master\n'> ) } ) (C {<test_expect_success>} {(SQ <'fast-forward rebase does not care about ident (interactive)'>)} {(SQ <'\n'> <'\tgit checkout -B tmp side-without-commit &&\n'> <'\tgit rebase -i master\n'>)} ) (C {<test_expect_success>} {(SQ <'non-fast-forward rebase refuses to write commits (interactive)'>)} { (SQ <'\n'> <'\ttest_when_finished "git rebase --abort || true" &&\n'> <'\tgit checkout -B tmp side-with-commit &&\n'> <'\ttest_must_fail git rebase -i master\n'> ) } ) (C {<test_expect_success>} {(SQ <'noop interactive rebase does not care about ident'>)} {(SQ <'\n'> <'\tgit checkout -B tmp side-with-commit &&\n'> <'\tgit rebase -i HEAD^\n'>)} ) (C {<test_expect_success>} {(SQ <'fast-forward rebase does not care about ident (preserve)'>)} {(SQ <'\n'> <'\tgit checkout -B tmp side-without-commit &&\n'> <'\tgit rebase -p master\n'>)} ) (C {<test_expect_success>} {(SQ <'non-fast-forward rebase refuses to write commits (preserve)'>)} { (SQ <'\n'> <'\ttest_when_finished "git rebase --abort || true" &&\n'> <'\tgit checkout -B tmp side-with-commit &&\n'> <'\ttest_must_fail git rebase -p master\n'> ) } ) (C {<test_done>}) ] )