lib/acouchi/test_runner.rb in acouchi-0.0.2 vs lib/acouchi/test_runner.rb in acouchi-0.0.3
- old
+ new
@@ -4,30 +4,35 @@
class TestRunner
def initialize configuration
@configuration = configuration
end
+ def adb
+ @adb ||= Which.find_executable("adb")
+ end
+
def start
- system "adb forward tcp:7103 tcp:7103"
- @test_runner_process = ChildProcess.build("adb", "shell", "am", "instrument", "-w", "#{@configuration.target_package}/android.test.InstrumentationTestRunner")
- @test_runner_process.start
+ force_stop
+ ProcessLauncher.new(adb, "forward", "tcp:7103", "tcp:7103").start_and_crash_if_process_fails
+ @test_runner_process = ProcessLauncher.new(adb, "shell", "am", "instrument", "-w", "#{@configuration.target_package}/android.test.InstrumentationTestRunner")
+ @test_runner_process.start_in_background
while ready? == false
sleep 0.1
end
end
def stop
HTTParty.get("http://127.0.0.1:7103/finish") rescue nil
- begin
- @test_runner_process.poll_for_exit 10
- rescue ChildProcess::TimeoutError
- @test_runner_process.stop
- end
+ @test_runner_process.stop
end
private
def ready?
HTTParty.get("http://127.0.0.1:7103/").body == "Acouchi" rescue false
+ end
+
+ def force_stop
+ ChildProcess.build(adb, "shell", "am", "force-stop", @configuration.target_package).start.wait
end
end
end