diff --git a/Tests/HTMLKitTests/CSSSelectorTest.m b/Tests/HTMLKitTests/CSSSelectorTest.m
index a85191e..2c1feb6 100644
--- a/Tests/HTMLKitTests/CSSSelectorTest.m
+++ b/Tests/HTMLKitTests/CSSSelectorTest.m
@@ -11,6 +11,7 @@
#import "HTMLDocument.h"
#import "HTMLElement.h"
#import "CSSSelectors.h"
+#import "HTMLKitTestUtil.h"
static NSString * const CSSTests = @"css-tests";
@@ -18,8 +19,7 @@ static NSString * const CSSTests = @"css-tests";
+ (NSArray *)loadCSSSelectorTests
{
- NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
- path = [path stringByAppendingPathComponent:CSSTests];
+ NSString *path = [HTMLKitTestUtil pathForFixture:CSSTests ofType:nil inDirectory:nil];
NSMutableArray *tests = [NSMutableArray array];
NSArray *testFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
diff --git a/Tests/HTMLKitTests/HTML5LibTokenizerTest.m b/Tests/HTMLKitTests/HTML5LibTokenizerTest.m
index f864634..b46f8e4 100644
--- a/Tests/HTMLKitTests/HTML5LibTokenizerTest.m
+++ b/Tests/HTMLKitTests/HTML5LibTokenizerTest.m
@@ -9,21 +9,19 @@
#import "HTML5LibTokenizerTest.h"
#import "HTMLTokenizerStates.h"
#import "HTMLTokens.h"
+#import "HTMLKitTestUtil.h"
static NSString * const HTML5LibTests = @"html5lib-tests";
-static NSString * const TOKENIZER = @"tokenizer";
+static NSString * const Tokenizer = @"tokenizer";
@implementation HTML5LibTokenizerTest
+ (NSDictionary *)loadHTML5LibTokenizerTests
{
- NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
- path = [path stringByAppendingPathComponent:HTML5LibTests];
- path = [path stringByAppendingPathComponent:TOKENIZER];
-
- NSMutableDictionary *testsMap = [NSMutableDictionary dictionary];
+ NSString *path = [HTMLKitTestUtil pathForFixture:Tokenizer ofType:nil inDirectory:HTML5LibTests];
NSArray *testFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
+ NSMutableDictionary *testsMap = [NSMutableDictionary dictionary];
for (NSString *testFile in testFiles) {
if (![testFile.pathExtension isEqualToString:@"test"]) {
continue;
diff --git a/Tests/HTMLKitTests/HTML5LibTreeConstructionTest.m b/Tests/HTMLKitTests/HTML5LibTreeConstructionTest.m
index 659a094..e46a5c0 100644
--- a/Tests/HTMLKitTests/HTML5LibTreeConstructionTest.m
+++ b/Tests/HTMLKitTests/HTML5LibTreeConstructionTest.m
@@ -13,6 +13,7 @@
#import "HTMLElement.h"
#import "HTMLText.h"
#import "HTMLComment.h"
+#import "HTMLKitTestUtil.h"
static NSString * const HTML5LibTests = @"html5lib-tests";
static NSString * const TreeConstruction = @"tree-construction";
@@ -21,13 +22,10 @@ static NSString * const TreeConstruction = @"tree-construction";
+ (NSDictionary *)loadHTML5LibTreeConstructionTests
{
- NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
- path = [path stringByAppendingPathComponent:HTML5LibTests];
- path = [path stringByAppendingPathComponent:TreeConstruction];
-
- NSMutableDictionary *testsMap = [NSMutableDictionary dictionary];
+ NSString *path = [HTMLKitTestUtil pathForFixture:TreeConstruction ofType:nil inDirectory:HTML5LibTests];
NSArray *testFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
+ NSMutableDictionary *testsMap = [NSMutableDictionary dictionary];
for (NSString *testFile in testFiles) {
if (![testFile.pathExtension isEqualToString:@"dat"]) {
continue;
diff --git a/Tests/HTMLKitTests/HTMLKitParserPerformance.m b/Tests/HTMLKitTests/HTMLKitParserPerformance.m
index b51373a..d7343b2 100644
--- a/Tests/HTMLKitTests/HTMLKitParserPerformance.m
+++ b/Tests/HTMLKitTests/HTMLKitParserPerformance.m
@@ -8,6 +8,7 @@
#import
#import "HTMLParser.h"
+#import "HTMLKitTestUtil.h"
@interface HTMLKitParserPerformance : XCTestCase
@@ -19,9 +20,7 @@
- (void)testParserPerformance
{
- NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
- path = [path stringByAppendingPathComponent:@"Fixtures"];
- path = [path stringByAppendingPathComponent:@"HTML Standard.html"];
+ NSString *path = [HTMLKitTestUtil pathForFixture:@"HTML Standard" ofType:@"html" inDirectory:@"Fixtures"];
NSString *string = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
diff --git a/Tests/HTMLKitTests/HTMLKitTestUtil.h b/Tests/HTMLKitTests/HTMLKitTestUtil.h
index 700561e..d390424 100644
--- a/Tests/HTMLKitTests/HTMLKitTestUtil.h
+++ b/Tests/HTMLKitTests/HTMLKitTestUtil.h
@@ -12,5 +12,6 @@
+ (NSInvocation *)addTestToClass:(Class)cls withName:(NSString *)name block:(id)block;
+ (id)ivarForInstacne:(id)instance name:(NSString *)name;
++ (NSString *)pathForFixture:(NSString *)fixture ofType:(NSString *)type inDirectory:(NSString *)directory;
@end
diff --git a/Tests/HTMLKitTests/HTMLKitTestUtil.m b/Tests/HTMLKitTests/HTMLKitTestUtil.m
index c24f526..a70ceb9 100644
--- a/Tests/HTMLKitTests/HTMLKitTestUtil.m
+++ b/Tests/HTMLKitTests/HTMLKitTestUtil.m
@@ -32,4 +32,23 @@
return object_getIvar(instance, ivar);
}
++ (NSString *)pathForFixture:(NSString *)fixture ofType:(NSString *)type inDirectory:(NSString *)directory
+{
+ // Try testing bundle first
+ NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:fixture ofType:type inDirectory:directory];
+ if (path) {
+ return path;
+ }
+
+ path = [[@(__FILE__) stringByDeletingLastPathComponent] stringByDeletingLastPathComponent];
+ if (directory) {
+ path = [path stringByAppendingPathComponent:directory];
+ }
+
+ NSString *resource = type ? [NSString stringWithFormat:@"%@.%@", fixture, type] : fixture;
+ path = [path stringByAppendingPathComponent:resource];
+
+ return path;
+}
+
@end
diff --git a/Tests/HTMLKitTests/HTMLKitTokenizerPerformance.m b/Tests/HTMLKitTests/HTMLKitTokenizerPerformance.m
index eb7ee8a..bbb3115 100644
--- a/Tests/HTMLKitTests/HTMLKitTokenizerPerformance.m
+++ b/Tests/HTMLKitTests/HTMLKitTokenizerPerformance.m
@@ -10,6 +10,7 @@
#import "HTMLTokenizer.h"
#import "HTMLTokenizerStates.h"
#import "HTMLTokens.h"
+#import "HTMLKitTestUtil.h"
@interface HTMLKitTokenizerPerformance : XCTestCase
@@ -19,9 +20,7 @@
- (void)testTokenizerPerformance
{
- NSString *path = [[NSBundle bundleForClass:self.class] resourcePath];
- path = [path stringByAppendingPathComponent:@"Fixtures"];
- path = [path stringByAppendingPathComponent:@"HTML Standard.html"];
+ NSString *path = [HTMLKitTestUtil pathForFixture:@"HTML Standard" ofType:@"html" inDirectory:@"Fixtures"];
NSString *string = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];