uispecrunner 0.4.0 → 0.4.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/.gitmodules +3 -0
- data/Rakefile +4 -0
- data/VERSION +1 -1
- data/ext/Rakefile +5 -0
- data/ext/WaxSim/Simulator.h +31 -0
- data/ext/WaxSim/Simulator.m +131 -0
- data/ext/WaxSim/WaxSim.m +110 -0
- data/ext/WaxSim/WaxSim.xcodeproj/project.pbxproj +238 -0
- data/ext/WaxSim/WaxSim_Prefix.pch +7 -0
- data/ext/WaxSim/iPhoneSimulatorRemoteClient/iPhoneSimulatorRemoteClient.h +126 -0
- data/lib/uispecrunner/drivers/waxsim.rb +27 -0
- data/lib/uispecrunner/options.rb +4 -4
- data/lib/uispecrunner.rb +4 -2
- data/src/UISpec+UISpecRunner.h +6 -0
- data/uispecrunner.gemspec +12 -2
- metadata +15 -6
data/.gitmodules
ADDED
data/Rakefile
CHANGED
@@ -12,6 +12,10 @@ begin
|
|
12
12
|
gem.authors = ["Blake Watters"]
|
13
13
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
14
|
gem.add_runtime_dependency "open4", "= 1.0.1"
|
15
|
+
gem.extensions = ['ext/Rakefile']
|
16
|
+
gem.files += ['ext/bin/waxsim']
|
17
|
+
gem.files += ['ext/WaxSim/**/*']
|
18
|
+
gem.files -= ['ext/WaxSim/build']
|
15
19
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
20
|
end
|
17
21
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.1
|
data/ext/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
//
|
2
|
+
// Simulator.h
|
3
|
+
// Sim
|
4
|
+
//
|
5
|
+
// Created by ProbablyInteractive on 7/28/09.
|
6
|
+
// Copyright 2009 Probably Interactive. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import <Cocoa/Cocoa.h>
|
10
|
+
#import "iPhoneSimulatorRemoteClient.h"
|
11
|
+
|
12
|
+
@class DTiPhoneSimulatorSystemRoot;
|
13
|
+
|
14
|
+
@interface Simulator : NSObject <DTiPhoneSimulatorSessionDelegate> {
|
15
|
+
NSString *_appPath;
|
16
|
+
DTiPhoneSimulatorSystemRoot *_sdk;
|
17
|
+
NSNumber *_family;
|
18
|
+
DTiPhoneSimulatorSession* _session;
|
19
|
+
NSDictionary *_env;
|
20
|
+
NSArray *_args;
|
21
|
+
}
|
22
|
+
|
23
|
+
@property (nonatomic, readonly) DTiPhoneSimulatorSession* session;
|
24
|
+
|
25
|
+
+ (NSArray *)availableSDKs;
|
26
|
+
|
27
|
+
- (id)initWithAppPath:(NSString *)appPath sdk:(NSString *)sdk family:(NSString *)family env:(NSDictionary *)env args:(NSArray *)args;
|
28
|
+
- (int)launch;
|
29
|
+
- (void)end;
|
30
|
+
|
31
|
+
@end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Sim
|
4
|
+
//
|
5
|
+
// Created by ProbablyInteractive on 7/28/09.
|
6
|
+
// Copyright 2009 Probably Interactive. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import "Simulator.h"
|
10
|
+
|
11
|
+
#include <sys/param.h>
|
12
|
+
#include <objc/runtime.h>
|
13
|
+
|
14
|
+
#define WaxLog(format, args...) \
|
15
|
+
fprintf(stderr, "%s\n", [[NSString stringWithFormat:(format), ## args] UTF8String])
|
16
|
+
|
17
|
+
@implementation Simulator
|
18
|
+
|
19
|
+
@synthesize session=_session;
|
20
|
+
|
21
|
+
- (id)initWithAppPath:(NSString *)appPath sdk:(NSString *)sdk family:(NSString *)family env:(NSDictionary *)env args:(NSArray *)args {
|
22
|
+
self = [super init];
|
23
|
+
|
24
|
+
NSFileManager *fileManager = [NSFileManager defaultManager];
|
25
|
+
if (![appPath isAbsolutePath]) {
|
26
|
+
appPath = [[fileManager currentDirectoryPath] stringByAppendingPathComponent:appPath];
|
27
|
+
}
|
28
|
+
|
29
|
+
_appPath = [appPath retain];
|
30
|
+
|
31
|
+
if (![fileManager fileExistsAtPath:_appPath]) {
|
32
|
+
WaxLog(@"App path '%@' does not exist!", _appPath);
|
33
|
+
exit(EXIT_FAILURE);
|
34
|
+
}
|
35
|
+
|
36
|
+
if (!sdk) _sdk = [[DTiPhoneSimulatorSystemRoot defaultRoot] retain];
|
37
|
+
else {
|
38
|
+
_sdk = [[DTiPhoneSimulatorSystemRoot rootWithSDKVersion:sdk] retain];
|
39
|
+
}
|
40
|
+
|
41
|
+
if (!_sdk) {
|
42
|
+
WaxLog(@"Unknown sdk '%@'", sdk);
|
43
|
+
WaxLog(@"Available sdks are...");
|
44
|
+
for (id root in [DTiPhoneSimulatorSystemRoot knownRoots]) {
|
45
|
+
WaxLog(@" %@", [root sdkVersion]);
|
46
|
+
}
|
47
|
+
|
48
|
+
exit(EXIT_FAILURE);
|
49
|
+
}
|
50
|
+
|
51
|
+
if ([family isEqualToString: @"ipad"]) {
|
52
|
+
_family = [NSNumber numberWithInt: 2];
|
53
|
+
} else {
|
54
|
+
_family = [NSNumber numberWithInt: 1];
|
55
|
+
}
|
56
|
+
|
57
|
+
_env = [env retain];
|
58
|
+
_args = [args retain];
|
59
|
+
|
60
|
+
return self;
|
61
|
+
}
|
62
|
+
|
63
|
+
+ (NSArray *)availableSDKs {
|
64
|
+
NSMutableArray *sdks = [NSMutableArray array];
|
65
|
+
for (id root in [DTiPhoneSimulatorSystemRoot knownRoots]) {
|
66
|
+
[sdks addObject:[root sdkVersion]];
|
67
|
+
}
|
68
|
+
|
69
|
+
return sdks;
|
70
|
+
}
|
71
|
+
|
72
|
+
- (int)launch {
|
73
|
+
WaxLog(@"Launching '%@' on'%@'", _appPath, [_sdk sdkDisplayName]);
|
74
|
+
|
75
|
+
DTiPhoneSimulatorApplicationSpecifier *appSpec = [DTiPhoneSimulatorApplicationSpecifier specifierWithApplicationPath:_appPath];
|
76
|
+
if (!appSpec) {
|
77
|
+
WaxLog(@"Could not load application specifier for '%@'", _appPath);
|
78
|
+
return EXIT_FAILURE;
|
79
|
+
}
|
80
|
+
|
81
|
+
DTiPhoneSimulatorSystemRoot *sdkRoot = [DTiPhoneSimulatorSystemRoot defaultRoot];
|
82
|
+
|
83
|
+
DTiPhoneSimulatorSessionConfig *config = [[DTiPhoneSimulatorSessionConfig alloc] init];
|
84
|
+
[config setApplicationToSimulateOnStart:appSpec];
|
85
|
+
[config setSimulatedSystemRoot:sdkRoot];
|
86
|
+
[config setSimulatedDeviceFamily:_family];
|
87
|
+
[config setSimulatedApplicationShouldWaitForDebugger:NO];
|
88
|
+
[config setSimulatedApplicationLaunchArgs:_args];
|
89
|
+
[config setSimulatedApplicationLaunchEnvironment:_env];
|
90
|
+
[config setLocalizedClientName:@"iCuke"];
|
91
|
+
|
92
|
+
// Make the simulator output to the current STDERR
|
93
|
+
// We mix them together to avoid buffering issues on STDOUT
|
94
|
+
char path[MAXPATHLEN];
|
95
|
+
|
96
|
+
fcntl(STDERR_FILENO, F_GETPATH, &path);
|
97
|
+
[config setSimulatedApplicationStdOutPath:[NSString stringWithUTF8String:path]];
|
98
|
+
[config setSimulatedApplicationStdErrPath:[NSString stringWithUTF8String:path]];
|
99
|
+
|
100
|
+
_session = [[DTiPhoneSimulatorSession alloc] init];
|
101
|
+
[_session setDelegate:self];
|
102
|
+
[_session setSimulatedApplicationPID:[NSNumber numberWithInt:35]];
|
103
|
+
|
104
|
+
NSError *error;
|
105
|
+
if (![_session requestStartWithConfig:config timeout:30 error:&error]) {
|
106
|
+
WaxLog(@"Could not start simulator session: %@", [error localizedDescription]);
|
107
|
+
return EXIT_FAILURE;
|
108
|
+
}
|
109
|
+
|
110
|
+
return EXIT_SUCCESS;
|
111
|
+
}
|
112
|
+
|
113
|
+
- (void)end {
|
114
|
+
[_session requestEndWithTimeout:0];
|
115
|
+
}
|
116
|
+
|
117
|
+
// DTiPhoneSimulatorSession Delegate
|
118
|
+
// ---------------------------------
|
119
|
+
- (void)session:(DTiPhoneSimulatorSession *)session didStart:(BOOL)started withError:(NSError *)error {
|
120
|
+
if (!started) {
|
121
|
+
WaxLog(@"Session failed to start. %@", [error localizedDescription]);
|
122
|
+
exit(EXIT_FAILURE);
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
- (void)session:(DTiPhoneSimulatorSession *)session didEndWithError:(NSError *)error {
|
127
|
+
WaxLog(@"Session ended with error. %@", [error localizedDescription]);
|
128
|
+
if ([error code] != 2) exit(EXIT_FAILURE); // if it is a timeout error, that's cool. We are probably rebooting
|
129
|
+
}
|
130
|
+
|
131
|
+
@end
|
data/ext/WaxSim/WaxSim.m
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
#import <AppKit/AppKit.h>
|
2
|
+
#import "iPhoneSimulatorRemoteClient.h"
|
3
|
+
#import "Simulator.h"
|
4
|
+
#import "termios.h"
|
5
|
+
|
6
|
+
static BOOL gReset = false;
|
7
|
+
|
8
|
+
void printUsage();
|
9
|
+
void simulate(NSString *sdk, NSString *family, NSString *appPath, NSDictionary *environment, NSArray *additionalArgs);
|
10
|
+
void resetSignal(int sig);
|
11
|
+
|
12
|
+
int main(int argc, char *argv[]) {
|
13
|
+
signal(SIGQUIT, resetSignal);
|
14
|
+
|
15
|
+
int c;
|
16
|
+
char *sdk = nil;
|
17
|
+
char *family = nil;
|
18
|
+
char *appPath = nil;
|
19
|
+
NSMutableArray *additionalArgs = [NSMutableArray array];
|
20
|
+
NSMutableDictionary *environment = [NSMutableDictionary dictionary];
|
21
|
+
NSString *environment_variable;
|
22
|
+
NSArray *environment_variable_parts;
|
23
|
+
|
24
|
+
while ((c = getopt(argc, argv, "e:s:f:ah")) != -1) {
|
25
|
+
switch(c) {
|
26
|
+
case 'e':
|
27
|
+
environment_variable = [NSString stringWithCString:optarg encoding:NSUTF8StringEncoding];
|
28
|
+
environment_variable_parts = [environment_variable componentsSeparatedByString:@"="];
|
29
|
+
|
30
|
+
[environment setObject:[environment_variable_parts objectAtIndex:1] forKey:[environment_variable_parts objectAtIndex:0]];
|
31
|
+
break;
|
32
|
+
case 's':
|
33
|
+
sdk = optarg;
|
34
|
+
break;
|
35
|
+
case 'f':
|
36
|
+
family = optarg;
|
37
|
+
break;
|
38
|
+
case 'a':
|
39
|
+
fprintf(stdout, "Available SDK Versions.\n", optopt);
|
40
|
+
for (NSString *sdkVersion in [Simulator availableSDKs]) {
|
41
|
+
fprintf(stderr, " %s\n", [sdkVersion UTF8String]);
|
42
|
+
}
|
43
|
+
return 1;
|
44
|
+
case 'h':
|
45
|
+
printUsage();
|
46
|
+
return 1;
|
47
|
+
case '?':
|
48
|
+
if (optopt == 's' || optopt == 'f') {
|
49
|
+
fprintf(stderr, "Option -%c requires an argument.\n", optopt);
|
50
|
+
printUsage();
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
fprintf(stderr, "Unknown option `-%c'.\n", optopt);
|
54
|
+
printUsage();
|
55
|
+
}
|
56
|
+
return 1;
|
57
|
+
break;
|
58
|
+
default:
|
59
|
+
abort ();
|
60
|
+
}
|
61
|
+
|
62
|
+
}
|
63
|
+
|
64
|
+
if (argc > optind) {
|
65
|
+
appPath = argv[optind++];
|
66
|
+
|
67
|
+
// Additional args are sent to app
|
68
|
+
for (int i = optind; i < argc; i++) {
|
69
|
+
[additionalArgs addObject:[NSString stringWithUTF8String:argv[i]]];
|
70
|
+
}
|
71
|
+
}
|
72
|
+
else {
|
73
|
+
fprintf(stderr, "No app-path was specified!\n");
|
74
|
+
printUsage();
|
75
|
+
return 1;
|
76
|
+
}
|
77
|
+
|
78
|
+
|
79
|
+
NSString *sdkString = sdk ? [NSString stringWithUTF8String:sdk] : nil;
|
80
|
+
NSString *familyString = family ? [NSString stringWithUTF8String:family] : nil;
|
81
|
+
NSString *appPathString = [NSString stringWithUTF8String:appPath];
|
82
|
+
|
83
|
+
simulate(sdkString, familyString, appPathString, environment, additionalArgs);
|
84
|
+
|
85
|
+
return 0;
|
86
|
+
}
|
87
|
+
|
88
|
+
void simulate(NSString *sdk, NSString *family, NSString *appPath, NSDictionary *environment, NSArray *additionalArgs) {
|
89
|
+
Simulator *simulator = [[Simulator alloc] initWithAppPath:appPath sdk:sdk family:family env:environment args:additionalArgs];
|
90
|
+
[simulator launch];
|
91
|
+
|
92
|
+
while (!gReset && [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:-1]]) ;
|
93
|
+
|
94
|
+
[simulator end];
|
95
|
+
}
|
96
|
+
|
97
|
+
void printUsage() {
|
98
|
+
fprintf(stderr, "usage: waxsim [options] app-path\n");
|
99
|
+
fprintf(stderr, "example: waxsim -s 2.2 /path/to/app.app\n");
|
100
|
+
fprintf(stderr, "Available options are:\n");
|
101
|
+
fprintf(stderr, "\t-s sdk\tVersion number of sdk to use (-s 3.1)\n");
|
102
|
+
fprintf(stderr, "\t-f family\tDevice to use (-f ipad)\n");
|
103
|
+
fprintf(stderr, "\t-e VAR=value\tEnvironment variable to set (-e CFFIXED_HOME=/tmp/iphonehome)\n");
|
104
|
+
fprintf(stderr, "\t-a \tAvailable SDK's\n");
|
105
|
+
fprintf(stderr, "\t-h \tPrints out this wonderful documentation!\n");
|
106
|
+
}
|
107
|
+
|
108
|
+
void resetSignal(int sig) {
|
109
|
+
gReset = true;
|
110
|
+
}
|
@@ -0,0 +1,238 @@
|
|
1
|
+
// !$*UTF8*$!
|
2
|
+
{
|
3
|
+
archiveVersion = 1;
|
4
|
+
classes = {
|
5
|
+
};
|
6
|
+
objectVersion = 45;
|
7
|
+
objects = {
|
8
|
+
|
9
|
+
/* Begin PBXBuildFile section */
|
10
|
+
048274F11126398C003DFACB /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 048274F01126398C003DFACB /* AppKit.framework */; };
|
11
|
+
048275B2112639B7003DFACB /* Simulator.m in Sources */ = {isa = PBXBuildFile; fileRef = 048275B1112639B7003DFACB /* Simulator.m */; };
|
12
|
+
048275C011263A74003DFACB /* iPhoneSimulatorRemoteClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 048275BF11263A74003DFACB /* iPhoneSimulatorRemoteClient.framework */; };
|
13
|
+
8DD76F9A0486AA7600D96B5E /* WaxSim.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* WaxSim.m */; settings = {ATTRIBUTES = (); }; };
|
14
|
+
8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; };
|
15
|
+
/* End PBXBuildFile section */
|
16
|
+
|
17
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
18
|
+
8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
|
19
|
+
isa = PBXCopyFilesBuildPhase;
|
20
|
+
buildActionMask = 8;
|
21
|
+
dstPath = /usr/share/man/man1/;
|
22
|
+
dstSubfolderSpec = 0;
|
23
|
+
files = (
|
24
|
+
);
|
25
|
+
runOnlyForDeploymentPostprocessing = 1;
|
26
|
+
};
|
27
|
+
/* End PBXCopyFilesBuildPhase section */
|
28
|
+
|
29
|
+
/* Begin PBXFileReference section */
|
30
|
+
048274F01126398C003DFACB /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
31
|
+
048275AF112639B7003DFACB /* iPhoneSimulatorRemoteClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iPhoneSimulatorRemoteClient.h; path = iPhoneSimulatorRemoteClient/iPhoneSimulatorRemoteClient.h; sourceTree = "<group>"; };
|
32
|
+
048275B0112639B7003DFACB /* Simulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Simulator.h; sourceTree = "<group>"; };
|
33
|
+
048275B1112639B7003DFACB /* Simulator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Simulator.m; sourceTree = "<group>"; };
|
34
|
+
048275BF11263A74003DFACB /* iPhoneSimulatorRemoteClient.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iPhoneSimulatorRemoteClient.framework; path = Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/iPhoneSimulatorRemoteClient.framework; sourceTree = DEVELOPER_DIR; };
|
35
|
+
08FB7796FE84155DC02AAC07 /* WaxSim.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WaxSim.m; sourceTree = "<group>"; };
|
36
|
+
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
37
|
+
32A70AAB03705E1F00C91783 /* WaxSim_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WaxSim_Prefix.pch; sourceTree = "<group>"; };
|
38
|
+
8DD76FA10486AA7600D96B5E /* waxsim */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = waxsim; sourceTree = BUILT_PRODUCTS_DIR; };
|
39
|
+
/* End PBXFileReference section */
|
40
|
+
|
41
|
+
/* Begin PBXFrameworksBuildPhase section */
|
42
|
+
8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
|
43
|
+
isa = PBXFrameworksBuildPhase;
|
44
|
+
buildActionMask = 2147483647;
|
45
|
+
files = (
|
46
|
+
8DD76F9C0486AA7600D96B5E /* Foundation.framework in Frameworks */,
|
47
|
+
048274F11126398C003DFACB /* AppKit.framework in Frameworks */,
|
48
|
+
048275C011263A74003DFACB /* iPhoneSimulatorRemoteClient.framework in Frameworks */,
|
49
|
+
);
|
50
|
+
runOnlyForDeploymentPostprocessing = 0;
|
51
|
+
};
|
52
|
+
/* End PBXFrameworksBuildPhase section */
|
53
|
+
|
54
|
+
/* Begin PBXGroup section */
|
55
|
+
08FB7794FE84155DC02AAC07 /* WaxSim */ = {
|
56
|
+
isa = PBXGroup;
|
57
|
+
children = (
|
58
|
+
08FB7795FE84155DC02AAC07 /* Source */,
|
59
|
+
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
|
60
|
+
1AB674ADFE9D54B511CA2CBB /* Products */,
|
61
|
+
);
|
62
|
+
name = WaxSim;
|
63
|
+
sourceTree = "<group>";
|
64
|
+
};
|
65
|
+
08FB7795FE84155DC02AAC07 /* Source */ = {
|
66
|
+
isa = PBXGroup;
|
67
|
+
children = (
|
68
|
+
32A70AAB03705E1F00C91783 /* WaxSim_Prefix.pch */,
|
69
|
+
08FB7796FE84155DC02AAC07 /* WaxSim.m */,
|
70
|
+
048275B0112639B7003DFACB /* Simulator.h */,
|
71
|
+
048275B1112639B7003DFACB /* Simulator.m */,
|
72
|
+
048275AF112639B7003DFACB /* iPhoneSimulatorRemoteClient.h */,
|
73
|
+
);
|
74
|
+
name = Source;
|
75
|
+
sourceTree = "<group>";
|
76
|
+
};
|
77
|
+
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
|
78
|
+
isa = PBXGroup;
|
79
|
+
children = (
|
80
|
+
048275BF11263A74003DFACB /* iPhoneSimulatorRemoteClient.framework */,
|
81
|
+
048274F01126398C003DFACB /* AppKit.framework */,
|
82
|
+
08FB779EFE84155DC02AAC07 /* Foundation.framework */,
|
83
|
+
);
|
84
|
+
name = "External Frameworks and Libraries";
|
85
|
+
sourceTree = "<group>";
|
86
|
+
};
|
87
|
+
1AB674ADFE9D54B511CA2CBB /* Products */ = {
|
88
|
+
isa = PBXGroup;
|
89
|
+
children = (
|
90
|
+
8DD76FA10486AA7600D96B5E /* waxsim */,
|
91
|
+
);
|
92
|
+
name = Products;
|
93
|
+
sourceTree = "<group>";
|
94
|
+
};
|
95
|
+
/* End PBXGroup section */
|
96
|
+
|
97
|
+
/* Begin PBXNativeTarget section */
|
98
|
+
8DD76F960486AA7600D96B5E /* WaxSim */ = {
|
99
|
+
isa = PBXNativeTarget;
|
100
|
+
buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "WaxSim" */;
|
101
|
+
buildPhases = (
|
102
|
+
8DD76F990486AA7600D96B5E /* Sources */,
|
103
|
+
8DD76F9B0486AA7600D96B5E /* Frameworks */,
|
104
|
+
8DD76F9E0486AA7600D96B5E /* CopyFiles */,
|
105
|
+
);
|
106
|
+
buildRules = (
|
107
|
+
);
|
108
|
+
dependencies = (
|
109
|
+
);
|
110
|
+
name = WaxSim;
|
111
|
+
productInstallPath = "$(HOME)/bin";
|
112
|
+
productName = WaxSim;
|
113
|
+
productReference = 8DD76FA10486AA7600D96B5E /* waxsim */;
|
114
|
+
productType = "com.apple.product-type.tool";
|
115
|
+
};
|
116
|
+
/* End PBXNativeTarget section */
|
117
|
+
|
118
|
+
/* Begin PBXProject section */
|
119
|
+
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
120
|
+
isa = PBXProject;
|
121
|
+
buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "WaxSim" */;
|
122
|
+
compatibilityVersion = "Xcode 3.1";
|
123
|
+
hasScannedForEncodings = 1;
|
124
|
+
mainGroup = 08FB7794FE84155DC02AAC07 /* WaxSim */;
|
125
|
+
projectDirPath = "";
|
126
|
+
projectRoot = "";
|
127
|
+
targets = (
|
128
|
+
8DD76F960486AA7600D96B5E /* WaxSim */,
|
129
|
+
);
|
130
|
+
};
|
131
|
+
/* End PBXProject section */
|
132
|
+
|
133
|
+
/* Begin PBXSourcesBuildPhase section */
|
134
|
+
8DD76F990486AA7600D96B5E /* Sources */ = {
|
135
|
+
isa = PBXSourcesBuildPhase;
|
136
|
+
buildActionMask = 2147483647;
|
137
|
+
files = (
|
138
|
+
8DD76F9A0486AA7600D96B5E /* WaxSim.m in Sources */,
|
139
|
+
048275B2112639B7003DFACB /* Simulator.m in Sources */,
|
140
|
+
);
|
141
|
+
runOnlyForDeploymentPostprocessing = 0;
|
142
|
+
};
|
143
|
+
/* End PBXSourcesBuildPhase section */
|
144
|
+
|
145
|
+
/* Begin XCBuildConfiguration section */
|
146
|
+
1DEB927508733DD40010E9CD /* Debug */ = {
|
147
|
+
isa = XCBuildConfiguration;
|
148
|
+
buildSettings = {
|
149
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
150
|
+
COPY_PHASE_STRIP = NO;
|
151
|
+
FRAMEWORK_SEARCH_PATHS = (
|
152
|
+
"$(inherited)",
|
153
|
+
"\"$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks\"",
|
154
|
+
);
|
155
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
156
|
+
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
157
|
+
GCC_ENABLE_OBJC_GC = supported;
|
158
|
+
GCC_MODEL_TUNING = G5;
|
159
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
160
|
+
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
161
|
+
GCC_PREFIX_HEADER = WaxSim_Prefix.pch;
|
162
|
+
INSTALL_PATH = /usr/local/bin;
|
163
|
+
LD_RUNPATH_SEARCH_PATHS = /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks;
|
164
|
+
PRODUCT_NAME = waxsim;
|
165
|
+
};
|
166
|
+
name = Debug;
|
167
|
+
};
|
168
|
+
1DEB927608733DD40010E9CD /* Release */ = {
|
169
|
+
isa = XCBuildConfiguration;
|
170
|
+
buildSettings = {
|
171
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
172
|
+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
173
|
+
FRAMEWORK_SEARCH_PATHS = (
|
174
|
+
"$(inherited)",
|
175
|
+
"\"$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks\"",
|
176
|
+
);
|
177
|
+
GCC_ENABLE_OBJC_GC = supported;
|
178
|
+
GCC_MODEL_TUNING = G5;
|
179
|
+
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
180
|
+
GCC_PREFIX_HEADER = WaxSim_Prefix.pch;
|
181
|
+
INSTALL_PATH = /usr/local/bin;
|
182
|
+
LD_RUNPATH_SEARCH_PATHS = /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks;
|
183
|
+
PRODUCT_NAME = waxsim;
|
184
|
+
};
|
185
|
+
name = Release;
|
186
|
+
};
|
187
|
+
1DEB927908733DD40010E9CD /* Debug */ = {
|
188
|
+
isa = XCBuildConfiguration;
|
189
|
+
buildSettings = {
|
190
|
+
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
191
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
192
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
193
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
194
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
195
|
+
ONLY_ACTIVE_ARCH = YES;
|
196
|
+
PREBINDING = NO;
|
197
|
+
SDKROOT = macosx10.6;
|
198
|
+
};
|
199
|
+
name = Debug;
|
200
|
+
};
|
201
|
+
1DEB927A08733DD40010E9CD /* Release */ = {
|
202
|
+
isa = XCBuildConfiguration;
|
203
|
+
buildSettings = {
|
204
|
+
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
205
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
206
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
207
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
208
|
+
ONLY_ACTIVE_ARCH = YES;
|
209
|
+
PREBINDING = NO;
|
210
|
+
SDKROOT = macosx10.6;
|
211
|
+
};
|
212
|
+
name = Release;
|
213
|
+
};
|
214
|
+
/* End XCBuildConfiguration section */
|
215
|
+
|
216
|
+
/* Begin XCConfigurationList section */
|
217
|
+
1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "WaxSim" */ = {
|
218
|
+
isa = XCConfigurationList;
|
219
|
+
buildConfigurations = (
|
220
|
+
1DEB927508733DD40010E9CD /* Debug */,
|
221
|
+
1DEB927608733DD40010E9CD /* Release */,
|
222
|
+
);
|
223
|
+
defaultConfigurationIsVisible = 0;
|
224
|
+
defaultConfigurationName = Release;
|
225
|
+
};
|
226
|
+
1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "WaxSim" */ = {
|
227
|
+
isa = XCConfigurationList;
|
228
|
+
buildConfigurations = (
|
229
|
+
1DEB927908733DD40010E9CD /* Debug */,
|
230
|
+
1DEB927A08733DD40010E9CD /* Release */,
|
231
|
+
);
|
232
|
+
defaultConfigurationIsVisible = 0;
|
233
|
+
defaultConfigurationName = Release;
|
234
|
+
};
|
235
|
+
/* End XCConfigurationList section */
|
236
|
+
};
|
237
|
+
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
|
238
|
+
}
|
@@ -0,0 +1,126 @@
|
|
1
|
+
#import <Cocoa/Cocoa.h>
|
2
|
+
|
3
|
+
/*
|
4
|
+
* File: /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/iPhoneSimulatorRemoteClient.framework/Versions/A/iPhoneSimulatorRemoteClient
|
5
|
+
* Arch: Intel 80x86 (i386)
|
6
|
+
* Current version: 12.0.0, Compatibility version: 1.0.0
|
7
|
+
*/
|
8
|
+
|
9
|
+
@class DTiPhoneSimulatorSession;
|
10
|
+
|
11
|
+
@protocol DTiPhoneSimulatorSessionDelegate
|
12
|
+
|
13
|
+
- (void) session: (DTiPhoneSimulatorSession *) session didEndWithError: (NSError *) error;
|
14
|
+
- (void) session: (DTiPhoneSimulatorSession *) session didStart: (BOOL) started withError: (NSError *) error;
|
15
|
+
|
16
|
+
@end
|
17
|
+
|
18
|
+
@interface DTiPhoneSimulatorApplicationSpecifier : NSObject <NSCopying>
|
19
|
+
{
|
20
|
+
NSString *_appPath;
|
21
|
+
NSString *_bundleID;
|
22
|
+
}
|
23
|
+
|
24
|
+
+ (id) specifierWithApplicationPath: (NSString *) appPath;
|
25
|
+
+ (id) specifierWithApplicationBundleIdentifier: (NSString *) bundleID;
|
26
|
+
- (NSString *) bundleID;
|
27
|
+
- (void) setBundleID: (NSString *) bundleId;
|
28
|
+
- (NSString *) appPath;
|
29
|
+
- (void) setAppPath: (NSString *) appPath;
|
30
|
+
|
31
|
+
@end
|
32
|
+
|
33
|
+
@interface DTiPhoneSimulatorSystemRoot : NSObject <NSCopying>
|
34
|
+
{
|
35
|
+
NSString *sdkRootPath;
|
36
|
+
NSString *sdkVersion;
|
37
|
+
NSString *sdkDisplayName;
|
38
|
+
}
|
39
|
+
|
40
|
+
+ (id) defaultRoot;
|
41
|
+
|
42
|
+
+ (id)rootWithSDKPath:(NSString *) path;
|
43
|
+
+ (id)rootWithSDKVersion:(NSString *)version;
|
44
|
+
|
45
|
+
+ (NSArray *) knownRoots;
|
46
|
+
- (id)initWithSDKPath:(id)fp8;
|
47
|
+
- (id)sdkDisplayName;
|
48
|
+
- (void)setSdkDisplayName:(id)fp8;
|
49
|
+
- (id)sdkVersion;
|
50
|
+
- (void)setSdkVersion:(id)fp8;
|
51
|
+
- (id)sdkRootPath;
|
52
|
+
- (void)setSdkRootPath:(id)fp8;
|
53
|
+
|
54
|
+
@end
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
@interface DTiPhoneSimulatorSessionConfig : NSObject <NSCopying>
|
59
|
+
{
|
60
|
+
NSString *_localizedClientName;
|
61
|
+
DTiPhoneSimulatorSystemRoot *_simulatedSystemRoot;
|
62
|
+
DTiPhoneSimulatorApplicationSpecifier *_applicationToSimulateOnStart;
|
63
|
+
NSArray *_simulatedApplicationLaunchArgs;
|
64
|
+
NSDictionary *_simulatedApplicationLaunchEnvironment;
|
65
|
+
BOOL _simulatedApplicationShouldWaitForDebugger;
|
66
|
+
NSString *_simulatedApplicationStdOutPath;
|
67
|
+
NSString *_simulatedApplicationStdErrPath;
|
68
|
+
}
|
69
|
+
|
70
|
+
+ (NSString *) displayNameForDeviceFamily: (NSNumber *) family;
|
71
|
+
|
72
|
+
- (id)simulatedApplicationStdErrPath;
|
73
|
+
- (void)setSimulatedApplicationStdErrPath:(id)fp8;
|
74
|
+
- (id)simulatedApplicationStdOutPath;
|
75
|
+
- (void)setSimulatedApplicationStdOutPath:(id)fp8;
|
76
|
+
- (id)simulatedApplicationLaunchEnvironment;
|
77
|
+
- (void)setSimulatedApplicationLaunchEnvironment:(id)fp8;
|
78
|
+
- (id)simulatedApplicationLaunchArgs;
|
79
|
+
- (void)setSimulatedApplicationLaunchArgs:(id)fp8;
|
80
|
+
|
81
|
+
- (DTiPhoneSimulatorApplicationSpecifier *) applicationToSimulateOnStart;
|
82
|
+
- (void) setApplicationToSimulateOnStart: (DTiPhoneSimulatorApplicationSpecifier *) appSpec;
|
83
|
+
- (DTiPhoneSimulatorSystemRoot *) simulatedSystemRoot;
|
84
|
+
- (void) setSimulatedSystemRoot: (DTiPhoneSimulatorSystemRoot *) simulatedSystemRoot;
|
85
|
+
|
86
|
+
- (NSNumber *) simulatedDeviceFamily;
|
87
|
+
- (void) setSimulatedDeviceFamily: (NSNumber *) family;
|
88
|
+
|
89
|
+
- (BOOL) simulatedApplicationShouldWaitForDebugger;
|
90
|
+
- (void) setSimulatedApplicationShouldWaitForDebugger: (BOOL) waitForDebugger;
|
91
|
+
|
92
|
+
- (id)localizedClientName;
|
93
|
+
- (void)setLocalizedClientName:(id)fp8;
|
94
|
+
|
95
|
+
@end
|
96
|
+
|
97
|
+
|
98
|
+
@interface DTiPhoneSimulatorSession : NSObject {
|
99
|
+
NSString *_uuid;
|
100
|
+
id <DTiPhoneSimulatorSessionDelegate> _delegate;
|
101
|
+
NSNumber *_simulatedApplicationPID;
|
102
|
+
int _sessionLifecycleProgress;
|
103
|
+
NSTimer *_timeoutTimer;
|
104
|
+
DTiPhoneSimulatorSessionConfig *_sessionConfig;
|
105
|
+
struct ProcessSerialNumber _simulatorPSN;
|
106
|
+
}
|
107
|
+
|
108
|
+
- (BOOL) requestStartWithConfig: (DTiPhoneSimulatorSessionConfig *) config timeout: (NSTimeInterval) timeout error: (NSError **) outError;
|
109
|
+
- (void) requestEndWithTimeout: (NSTimeInterval) timeout;
|
110
|
+
|
111
|
+
- (id)sessionConfig;
|
112
|
+
- (void)setSessionConfig:(id)fp8;
|
113
|
+
- (id)timeoutTimer;
|
114
|
+
- (void)setTimeoutTimer:(id)fp8;
|
115
|
+
- (int)sessionLifecycleProgress;
|
116
|
+
- (void)setSessionLifecycleProgress:(int)fp8;
|
117
|
+
- (id)simulatedApplicationPID;
|
118
|
+
- (void)setSimulatedApplicationPID:(id)fp8;
|
119
|
+
|
120
|
+
- (id<DTiPhoneSimulatorSessionDelegate>) delegate;
|
121
|
+
- (void) setDelegate: (id<DTiPhoneSimulatorSessionDelegate>) delegate;
|
122
|
+
|
123
|
+
- (id)uuid;
|
124
|
+
- (void)setUuid:(id)fp8;
|
125
|
+
|
126
|
+
@end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
|
3
|
+
class UISpecRunner
|
4
|
+
class Drivers
|
5
|
+
class WaxSim
|
6
|
+
WAXSIM_BIN_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'ext', 'bin'))
|
7
|
+
|
8
|
+
attr_reader :config
|
9
|
+
|
10
|
+
def initialize(config)
|
11
|
+
@config = config
|
12
|
+
end
|
13
|
+
|
14
|
+
def waxsim_path
|
15
|
+
File.join(WAXSIM_BIN_DIR, 'waxsim')
|
16
|
+
end
|
17
|
+
|
18
|
+
def run_specs(env)
|
19
|
+
env_args = env.map { |k,v| "-e #{k}=#{v} "}.join(' ')
|
20
|
+
# TODO: Add support for family...
|
21
|
+
command = %Q{#{waxsim_path} -s #{config.sdk_version} #{env_args} "#{config.app_path}"}
|
22
|
+
puts "Executing: #{command}"
|
23
|
+
`#{command}`
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/uispecrunner/options.rb
CHANGED
@@ -18,7 +18,7 @@ class UISpecRunner
|
|
18
18
|
self[:build_dir] = './build'
|
19
19
|
self[:verbose] = false
|
20
20
|
self[:sdk_version] = '4.0'
|
21
|
-
self[:driver] = :
|
21
|
+
self[:driver] = :waxsim
|
22
22
|
self[:exit_on_finish] = true
|
23
23
|
|
24
24
|
require 'optparse'
|
@@ -64,9 +64,9 @@ class UISpecRunner
|
|
64
64
|
self[:scheme] = scheme
|
65
65
|
end
|
66
66
|
|
67
|
-
o.on('--driver [DRIVER]', [:shell, :osascript],
|
68
|
-
"Select driver (shell, osascript)",
|
69
|
-
'Default:
|
67
|
+
o.on('--driver [DRIVER]', [:shell, :osascript, :waxsim],
|
68
|
+
"Select driver (shell, osascript, waxsim)",
|
69
|
+
'Default: waxsim') do |driver|
|
70
70
|
self[:driver] = driver.to_sym
|
71
71
|
end
|
72
72
|
|
data/lib/uispecrunner.rb
CHANGED
@@ -7,6 +7,7 @@ gem 'open4', '>= 1.0.1'
|
|
7
7
|
require 'open4'
|
8
8
|
require 'uispecrunner/xcode_builder'
|
9
9
|
require 'uispecrunner/drivers/shell'
|
10
|
+
require 'uispecrunner/drivers/waxsim'
|
10
11
|
require 'uispecrunner/drivers/osascript'
|
11
12
|
|
12
13
|
class UISpecRunner
|
@@ -24,7 +25,7 @@ class UISpecRunner
|
|
24
25
|
self.configuration ||= 'Debug'
|
25
26
|
self.build_dir ||= './build'
|
26
27
|
self.run_mode ||= :all
|
27
|
-
self.driver ||= :
|
28
|
+
self.driver ||= :waxsim
|
28
29
|
self.exit_on_finish ||= true
|
29
30
|
self.env ||= {}
|
30
31
|
end
|
@@ -92,11 +93,12 @@ class UISpecRunner
|
|
92
93
|
|
93
94
|
private
|
94
95
|
def driver_class
|
95
|
-
# TODO: Add WaxSim...
|
96
96
|
if self.driver == :shell
|
97
97
|
UISpecRunner::Drivers::Shell
|
98
98
|
elsif self.driver == :osascript
|
99
99
|
UISpecRunner::Drivers::OSAScript
|
100
|
+
elsif self.driver == :waxsim
|
101
|
+
UISpecRunner::Drivers::WaxSim
|
100
102
|
end
|
101
103
|
end
|
102
104
|
|
data/src/UISpec+UISpecRunner.h
CHANGED
@@ -9,6 +9,12 @@
|
|
9
9
|
#import <Foundation/Foundation.h>
|
10
10
|
#import "UISpec.h"
|
11
11
|
|
12
|
+
// Define protocols for Unit and Integration specs
|
13
|
+
@protocol UISpecUnit <NSObject>
|
14
|
+
@end
|
15
|
+
@protocol UISpecIntegration <NSObject>
|
16
|
+
@end
|
17
|
+
|
12
18
|
@interface UISpec (UISpecRunner)
|
13
19
|
|
14
20
|
/**
|
data/uispecrunner.gemspec
CHANGED
@@ -5,30 +5,40 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{uispecrunner}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.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{2011-03-
|
12
|
+
s.date = %q{2011-03-12}
|
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}
|
16
16
|
s.executables = ["uispec"]
|
17
|
+
s.extensions = ["ext/Rakefile"]
|
17
18
|
s.extra_rdoc_files = [
|
18
19
|
"LICENSE",
|
19
20
|
"README.md"
|
20
21
|
]
|
21
22
|
s.files = [
|
23
|
+
".gitmodules",
|
22
24
|
"CHANGELOG",
|
23
25
|
"LICENSE",
|
24
26
|
"README.md",
|
25
27
|
"Rakefile",
|
26
28
|
"VERSION",
|
27
29
|
"bin/uispec",
|
30
|
+
"ext/Rakefile",
|
31
|
+
"ext/WaxSim/Simulator.h",
|
32
|
+
"ext/WaxSim/Simulator.m",
|
33
|
+
"ext/WaxSim/WaxSim.m",
|
34
|
+
"ext/WaxSim/WaxSim.xcodeproj/project.pbxproj",
|
35
|
+
"ext/WaxSim/WaxSim_Prefix.pch",
|
36
|
+
"ext/WaxSim/iPhoneSimulatorRemoteClient/iPhoneSimulatorRemoteClient.h",
|
28
37
|
"lib/uispecrunner.rb",
|
29
38
|
"lib/uispecrunner/application.rb",
|
30
39
|
"lib/uispecrunner/drivers/osascript.rb",
|
31
40
|
"lib/uispecrunner/drivers/shell.rb",
|
41
|
+
"lib/uispecrunner/drivers/waxsim.rb",
|
32
42
|
"lib/uispecrunner/options.rb",
|
33
43
|
"lib/uispecrunner/xcode_builder.rb",
|
34
44
|
"spec/options_spec.rb",
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uispecrunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 1
|
10
|
+
version: 0.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Blake Watters
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-12 00:00:00 -05:00
|
19
19
|
default_executable: uispec
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -54,22 +54,31 @@ description: Provides a simple Ruby interface for running UISpec iPhone tests
|
|
54
54
|
email: blake@twotoasters.com
|
55
55
|
executables:
|
56
56
|
- uispec
|
57
|
-
extensions:
|
58
|
-
|
57
|
+
extensions:
|
58
|
+
- ext/Rakefile
|
59
59
|
extra_rdoc_files:
|
60
60
|
- LICENSE
|
61
61
|
- README.md
|
62
62
|
files:
|
63
|
+
- .gitmodules
|
63
64
|
- CHANGELOG
|
64
65
|
- LICENSE
|
65
66
|
- README.md
|
66
67
|
- Rakefile
|
67
68
|
- VERSION
|
68
69
|
- bin/uispec
|
70
|
+
- ext/Rakefile
|
71
|
+
- ext/WaxSim/Simulator.h
|
72
|
+
- ext/WaxSim/Simulator.m
|
73
|
+
- ext/WaxSim/WaxSim.m
|
74
|
+
- ext/WaxSim/WaxSim.xcodeproj/project.pbxproj
|
75
|
+
- ext/WaxSim/WaxSim_Prefix.pch
|
76
|
+
- ext/WaxSim/iPhoneSimulatorRemoteClient/iPhoneSimulatorRemoteClient.h
|
69
77
|
- lib/uispecrunner.rb
|
70
78
|
- lib/uispecrunner/application.rb
|
71
79
|
- lib/uispecrunner/drivers/osascript.rb
|
72
80
|
- lib/uispecrunner/drivers/shell.rb
|
81
|
+
- lib/uispecrunner/drivers/waxsim.rb
|
73
82
|
- lib/uispecrunner/options.rb
|
74
83
|
- lib/uispecrunner/xcode_builder.rb
|
75
84
|
- spec/options_spec.rb
|