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