(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'per-repo forced setting of email address' span_id:18))} spids: [16] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup a likely user.useConfigOnly use case' span_id:30))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id: Id.Lit_Chars val: '\t# we want to make sure a reflog is written, since that needs\n' span_id: 35 ) (Token id: Id.Lit_Chars val: '\t# a non-strict ident. So be sure we have an actual commit.\n' span_id: 36 ) (Token id:Id.Lit_Chars val:'\ttest_commit foo &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id:Id.Lit_Chars val:'\tsane_unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL &&\n' span_id:39) (Token id: Id.Lit_Chars val: '\tsane_unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL &&\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'\tgit config user.name "test" &&\n' span_id:41) (Token id: Id.Lit_Chars val: '\tgit config --global user.useConfigOnly true\n' span_id: 42 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fails committing if clone email is not set' span_id:49))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit --allow-empty -m msg\n' span_id: 54 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fails committing if clone email is not set, but EMAIL set' span_id: 61 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) (Token id: Id.Lit_Chars val: '\ttest_must_fail env EMAIL=test@fail.com git commit --allow-empty -m msg\n' span_id: 66 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'succeeds committing if clone email is set' span_id:73))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:77) (Token id: Id.Lit_Chars val: '\ttest_config user.email "test@ok.com" &&\n' span_id: 78 ) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m msg\n' span_id:79) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'succeeds cloning if global email is not set' span_id:86))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit clone . clone\n' span_id:91) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up rebase scenarios' span_id:98))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id: Id.Lit_Chars val: '\t# temporarily enable an actual ident for this setup\n' span_id: 103 ) (Token id:Id.Lit_Chars val:'\ttest_config user.email foo@example.com &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\ttest_commit new &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit branch side-without-commit HEAD^ &&\n' span_id:106) (Token id: Id.Lit_Chars val: '\tgit checkout -b side-with-commit HEAD^ &&\n' span_id: 107 ) (Token id:Id.Lit_Chars val:'\ttest_commit side\n' span_id:108) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fast-forward rebase does not care about ident' span_id:115))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) (Token id: Id.Lit_Chars val: '\tgit checkout -B tmp side-without-commit &&\n' span_id: 120 ) (Token id:Id.Lit_Chars val:'\tgit rebase master\n' span_id:121) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'non-fast-forward rebase refuses to write commits' span_id: 128 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rebase --abort || true" &&\n' span_id: 133 ) (Token id:Id.Lit_Chars val:'\tgit checkout -B tmp side-with-commit &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rebase master\n' span_id:135) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fast-forward rebase does not care about ident (interactive)' span_id: 142 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) (Token id: Id.Lit_Chars val: '\tgit checkout -B tmp side-without-commit &&\n' span_id: 147 ) (Token id:Id.Lit_Chars val:'\tgit rebase -i master\n' span_id:148) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'non-fast-forward rebase refuses to write commits (interactive)' span_id: 155 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:159) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rebase --abort || true" &&\n' span_id: 160 ) (Token id:Id.Lit_Chars val:'\tgit checkout -B tmp side-with-commit &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rebase -i master\n' span_id:162) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'noop interactive rebase does not care about ident' span_id: 169 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:173) (Token id: Id.Lit_Chars val: '\tgit checkout -B tmp side-with-commit &&\n' span_id: 174 ) (Token id:Id.Lit_Chars val:'\tgit rebase -i HEAD^\n' span_id:175) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fast-forward rebase does not care about ident (preserve)' span_id: 182 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:186) (Token id: Id.Lit_Chars val: '\tgit checkout -B tmp side-without-commit &&\n' span_id: 187 ) (Token id:Id.Lit_Chars val:'\tgit rebase -p master\n' span_id:188) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'non-fast-forward rebase refuses to write commits (preserve)' span_id: 195 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:199) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rebase --abort || true" &&\n' span_id: 200 ) (Token id:Id.Lit_Chars val:'\tgit checkout -B tmp side-with-commit &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rebase -p master\n' span_id:202) ) } ) (C {(test_done)}) ] )