From 0bf0302c0a09bf08d38bcc38b230563c07815ea5 Mon Sep 17 00:00:00 2001 From: Jamie Edge Date: Thu, 18 Sep 2014 18:48:50 +0100 Subject: [PATCH] Launch the doctor within Terminal as a temporary fix for issue #374. --- Appium/Server/Model/AppiumModel.h | 1 + Appium/Server/Model/AppiumModel.m | 19 +++++++++++++++++++ .../Monitor/AppiumMonitorWindowController.m | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/Appium/Server/Model/AppiumModel.h b/Appium/Server/Model/AppiumModel.h index 75a56bb3..3267b186 100644 --- a/Appium/Server/Model/AppiumModel.h +++ b/Appium/Server/Model/AppiumModel.h @@ -43,6 +43,7 @@ typedef enum platformTypes -(BOOL) killServer; -(BOOL) startServer; -(BOOL) startDoctor; +- (void)startExternalDoctor; -(void) reset; - (void)setupServerTask:(NSString *)commandString; diff --git a/Appium/Server/Model/AppiumModel.m b/Appium/Server/Model/AppiumModel.m index 366b6ed4..acba654e 100644 --- a/Appium/Server/Model/AppiumModel.m +++ b/Appium/Server/Model/AppiumModel.m @@ -560,6 +560,25 @@ -(BOOL) startDoctor return self.serverTask.isRunning; } +- (void)startExternalDoctor +{ + NSString *doctorPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/node_modules/appium/bin/appium-doctor.js"]; + + NSString *command; + + if (self.developer.useExternalNodeJSBinary) + { + command = [NSString stringWithFormat:@"'%@' '%@'", self.developer.externalNodeJSBinaryPath, doctorPath]; + } + else + { + command = [NSString stringWithFormat:@"'%@%@' '%@'", [[NSBundle mainBundle] resourcePath], @"/node/bin/node", doctorPath]; + } + + NSAppleScript *script = [[NSAppleScript alloc] initWithSource:[NSString stringWithFormat:@"tell application \"Terminal\" to do script \"%@\"\nactivate application \"Terminal\"", command]]; + [script executeAndReturnError:nil]; +} + - (void)setupServerTask:(NSString *)commandString { [self setServerTask:[NSTask new]]; diff --git a/Appium/Server/Monitor/AppiumMonitorWindowController.m b/Appium/Server/Monitor/AppiumMonitorWindowController.m index 08272cd9..b8c1c28d 100644 --- a/Appium/Server/Monitor/AppiumMonitorWindowController.m +++ b/Appium/Server/Monitor/AppiumMonitorWindowController.m @@ -61,6 +61,10 @@ - (IBAction) launchButtonClicked:(id)sender -(IBAction)doctorButtonClicked:(id)sender { + // Prevent startDoctor from being run for now due to issue #374 + [self.model startExternalDoctor]; + return; + if ([self.model startDoctor]) { [self closeAllPopovers];