(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git p4 retrieve job info'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./lib-git-p4.sh'>})
    (C {<test_expect_success>} {(SQ <'start p4d'>)} {(SQ <'\n'> <'\tstart_p4d\n'>)})
    (C {<test_expect_success>} {(SQ <'add p4 jobs'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\t\tp4_add_job TESTJOB-A &&\n'> <'\t\tp4_add_job TESTJOB-B\n'> <'\t)\n'>)
      }
    )
    (C {<test_expect_success>} {(SQ <'add p4 files'>)} 
      {
        (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> <'\t(\n'> <'\t\tcd "$cli" &&\n'> 
          <'\t\t>file1 &&\n'> <'\t\tp4 add file1 &&\n'> <'\t\tp4 submit -d "Add file 1"\n'> <'\t)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check log message of changelist with no jobs'>)} 
      {
        (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> 
          <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init . &&\n'> 
          <'\t\tgit p4 clone --use-client-spec --destination="$git" //depot@all &&\n'> <'\t\tcat >expect <<-\\EOF &&\n'> <'\t\tAdd file 1\n'> 
          <'\t\t[git-p4: depot-paths = "//depot/": change = 1]\n'> <'\n'> <'\t\tEOF\n'> <'\t\tgit log --format=%B >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'add TESTJOB-A to change 1'>)} 
      {(SQ <'\n'> <'\t(\n'> <'\t\tcd "$cli" &&\n'> <'\t\tp4 fix -c 1 TESTJOB-A\n'> <'\t)\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'check log message of changelist with one job'>)} 
      {
        (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> 
          <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init . &&\n'> 
          <'\t\tgit p4 clone --use-client-spec --destination="$git" //depot@all &&\n'> <'\t\tcat >expect <<-\\EOF &&\n'> <'\t\tAdd file 1\n'> <'\t\tJobs: TESTJOB-A\n'> 
          <'\t\t[git-p4: depot-paths = "//depot/": change = 1]\n'> <'\n'> <'\t\tEOF\n'> <'\t\tgit log --format=%B >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'add TESTJOB-B to change 1'>)} 
      {(SQ <'\n'> <'\t(\n'> <'\t\tcd "$cli" &&\n'> <'\t\tp4 fix -c 1 TESTJOB-B\n'> <'\t)\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'check log message of changelist with more jobs'>)} 
      {
        (SQ <'\n'> <'\tclient_view "//depot/... //client/..." &&\n'> 
          <'\ttest_when_finished cleanup_git &&\n'> <'\t(\n'> <'\t\tcd "$git" &&\n'> <'\t\tgit init . &&\n'> 
          <'\t\tgit p4 clone --use-client-spec --destination="$git" //depot@all &&\n'> <'\t\tcat >expect <<-\\EOF &&\n'> <'\t\tAdd file 1\n'> <'\t\tJobs: TESTJOB-A TESTJOB-B\n'> 
          <'\t\t[git-p4: depot-paths = "//depot/": change = 1]\n'> <'\n'> <'\t\tEOF\n'> <'\t\tgit log --format=%B >actual &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'kill p4d'>)} {(SQ <'\n'> <'\tkill_p4d\n'>)})
    (C {<test_done>})
  ]
)