Skip to content

Instantly share code, notes, and snippets.

@modocache
Created September 16, 2013 02:36
Show Gist options
  • Save modocache/6576139 to your computer and use it in GitHub Desktop.
Save modocache/6576139 to your computer and use it in GitHub Desktop.
diff --git a/Classes/Core/KWFailure.m b/Classes/Core/KWFailure.m
index 2ffb147..4bbea8f 100644
--- a/Classes/Core/KWFailure.m
+++ b/Classes/Core/KWFailure.m
@@ -46,8 +46,10 @@
NSDictionary *userInfo = nil;
if (self.callSite) {
NSNumber *lineNumber = @(self.callSite.lineNumber);
- userInfo = @{SenTestFilenameKey: self.callSite.filename,
- SenTestLineNumberKey: lineNumber};
+ userInfo = @{
+ @"SenTestFilenameKey": self.callSite.filename,
+ @"SenTestLineNumberKey": lineNumber
+ };
}
return [NSException exceptionWithName:@"KWFailureException" reason:self.message userInfo:userInfo];
}
diff --git a/Classes/Core/SenTestSuite+KiwiAdditions.h b/Classes/Core/SenTestSuite+KiwiAdditions.h
deleted file mode 100644
index 095823c..0000000
--- a/Classes/Core/SenTestSuite+KiwiAdditions.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// SenTestSuite+KiwiAdditions.h
-// Kiwi
-//
-// Created by Jerry Marino on 5/17/13.
-// Copyright (c) 2013 Allen Ding. All rights reserved.
-//
-
-#import <SenTestingKit/SenTestingKit.h>
-
-@interface SenTestSuite (KiwiAdditions)
-
-
-@end
diff --git a/Classes/Core/SenTestSuite+KiwiAdditions.m b/Classes/Core/SenTestSuite+KiwiAdditions.m
deleted file mode 100644
index 41b9c91..0000000
--- a/Classes/Core/SenTestSuite+KiwiAdditions.m
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// SenTestSuite+KiwiAdditions.m
-// Kiwi
-//
-// Created by Jerry Marino on 5/17/13.
-// Copyright (c) 2013 Allen Ding. All rights reserved.
-//
-
-#import "SenTestSuite+KiwiAdditions.h"
-#import <SenTestingKit/SenTestProbe.h>
-#import <SenTestingKit/SenTestSuite.h>
-#import <objc/runtime.h>
-#import "KWExampleSuiteBuilder.h"
-#import "KWCallSite.h"
-#import "KWSpec.h"
-
-@implementation SenTestSuite (KiwiAdditions)
-
-+ (void)initialize {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- [self patchTestSuiteForTestCaseClassIMP];
- });
-}
-
-// Patch this otherwise SenTestKit will start running all suites in test bundle
-// even if they are empty
-+ (void)patchTestSuiteForTestCaseClassIMP {
- Class c = object_getClass([SenTestSuite class]);
- SEL origSEL = @selector(testSuiteForTestCaseClass:);
- SEL newSEL = sel_registerName("__testSuiteForTestCaseClass:");
-
- Method origMethod = class_getClassMethod(c, origSEL);
- class_addMethod(c, newSEL, method_getImplementation(origMethod), method_getTypeEncoding(origMethod)) ;
-
- IMP focusedSuite = imp_implementationWithBlock(^(id _self, Class aClass){
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
- return ([[KWExampleSuiteBuilder sharedExampleSuiteBuilder] isFocused] && ![_self testSuiteClassHasFocus:aClass]) ? nil : (__bridge void *)[_self performSelector:newSEL withObject:aClass];
-#pragma clang diagnostic pop
- });
- method_setImplementation(origMethod, focusedSuite);
-}
-
-+ (BOOL)testSuiteClassHasFocus:(Class)aClass {
- if (![aClass respondsToSelector:@selector(file)])
- return NO;
-
- KWCallSite *focusedCallSite = [[KWExampleSuiteBuilder sharedExampleSuiteBuilder] focusedCallSite];
- NSString *fullFilePathOfClass = [aClass performSelector:@selector(file)];
- NSRange rangeOfFileName = [fullFilePathOfClass rangeOfString:focusedCallSite.filename];
- return rangeOfFileName.length != 0;
-}
-
-@end
diff --git a/Kiwi.podspec b/Kiwi.podspec
index 4ec904d..de26a89 100644
--- a/Kiwi.podspec
+++ b/Kiwi.podspec
@@ -16,14 +16,16 @@ Pod::Spec.new do |s|
sentest.framework = 'SenTestingKit'
sentest.dependency 'Kiwi/ARC'
sentest.dependency 'Kiwi/NonARC'
+ sentest.source_files = 'SenTestingKit/**/*.{h,m}'
sentest.prefix_header_contents = <<-EOS
#import <SenTestingKit/SenTestingKit.h>
EOS
end
s.subspec 'XCTest' do |xctest|
- xctest.dependency 'Kiwi/SenTestingKit'
xctest.framework = 'XCTest'
+ xctest.dependency 'Kiwi/ARC'
+ xctest.dependency 'Kiwi/NonARC'
xctest.prefix_header_contents = <<-EOS
#import <XCTest/XCTest.h>
EOS
diff --git a/Kiwi.xcodeproj/project.pbxproj b/Kiwi.xcodeproj/project.pbxproj
index 2dabd5c..66c2553 100755
--- a/Kiwi.xcodeproj/project.pbxproj
+++ b/Kiwi.xcodeproj/project.pbxproj
@@ -119,7 +119,6 @@
4C23EBE21752F78200505782 /* KWRegularExpressionPatternMatcher.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4E3C5DB01716C34900835B62 /* KWRegularExpressionPatternMatcher.h */; };
4C23EBE31752F78200505782 /* KWSymbolicator.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C533F7D117462CAA000CAB02 /* KWSymbolicator.h */; };
4C23EBE41752F78200505782 /* NSProxy+KiwiVerifierAdditions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9F820DB616BB6748003A1BA5 /* NSProxy+KiwiVerifierAdditions.h */; };
- 4C23EBE51752F78200505782 /* SenTestSuite+KiwiAdditions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C533F7D717462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h */; };
4E3C5DB21716C34900835B62 /* KWRegularExpressionPatternMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E3C5DB01716C34900835B62 /* KWRegularExpressionPatternMatcher.h */; };
4E3C5DB31716C34900835B62 /* KWRegularExpressionPatternMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E3C5DB01716C34900835B62 /* KWRegularExpressionPatternMatcher.h */; };
4E3C5DB41716C34900835B62 /* KWRegularExpressionPatternMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E3C5DB11716C34900835B62 /* KWRegularExpressionPatternMatcher.m */; settings = {COMPILER_FLAGS = ""; }; };
@@ -485,10 +484,6 @@
C533F7D417462CAA000CAB02 /* KWSymbolicator.h in Headers */ = {isa = PBXBuildFile; fileRef = C533F7D117462CAA000CAB02 /* KWSymbolicator.h */; };
C533F7D517462CAA000CAB02 /* KWSymbolicator.m in Sources */ = {isa = PBXBuildFile; fileRef = C533F7D217462CAA000CAB02 /* KWSymbolicator.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
C533F7D617462CAA000CAB02 /* KWSymbolicator.m in Sources */ = {isa = PBXBuildFile; fileRef = C533F7D217462CAA000CAB02 /* KWSymbolicator.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- C533F7D917462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C533F7D717462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h */; };
- C533F7DA17462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C533F7D717462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h */; };
- C533F7DB17462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C533F7D817462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m */; settings = {COMPILER_FLAGS = ""; }; };
- C533F7DC17462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C533F7D817462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m */; };
C922D1DD158045FC00995B43 /* KWStringContainsMatcherTest.m in Sources */ = {isa = PBXBuildFile; fileRef = C922D1DC158045FC00995B43 /* KWStringContainsMatcherTest.m */; };
DA084D4017E3804200592D5A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA084D3F17E3804200592D5A /* XCTest.framework */; };
DA084D4117E3804200592D5A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
@@ -588,7 +583,6 @@
DA084DBA17E3838100592D5A /* KWRegularExpressionPatternMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E3C5DB01716C34900835B62 /* KWRegularExpressionPatternMatcher.h */; };
DA084DBB17E3838100592D5A /* KWContainStringMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E7659A8172DAC6500105B93 /* KWContainStringMatcher.h */; };
DA084DBC17E3838100592D5A /* KWSymbolicator.h in Headers */ = {isa = PBXBuildFile; fileRef = C533F7D117462CAA000CAB02 /* KWSymbolicator.h */; };
- DA084DBD17E3838100592D5A /* SenTestSuite+KiwiAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C533F7D717462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h */; };
DA084DBE17E3838100592D5A /* Kiwi-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 37828762177F860B00BCD40F /* Kiwi-Prefix.pch */; };
DA084DC017E3838100592D5A /* KWAfterAllNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F982C4016A802920030A0B1 /* KWAfterAllNode.m */; settings = {COMPILER_FLAGS = ""; }; };
DA084DC117E3838100592D5A /* KWAfterEachNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F982C4216A802920030A0B1 /* KWAfterEachNode.m */; settings = {COMPILER_FLAGS = ""; }; };
@@ -669,7 +663,6 @@
DA084E0C17E3838100592D5A /* KWRegularExpressionPatternMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E3C5DB11716C34900835B62 /* KWRegularExpressionPatternMatcher.m */; settings = {COMPILER_FLAGS = ""; }; };
DA084E0D17E3838100592D5A /* KWContainStringMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E7659A9172DAC6500105B93 /* KWContainStringMatcher.m */; settings = {COMPILER_FLAGS = ""; }; };
DA084E0E17E3838100592D5A /* KWSymbolicator.m in Sources */ = {isa = PBXBuildFile; fileRef = C533F7D217462CAA000CAB02 /* KWSymbolicator.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
- DA084E0F17E3838100592D5A /* SenTestSuite+KiwiAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C533F7D817462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m */; settings = {COMPILER_FLAGS = ""; }; };
DA084E1217E3838100592D5A /* Kiwi.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9F982C3A16A802920030A0B1 /* Kiwi.h */; };
DA084E1317E3838100592D5A /* KiwiBlockMacros.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9F982C3B16A802920030A0B1 /* KiwiBlockMacros.h */; };
DA084E1417E3838100592D5A /* KiwiConfiguration.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9F982C3C16A802920030A0B1 /* KiwiConfiguration.h */; };
@@ -763,7 +756,8 @@
DA084E6C17E3838100592D5A /* KWRegularExpressionPatternMatcher.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4E3C5DB01716C34900835B62 /* KWRegularExpressionPatternMatcher.h */; };
DA084E6D17E3838100592D5A /* KWSymbolicator.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C533F7D117462CAA000CAB02 /* KWSymbolicator.h */; };
DA084E6E17E3838100592D5A /* NSProxy+KiwiVerifierAdditions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9F820DB616BB6748003A1BA5 /* NSProxy+KiwiVerifierAdditions.h */; };
- DA084E6F17E3838100592D5A /* SenTestSuite+KiwiAdditions.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C533F7D717462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h */; };
+ DA92B2A617E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA92B2A417E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.h */; };
+ DA92B2A717E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA92B2A517E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.m */; };
DAA35A2317E3CF6600C41AE2 /* libKiwi-XCTest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA084E7317E3838100592D5A /* libKiwi-XCTest.a */; };
DABFFFEC17E3CC3800E79FB4 /* Kiwi-XCTest-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = DABFFFEB17E3CC2B00E79FB4 /* Kiwi-XCTest-Prefix.pch */; };
F5015CBD1158404E002E9A98 /* libKiwi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F5015B9F11583A77002E9A98 /* libKiwi.a */; };
@@ -912,7 +906,6 @@
4C23EBE21752F78200505782 /* KWRegularExpressionPatternMatcher.h in CopyFiles */,
4C23EBE31752F78200505782 /* KWSymbolicator.h in CopyFiles */,
4C23EBE41752F78200505782 /* NSProxy+KiwiVerifierAdditions.h in CopyFiles */,
- 4C23EBE51752F78200505782 /* SenTestSuite+KiwiAdditions.h in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1015,7 +1008,6 @@
DA084E6C17E3838100592D5A /* KWRegularExpressionPatternMatcher.h in CopyFiles */,
DA084E6D17E3838100592D5A /* KWSymbolicator.h in CopyFiles */,
DA084E6E17E3838100592D5A /* NSProxy+KiwiVerifierAdditions.h in CopyFiles */,
- DA084E6F17E3838100592D5A /* SenTestSuite+KiwiAdditions.h in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1241,8 +1233,6 @@
C10F036D170C7C190031FE64 /* KWBeSubclassOfClassMatcherTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWBeSubclassOfClassMatcherTest.m; sourceTree = "<group>"; };
C533F7D117462CAA000CAB02 /* KWSymbolicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KWSymbolicator.h; sourceTree = "<group>"; };
C533F7D217462CAA000CAB02 /* KWSymbolicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWSymbolicator.m; sourceTree = "<group>"; };
- C533F7D717462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SenTestSuite+KiwiAdditions.h"; sourceTree = "<group>"; };
- C533F7D817462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SenTestSuite+KiwiAdditions.m"; sourceTree = "<group>"; };
C922D1DC158045FC00995B43 /* KWStringContainsMatcherTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWStringContainsMatcherTest.m; sourceTree = "<group>"; };
DA084D3E17E3804200592D5A /* KiwiXCTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KiwiXCTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
DA084D3F17E3804200592D5A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
@@ -1250,6 +1240,8 @@
DA084D5317E381C700592D5A /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
DA084D5A17E3831E00592D5A /* KWXCFunctionalTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KWXCFunctionalTest.m; sourceTree = "<group>"; };
DA084E7317E3838100592D5A /* libKiwi-XCTest.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libKiwi-XCTest.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ DA92B2A417E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SenTestSuite+KiwiAdditions.h"; sourceTree = "<group>"; };
+ DA92B2A517E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "SenTestSuite+KiwiAdditions.m"; sourceTree = "<group>"; };
DABFFFEB17E3CC2B00E79FB4 /* Kiwi-XCTest-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Kiwi-XCTest-Prefix.pch"; sourceTree = "<group>"; };
F5015B9F11583A77002E9A98 /* libKiwi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libKiwi.a; sourceTree = BUILT_PRODUCTS_DIR; };
F5015C9E11584017002E9A98 /* KiwiTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KiwiTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1378,6 +1370,7 @@
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
+ DA92B2A317E6A3EF0062F84D /* SenTestingKit */,
F5015B4D1158396B002E9A98 /* Classes */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
37B0BAF8177F42E800E07085 /* NonARC */,
@@ -1491,8 +1484,6 @@
9F820DB716BB6748003A1BA5 /* NSProxy+KiwiVerifierAdditions.m */,
9F982CDE16A802920030A0B1 /* NSValue+KiwiAdditions.h */,
9F982CDF16A802920030A0B1 /* NSValue+KiwiAdditions.m */,
- C533F7D717462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h */,
- C533F7D817462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m */,
);
path = Core;
sourceTree = "<group>";
@@ -1681,6 +1672,15 @@
path = KiwiXCTests;
sourceTree = "<group>";
};
+ DA92B2A317E6A3EF0062F84D /* SenTestingKit */ = {
+ isa = PBXGroup;
+ children = (
+ DA92B2A417E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.h */,
+ DA92B2A517E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.m */,
+ );
+ path = SenTestingKit;
+ sourceTree = "<group>";
+ };
F5015B4D1158396B002E9A98 /* Classes */ = {
isa = PBXGroup;
children = (
@@ -1881,7 +1881,6 @@
4E3C5DB31716C34900835B62 /* KWRegularExpressionPatternMatcher.h in Headers */,
4E7659AC172DAC8E00105B93 /* KWContainStringMatcher.h in Headers */,
C533F7D417462CAA000CAB02 /* KWSymbolicator.h in Headers */,
- C533F7DA17462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1983,7 +1982,6 @@
DA084DBA17E3838100592D5A /* KWRegularExpressionPatternMatcher.h in Headers */,
DA084DBB17E3838100592D5A /* KWContainStringMatcher.h in Headers */,
DA084DBC17E3838100592D5A /* KWSymbolicator.h in Headers */,
- DA084DBD17E3838100592D5A /* SenTestSuite+KiwiAdditions.h in Headers */,
DA084DBE17E3838100592D5A /* Kiwi-Prefix.pch in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -2028,6 +2026,7 @@
9F982D6016A802920030A0B1 /* KWExampleDelegate.h in Headers */,
9F982D6216A802920030A0B1 /* KWExampleNode.h in Headers */,
9F982D6416A802920030A0B1 /* KWExampleNodeVisitor.h in Headers */,
+ DA92B2A617E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.h in Headers */,
9F982D6616A802920030A0B1 /* KWExampleSuite.h in Headers */,
9F982D6A16A802920030A0B1 /* KWExistVerifier.h in Headers */,
9F982D6E16A802920030A0B1 /* KWExpectationType.h in Headers */,
@@ -2085,7 +2084,6 @@
4E3C5DB21716C34900835B62 /* KWRegularExpressionPatternMatcher.h in Headers */,
4E7659AA172DAC6500105B93 /* KWContainStringMatcher.h in Headers */,
C533F7D317462CAA000CAB02 /* KWSymbolicator.h in Headers */,
- C533F7D917462DC8000CAB02 /* SenTestSuite+KiwiAdditions.h in Headers */,
37828763177F860B00BCD40F /* Kiwi-Prefix.pch in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -2387,7 +2385,6 @@
4E3C5DB51716C34900835B62 /* KWRegularExpressionPatternMatcher.m in Sources */,
4E7659AD172DAC9100105B93 /* KWContainStringMatcher.m in Sources */,
C533F7D617462CAA000CAB02 /* KWSymbolicator.m in Sources */,
- C533F7DC17462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2482,7 +2479,6 @@
DA084E0C17E3838100592D5A /* KWRegularExpressionPatternMatcher.m in Sources */,
DA084E0D17E3838100592D5A /* KWContainStringMatcher.m in Sources */,
DA084E0E17E3838100592D5A /* KWSymbolicator.m in Sources */,
- DA084E0F17E3838100592D5A /* SenTestSuite+KiwiAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2511,6 +2507,7 @@
9F982D3816A802920030A0B1 /* KWBlockRaiseMatcher.m in Sources */,
9F982D3C16A802920030A0B1 /* KWCallSite.m in Sources */,
9F982D4016A802920030A0B1 /* KWCaptureSpy.m in Sources */,
+ DA92B2A717E6A3EF0062F84D /* SenTestSuite+KiwiAdditions.m in Sources */,
9F982D4416A802920030A0B1 /* KWConformToProtocolMatcher.m in Sources */,
9F982D4816A802920030A0B1 /* KWContainMatcher.m in Sources */,
9F982D4C16A802920030A0B1 /* KWContextNode.m in Sources */,
@@ -2569,7 +2566,6 @@
4E3C5DB41716C34900835B62 /* KWRegularExpressionPatternMatcher.m in Sources */,
4E7659AB172DAC6500105B93 /* KWContainStringMatcher.m in Sources */,
C533F7D517462CAA000CAB02 /* KWSymbolicator.m in Sources */,
- C533F7DB17462DC8000CAB02 /* SenTestSuite+KiwiAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/SenTestingKit/SenTestSuite+KiwiAdditions.h b/SenTestingKit/SenTestSuite+KiwiAdditions.h
new file mode 100644
index 0000000..095823c
--- /dev/null
+++ b/SenTestingKit/SenTestSuite+KiwiAdditions.h
@@ -0,0 +1,14 @@
+//
+// SenTestSuite+KiwiAdditions.h
+// Kiwi
+//
+// Created by Jerry Marino on 5/17/13.
+// Copyright (c) 2013 Allen Ding. All rights reserved.
+//
+
+#import <SenTestingKit/SenTestingKit.h>
+
+@interface SenTestSuite (KiwiAdditions)
+
+
+@end
diff --git a/SenTestingKit/SenTestSuite+KiwiAdditions.m b/SenTestingKit/SenTestSuite+KiwiAdditions.m
new file mode 100644
index 0000000..41b9c91
--- /dev/null
+++ b/SenTestingKit/SenTestSuite+KiwiAdditions.m
@@ -0,0 +1,55 @@
+//
+// SenTestSuite+KiwiAdditions.m
+// Kiwi
+//
+// Created by Jerry Marino on 5/17/13.
+// Copyright (c) 2013 Allen Ding. All rights reserved.
+//
+
+#import "SenTestSuite+KiwiAdditions.h"
+#import <SenTestingKit/SenTestProbe.h>
+#import <SenTestingKit/SenTestSuite.h>
+#import <objc/runtime.h>
+#import "KWExampleSuiteBuilder.h"
+#import "KWCallSite.h"
+#import "KWSpec.h"
+
+@implementation SenTestSuite (KiwiAdditions)
+
++ (void)initialize {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ [self patchTestSuiteForTestCaseClassIMP];
+ });
+}
+
+// Patch this otherwise SenTestKit will start running all suites in test bundle
+// even if they are empty
++ (void)patchTestSuiteForTestCaseClassIMP {
+ Class c = object_getClass([SenTestSuite class]);
+ SEL origSEL = @selector(testSuiteForTestCaseClass:);
+ SEL newSEL = sel_registerName("__testSuiteForTestCaseClass:");
+
+ Method origMethod = class_getClassMethod(c, origSEL);
+ class_addMethod(c, newSEL, method_getImplementation(origMethod), method_getTypeEncoding(origMethod)) ;
+
+ IMP focusedSuite = imp_implementationWithBlock(^(id _self, Class aClass){
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
+ return ([[KWExampleSuiteBuilder sharedExampleSuiteBuilder] isFocused] && ![_self testSuiteClassHasFocus:aClass]) ? nil : (__bridge void *)[_self performSelector:newSEL withObject:aClass];
+#pragma clang diagnostic pop
+ });
+ method_setImplementation(origMethod, focusedSuite);
+}
+
++ (BOOL)testSuiteClassHasFocus:(Class)aClass {
+ if (![aClass respondsToSelector:@selector(file)])
+ return NO;
+
+ KWCallSite *focusedCallSite = [[KWExampleSuiteBuilder sharedExampleSuiteBuilder] focusedCallSite];
+ NSString *fullFilePathOfClass = [aClass performSelector:@selector(file)];
+ NSRange rangeOfFileName = [fullFilePathOfClass rangeOfString:focusedCallSite.filename];
+ return rangeOfFileName.length != 0;
+}
+
+@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment