Class: LookbookVisualTester::ServerTestRunner
- Inherits:
-
Object
- Object
- LookbookVisualTester::ServerTestRunner
- Defined in:
- lib/lookbook_visual_tester/server_test_runner.rb
Constant Summary collapse
- DEFAULT_TEST_TASK =
'lookbook:test'- DEFAULT_TIMEOUT =
60- POLL_INTERVAL =
0.25
Class Method Summary collapse
- .call(config: LookbookVisualTester.config, timeout: DEFAULT_TIMEOUT, test_task: DEFAULT_TEST_TASK, log_path: nil) ⇒ Object
- .wait_for_server(host, timeout: DEFAULT_TIMEOUT) ⇒ Object
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(config: LookbookVisualTester.config, timeout: DEFAULT_TIMEOUT, test_task: DEFAULT_TEST_TASK, log_path: nil) ⇒ ServerTestRunner
constructor
A new instance of ServerTestRunner.
Constructor Details
#initialize(config: LookbookVisualTester.config, timeout: DEFAULT_TIMEOUT, test_task: DEFAULT_TEST_TASK, log_path: nil) ⇒ ServerTestRunner
Returns a new instance of ServerTestRunner.
17 18 19 20 21 22 23 24 |
# File 'lib/lookbook_visual_tester/server_test_runner.rb', line 17 def initialize(config: LookbookVisualTester.config, timeout: DEFAULT_TIMEOUT, test_task: DEFAULT_TEST_TASK, log_path: nil) @config = config @timeout = timeout @test_task = test_task @log_path = log_path @pid = nil @log_file = nil end |
Class Method Details
.call(config: LookbookVisualTester.config, timeout: DEFAULT_TIMEOUT, test_task: DEFAULT_TEST_TASK, log_path: nil) ⇒ Object
13 14 15 |
# File 'lib/lookbook_visual_tester/server_test_runner.rb', line 13 def self.call(config: LookbookVisualTester.config, timeout: DEFAULT_TIMEOUT, test_task: DEFAULT_TEST_TASK, log_path: nil) new(config: config, timeout: timeout, test_task: test_task, log_path: log_path).call end |
.wait_for_server(host, timeout: DEFAULT_TIMEOUT) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/lookbook_visual_tester/server_test_runner.rb', line 42 def self.wait_for_server(host, timeout: DEFAULT_TIMEOUT) uri = URI.parse(host) raise Error, "Invalid lookbook_host: #{host}" unless uri.is_a?(URI::HTTP) || uri.is_a?(URI::HTTPS) Timeout.timeout(timeout) do loop do begin response = Net::HTTP.get_response(uri) return true if response.code.to_i < 500 rescue Errno::ECONNREFUSED, Errno::EADDRNOTAVAIL, Net::OpenTimeout, Net::ReadTimeout # server not ready yet end sleep POLL_INTERVAL end end rescue Timeout::Error raise Error, "Lookbook server at #{host} did not start within #{timeout}s" end |
Instance Method Details
#call ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/lookbook_visual_tester/server_test_runner.rb', line 26 def call validate_host! @pid = spawn_server begin self.class.wait_for_server(@config.lookbook_host, timeout: @timeout) puts "[LookbookVisualTester] Server ready at #{@config.lookbook_host}. Running #{@test_task}..." task = Rake::Task[@test_task] task.reenable task.invoke ensure stop_server end end |