diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 17b26e4..b27153b 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -10,13 +10,13 @@ DEPENDENCIES: EXTERNAL SOURCES: Staged: - :path: "../" + :path: ../ SPEC CHECKSUMS: Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe Specta: ac94d110b865115fe60ff2c6d7281053c6f8e8a2 - Staged: a9051661bceeca1a0a1ec828f3c6e980cc7dc217 + Staged: 4b099e8f9844b4de259549a0e0711a7b1aec7012 PODFILE CHECKSUM: a994e52a040bbc5da613015a642e49875d985fdf -COCOAPODS: 1.0.0 +COCOAPODS: 1.0.1 diff --git a/Example/Pods/Headers/Private/Staged/STGNavigationControllerVerifier.h b/Example/Pods/Headers/Private/Staged/STGNavigationControllerVerifier.h new file mode 120000 index 0000000..f7485fd --- /dev/null +++ b/Example/Pods/Headers/Private/Staged/STGNavigationControllerVerifier.h @@ -0,0 +1 @@ +../../../../../Staged/Classes/STGNavigationControllerVerifier.h \ No newline at end of file diff --git a/Example/Pods/Headers/Private/Staged/UINavigationController+Staged.h b/Example/Pods/Headers/Private/Staged/UINavigationController+Staged.h new file mode 120000 index 0000000..97c8be9 --- /dev/null +++ b/Example/Pods/Headers/Private/Staged/UINavigationController+Staged.h @@ -0,0 +1 @@ +../../../../../Staged/Classes/UINavigationController+Staged.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/Staged/STGNavigationControllerVerifier.h b/Example/Pods/Headers/Public/Staged/STGNavigationControllerVerifier.h new file mode 120000 index 0000000..f7485fd --- /dev/null +++ b/Example/Pods/Headers/Public/Staged/STGNavigationControllerVerifier.h @@ -0,0 +1 @@ +../../../../../Staged/Classes/STGNavigationControllerVerifier.h \ No newline at end of file diff --git a/Example/Pods/Local Podspecs/Staged.podspec.json b/Example/Pods/Local Podspecs/Staged.podspec.json index 0984a4c..bdab1a6 100644 --- a/Example/Pods/Local Podspecs/Staged.podspec.json +++ b/Example/Pods/Local Podspecs/Staged.podspec.json @@ -20,6 +20,9 @@ "ios": "8.0" }, "source_files": "Staged/Classes/**/*", - "public_header_files": "Staged/Classes/STGViewControllerVerifier.h", + "public_header_files": [ + "Staged/Classes/STGViewControllerVerifier.h", + "Staged/Classes/STGNavigationControllerVerifier.h" + ], "frameworks": "UIKit" } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 17b26e4..b27153b 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -10,13 +10,13 @@ DEPENDENCIES: EXTERNAL SOURCES: Staged: - :path: "../" + :path: ../ SPEC CHECKSUMS: Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe Specta: ac94d110b865115fe60ff2c6d7281053c6f8e8a2 - Staged: a9051661bceeca1a0a1ec828f3c6e980cc7dc217 + Staged: 4b099e8f9844b4de259549a0e0711a7b1aec7012 PODFILE CHECKSUM: a994e52a040bbc5da613015a642e49875d985fdf -COCOAPODS: 1.0.0 +COCOAPODS: 1.0.1 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 43634a7..f04dc30 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 021C50274FF43A6F07E119D572C3ACB6 /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 350755BB1D42636CBB6B7443654B98C9 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Public, ); }; }; 02C7E3EC1E1DFDD7046BD26A67E92686 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B4FDE340DD2EC0B9D585D7EAFF0B6EF /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 045F0C0A71632F64606B5F0105B0ED92 /* UINavigationController+Staged.h in Headers */ = {isa = PBXBuildFile; fileRef = 5344B86B6638AA8F5B4C77325670F120 /* UINavigationController+Staged.h */; settings = {ATTRIBUTES = (Project, ); }; }; 050CBCE54DD42518BE3552192C13AF5F /* XCTestCase+Specta.m in Sources */ = {isa = PBXBuildFile; fileRef = BE4D7428ECCA35B925FDDEFC16BBF1BC /* XCTestCase+Specta.m */; }; 07282695806D1DFBF187BFA004D80641 /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 89FCC9624BA7201DC6BE8F35C24C21EC /* EXPMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; 081F2104425CDCB0915354E2FBD7E24E /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AF434E29FE1544944AE92C531B71797 /* ExpectaObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -28,6 +29,7 @@ 339A0C1BFF72397A705959E03877DDDB /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = DBBA6536F5E90EC322F56472348170D6 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; 341D7536159B52F41598F730CC45D548 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = CEAF3173D82A2468391965C1BDDC9AD7 /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3A013F13122CDB8EE962F8CB7C6FCC8E /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D58B801DFCA84689DBB1BBE0801FD19 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BBB82CC89B3A89969160433F76A2CB2 /* UIViewController+Staged.m in Sources */ = {isa = PBXBuildFile; fileRef = 7011224CF85B8042462394079DA3CC5C /* UIViewController+Staged.m */; }; 3E463E2B6917D9AA08A03BA8A8E74A18 /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = EDD80D9A6A172ED153D5F3F0A96F4F59 /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3F0C98D6651C12DCD0D0F3CACC1D3F37 /* SPTSharedExampleGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CC5E4F4D1A5E6CACCB68D3508472A76 /* SPTSharedExampleGroups.m */; }; 40F505E69B8595361C2A7528DDA222B6 /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B51E5A2ADA643131D3F61F1009FD26C /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -41,16 +43,20 @@ 49EFE75BAF060A33327F3CE8C18436F2 /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 275F7B84B9776CF09F5FF2423B145372 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 534E0913263300ED602CD9C6265C7C32 /* Pods-Staged_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D19CA2A1EFB3872C6E5F39A5116FD535 /* Pods-Staged_Example-dummy.m */; }; 562BE99A6F630E709218EB9B3CF36E90 /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 83804923AADC2E6CA492B1CE4CF73116 /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5B2F9CF2DBBDD4584A1584375594B4D9 /* STGNavigationControllerVerifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EA6AA40EB06C52038B8B8A8C8B29646 /* STGNavigationControllerVerifier.m */; }; 5B9D3E1B02F8982AEEFBD12D87BB31CD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A71B6C19E4D0C8A4D14A6EF1AB8728EB /* Foundation.framework */; }; 5E8F33E777456DA63CA2D902508A9058 /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BD7841F4D1E9CCA786B228B8744295A /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 5E9166EEDDAD9D4BDC8C0574FD4C4FB8 /* Specta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D66CA5975D94FEF6626FA04B04D0CD21 /* Specta-dummy.m */; }; 5F6D96E64F890BDC4A75B73C3D50A0DD /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0387A076E601FD3A7C632EBB6CAD3FFE /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 60D3CCEB5B53542228790ABD8885AF42 /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = D202F304F366456D24F5913774BC27BC /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 60D51BF504187EC54C199CF3555C3EA1 /* STGViewControllerVerifier.m in Sources */ = {isa = PBXBuildFile; fileRef = CF34521D6B9158B20855056E63B4EAD0 /* STGViewControllerVerifier.m */; }; 63D0CD4F0FB5A6103E1DDB46E876CBB6 /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = D4DF25B26DF5907082151E9ADF0496BC /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 691782B576770700889297570BFD4C8E /* STGNavigationControllerVerifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 34EA6250560A022D67A5B295FBEA61B6 /* STGNavigationControllerVerifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6924E116731D7079958063A3EE0781ED /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4907DE1D9D936F1F96721C357AA4CDD6 /* EXPMatchers.h */; settings = {ATTRIBUTES = (Public, ); }; }; 69EBB956302554EA37775F4D806BC4DD /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 0331D2E840D597D281AE64A769AB7CA3 /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 6A4E3ACA285A21392936C110E7EC91F0 /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CCC90720E522875A4DEDA5A60316D7 /* EXPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6A9CCF813AC7C1C13F1145FB846F2E40 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A71B6C19E4D0C8A4D14A6EF1AB8728EB /* Foundation.framework */; }; + 6D2684032CAC6FD1F5A21A5C486EB9EA /* UINavigationController+Staged.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AFC09963FB82C8BBF0BF34221D38C00 /* UINavigationController+Staged.m */; }; 6D37BEAA1FC469C3582CACB4E9766502 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C99ECAC908E072B2E47D4536E0CBB4B /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 6EB2498C2AFB1DF8555CB7C1EF89CA5C /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 45A3603F5BA6CAE6B52DF6DE1A89371D /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Public, ); }; }; 70545E4EA86C6E593A2A9F6731DA8F6D /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = E414CA4BF74AC3581DF4E5B24581908D /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -60,10 +66,8 @@ 76331E71086C8CD5118A69B046D8F0FB /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 026B961F7DC5EF4B08D67461ECBA225B /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Public, ); }; }; 779CFE8771E1EF63F1313ABEBCECAA4A /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 395FBDC6CCDA685151E6D159B6DDA84C /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 78A6DB82ED31CAEBFFB09480390B9341 /* SPTCallSite.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ADFFFCB631C1BB5941A1D7F26A1B23 /* SPTCallSite.m */; }; - 7A92504537696A2C86156283040A4A86 /* STGViewControllerVerifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D04C416290AB3E94DA80C1987BC8773 /* STGViewControllerVerifier.m */; }; 7AC91F55DAAA2F0223A97BEFF8BCAF68 /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = C8B5D0129CEE4A3D9766EFB782065BB1 /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7C8990F70B3DFACC64C905887ECE29A7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A71B6C19E4D0C8A4D14A6EF1AB8728EB /* Foundation.framework */; }; - 7F768B173B25893CB395495E0C9B2A0F /* STGViewControllerVerifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B34F5B4C51D909C819177BE5224245 /* STGViewControllerVerifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7FEE0E8D094D7BCCAC7129473EE05ADC /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 3298BF2DCF77F630102D1AEF755470EB /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 8059E5674B08670B0A002D564FFABF44 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = 60757C0440A5F6E32E2E4EF7A6E5222D /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 872948DAF79618AD725E0BF364E5DDD4 /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = 480842D8850746CE62D57334536B2650 /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; @@ -77,13 +81,13 @@ 93AA8CC12ED4BE3670A207119C840641 /* SpectaDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 05098405A581C9106C8F3191B8C7E528 /* SpectaDSL.m */; }; 949513A77E1234ED181EDA8B0B83A9DC /* SpectaDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F2D72E6298A7AF1E88D125D7CE94B08 /* SpectaDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; 956FB3AB698AF3DA776A9F24AA79C229 /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 71618C0162D414B32E8EE77988C35B52 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 974C63BE1F9CB24801B547BDA1FD1239 /* UIViewController+Staged.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DEEBEE34258A38CC556C885300E1109 /* UIViewController+Staged.h */; settings = {ATTRIBUTES = (Project, ); }; }; 97E91EC237B8623D895DBF6092034AD7 /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = DA20427F55F5765889C23CA16D1B7446 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9B546D0F895D9B5A8316B948CEE95C77 /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 48F92F2832FC52A24E2E6EA462D590DD /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9CB065EA0965CE5C6212711B547735A6 /* XCTest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 444D4286DEAFFCF69E79D7C1212DA79B /* XCTest+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; A26F992E8831118311F3DB7CB830595A /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = C98E50B86A154AF300F1B0F13251B89D /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A65C491577A425AF82C53F4A40A0A24B /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 45CBA31E9581A383D75A69CBD5F9C89E /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A6854D311D55E2BBD8BFCE4E82DF3EA9 /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D12B1D1ABE62EBDA5FD043B661DFC56 /* Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6A95973F520390C901975A2ABB60794 /* Staged-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F78A159089FA03A22983A346FC0EFFB /* Staged-dummy.m */; }; A7141BC83638F4B38D4D312BAE3BDAC4 /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BF6B66002DDDF8BAEB87E990C7CAF96 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; A8490A46CB5206BCA5F90FCFBA2D731E /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = FD8E466F955F214DF5C12DED49FE3008 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; }; A86286992DDA7742DC441A7410B4E5E5 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44E91E6A6263B0D61B049B648F6271E7 /* XCTest.framework */; }; @@ -92,12 +96,12 @@ AB1D6408D48F6ECF3FCE553BE73961F5 /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B4B8D5DD763D03043C786A401175A85 /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; AC1B433DA434DF06FB39B7673A449C48 /* SPTSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 92E16BF9E3D7DBE77CC8AA6AC5C15529 /* SPTSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; AD6791D14732A3C17164F61CC72FFB0D /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = D490040FDBEFC31E4F57118CDD668370 /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B1E3B288D69D5687991E5DE4BF2A5C48 /* Staged-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F78A159089FA03A22983A346FC0EFFB /* Staged-dummy.m */; }; B33234F432A72D5E8B65694AE937B78F /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E1A95F824F24B0B27C413EC617F7400 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; BD30B724A71CF5D6E93805B7615EC79C /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 358D2BFE1DFC2EB19C1EDD917B11DF5C /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; BE100CAA3FDA29C1BDC1CC4BB0BE5108 /* SPTExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 441AC85A3941095804531E30BADA41B9 /* SPTExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; C2BFF99EB859FD7056CF72C4850693D1 /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 457D48746F19695DF1FE416F7B9178F4 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; C3B1FCEBDCB72FCE88C5CFE08B75A5E2 /* SpectaUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 25482E58ADE5F1B0CE8893995961DD84 /* SpectaUtility.m */; }; - C3B6ADC841322B0944A74AF2629DC47C /* UIViewController+Staged.m in Sources */ = {isa = PBXBuildFile; fileRef = 982CECD3931D27A989A4F8970C4BDAD3 /* UIViewController+Staged.m */; }; C3C45A6CBED483A7270E8D342294F324 /* SPTCompiledExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 220F4A6EF6CF0CAD7A9DCD2F18D5A41F /* SPTCompiledExample.m */; }; C6671739E8C5904113586F8BEBBC9780 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = E4162B11E0D7C53E3C14A7D9E2B15334 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; C98F5401E5C1AB6512BE50C3B7CEA9BF /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A65E3A734DE2A539F6167BB216F8CA6 /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -106,11 +110,13 @@ D404C836486DE12FB6419667FCD8F8D8 /* SPTCompiledExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C3A7AB4FDB215FE5D61A9B06CB7EF02 /* SPTCompiledExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; D42799488F38F2DB8A580730CEE13CE6 /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 66046BF5F26513751A82D6A7E2193BB7 /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; D6FA42B146414B3E3402F69255E69594 /* Pods-Staged_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 96A3E784874B0937E9866ABCBFC7415E /* Pods-Staged_Tests-dummy.m */; }; + DDEF536A2C9271765E8CAADC8B51CF61 /* STGViewControllerVerifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 28E971DE22AF67093E95A072ACDDA23E /* STGViewControllerVerifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; DFF580AE359407E841BA8D8DDCE6E299 /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = 290E9FCCDD3395FD76A18F588DB92335 /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Public, ); }; }; E06376455C1D5E45B97ACDC5438FC15B /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A9E9E449370C23C1507DC953194BF0 /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; E2EBD18BA89D3FF648947DF31FA12D44 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = FDC448484630C843732AC1B9BD8B2592 /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - E46C4BBABADE6164F16674702D59DB86 /* UIViewController+Staged.h in Headers */ = {isa = PBXBuildFile; fileRef = 11847CD983FDBCCB98074EDF8B38BA70 /* UIViewController+Staged.h */; settings = {ATTRIBUTES = (Project, ); }; }; E867CBF850D20C314BF4BD790432455D /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = D2BD33A625E20049A5BDAE4840DDEDDB /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ECC8BFA71D4EA6C1003953DC /* UIViewController+StagedSwizziling.h in Headers */ = {isa = PBXBuildFile; fileRef = ECC8BFA51D4EA6C1003953DC /* UIViewController+StagedSwizziling.h */; }; + ECC8BFA81D4EA6C1003953DC /* UIViewController+StagedSwizziling.m in Sources */ = {isa = PBXBuildFile; fileRef = ECC8BFA61D4EA6C1003953DC /* UIViewController+StagedSwizziling.m */; }; EE52A320EC3155B114104E06396D1B59 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = C8D392127B206A1EDB6C5CDF0FE3F3AE /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; F1F4E65611F5567A86AF797EAC3E225B /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AB8640A38F729D7DE7FE7A574F8AAD0 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; F415F451C67C56BD2821DFDC2802FE6C /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44E91E6A6263B0D61B049B648F6271E7 /* XCTest.framework */; }; @@ -158,15 +164,16 @@ 086FCF3A434D91E60668459EA85AEE46 /* SPTCallSite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCallSite.h; path = Specta/Specta/SPTCallSite.h; sourceTree = ""; }; 0A65E3A734DE2A539F6167BB216F8CA6 /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; 0AB8640A38F729D7DE7FE7A574F8AAD0 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; + 0AFC09963FB82C8BBF0BF34221D38C00 /* UINavigationController+Staged.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UINavigationController+Staged.m"; sourceTree = ""; }; 0B2041EB9D004B696352EED7595F2ABF /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; 0B51E5A2ADA643131D3F61F1009FD26C /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; 0BD7841F4D1E9CCA786B228B8744295A /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; + 0DEEBEE34258A38CC556C885300E1109 /* UIViewController+Staged.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIViewController+Staged.h"; sourceTree = ""; }; 0E1A95F824F24B0B27C413EC617F7400 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; 0E1F361B74FE308DCDCC5459BAB06C4C /* Pods-Staged_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Staged_Example.release.xcconfig"; sourceTree = ""; }; 0ED50FEF04A097FBD865644932F434AD /* SPTGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTGlobalBeforeAfterEach.h; path = Specta/Specta/SPTGlobalBeforeAfterEach.h; sourceTree = ""; }; 0EED0BDD301E28AC8164B2CBBE6DA8F2 /* libSpecta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSpecta.a; sourceTree = BUILT_PRODUCTS_DIR; }; 0EF4B99A1F6CA799584069E5DEDD4117 /* Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Specta.h; path = Specta/Specta/Specta.h; sourceTree = ""; }; - 11847CD983FDBCCB98074EDF8B38BA70 /* UIViewController+Staged.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIViewController+Staged.h"; sourceTree = ""; }; 1276DEF1DD592F7B76703123E3EF9F6D /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; 129B464B65ADDD7472029B70B5B0BC9B /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; 1C99ECAC908E072B2E47D4536E0CBB4B /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; @@ -180,11 +187,11 @@ 24B0196F345567EF9DE6381B1FC963BE /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; 25482E58ADE5F1B0CE8893995961DD84 /* SpectaUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaUtility.m; path = Specta/Specta/SpectaUtility.m; sourceTree = ""; }; 275F7B84B9776CF09F5FF2423B145372 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; + 28E971DE22AF67093E95A072ACDDA23E /* STGViewControllerVerifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = STGViewControllerVerifier.h; sourceTree = ""; }; 290E9FCCDD3395FD76A18F588DB92335 /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; - 29B34F5B4C51D909C819177BE5224245 /* STGViewControllerVerifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = STGViewControllerVerifier.h; sourceTree = ""; }; - 2D04C416290AB3E94DA80C1987BC8773 /* STGViewControllerVerifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = STGViewControllerVerifier.m; sourceTree = ""; }; 32018F4E987608913904B02CFCC8C633 /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; 3298BF2DCF77F630102D1AEF755470EB /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; + 34EA6250560A022D67A5B295FBEA61B6 /* STGNavigationControllerVerifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = STGNavigationControllerVerifier.h; sourceTree = ""; }; 350755BB1D42636CBB6B7443654B98C9 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; 358D2BFE1DFC2EB19C1EDD917B11DF5C /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; 368A22BE02FAFE024C8342B0633E8EE8 /* XCTestCase+Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase+Specta.h"; path = "Specta/Specta/XCTestCase+Specta.h"; sourceTree = ""; }; @@ -214,6 +221,7 @@ 51477FFEF76EB42A590360CB3B6547A3 /* SPTExampleGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExampleGroup.h; path = Specta/Specta/SPTExampleGroup.h; sourceTree = ""; }; 524EFC66E07F50595D3E505155F21399 /* SPTSharedExampleGroups.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSharedExampleGroups.h; path = Specta/Specta/SPTSharedExampleGroups.h; sourceTree = ""; }; 5283A8A6087296098B28DF2FB7C7F253 /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; + 5344B86B6638AA8F5B4C77325670F120 /* UINavigationController+Staged.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UINavigationController+Staged.h"; sourceTree = ""; }; 54E9CDBE36BD7F47243B87619A16C9FD /* Pods-Staged_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Staged_Example.debug.xcconfig"; sourceTree = ""; }; 592685306D3513D154683CD056B23555 /* Staged.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Staged.xcconfig; sourceTree = ""; }; 5A3ACD7917F98C8549A4D05E1685491E /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; @@ -226,6 +234,7 @@ 6AFFAEEF9ACFFEF89DB53B00E7BBB3D8 /* SPTExampleGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExampleGroup.m; path = Specta/Specta/SPTExampleGroup.m; sourceTree = ""; }; 6B21A9AA1BA15DC311330686D0ACA083 /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; 6BF6B66002DDDF8BAEB87E990C7CAF96 /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; + 7011224CF85B8042462394079DA3CC5C /* UIViewController+Staged.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+Staged.m"; sourceTree = ""; }; 71618C0162D414B32E8EE77988C35B52 /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; 7419DA3C7475CAD7752162F3E64713B4 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; 77CAC85C5300FBCF9BFE11F209540652 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; @@ -239,11 +248,11 @@ 93CC90A1DAEF67C2D235DEA681F6C824 /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; 96A3E784874B0937E9866ABCBFC7415E /* Pods-Staged_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Staged_Tests-dummy.m"; sourceTree = ""; }; 96E113C6B670950A1B4E47251CD743B8 /* Specta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Specta.xcconfig; sourceTree = ""; }; - 982CECD3931D27A989A4F8970C4BDAD3 /* UIViewController+Staged.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+Staged.m"; sourceTree = ""; }; 99A26D281701A026BEEE58F7FBB96A77 /* Pods-Staged_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Staged_Tests-acknowledgements.markdown"; sourceTree = ""; }; 9AF434E29FE1544944AE92C531B71797 /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; 9C5DAB4E624D6F1463C4306CDEC3F852 /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = ""; }; 9DBBBC32439FB3DC670DFBC0D7A75D82 /* Pods-Staged_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Staged_Tests-frameworks.sh"; sourceTree = ""; }; + 9EA6AA40EB06C52038B8B8A8C8B29646 /* STGNavigationControllerVerifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = STGNavigationControllerVerifier.m; sourceTree = ""; }; A29C233D9D3C4BDD3B5D2D35811C1DA7 /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; A71B6C19E4D0C8A4D14A6EF1AB8728EB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; ABD9FD8F3D943A2C18E53B5F3194F47E /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; @@ -260,6 +269,7 @@ C8D392127B206A1EDB6C5CDF0FE3F3AE /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; C98E50B86A154AF300F1B0F13251B89D /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; CEAF3173D82A2468391965C1BDDC9AD7 /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; + CF34521D6B9158B20855056E63B4EAD0 /* STGViewControllerVerifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = STGViewControllerVerifier.m; sourceTree = ""; }; D19CA2A1EFB3872C6E5F39A5116FD535 /* Pods-Staged_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Staged_Example-dummy.m"; sourceTree = ""; }; D202F304F366456D24F5913774BC27BC /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; D2BD33A625E20049A5BDAE4840DDEDDB /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; @@ -274,6 +284,8 @@ E4162B11E0D7C53E3C14A7D9E2B15334 /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; E91D50B6B5C63844602F701D39A38200 /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; EC4186F6425B40CB8D88E7228CD01E2B /* SPTExcludeGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExcludeGlobalBeforeAfterEach.h; path = Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h; sourceTree = ""; }; + ECC8BFA51D4EA6C1003953DC /* UIViewController+StagedSwizziling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+StagedSwizziling.h"; sourceTree = ""; }; + ECC8BFA61D4EA6C1003953DC /* UIViewController+StagedSwizziling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+StagedSwizziling.m"; sourceTree = ""; }; EDD80D9A6A172ED153D5F3F0A96F4F59 /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; F11296C0123C4D1A743AF1415BB439F7 /* SPTTestSuite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTTestSuite.m; path = Specta/Specta/SPTTestSuite.m; sourceTree = ""; }; F72A5613D359B6B1E357EADD0F208201 /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; @@ -342,6 +354,14 @@ name = iOS; sourceTree = ""; }; + 1001FE1AB6889257BC2FDDE2ABE959B3 /* Staged */ = { + isa = PBXGroup; + children = ( + AD03E205B40B8B3E7041010FDB91785C /* Classes */, + ); + path = Staged; + sourceTree = ""; + }; 122DA2E5084A4393C29BE363C764795C /* Frameworks */ = { isa = PBXGroup; children = ( @@ -446,17 +466,6 @@ path = "Target Support Files/Pods-Staged_Tests"; sourceTree = ""; }; - 767D66B255494F0320BB5FABA86E646A /* Classes */ = { - isa = PBXGroup; - children = ( - 29B34F5B4C51D909C819177BE5224245 /* STGViewControllerVerifier.h */, - 2D04C416290AB3E94DA80C1987BC8773 /* STGViewControllerVerifier.m */, - 11847CD983FDBCCB98074EDF8B38BA70 /* UIViewController+Staged.h */, - 982CECD3931D27A989A4F8970C4BDAD3 /* UIViewController+Staged.m */, - ); - path = Classes; - sourceTree = ""; - }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( @@ -489,14 +498,6 @@ name = Pods; sourceTree = ""; }; - 86861F3ACE8B490C1303B77DE8F35476 /* Staged */ = { - isa = PBXGroup; - children = ( - 767D66B255494F0320BB5FABA86E646A /* Classes */, - ); - path = Staged; - sourceTree = ""; - }; 8F0F13B45F6868719C3E8D1B2C651EC0 /* Specta */ = { isa = PBXGroup; children = ( @@ -545,6 +546,23 @@ path = "Target Support Files/Pods-Staged_Example"; sourceTree = ""; }; + AD03E205B40B8B3E7041010FDB91785C /* Classes */ = { + isa = PBXGroup; + children = ( + 34EA6250560A022D67A5B295FBEA61B6 /* STGNavigationControllerVerifier.h */, + 9EA6AA40EB06C52038B8B8A8C8B29646 /* STGNavigationControllerVerifier.m */, + 28E971DE22AF67093E95A072ACDDA23E /* STGViewControllerVerifier.h */, + CF34521D6B9158B20855056E63B4EAD0 /* STGViewControllerVerifier.m */, + 5344B86B6638AA8F5B4C77325670F120 /* UINavigationController+Staged.h */, + 0AFC09963FB82C8BBF0BF34221D38C00 /* UINavigationController+Staged.m */, + 0DEEBEE34258A38CC556C885300E1109 /* UIViewController+Staged.h */, + 7011224CF85B8042462394079DA3CC5C /* UIViewController+Staged.m */, + ECC8BFA51D4EA6C1003953DC /* UIViewController+StagedSwizziling.h */, + ECC8BFA61D4EA6C1003953DC /* UIViewController+StagedSwizziling.m */, + ); + path = Classes; + sourceTree = ""; + }; C0110626729ACC32BAF81E03B123B5BF /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -565,7 +583,7 @@ DAA019AD4BD63485C93185A250805266 /* Staged */ = { isa = PBXGroup; children = ( - 86861F3ACE8B490C1303B77DE8F35476 /* Staged */, + 1001FE1AB6889257BC2FDDE2ABE959B3 /* Staged */, EC114B1A9DC64A5F0EE42FC3573DC122 /* Support Files */, ); name = Staged; @@ -631,12 +649,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 7951EF96365D9B4189C0D66A11895865 /* Headers */ = { + 3B073D14A8E80DD5A359FF717BCEF924 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7F768B173B25893CB395495E0C9B2A0F /* STGViewControllerVerifier.h in Headers */, - E46C4BBABADE6164F16674702D59DB86 /* UIViewController+Staged.h in Headers */, + 691782B576770700889297570BFD4C8E /* STGNavigationControllerVerifier.h in Headers */, + DDEF536A2C9271765E8CAADC8B51CF61 /* STGViewControllerVerifier.h in Headers */, + ECC8BFA71D4EA6C1003953DC /* UIViewController+StagedSwizziling.h in Headers */, + 045F0C0A71632F64606B5F0105B0ED92 /* UINavigationController+Staged.h in Headers */, + 974C63BE1F9CB24801B547BDA1FD1239 /* UIViewController+Staged.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -745,9 +766,9 @@ isa = PBXNativeTarget; buildConfigurationList = 93F80065D274E1F34944F3B7A8AEE8BD /* Build configuration list for PBXNativeTarget "Staged" */; buildPhases = ( - 9527A211D621B6BF263FADCE352C87DF /* Sources */, + F71D218FF03168931F69CA8C332F6E95 /* Sources */, A53C42F2DF09A1361C8920C1B0E08CDB /* Frameworks */, - 7951EF96365D9B4189C0D66A11895865 /* Headers */, + 3B073D14A8E80DD5A359FF717BCEF924 /* Headers */, ); buildRules = ( ); @@ -882,13 +903,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9527A211D621B6BF263FADCE352C87DF /* Sources */ = { + F71D218FF03168931F69CA8C332F6E95 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A6A95973F520390C901975A2ABB60794 /* Staged-dummy.m in Sources */, - 7A92504537696A2C86156283040A4A86 /* STGViewControllerVerifier.m in Sources */, - C3B6ADC841322B0944A74AF2629DC47C /* UIViewController+Staged.m in Sources */, + B1E3B288D69D5687991E5DE4BF2A5C48 /* Staged-dummy.m in Sources */, + 5B2F9CF2DBBDD4584A1584375594B4D9 /* STGNavigationControllerVerifier.m in Sources */, + 60D51BF504187EC54C199CF3555C3EA1 /* STGViewControllerVerifier.m in Sources */, + 6D2684032CAC6FD1F5A21A5C486EB9EA /* UINavigationController+Staged.m in Sources */, + ECC8BFA81D4EA6C1003953DC /* UIViewController+StagedSwizziling.m in Sources */, + 3BBB82CC89B3A89969160433F76A2CB2 /* UIViewController+Staged.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Staged.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Staged.xcscheme index 47b868d..e294469 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Staged.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Staged.xcscheme @@ -7,43 +7,31 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES"> + ReferencedContainer = "container:Pods.xcodeproj" + BuildableName = "libStaged.a"> - - - - - - - - - - - - - - + debugDocumentVersioning = "YES" + buildConfiguration = "Release" + shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/Example/Pods/Target Support Files/Pods-Staged_Example/Pods-Staged_Example-resources.sh b/Example/Pods/Target Support Files/Pods-Staged_Example/Pods-Staged_Example-resources.sh index e768f92..0a15615 100755 --- a/Example/Pods/Target Support Files/Pods-Staged_Example/Pods-Staged_Example-resources.sh +++ b/Example/Pods/Target Support Files/Pods-Staged_Example/Pods-Staged_Example-resources.sh @@ -48,8 +48,8 @@ EOM ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" diff --git a/Example/Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests-resources.sh index e768f92..0a15615 100755 --- a/Example/Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests-resources.sh +++ b/Example/Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests-resources.sh @@ -48,8 +48,8 @@ EOM ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" diff --git a/Example/Staged.xcodeproj/project.pbxproj b/Example/Staged.xcodeproj/project.pbxproj index ab4e393..10f140d 100644 --- a/Example/Staged.xcodeproj/project.pbxproj +++ b/Example/Staged.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 6B7812391ED7821A607670F1 /* libPods-Staged_Example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 107C0A446C0A572069E9C05C /* libPods-Staged_Example.a */; }; 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; 9C1ED9D051C7AB91137A31E4 /* libPods-Staged_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 961C5901AA2E51D7B93DD794 /* libPods-Staged_Tests.a */; }; + ECC8BFA41D4E8462003953DC /* STGNavigationControllerVerifier.m in Sources */ = {isa = PBXBuildFile; fileRef = ECC8BF9C1D4E8343003953DC /* STGNavigationControllerVerifier.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -65,6 +66,7 @@ C837F64318CFBFF89DD99AD6 /* Pods-Staged_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Staged_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests.debug.xcconfig"; sourceTree = ""; }; E90DCEAB48683BABAD1866AC /* Pods-Staged_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Staged_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests.release.xcconfig"; sourceTree = ""; }; EB0C0E06CAD94BAA594A86E6 /* Staged.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Staged.podspec; path = ../Staged.podspec; sourceTree = ""; }; + ECC8BF9C1D4E8343003953DC /* STGNavigationControllerVerifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = STGNavigationControllerVerifier.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -157,6 +159,7 @@ isa = PBXGroup; children = ( 6003F5BB195388D20070C39A /* STGViewControllerVerifier.m */, + ECC8BF9C1D4E8343003953DC /* STGNavigationControllerVerifier.m */, 6003F5B6195388D20070C39A /* Supporting Files */, ); path = Tests; @@ -200,12 +203,12 @@ isa = PBXNativeTarget; buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "Staged_Example" */; buildPhases = ( - F95E24A15EC83EEAA2B59790 /* 📦 Check Pods Manifest.lock */, + F95E24A15EC83EEAA2B59790 /* [CP] Check Pods Manifest.lock */, 6003F586195388D20070C39A /* Sources */, 6003F587195388D20070C39A /* Frameworks */, 6003F588195388D20070C39A /* Resources */, - 12C1E20F6C3C4D9B8FD48895 /* 📦 Embed Pods Frameworks */, - FFC393F81A646795F361A0F5 /* 📦 Copy Pods Resources */, + 12C1E20F6C3C4D9B8FD48895 /* [CP] Embed Pods Frameworks */, + FFC393F81A646795F361A0F5 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -220,12 +223,12 @@ isa = PBXNativeTarget; buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "Staged_Tests" */; buildPhases = ( - 7D6354337374853BCCEBA4BD /* 📦 Check Pods Manifest.lock */, + 7D6354337374853BCCEBA4BD /* [CP] Check Pods Manifest.lock */, 6003F5AA195388D20070C39A /* Sources */, 6003F5AB195388D20070C39A /* Frameworks */, 6003F5AC195388D20070C39A /* Resources */, - F999F82761B4C34EE00A5ADD /* 📦 Embed Pods Frameworks */, - 75730739663943A4FF945FD1 /* 📦 Copy Pods Resources */, + F999F82761B4C34EE00A5ADD /* [CP] Embed Pods Frameworks */, + 75730739663943A4FF945FD1 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -293,14 +296,14 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 12C1E20F6C3C4D9B8FD48895 /* 📦 Embed Pods Frameworks */ = { + 12C1E20F6C3C4D9B8FD48895 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Embed Pods Frameworks"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -308,14 +311,14 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Staged_Example/Pods-Staged_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 75730739663943A4FF945FD1 /* 📦 Copy Pods Resources */ = { + 75730739663943A4FF945FD1 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Copy Pods Resources"; + name = "[CP] Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -323,14 +326,14 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 7D6354337374853BCCEBA4BD /* 📦 Check Pods Manifest.lock */ = { + 7D6354337374853BCCEBA4BD /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Check Pods Manifest.lock"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -338,14 +341,14 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - F95E24A15EC83EEAA2B59790 /* 📦 Check Pods Manifest.lock */ = { + F95E24A15EC83EEAA2B59790 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Check Pods Manifest.lock"; + name = "[CP] Check Pods Manifest.lock"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -353,14 +356,14 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - F999F82761B4C34EE00A5ADD /* 📦 Embed Pods Frameworks */ = { + F999F82761B4C34EE00A5ADD /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Embed Pods Frameworks"; + name = "[CP] Embed Pods Frameworks"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -368,14 +371,14 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Staged_Tests/Pods-Staged_Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - FFC393F81A646795F361A0F5 /* 📦 Copy Pods Resources */ = { + FFC393F81A646795F361A0F5 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); - name = "📦 Copy Pods Resources"; + name = "[CP] Copy Pods Resources"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; @@ -400,6 +403,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + ECC8BFA41D4E8462003953DC /* STGNavigationControllerVerifier.m in Sources */, 6003F5BC195388D20070C39A /* STGViewControllerVerifier.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Example/Tests/STGNavigationControllerVerifier.m b/Example/Tests/STGNavigationControllerVerifier.m new file mode 100644 index 0000000..1d08c54 --- /dev/null +++ b/Example/Tests/STGNavigationControllerVerifier.m @@ -0,0 +1,129 @@ +// +// STGNavigationControllerVerifier.m +// Staged +// +// Created by Gustavo Barbosa on 7/31/16. +// Copyright © 2016 Marcelo Fabri. All rights reserved. +// + +#import + +SpecBegin(STGNavigationControllerVerifier) + +__block STGNavigationControllerVerifier *verifier; + +beforeEach(^{ + verifier = [[STGNavigationControllerVerifier alloc] init]; +}); + +describe(@"navigation controller pushing", ^{ + + __block UINavigationController *currentNavigationController; + __block UIViewController *viewControllerToPush; + + beforeEach(^{ + currentNavigationController = [[UINavigationController alloc] init]; + viewControllerToPush = [[UIViewController alloc] init]; + }); + + it(@"has empty properties by default", ^{ + expect(verifier.viewControllers).to.beEmpty(); + expect(verifier.pushedAnimated).to.beFalsy(); + }); + + it(@"stores properties", ^{ + [currentNavigationController pushViewController:viewControllerToPush animated:YES]; + + expect(verifier.viewControllers).to.haveCountOf(1); + expect(verifier.viewControllers.lastObject).to.equal(viewControllerToPush); + expect(verifier.pushedAnimated).to.beTruthy(); + }); +}); + +describe(@"navigation controller popping", ^{ + + __block UINavigationController *navigationController; + __block UIViewController *rootViewController; + + beforeEach(^{ + navigationController = [[UINavigationController alloc] init]; + + rootViewController = [[UIViewController alloc] init]; + [navigationController pushViewController:rootViewController animated:NO]; + }); + + it(@"has empty properties by default", ^{ + expect(verifier.poppedAnimated).to.beFalsy(); + }); + + it(@"stores properties", ^{ + [navigationController popViewControllerAnimated:YES]; + + expect(verifier.poppedAnimated).to.beTruthy(); + expect(verifier.viewControllers).to.beEmpty(); + }); + + it(@"can pop 1 element", ^{ + UIViewController *secondViewController = [[UIViewController alloc] init]; + [navigationController pushViewController:secondViewController animated:YES]; + + [navigationController popViewControllerAnimated:YES]; + + expect(verifier.viewControllers).to.haveCountOf(1); + }); + + it(@"can pop to root view controller", ^{ + UIViewController *fooViewController = [[UIViewController alloc] init]; + [navigationController pushViewController:fooViewController animated:YES]; + + UIViewController *barViewController = [[UIViewController alloc] init]; + [navigationController pushViewController:barViewController animated:YES]; + + [navigationController popToRootViewControllerAnimated:YES]; + + expect(verifier.viewControllers).to.haveCountOf(1); + expect(verifier.topViewController).to.equal(rootViewController); + expect(verifier.poppedAnimated).to.beTruthy(); + }); + + it(@"can pop to a specific view controller", ^{ + UIViewController *fooViewController = [[UIViewController alloc] init]; + [navigationController pushViewController:fooViewController animated:YES]; + + UIViewController *barViewController = [[UIViewController alloc] init]; + [navigationController pushViewController:barViewController animated:YES]; + + [navigationController popToViewController:fooViewController animated:YES]; + + expect(verifier.viewControllers).to.haveCountOf(2); + expect(verifier.topViewController).to.equal(fooViewController); + expect(verifier.poppedAnimated).to.beTruthy(); + }); + + it(@"cannot pop to a specific view controller if it's not on the stack", ^{ + UIViewController *fooViewController = [[UIViewController alloc] init]; + UIViewController *barViewController = [[UIViewController alloc] init]; + [navigationController pushViewController:barViewController animated:YES]; + + [navigationController popToViewController:fooViewController animated:YES]; + + expect(verifier.viewControllers).to.haveCountOf(2); + expect(verifier.topViewController).to.equal(barViewController); + expect(verifier.poppedAnimated).to.beFalsy(); + }); + + it(@"can set a whole new set of view controllers", ^{ + UIViewController *fooViewController = [[UIViewController alloc] init]; + UIViewController *barViewController = [[UIViewController alloc] init]; + + [navigationController setViewControllers:@[fooViewController, barViewController] animated:YES]; + + expect(verifier.viewControllers).to.haveCountOf(2); + expect(verifier.viewControllers).toNot.contain(rootViewController); + expect(verifier.topViewController).to.equal(barViewController); + expect(verifier.pushedAnimated).to.beTruthy(); + }); +}); + +SpecEnd + diff --git a/Staged.podspec b/Staged.podspec index 111b58b..c98bbce 100644 --- a/Staged.podspec +++ b/Staged.podspec @@ -16,6 +16,10 @@ Staged allows you to easily mock View Controllers presentations and dismissals, s.source_files = 'Staged/Classes/**/*' - s.public_header_files = 'Staged/Classes/STGViewControllerVerifier.h' + s.public_header_files = [ + 'Staged/Classes/STGViewControllerVerifier.h', + 'Staged/Classes/STGNavigationControllerVerifier.h' + ] + s.frameworks = 'UIKit' end diff --git a/Staged/Classes/STGNavigationControllerVerifier.h b/Staged/Classes/STGNavigationControllerVerifier.h new file mode 100644 index 0000000..f717534 --- /dev/null +++ b/Staged/Classes/STGNavigationControllerVerifier.h @@ -0,0 +1,18 @@ +// +// STGNavigationControllerVerifier.h +// Staged +// +// Created by Gustavo Barbosa on 7/31/16. +// +// + +#import + +@interface STGNavigationControllerVerifier: NSObject + +@property (nonatomic, copy, nonnull) NSArray<__kindof UIViewController *> *viewControllers; +@property (nonatomic, readonly, nonnull) __kindof UIViewController *topViewController; +@property (nonatomic) BOOL pushedAnimated; +@property (nonatomic) BOOL poppedAnimated; + +@end diff --git a/Staged/Classes/STGNavigationControllerVerifier.m b/Staged/Classes/STGNavigationControllerVerifier.m new file mode 100644 index 0000000..64515da --- /dev/null +++ b/Staged/Classes/STGNavigationControllerVerifier.m @@ -0,0 +1,101 @@ +// +// STGNavigationControllerVerifier.m +// Staged +// +// Created by Gustavo Barbosa on 7/31/16. +// +// + +#import "STGNavigationControllerVerifier.h" +#import "UINavigationController+Staged.h" + +@implementation STGNavigationControllerVerifier + +static void swizzleMocks() { + [UINavigationController stg_swizzle]; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _viewControllers = @[]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(viewControllerWasPushed:) + name:STGViewControllerWasPushedNotificationName + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(viewControllerWasPopped:) + name:STGViewControllerWasPoppedNotificationName + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(navigationWasPoppedToRoot:) + name:STGNavigationControllerWasPoppedToRootNotificationName + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(navigationWasPoppedToViewController:) + name:STGNavigationControllerWasPoppedToViewControllerNotificationName + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(navigationWasReset:) + name:STGNavigationControllerItemsWereSetNotificationName + object:nil]; + + swizzleMocks(); + } + + return self; +} + +- (void)dealloc { + swizzleMocks(); + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (nonnull UIViewController *)topViewController { + return _viewControllers.lastObject; +} + +- (void)viewControllerWasPushed:(NSNotification *)notification { + NSMutableArray *viewControllers = [self.viewControllers mutableCopy]; + [viewControllers addObject:notification.object]; + self.viewControllers = viewControllers; + self.pushedAnimated = [notification.userInfo[STGViewControllerPushingAnimatedKey] boolValue]; +} + +- (void)viewControllerWasPopped:(NSNotification *)notification { + NSMutableArray *viewControllers = [self.viewControllers mutableCopy]; + [viewControllers removeLastObject]; + self.viewControllers = viewControllers; + self.poppedAnimated = [notification.userInfo[STGViewControllerPoppingAnimatedKey] boolValue]; +} + +- (void)navigationWasPoppedToRoot:(NSNotification *)notification { + self.viewControllers = @[self.viewControllers.firstObject]; + self.poppedAnimated = [notification.userInfo[STGViewControllerPoppingAnimatedKey] boolValue]; +} + +- (void)navigationWasPoppedToViewController:(NSNotification *)notification { + UIViewController *viewControllerToStayOnTop = notification.object; + if (![self.viewControllers containsObject:viewControllerToStayOnTop]) { + return; + } + + NSMutableArray *viewControllers = [self.viewControllers mutableCopy]; + while (viewControllers.count > 1) { + if ([viewControllers.lastObject isEqual:viewControllerToStayOnTop]) { + break; + } + [viewControllers removeLastObject]; + } + self.viewControllers = viewControllers; + self.poppedAnimated = [notification.userInfo[STGViewControllerPoppingAnimatedKey] boolValue]; +} + +- (void)navigationWasReset:(NSNotification *)notification { + NSArray *viewControllersToSet = notification.object; + self.viewControllers = viewControllersToSet; + self.pushedAnimated = [notification.userInfo[STGViewControllerPushingAnimatedKey] boolValue]; +} + +@end diff --git a/Staged/Classes/UINavigationController+Staged.h b/Staged/Classes/UINavigationController+Staged.h new file mode 100644 index 0000000..078d1ba --- /dev/null +++ b/Staged/Classes/UINavigationController+Staged.h @@ -0,0 +1,24 @@ +// +// UINavigationController+Staged.h +// Staged +// +// Created by Gustavo Barbosa on 7/31/16. +// +// + +#import + +FOUNDATION_EXPORT NSString *const STGViewControllerWasPushedNotificationName; +FOUNDATION_EXPORT NSString *const STGViewControllerWasPoppedNotificationName; +FOUNDATION_EXPORT NSString *const STGNavigationControllerWasPoppedToRootNotificationName; +FOUNDATION_EXPORT NSString *const STGNavigationControllerWasPoppedToViewControllerNotificationName; +FOUNDATION_EXPORT NSString *const STGNavigationControllerItemsWereSetNotificationName; + +FOUNDATION_EXPORT NSString *const STGViewControllerPushingAnimatedKey; +FOUNDATION_EXPORT NSString *const STGViewControllerPoppingAnimatedKey; + +@interface UINavigationController (Staged) + ++ (void)stg_swizzle; + +@end diff --git a/Staged/Classes/UINavigationController+Staged.m b/Staged/Classes/UINavigationController+Staged.m new file mode 100644 index 0000000..b82387f --- /dev/null +++ b/Staged/Classes/UINavigationController+Staged.m @@ -0,0 +1,93 @@ +// +// UINavigationController+Staged.m +// Staged +// +// Created by Gustavo Barbosa on 7/31/16. +// +// + +#import "UINavigationController+Staged.h" +#import "UIViewController+StagedSwizziling.h" + +NSString * const STGViewControllerWasPushedNotificationName = @"STGViewControllerWasPushedNotificationName"; +NSString * const STGViewControllerWasPoppedNotificationName = @"STGViewControllerWasPoppedNotificationName"; +NSString * const STGNavigationControllerWasPoppedToRootNotificationName = @"STGNavigationControllerWasPoppedToRootNotificationName"; +NSString * const STGNavigationControllerWasPoppedToViewControllerNotificationName = @"STGNavigationControllerWasPoppedToViewControllerNotificationName"; +NSString * const STGNavigationControllerItemsWereSetNotificationName = @"STGNavigationControllerItemsWereSetNotificationName"; + +NSString * const STGViewControllerPushingAnimatedKey = @"STGViewControllerPushingAnimatedKey"; +NSString * const STGViewControllerPoppingAnimatedKey = @"STGViewControllerPoppingAnimatedKey"; + +@implementation UINavigationController (Staged) + ++ (void)stg_swizzle { + [self stg_replaceInstanceMethod:@selector(pushViewController:animated:) + withMethod:@selector(stg_pushViewController:animated:)]; + + [self stg_replaceInstanceMethod:@selector(popViewControllerAnimated:) + withMethod:@selector(stg_popViewControllerAnimated:)]; + + [self stg_replaceInstanceMethod:@selector(popToRootViewControllerAnimated:) + withMethod:@selector(stg_popToRootViewControllerAnimated:)]; + + [self stg_replaceInstanceMethod:@selector(popToViewController:animated:) + withMethod:@selector(stg_popToViewController:animated:)]; + + [self stg_replaceInstanceMethod:@selector(setViewControllers:animated:) + withMethod:@selector(stg_setViewControllers:animated:)]; +} + +- (void)stg_pushViewController:(UIViewController *)viewControllerToPush + animated:(BOOL)flag { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:STGViewControllerWasPushedNotificationName + object:viewControllerToPush + userInfo:@{STGViewControllerPushingAnimatedKey: @(flag)}]; +} + +- (nullable UIViewController *)stg_popViewControllerAnimated:(BOOL)flag { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:STGViewControllerWasPoppedNotificationName + object:self.topViewController + userInfo:@{STGViewControllerPoppingAnimatedKey: @(flag)}]; + return self.topViewController; +} + +- (NSArray *)stg_popToRootViewControllerAnimated:(BOOL)flag { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:STGNavigationControllerWasPoppedToRootNotificationName + object:nil + userInfo:@{STGViewControllerPoppingAnimatedKey: @(flag)}]; + + if (self.viewControllers.count == 0) { + return @[]; + } + + return [self.viewControllers subarrayWithRange:NSMakeRange(1, self.viewControllers.count - 1)]; +} + +- (NSArray *)stg_popToViewController:(UIViewController *)viewControllerToStayOnTop + animated:(BOOL)flag { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:STGNavigationControllerWasPoppedToViewControllerNotificationName + object:viewControllerToStayOnTop + userInfo:@{STGViewControllerPoppingAnimatedKey: @(flag)}]; + + NSUInteger topViewControllerIndex = [self.viewControllers indexOfObject:viewControllerToStayOnTop]; + if (topViewControllerIndex == NSNotFound) { + return @[]; + } + + NSRange range = NSMakeRange(topViewControllerIndex, self.viewControllers.count - topViewControllerIndex); + return [self.viewControllers subarrayWithRange:range]; +} + +- (void)stg_setViewControllers:(NSArray *)viewControllersToSet + animated:(BOOL)flag { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc postNotificationName:STGNavigationControllerItemsWereSetNotificationName + object:viewControllersToSet + userInfo:@{STGViewControllerPushingAnimatedKey: @(flag)}]; +} + +@end diff --git a/Staged/Classes/UIViewController+Staged.m b/Staged/Classes/UIViewController+Staged.m index 43e18b7..a7193e3 100644 --- a/Staged/Classes/UIViewController+Staged.m +++ b/Staged/Classes/UIViewController+Staged.m @@ -7,7 +7,7 @@ // #import "UIViewController+Staged.h" -#import +#import "UIViewController+StagedSwizziling.h" NSString * const STGViewControllerWasPresentedNotificationName = @"STGViewControllerPresentationNotificationName"; NSString * const STGViewControllerWasDismissedNotificationName = @"STGViewControllerWasDismissedNotificationName"; @@ -17,12 +17,6 @@ @implementation UIViewController (Staged) -+ (void)stg_replaceInstanceMethod:(SEL)original withMethod:(SEL)swizzled { - Method originalMethod = class_getInstanceMethod(self, original); - Method swizzledMethod = class_getInstanceMethod(self, swizzled); - method_exchangeImplementations(originalMethod, swizzledMethod); -} - + (void)stg_swizzle { [self stg_replaceInstanceMethod:@selector(presentViewController:animated:completion:) withMethod:@selector(stg_presentViewController:animated:completion:)]; diff --git a/Staged/Classes/UIViewController+StagedSwizziling.h b/Staged/Classes/UIViewController+StagedSwizziling.h new file mode 100644 index 0000000..467dcab --- /dev/null +++ b/Staged/Classes/UIViewController+StagedSwizziling.h @@ -0,0 +1,15 @@ +// +// UIViewController+StagedSwizziling.h +// Pods +// +// Created by Gustavo Barbosa on 7/31/16. +// +// + +#import + +@interface UIViewController (StagedSwizziling) + ++ (void)stg_replaceInstanceMethod:(SEL)original withMethod:(SEL)swizzled; + +@end diff --git a/Staged/Classes/UIViewController+StagedSwizziling.m b/Staged/Classes/UIViewController+StagedSwizziling.m new file mode 100644 index 0000000..473c1a9 --- /dev/null +++ b/Staged/Classes/UIViewController+StagedSwizziling.m @@ -0,0 +1,20 @@ +// +// UIViewController+StagedSwizziling.m +// Pods +// +// Created by Gustavo Barbosa on 7/31/16. +// +// + +#import "UIViewController+StagedSwizziling.h" +#import + +@implementation UIViewController (StagedSwizziling) + ++ (void)stg_replaceInstanceMethod:(SEL)original withMethod:(SEL)swizzled { + Method originalMethod = class_getInstanceMethod(self, original); + Method swizzledMethod = class_getInstanceMethod(self, swizzled); + method_exchangeImplementations(originalMethod, swizzledMethod); +} + +@end