uispecrunner 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -34,6 +34,7 @@ to the spec runner. Example:
34
34
  - Supports running specs via shell (xcodebuild) or AppleScript (osascript)
35
35
 
36
36
  ## TODO
37
+ - Simulator/device switch...
37
38
  - Auto-detect SDK versions available
38
39
  - Support for running specific files
39
40
  - Generate a Kicker script
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -17,7 +17,7 @@ class UISpecRunner
17
17
  end
18
18
 
19
19
  # Read standard arguments from uispec.opts
20
- options_file = 'uispec.opts'
20
+ options_file = File.join(Dir.getwd, 'uispec.opts')
21
21
  if File.exists?(options_file)
22
22
  options = UISpecRunner::Options.from_file(options_file).merge(options)
23
23
  end
@@ -16,6 +16,11 @@
16
16
  */
17
17
  +(void)runSpecsConformingToProtocol:(Protocol *)protocol afterDelay:(NSTimeInterval)delay;
18
18
 
19
+ /**
20
+ * Run all UISpec classes inheriting from a given base class
21
+ */
22
+ +(void)runSpecsInheritingFromClass:(Class)class afterDelay:(NSTimeInterval)delay;
23
+
19
24
  /**
20
25
  * Infers which set of UISpec classes to run from the following environment variables:
21
26
  * UISPEC_PROTOCOL - Specifies a protocol to run
@@ -6,8 +6,8 @@
6
6
  // Copyright 2010 Two Toasters. All rights reserved.
7
7
  //
8
8
 
9
- #import <objc/runtime.h>
10
9
  #import "UISpec+UISpecRunner.h"
10
+ #import <objc/runtime.h>
11
11
 
12
12
  @interface UISpec ()
13
13
 
@@ -53,6 +53,43 @@
53
53
  [self performSelector:@selector(runSpecClasses:) withObject:specClasses afterDelay:delay];
54
54
  }
55
55
 
56
+ +(NSArray*)specClassesInheritingFromClass:(Class)parentClass {
57
+ int numClasses = objc_getClassList(NULL, 0);
58
+ Class *classes = NULL;
59
+
60
+ classes = malloc(sizeof(Class) * numClasses);
61
+ numClasses = objc_getClassList(classes, numClasses);
62
+
63
+ NSMutableArray *result = [NSMutableArray array];
64
+ for (NSInteger i = 0; i < numClasses; i++)
65
+ {
66
+ Class superClass = classes[i];
67
+ do
68
+ {
69
+ superClass = class_getSuperclass(superClass);
70
+ } while(superClass && superClass != parentClass);
71
+
72
+ if (superClass == nil)
73
+ {
74
+ continue;
75
+ }
76
+
77
+ if ([self isASpec:classes[i]]) {
78
+ [result addObject:classes[i]];
79
+ }
80
+ }
81
+
82
+ free(classes);
83
+
84
+ return result;
85
+ }
86
+
87
+ +(void)runSpecsInheritingFromClass:(Class)class afterDelay:(NSTimeInterval)delay {
88
+ NSArray* specClasses = [self specClassesInheritingFromClass:class];
89
+ NSLog(@"Executing Specs: %@", specClasses);
90
+ [self performSelector:@selector(runSpecClasses:) withObject:specClasses afterDelay:delay];
91
+ }
92
+
56
93
  +(void)runSpecsFromEnvironmentAfterDelay:(int)seconds {
57
94
  char* protocolName = getenv("UISPEC_PROTOCOL");
58
95
  char* specName = getenv("UISPEC_SPEC");
@@ -68,8 +105,9 @@
68
105
  NSLog(@"[UISpecRunner] Running Examples %s on Spec %s", exampleName, specName);
69
106
  [UISpec runSpec:[NSString stringWithUTF8String:specName] example:[NSString stringWithUTF8String:exampleName] afterDelay:seconds];
70
107
  } else if (specName) {
71
- NSLog(@"[UISpecRunner] Running Spec %s", specName);
72
- [UISpec runSpec:[NSString stringWithUTF8String:specName] afterDelay:seconds];
108
+ NSLog(@"[UISpecRunner] Running Spec classes inheriting from %s", specName);
109
+ Class class = NSClassFromString([NSString stringWithUTF8String:specName]);
110
+ [UISpec runSpecsInheritingFromClass:class afterDelay:seconds];
73
111
  } else {
74
112
  [UISpec runSpecsAfterDelay:seconds];
75
113
  }
data/uispecrunner.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{uispecrunner}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Blake Watters"]
12
- s.date = %q{2010-08-02}
12
+ s.date = %q{2010-09-16}
13
13
  s.default_executable = %q{uispec}
14
14
  s.description = %q{Provides a simple Ruby interface for running UISpec iPhone tests}
15
15
  s.email = %q{blake@twotoasters.com}
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 0
9
- version: 0.3.0
8
+ - 1
9
+ version: 0.3.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Blake Watters
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-02 00:00:00 -04:00
17
+ date: 2010-09-16 00:00:00 -04:00
18
18
  default_executable: uispec
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency