(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git svn info'>)}
          spids: [10]
        )
      ]
      spids: [10]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:v)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(svn_cmd)} {(--version)})
                          (C {(sed)} {(-n)} {(-e)} 
                            {(SQ <'s/^svn, version \\(1\\.[0-9]*\\.[0-9]*\\).*$/\\1/p'>)}
                          )
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [28 44]
              )
            }
          spids: [27]
        )
      ]
      spids: [27]
    )
    (Case
      to_match: {($ VSub_Name '$v')}
      arms: [
        (case_arm
          pat_list: [{(1.) (Lit_Other '[') (456) (Lit_Other ']') (.) (Lit_Other '*')}]
          spids: [52 58 61 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:skip_all)
                  op: Equal
                  rhs: 
                    {
                      (DQ ('skipping svn-info test (SVN version: ') ($ VSub_Name '$v') 
                        (' not supported)')
                      )
                    }
                  spids: [67]
                )
              ]
              spids: [67]
            )
            (C {(test_done)})
          ]
          spids: [63 64 78 16777215]
        )
      ]
      spids: [46 50 80]
    )
    (FuncDef
      name: test_cmp_info
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(sed)} {(-e)} {(SQ <'/^Text Last Updated:/d'>)} {(DQ ($ VSub_Number '$1'))}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(tmp.expect)} spids:[112])]
            )
            (SimpleCommand
              words: [{(sed)} {(-e)} {(SQ <'/^Text Last Updated:/d'>)} {(DQ ($ VSub_Number '$2'))}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(tmp.actual)} spids:[128])]
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test_cmp)} {(tmp.expect)} {(tmp.actual)})
                (C {(rm)} {(-f)} {(tmp.expect)} {(tmp.actual)})
              ]
            )
          ]
          spids: [97]
        )
      spids: [92 96]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:quoted_svnrepo)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (C {(echo)} {($ VSub_Name '$svnrepo')})
                            (C {(sed)} {(SQ <'s/ /%20/'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [154 166]
                )
              )
            }
          spids: [152]
        )
      ]
      spids: [152]
    )
    (C {(test_expect_success)} {(SQ <'setup repository and import'>)} 
      {
        (SQ <'\n'> <'\tmkdir info &&\n'> <'\t(\n'> <'\t\tcd info &&\n'> <'\t\techo FIRST >A &&\n'> 
          <'\t\techo one >file &&\n'> <'\t\tln -s file symlink-file &&\n'> <'\t\tmkdir directory &&\n'> 
          <'\t\ttouch directory/.placeholder &&\n'> <'\t\tln -s directory symlink-directory &&\n'> <'\t\tsvn_cmd import -m "initial" . "$svnrepo"\n'> 
          <'\t) &&\n'> <'\tsvn_cmd co "$svnrepo" svnwc &&\n'> <'\t(\n'> <'\t\tcd svnwc &&\n'> <'\t\techo foo >foo &&\n'> 
          <'\t\tsvn_cmd add foo &&\n'> <'\t\tsvn_cmd commit -m "change outside directory" &&\n'> <'\t\tsvn_cmd update\n'> <'\t) &&\n'> 
          <'\tmkdir gitwc &&\n'> <'\t(\n'> <'\t\tcd gitwc &&\n'> <'\t\tgit svn init "$svnrepo" &&\n'> <'\t\tgit svn fetch\n'> <'\t)\n'> 
          <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <info>)} 
      {
        (DQ ('\n') ('\t(cd svnwc; svn info) > expected.info &&\n') 
          ('\t(cd gitwc; git svn info) > actual.info &&\n') ('\ttest_cmp_info expected.info actual.info\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url'>)} 
      {(SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url)" = "$quoted_svnrepo"\n'> <'\t'>)}
    )
    (C {(test_expect_success)} {(SQ <'info .'>)} 
      {
        (DQ ('\n') ('\t(cd svnwc; svn info .) > expected.info-dot &&\n') 
          ('\t(cd gitwc; git svn info .) > actual.info-dot &&\n') ('\ttest_cmp_info expected.info-dot actual.info-dot\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info $(pwd)'>)} 
      {
        (SQ <'\n'> <'\t(cd svnwc; svn info "$(pwd)") >expected.info-pwd &&\n'> 
          <'\t(cd gitwc; git svn info "$(pwd)") >actual.info-pwd &&\n'> <'\tgrep -v ^Path: <expected.info-pwd >expected.info-np &&\n'> 
          <'\tgrep -v ^Path: <actual.info-pwd >actual.info-np &&\n'> <'\ttest_cmp_info expected.info-np actual.info-np &&\n'> 
          <'\ttest "$(sed -ne \\"/^Path:/ s!/svnwc!!\\" <expected.info-pwd)" = \\\n'> <'\t     "$(sed -ne \\"/^Path:/ s!/gitwc!!\\" <actual.info-pwd)"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info $(pwd)/../___wc'>)} 
      {
        (SQ <'\n'> <'\t(cd svnwc; svn info "$(pwd)/../svnwc") >expected.info-pwd &&\n'> 
          <'\t(cd gitwc; git svn info "$(pwd)/../gitwc") >actual.info-pwd &&\n'> <'\tgrep -v ^Path: <expected.info-pwd >expected.info-np &&\n'> 
          <'\tgrep -v ^Path: <actual.info-pwd >actual.info-np &&\n'> <'\ttest_cmp_info expected.info-np actual.info-np &&\n'> 
          <'\ttest "$(sed -ne \\"/^Path:/ s!/svnwc!!\\" <expected.info-pwd)" = \\\n'> <'\t     "$(sed -ne \\"/^Path:/ s!/gitwc!!\\" <actual.info-pwd)"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info $(pwd)/../___wc//file'>)} 
      {
        (SQ <'\n'> <'\t(cd svnwc; svn info "$(pwd)/../svnwc//file") >expected.info-pwd &&\n'> 
          <'\t(cd gitwc; git svn info "$(pwd)/../gitwc//file") >actual.info-pwd &&\n'> <'\tgrep -v ^Path: <expected.info-pwd >expected.info-np &&\n'> 
          <'\tgrep -v ^Path: <actual.info-pwd >actual.info-np &&\n'> <'\ttest_cmp_info expected.info-np actual.info-np &&\n'> 
          <'\ttest "$(sed -ne \\"/^Path:/ s!/svnwc!!\\" <expected.info-pwd)" = \\\n'> <'\t     "$(sed -ne \\"/^Path:/ s!/gitwc!!\\" <actual.info-pwd)"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url .'>)} 
      {(SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url .)" = "$quoted_svnrepo"\n'> <'\t'>)}
    )
    (C {(test_expect_success)} {(SQ <'info file'>)} 
      {
        (DQ ('\n') ('\t(cd svnwc; svn info file) > expected.info-file &&\n') 
          ('\t(cd gitwc; git svn info file) > actual.info-file &&\n') ('\ttest_cmp_info expected.info-file actual.info-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url file'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url file)" = "$quoted_svnrepo/file"\n'> <'\t'>)
      }
    )
    (C {(test_expect_success)} {(SQ <'info directory'>)} 
      {
        (DQ ('\n') ('\t(cd svnwc; svn info directory) > expected.info-directory &&\n') 
          ('\t(cd gitwc; git svn info directory) > actual.info-directory &&\n') ('\ttest_cmp_info expected.info-directory actual.info-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info inside directory'>)} 
      {
        (DQ ('\n') ('\t(cd svnwc/directory; svn info) > expected.info-inside-directory &&\n') 
          ('\t(cd gitwc/directory; git svn info) > actual.info-inside-directory &&\n') ('\ttest_cmp_info expected.info-inside-directory actual.info-inside-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url directory'>)} 
      {
        (SQ <'\n'> 
          <'\ttest "$(cd gitwc; git svn info --url directory)" = "$quoted_svnrepo/directory"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info symlink-file'>)} 
      {
        (DQ ('\n') ('\t(cd svnwc; svn info symlink-file) > expected.info-symlink-file &&\n') 
          ('\t(cd gitwc; git svn info symlink-file) > actual.info-symlink-file &&\n') ('\ttest_cmp_info expected.info-symlink-file actual.info-symlink-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url symlink-file'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url symlink-file)" \\\n'> 
          <'\t     = "$quoted_svnrepo/symlink-file"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info symlink-directory'>)} 
      {
        (DQ ('\n') ('\t(cd svnwc; svn info symlink-directory) ') 
          ('\t\t> expected.info-symlink-directory &&\n') ('\t(cd gitwc; git svn info symlink-directory) ') ('\t\t> actual.info-symlink-directory &&\n') 
          ('\ttest_cmp_info expected.info-symlink-directory actual.info-symlink-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url symlink-directory'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url symlink-directory)" \\\n'> 
          <'\t     = "$quoted_svnrepo/symlink-directory"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info added-file'>)} 
      {
        (DQ ('\n') ('\techo two > gitwc/added-file &&\n') ('\t(\n') ('\t\tcd gitwc &&\n') 
          ('\t\tgit add added-file\n') ('\t) &&\n') ('\tcp gitwc/added-file svnwc/added-file &&\n') ('\t(\n') ('\t\tcd svnwc &&\n') 
          ('\t\tsvn_cmd add added-file > /dev/null\n') ('\t) &&\n') ('\t(cd svnwc; svn info added-file) > expected.info-added-file &&\n') 
          ('\t(cd gitwc; git svn info added-file) > actual.info-added-file &&\n') ('\ttest_cmp_info expected.info-added-file actual.info-added-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url added-file'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url added-file)" \\\n'> 
          <'\t     = "$quoted_svnrepo/added-file"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info added-directory'>)} 
      {
        (DQ ('\n') ('\tmkdir gitwc/added-directory svnwc/added-directory &&\n') 
          ('\ttouch gitwc/added-directory/.placeholder &&\n') ('\t(\n') ('\t\tcd svnwc &&\n') ('\t\tsvn_cmd add added-directory > /dev/null\n') ('\t) &&\n') ('\t(\n') 
          ('\t\tcd gitwc &&\n') ('\t\tgit add added-directory\n') ('\t) &&\n') ('\t(cd svnwc; svn info added-directory) ') 
          ('\t\t> expected.info-added-directory &&\n') ('\t(cd gitwc; git svn info added-directory) ') ('\t\t> actual.info-added-directory &&\n') 
          ('\ttest_cmp_info expected.info-added-directory actual.info-added-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url added-directory'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url added-directory)" \\\n'> 
          <'\t     = "$quoted_svnrepo/added-directory"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info added-symlink-file'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') ('\t\tln -s added-file added-symlink-file &&\n') 
          ('\t\tgit add added-symlink-file\n') ('\t) &&\n') ('\t(\n') ('\t\tcd svnwc &&\n') ('\t\tln -s added-file added-symlink-file &&\n') 
          ('\t\tsvn_cmd add added-symlink-file > /dev/null\n') ('\t) &&\n') ('\t(cd svnwc; svn info added-symlink-file) ') 
          ('\t\t> expected.info-added-symlink-file &&\n') ('\t(cd gitwc; git svn info added-symlink-file) ') ('\t\t> actual.info-added-symlink-file &&\n') 
          ('\ttest_cmp_info expected.info-added-symlink-file ') ('\t\tactual.info-added-symlink-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url added-symlink-file'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url added-symlink-file)" \\\n'> 
          <'\t     = "$quoted_svnrepo/added-symlink-file"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info added-symlink-directory'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') 
          ('\t\tln -s added-directory added-symlink-directory &&\n') ('\t\tgit add added-symlink-directory\n') ('\t) &&\n') ('\t(\n') ('\t\tcd svnwc &&\n') 
          ('\t\tln -s added-directory added-symlink-directory &&\n') ('\t\tsvn_cmd add added-symlink-directory > /dev/null\n') ('\t) &&\n') 
          ('\t(cd svnwc; svn info added-symlink-directory) ') ('\t\t> expected.info-added-symlink-directory &&\n') 
          ('\t(cd gitwc; git svn info added-symlink-directory) ') ('\t\t> actual.info-added-symlink-directory &&\n') 
          ('\ttest_cmp_info expected.info-added-symlink-directory ') ('\t\tactual.info-added-symlink-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url added-symlink-directory'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url added-symlink-directory)" \\\n'> 
          <'\t     = "$quoted_svnrepo/added-symlink-directory"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info deleted-file'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') ('\t\tgit rm -f file > /dev/null\n') ('\t) &&\n') 
          ('\t(\n') ('\t\tcd svnwc &&\n') ('\t\tsvn_cmd rm --force file > /dev/null\n') ('\t) &&\n') 
          ('\t(cd svnwc; svn info file) >expected.info-deleted-file &&\n') ('\t(cd gitwc; git svn info file) >actual.info-deleted-file &&\n') 
          ('\ttest_cmp_info expected.info-deleted-file actual.info-deleted-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url file (deleted)'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url file)" \\\n'> 
          <'\t     = "$quoted_svnrepo/file"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info deleted-directory'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') ('\t\tgit rm -r -f directory > /dev/null\n') 
          ('\t) &&\n') ('\t(\n') ('\t\tcd svnwc &&\n') ('\t\tsvn_cmd rm --force directory > /dev/null\n') ('\t) &&\n') 
          ('\t(cd svnwc; svn info directory) >expected.info-deleted-directory &&\n') ('\t(cd gitwc; git svn info directory) >actual.info-deleted-directory &&\n') 
          ('\ttest_cmp_info expected.info-deleted-directory actual.info-deleted-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url directory (deleted)'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url directory)" \\\n'> 
          <'\t     = "$quoted_svnrepo/directory"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info deleted-symlink-file'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') ('\t\tgit rm -f symlink-file > /dev/null\n') 
          ('\t) &&\n') ('\t(\n') ('\t\tcd svnwc &&\n') ('\t\tsvn_cmd rm --force symlink-file > /dev/null\n') ('\t) &&\n') 
          ('\t(cd svnwc; svn info symlink-file) >expected.info-deleted-symlink-file &&\n') ('\t(cd gitwc; git svn info symlink-file) >actual.info-deleted-symlink-file &&\n') 
          ('\ttest_cmp_info expected.info-deleted-symlink-file actual.info-deleted-symlink-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url symlink-file (deleted)'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url symlink-file)" \\\n'> 
          <'\t     = "$quoted_svnrepo/symlink-file"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info deleted-symlink-directory'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') ('\t\tgit rm -f symlink-directory > /dev/null\n') 
          ('\t) &&\n') ('\t(\n') ('\t\tcd svnwc &&\n') ('\t\tsvn_cmd rm --force symlink-directory > /dev/null\n') ('\t) &&\n') 
          (
'\t(cd svnwc; svn info symlink-directory) >expected.info-deleted-symlink-directory &&\n'
          ) ('\t(cd gitwc; git svn info symlink-directory) >actual.info-deleted-symlink-directory &&\n') 
          (
'\ttest_cmp_info expected.info-deleted-symlink-directory actual.info-deleted-symlink-directory\n'
          ) ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url symlink-directory (deleted)'>)} 
      {
        (SQ <'\n'> <'\ttest "$(cd gitwc; git svn info --url symlink-directory)" \\\n'> 
          <'\t     = "$quoted_svnrepo/symlink-directory"\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info unknown-file'>)} 
      {
        (DQ ('\n') ('\techo two > gitwc/unknown-file &&\n') 
          ('\t(cd gitwc; test_must_fail git svn info unknown-file) ') ('\t\t 2> actual.info-unknown-file &&\n') ('\tgrep unknown-file actual.info-unknown-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url unknown-file'>)} 
      {
        (SQ <'\n'> <'\techo two > gitwc/unknown-file &&\n'> 
          <'\t(cd gitwc; test_must_fail git svn info --url unknown-file) \\\n'> <'\t\t 2> actual.info-url-unknown-file &&\n'> <'\tgrep unknown-file actual.info-url-unknown-file\n'> 
          <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info unknown-directory'>)} 
      {
        (DQ ('\n') ('\tmkdir gitwc/unknown-directory svnwc/unknown-directory &&\n') 
          ('\t(cd gitwc; test_must_fail git svn info unknown-directory) ') ('\t\t 2> actual.info-unknown-directory &&\n') 
          ('\tgrep unknown-directory actual.info-unknown-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url unknown-directory'>)} 
      {
        (SQ <'\n'> <'\t(cd gitwc; test_must_fail git svn info --url unknown-directory) \\\n'> 
          <'\t\t 2> actual.info-url-unknown-directory &&\n'> <'\tgrep unknown-directory actual.info-url-unknown-directory\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info unknown-symlink-file'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') ('\t\tln -s unknown-file unknown-symlink-file\n') 
          ('\t) &&\n') ('\t(cd gitwc; test_must_fail git svn info unknown-symlink-file) ') 
          ('\t\t 2> actual.info-unknown-symlink-file &&\n') ('\tgrep unknown-symlink-file actual.info-unknown-symlink-file\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url unknown-symlink-file'>)} 
      {
        (SQ <'\n'> <'\t(cd gitwc; test_must_fail git svn info --url unknown-symlink-file) \\\n'> 
          <'\t\t 2> actual.info-url-unknown-symlink-file &&\n'> <'\tgrep unknown-symlink-file actual.info-url-unknown-symlink-file\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info unknown-symlink-directory'>)} 
      {
        (DQ ('\n') ('\t(\n') ('\t\tcd gitwc &&\n') 
          ('\t\tln -s unknown-directory unknown-symlink-directory\n') ('\t) &&\n') ('\t(cd gitwc; test_must_fail git svn info unknown-symlink-directory) ') 
          ('\t\t 2> actual.info-unknown-symlink-directory &&\n') ('\tgrep unknown-symlink-directory actual.info-unknown-symlink-directory\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'info --url unknown-symlink-directory'>)} 
      {
        (SQ <'\n'> <'\t(cd gitwc; test_must_fail git svn info --url unknown-symlink-directory) \\\n'> 
          <'\t\t 2> actual.info-url-unknown-symlink-directory &&\n'> <'\tgrep unknown-symlink-directory actual.info-url-unknown-symlink-directory\n'> <'\t'>
        )
      }
    )
    (C {(test_done)})
  ]
)