(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'git svn info'>)} spids: [10] ) ] ) (C {<.>} {<'./lib-git-svn.sh'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:v) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<svn_cmd>} {<--version>}) (C {<sed>} {<-n>} {<-e>} {(SQ <'s/^svn, version \\(1\\.[0-9]*\\.[0-9]*\\).*$/\\1/p'>)} ) ] negated: F ) ) } spids: [27] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$v')} arms: [ (case_arm pat_list: [{<1.> <Id.Lit_LBracket '['> <456> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}] spids: [52 58 61 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:skip_all) op: assign_op.Equal rhs: { (DQ <'skipping svn-info test (SVN version: '> ($ Id.VSub_DollarName '$v') <' not supported)'> ) } spids: [67] ) ] ) (C {<test_done>}) ] spids: [63 64 78 -1] ) ] ) (command.ShFunction name: test_cmp_info body: (BraceGroup children: [ (command.Simple words: [{<sed>} {<-e>} {(SQ <'/^Text Last Updated:/d'>)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp.expect>})] do_fork: T ) (command.Simple words: [{<sed>} {<-e>} {(SQ <'/^Text Last Updated:/d'>)} {(DQ ($ Id.VSub_Number '$2'))}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<tmp.actual>})] do_fork: T ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test_cmp>} {<tmp.expect>} {<tmp.actual>}) (C {<rm>} {<-f>} {<tmp.expect>} {<tmp.actual>}) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:quoted_svnrepo) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$svnrepo')}) (C {<sed>} {(SQ <'s/ /%20/'>)}) ] negated: F ) ) ) } 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>}) ] )