(List (= scope= flags=0 words=[] bindings=[('DIR', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[VarSub DIR] [LIT_CHARS /testenv.sh]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "testenv.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef get_tar_listing [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Pipeline (Com {[LIT_CHARS tar]} {[LIT_CHARS tvf]} {[DQ [VarSub test_data]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) ) ) ) (FunctionDef get_tar_permission [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('file', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Pipeline (Com {[LIT_CHARS tar]} {[LIT_CHARS tvf]} {[DQ [VarSub test_data]]}) (Com {[LIT_CHARS fgrep]} {[DQ [LIT_CHARS "00 "][VarSub file]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]} {[LIT_CHARS -f]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef get_deb_listing [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Pipeline (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS -c]} {[DQ [VarSub test_data]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) ) ) ) (FunctionDef get_deb_description [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS -I]} {[DQ [VarSub test_data]]}) ) ) (FunctionDef get_deb_permission [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('file', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Pipeline (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS -c]} {[DQ [VarSub test_data]]}) (Com {[LIT_CHARS fgrep]} {[DQ [LIT_CHARS "00 "][VarSub file]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]} {[LIT_CHARS -f]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef get_deb_ctl_file [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('file', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS -I]} {[DQ [VarSub test_data]]} {[DQ [VarSub file]]}) ) ) (FunctionDef get_deb_ctl_listing [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Pipeline (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS --ctrl-tarfile]} {[DQ [VarSub test_data]]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS tf]} {[LIT_CHARS -]}) (Com {[LIT_CHARS sort]}) ) ) ) (FunctionDef get_deb_ctl_permission [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('file', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Pipeline (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS --ctrl-tarfile]} {[DQ [VarSub test_data]]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS tvf]} {[LIT_CHARS -]}) (Com {[LIT_CHARS egrep]} {[DQ [LIT_CHARS " "][VarSub file][\ LIT_ESCAPED_CHAR "\\$"]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]} {[LIT_CHARS -f]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef dpkg_deb_supports_ctrl_tarfile [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('test_data', {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]})]) (Com {[LIT_CHARS dpkg-deb]} {[LIT_CHARS --ctrl-tarfile]} {[DQ [VarSub test_data]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) ) (FunctionDef get_changes [] (List (= scope= flags=0 words=[] bindings=[('input', {[VarSub 1]})]) (Com {[LIT_CHARS cat]} {[DQ [VarSub TEST_DATA_DIR][LIT_CHARS /][VarSub input]]}) ) ) (FunctionDef test_tar [] (List (= scope= flags=0 words=[] bindings=[('listing', {[DQ [LIT_CHARS "./\n"][LIT_CHARS "./etc/\n"][LIT_CHARS "./etc/nsswitch.conf\n"][LIT_CHARS "./usr/\n"][LIT_CHARS "./usr/titi\n"][LIT_CHARS "./usr/bin/\n"][LIT_CHARS "./usr/bin/java -> /path/to/bin/java"]]})]) (For i [{[DQ ]}, {[DQ [LIT_CHARS .gz]]}, {[DQ [LIT_CHARS .bz2]]}, {[DQ [LIT_CHARS .xz]]}]) (List (Com {[LIT_CHARS check_eq]} {[DQ [VarSub listing]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_listing]} {[LIT_CHARS test-tar-] [VarSub i transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]] [LIT_CHARS .tar] [VarSub i]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rwxr-xr-x]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_permission]} {[LIT_CHARS test-tar-] [VarSub i transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]] [LIT_CHARS .tar] [VarSub i]} {[LIT_CHARS ./usr/titi]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rw-r--r--]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_permission]} {[LIT_CHARS test-tar-] [VarSub i transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]] [LIT_CHARS .tar] [VarSub i]} {[LIT_CHARS ./etc/nsswitch.conf]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [VarSub listing]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_listing]} {[LIT_CHARS test-tar-inclusion-] [VarSub i transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]] [LIT_CHARS .tar]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rwxr-xr-x]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_permission]} {[LIT_CHARS test-tar-inclusion-] [VarSub i transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]] [LIT_CHARS .tar]} {[LIT_CHARS ./usr/titi]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rw-r--r--]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_permission]} {[LIT_CHARS test-tar-inclusion-] [VarSub i transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}} None]] [LIT_CHARS .tar]} {[LIT_CHARS ./etc/nsswitch.conf]})]]}) ) ) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS "./\n"][LIT_CHARS ./nsswitch.conf]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_listing]} {[LIT_CHARS test-tar-strip_prefix-empty.tar]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS "./\n"][LIT_CHARS ./nsswitch.conf]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_listing]} {[LIT_CHARS test-tar-strip_prefix-none.tar]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS "./\n"][LIT_CHARS ./nsswitch.conf]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_listing]} {[LIT_CHARS test-tar-strip_prefix-etc.tar]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS "./\n"][LIT_CHARS "./etc/\n"][LIT_CHARS ./etc/nsswitch.conf]]} {[DQ [ComSub (Com {[LIT_CHARS get_tar_listing]} {[LIT_CHARS test-tar-strip_prefix-dot.tar]})]]}) ) ) (FunctionDef test_deb [] (List (If (Pipeline! (Subshell (Com {[LIT_CHARS which]} {[LIT_CHARS dpkg-deb]}) ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Unable to run test for debian, no dpkg-deb!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (= scope= flags=0 words=[] bindings=[('listing', {[DQ [LIT_CHARS "./\n"][LIT_CHARS "./etc/\n"][LIT_CHARS "./etc/nsswitch.conf\n"][LIT_CHARS "./usr/\n"][LIT_CHARS "./usr/titi\n"][LIT_CHARS "./usr/bin/\n"][LIT_CHARS "./usr/bin/java -> /path/to/bin/java"]]})]) (Com {[LIT_CHARS check_eq]} {[DQ [VarSub listing]]} {[DQ [ComSub (Com {[LIT_CHARS get_deb_listing]} {[LIT_CHARS test-deb.deb]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rwxr-xr-x]]} {[DQ [ComSub (Com {[LIT_CHARS get_deb_permission]} {[LIT_CHARS test-deb.deb]} {[LIT_CHARS ./usr/titi]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rw-r--r--]]} {[DQ [ComSub (Com {[LIT_CHARS get_deb_permission]} {[LIT_CHARS test-deb.deb]} {[LIT_CHARS ./etc/nsswitch.conf]})]]}) (Com {[LIT_CHARS get_deb_description]} {[LIT_CHARS test-deb.deb]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Description: toto"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Package: titi"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Depends: dep1, dep2"]]}) (Com {[LIT_CHARS get_changes]} {[LIT_CHARS titi_test_all.changes]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Urgency: low"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Distribution: trusty"]]}) (If (Pipeline! (Com {[LIT_CHARS dpkg_deb_supports_ctrl_tarfile]} {[LIT_CHARS test-deb.deb]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Unable to test deb control files, too old dpkg-deb!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) (= scope= flags=0 words=[] bindings=[('ctrl_listing', {[DQ [LIT_CHARS "conffiles\n"][LIT_CHARS control]]})]) (Com {[LIT_CHARS check_eq]} {[DQ [VarSub ctrl_listing]]} {[DQ [ComSub (Com {[LIT_CHARS get_deb_ctl_listing]} {[LIT_CHARS test-deb.deb]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rw-r--r--]]} {[DQ [ComSub (Com {[LIT_CHARS get_deb_ctl_permission]} {[LIT_CHARS test-deb.deb]} {[LIT_CHARS conffiles]})]]}) (Com {[LIT_CHARS check_eq]} {[DQ [LIT_CHARS -rw-r--r--]]} {[DQ [ComSub (Com {[LIT_CHARS get_deb_ctl_permission]} {[LIT_CHARS test-deb.deb]} {[LIT_CHARS control]})]]}) (= scope= flags=0 words=[] bindings=[('conffiles', {[DQ [LIT_CHARS "/etc/nsswitch.conf\n"][LIT_CHARS /etc/other]]})]) (Com {[LIT_CHARS check_eq]} {[DQ [VarSub conffiles]]} {[DQ [ComSub (Com {[LIT_CHARS get_deb_ctl_file]} {[LIT_CHARS test-deb.deb]} {[LIT_CHARS conffiles]})]]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS build_test]]}) )