(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:'git-svn svn mergeinfo properties' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./lib-git-svn.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'load svn dump' span_id:27))} { (DQ ('\n') ("\tsvnadmin load -q '") ($ Id.VSub_DollarName '$rawsvnrepo') ("' ") ("\t < '") ($ Id.VSub_DollarName '$TEST_DIRECTORY') ("/t9151/svn-mergeinfo.dump' &&\n") ('\tgit svn init --minimize-url -R svnmerge ') ('\t --rewrite-root=http://svn.example.org ') ("\t -T trunk -b branches '") ($ Id.VSub_DollarName '$svnrepo') ("' &&\n") ('\tgit svn fetch --all\n') ('\t') ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'all svn merges became git merge commits' span_id:54))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) (Token id: Id.Lit_Chars val: '\tunmarked=$(git rev-list --parents --all --grep=Merge |\n' span_id: 59 ) (Token id:Id.Lit_Chars val:'\t\tgrep -v " .* " | cut -f1 -d" ") &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t[ -z "$unmarked" ]\n' span_id:61) (Token id:Id.Lit_Chars val:'\t' span_id:62) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'cherry picks did not become git merge commits' span_id:69))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:73) (Token id: Id.Lit_Chars val: '\tbad_cherries=$(git rev-list --parents --all --grep=Cherry |\n' span_id: 74 ) (Token id:Id.Lit_Chars val:'\t\tgrep " .* " | cut -f1 -d" ") &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\t[ -z "$bad_cherries" ]\n' span_id:76) (Token id:Id.Lit_Chars val:'\t' span_id:77) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'svn non-merge merge commits did not become git merge commits' span_id: 84 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:88) (Token id: Id.Lit_Chars val: '\tbad_non_merges=$(git rev-list --parents --all --grep=non-merge |\n' span_id: 89 ) (Token id:Id.Lit_Chars val:'\t\tgrep " .* " | cut -f1 -d" ") &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\t[ -z "$bad_non_merges" ]\n' span_id:91) (Token id:Id.Lit_Chars val:'\t' span_id:92) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'commit made to merged branch is reachable from the merge' span_id: 99 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id: Id.Lit_Chars val: '\tbefore_commit=$(git rev-list --all --grep="trunk commit before merging trunk to b2") &&\n' span_id: 104 ) (Token id: Id.Lit_Chars val: '\tmerge_commit=$(git rev-list --all --grep="Merge trunk to b2") &&\n' span_id: 105 ) (Token id: Id.Lit_Chars val: '\tnot_reachable=$(git rev-list -1 $before_commit --not $merge_commit) &&\n' span_id: 106 ) (Token id:Id.Lit_Chars val:'\t[ -z "$not_reachable" ]\n' span_id:107) (Token id:Id.Lit_Chars val:'\t' span_id:108) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merging two branches in one commit is detected correctly' span_id: 115 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) (Token id: Id.Lit_Chars val: '\tf1_commit=$(git rev-list --all --grep="make f1 branch from trunk") &&\n' span_id: 120 ) (Token id: Id.Lit_Chars val: '\tf2_commit=$(git rev-list --all --grep="make f2 branch from trunk") &&\n' span_id: 121 ) (Token id: Id.Lit_Chars val: '\tmerge_commit=$(git rev-list --all --grep="Merge f1 and f2 to trunk") &&\n' span_id: 122 ) (Token id: Id.Lit_Chars val: '\tnot_reachable=$(git rev-list -1 $f1_commit $f2_commit --not $merge_commit) &&\n' span_id: 123 ) (Token id:Id.Lit_Chars val:'\t[ -z "$not_reachable" ]\n' span_id:124) (Token id:Id.Lit_Chars val:'\t' span_id:125) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'everything got merged in the end' span_id:132))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:136) (Token id: Id.Lit_Chars val: '\tunmerged=$(git rev-list --all --not master) &&\n' span_id: 137 ) (Token id:Id.Lit_Chars val:'\t[ -z "$unmerged" ]\n' span_id:138) (Token id:Id.Lit_Chars val:'\t' span_id:139) ) } ) (C {(test_done)}) ] )