(List (= scope= flags=0 words=[] bindings=[('CURRENT_DIR', {[DQ [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]} {[DQ [VarSub CURRENT_DIR][LIT_CHARS /../../integration_test_setup.sh]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "integration_test_setup.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub PLATFORM]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [LIT_CHARS darwin]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This test suite requires running on OS X"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) (FunctionDef make_app [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[LIT_CHARS ios]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS ios]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ios/app.m]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#import \n"][LIT_CHARS "\n"][LIT_CHARS "int main(int argc, char *argv[]) {\n"][LIT_CHARS " NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];\n"][LIT_CHARS " int retVal = UIApplicationMain(argc, argv, nil, nil);\n"][LIT_CHARS " [pool release];\n"][LIT_CHARS " return retVal;\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ios/App-Info.plist]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS " CFBundleExecutable\n"][LIT_CHARS " app\n"][LIT_CHARS " CFBundleName\n"][LIT_CHARS " app\n"][LIT_CHARS " CFBundleDisplayName\n"][LIT_CHARS " app\n"][LIT_CHARS " CFBundlePackageType\n"][LIT_CHARS " APPL\n"][LIT_CHARS " CFBundleIdentifier\n"][LIT_CHARS " com.google.app\n"][LIT_CHARS " CFBundleSignature\n"][LIT_CHARS " ????\n"][LIT_CHARS " CFBundleVersion\n"][LIT_CHARS " 1.0\n"][LIT_CHARS " LSRequiresIPhoneOS\n"][LIT_CHARS " \n"][LIT_CHARS "\n"][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ios/PassTest-Info.plist]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS " CFBundleExecutable\n"][LIT_CHARS " PassingXcTest\n"][LIT_CHARS "\n"][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ios/passtest.m]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#import \n"][LIT_CHARS "\n"][LIT_CHARS "@interface PassingXcTest : XCTestCase\n"][LIT_CHARS "\n"][LIT_CHARS "@end\n"][LIT_CHARS "\n"][LIT_CHARS "@implementation PassingXcTest\n"][LIT_CHARS "\n"][LIT_CHARS "- (void)testPass {\n"][LIT_CHARS " XCTAssertEqual(1, 1, @"][RIGHT_D_QUOTE "\""][LIT_CHARS "should pass"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS "}\n"][LIT_CHARS "\n"][LIT_CHARS "@end\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ios/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "objc_binary(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS bin][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " non_arc_srcs = ['app.m'])\n"][LIT_CHARS "ios_application(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS app][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " binary = ':bin',\n"][LIT_CHARS " infoplist = 'App-Info.plist')\n"][LIT_CHARS "ios_test(name = 'PassingXcTest',\n"][LIT_CHARS " srcs = ['passtest.m'],\n"][LIT_CHARS " infoplist = "][RIGHT_D_QUOTE "\""][LIT_CHARS PassTest-Info.plist][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " xctest = True,\n"][LIT_CHARS " xctest_app = ':app')\n"]]} 0), > ) ) ) (FunctionDef test_build_app [] (List (Com {[LIT_CHARS setup_objc_test_support]}) (Com {[LIT_CHARS make_app]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --verbose_failures]} {[LIT_CHARS --ios_sdk_version] [LIT_OTHER "="] [VarSub IOS_SDK_VERSION]} {[LIT_CHARS //ios] [LIT_OTHER ":"] [LIT_CHARS app]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should pass"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/app.xcodeproj]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate app.xcodeproj"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/app.ipa]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate app.ipa"]]}) ) ) ) (FunctionDef test_ios_test [] (List (Com {[LIT_CHARS setup_objc_test_support]}) (Com {[LIT_CHARS make_app]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} {[LIT_CHARS --ios_sdk_version] [LIT_OTHER "="] [VarSub IOS_SDK_VERSION]} {[LIT_CHARS //ios] [LIT_OTHER ":"] [LIT_CHARS PassingXcTest]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should pass"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/PassingXcTest.xcodeproj]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate PassingXcTest.xcodeproj"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/PassingXcTest.ipa]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate PassingXcTest.ipa"]]}) ) ) ) (FunctionDef test_valid_ios_sdk_version [] (List (Com {[LIT_CHARS setup_objc_test_support]}) (Com {[LIT_CHARS make_app]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --verbose_failures]} {[LIT_CHARS --ios_sdk_version] [LIT_OTHER "="] [VarSub IOS_SDK_VERSION]} {[LIT_CHARS //ios] [LIT_OTHER ":"] [LIT_CHARS app]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should pass"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/app.xcodeproj]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate app.xcodeproj"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/app.ipa]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate app.ipa"]]}) ) ) ) (FunctionDef test_xcrun_cache [] (List (Com {[LIT_CHARS setup_objc_test_support]}) (Com {[LIT_CHARS make_app]}) (AndOr OP_OR_IF (Pipeline! (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-out/__xcruncache]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "clean build should not have cache file"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --verbose_failures]} {[LIT_CHARS --ios_sdk_version] [LIT_OTHER "="] [VarSub IOS_SDK_VERSION]} {[LIT_CHARS //ios] [LIT_OTHER ":"] [LIT_CHARS bin]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should pass"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-out/__xcruncache]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "xcrun cache should be present"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --verbose_failures]} {[LIT_CHARS --ios_sdk_version] [LIT_OTHER "="] [VarSub IOS_SDK_VERSION]} {[LIT_CHARS //ios] [LIT_OTHER ":"] [LIT_CHARS app]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should pass"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/app.xcodeproj]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate app.xcodeproj"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/ios/app.ipa]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should generate app.ipa"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-out/__xcruncache]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "xcrun cache should be present"]]}) ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]}) (AndOr OP_OR_IF (Pipeline! (Com {[LIT_CHARS ls]} {[LIT_CHARS bazel-bin/__xcruncache]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "xcrun cache should be removed on clean"]]}) ) ) ) (FunctionDef test_invalid_ios_sdk_version [] (List (Com {[LIT_CHARS setup_objc_test_support]}) (Com {[LIT_CHARS make_app]}) (AndOr OP_OR_IF (Pipeline! (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --verbose_failures]} {[LIT_CHARS --ios_sdk_version] [LIT_OTHER "="] [LIT_CHARS 2.34]} {[LIT_CHARS //ios] [LIT_OTHER ":"] [LIT_CHARS app]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should fail"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "SDK "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS iphonesimulator2.34][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " cannot be located."]]}) ) ) (FunctionDef test_xcodelocator_embedded_tool [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[LIT_CHARS ios]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS ios]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ios/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS invoke_tool][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@bazel_tools//tools/osx:xcode-locator"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS tool_output][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "< > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " tags = ["][RIGHT_D_QUOTE "\""][LIT_CHARS requires-darwin][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --verbose_failures]} {[LIT_CHARS //ios] [LIT_OTHER ":"] [LIT_CHARS invoke_tool]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should be able to resolve xcode-locator"]]}) ) ) ) (FunctionDef test_archive_timestamps [] (List (Com {[LIT_CHARS setup_objc_test_support]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS objclib]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS objclib/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "objc_library(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS objclib][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS mysrc.m][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS objclib/mysrc.m]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "int aFunction() {\n"][LIT_CHARS " return 0;\n"][LIT_CHARS "}\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --verbose_failures]} {[LIT_CHARS --ios_sdk_version] [LIT_OTHER "="] [VarSub IOS_SDK_VERSION]} {[LIT_CHARS //objclib] [LIT_OTHER ":"] [LIT_CHARS objclib]} < (FilenameRedirectNode filename={[DQ [VarSub TEST_log]]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Should build objc_library"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS ar]} {[LIT_CHARS -tv]} {[LIT_CHARS bazel-bin/objclib/libobjclib.a]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS mysrc]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "Dec 31"]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS 1969]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS ar]} {[LIT_CHARS -tv]} {[LIT_CHARS bazel-bin/objclib/libobjclib.a]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS mysrc]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "Jan 1"]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS 1970]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Timestamp of contents of archive file should be zero"]]}) ) ) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "objc/ios test suite"]]}) )