KWAllTestsSuite.m 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // XCTestSuite+KWConfiguration.m
  3. // Kiwi
  4. //
  5. // Created by Adam Sharp on 1/07/2014.
  6. // Copyright (c) 2014 Allen Ding. All rights reserved.
  7. //
  8. #import <XCTest/XCTestSuite.h>
  9. #import <objc/runtime.h>
  10. #import "KWSuiteConfigurationBase.h"
  11. @interface _KWAllTestsSuite : XCTestSuite
  12. @end
  13. @implementation _KWAllTestsSuite
  14. - (void)setUp {
  15. [super setUp];
  16. [[KWSuiteConfigurationBase defaultConfiguration] setUp];
  17. }
  18. - (void)tearDown {
  19. [[KWSuiteConfigurationBase defaultConfiguration] tearDown];
  20. [super tearDown];
  21. }
  22. @end
  23. @interface XCTestSuite (KWConfiguration)
  24. @end
  25. @implementation XCTestSuite (KWConfiguration)
  26. + (void)load {
  27. static dispatch_once_t onceToken;
  28. dispatch_once(&onceToken, ^{
  29. Method testSuiteWithName = class_getClassMethod(self, @selector(testSuiteWithName:));
  30. Method kiwi_testSuiteWithName = class_getClassMethod(self, @selector(kiwi_testSuiteWithName:));
  31. method_exchangeImplementations(testSuiteWithName, kiwi_testSuiteWithName);
  32. });
  33. }
  34. + (id)kiwi_testSuiteWithName:(NSString *)aName {
  35. id suite = [self kiwi_testSuiteWithName:aName];
  36. if ([aName isEqualToString:@"All tests"] || [aName hasSuffix:@".xctest"]) {
  37. if ([suite isMemberOfClass:[XCTestSuite class]]) {
  38. object_setClass(suite, [_KWAllTestsSuite class]);
  39. }
  40. }
  41. return suite;
  42. }
  43. @end