(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:test_description spids:[12]) op: Equal rhs: {(SQ <'blaming trough history with topic branches'>)} spids: [12] ) ] spids: [12] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\ttest_commit A0 file.t line0 &&\n'> <'\ttest_commit A1 &&\n'> <'\tgit reset --hard A0 &&\n'> <'\ttest_commit B1 &&\n'> <'\ttest_commit B2 file.t line0changed &&\n'> <'\tgit reset --hard A1 &&\n'> <'\ttest_merge A2 B2 &&\n'> <'\tgit reset --hard A1 &&\n'> <'\ttest_commit C1 &&\n'> <'\tgit reset --hard A2 &&\n'> <'\ttest_merge A3 C1\n'> <'\t'> ) } ) (C {(test_expect_success)} {(SQ <'blame --reverse --first-parent finds A1'>)} { (SQ <'\n'> <'\tgit blame --porcelain --reverse --first-parent A0..A3 -- file.t >actual_full &&\n'> <'\thead -n 1 <actual_full | sed -e "s/ .*//" >actual &&\n'> <'\tgit rev-parse A1 >expect &&\n'> <'\ttest_cmp expect actual\n'> <'\t'> ) } ) (C {(test_done)}) ] )