def test_start_cmd(self): # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726 if sys.platform.startswith('win') or sys.platform == 'cygwin': return def fake_pid(_): host.filesystem.write_text_file('/tmp/WebKit/httpd.pid', '42') return True host = MockHost() host.executive = MockExecutive(should_log=True) test_port = test.TestPort(host) host.filesystem.write_text_file( test_port._path_to_apache_config_file(), '') server = LayoutTestApacheHttpd(test_port, "/mock/output_dir") server._check_that_all_ports_are_available = lambda: True server._is_server_running_on_all_ports = lambda: True server._wait_for_action = fake_pid oc = OutputCapture() try: oc.capture_output() server.start() server.stop() finally: _, _, logs = oc.restore_output() self.assertTrue(host.filesystem.exists("/mock/output_dir/httpd.conf"))
def test_start_cmd(self): # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726 if sys.platform in ('cygwin', 'win32'): return host = MockHost() test_port = test.TestPort(host) host.filesystem.write_text_file( "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf", "Mock Config\n") host.filesystem.write_text_file("/usr/lib/lighttpd/liblightcomp.dylib", "Mock dylib") server = Lighttpd(test_port, "/mock/output_dir", additional_dirs={ "/mock/one-additional-dir": "/mock-checkout/one-additional-dir", "/mock/another-additional-dir": "/mock-checkout/one-additional-dir" }) self.assertRaises(ServerError, server.start) config_file = host.filesystem.read_text_file( "/mock/output_dir/lighttpd.conf") self.assertEqual(re.findall(r"alias.url.+", config_file), [ 'alias.url = ( "/js-test-resources" => "/test.checkout/LayoutTests/resources" )', 'alias.url += ( "/mock/one-additional-dir" => "/mock-checkout/one-additional-dir" )', 'alias.url += ( "/mock/another-additional-dir" => "/mock-checkout/one-additional-dir" )', 'alias.url += ( "/media-resources" => "/test.checkout/LayoutTests/media" )', ])
def test_start_cmd(self): # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726 if sys.platform.startswith('win') or sys.platform == 'cygwin': return def fake_pid(_): host.filesystem.write_text_file('/tmp/WebKit/httpd.pid', '42') return True host = MockHost() host.executive = MockExecutive(should_log=True) test_port = test.TestPort(host) host.filesystem.write_text_file(test_port._path_to_apache_config_file(), '') host.filesystem.write_text_file( "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/aliases.json", '[["/js-test-resources", "resources"], ["/media-resources", "media"], ["/test/test.file", "resources/testfile"]]') server = LayoutTestApacheHttpd(test_port, "/mock/output_dir") server._check_that_all_ports_are_available = lambda: True server._is_server_running_on_all_ports = lambda: True server._wait_for_action = fake_pid self.assertEqual(server.ports_to_forward(), [8000, 8080, 8443]) oc = OutputCapture() try: oc.capture_output() server.start() server.stop() finally: _, _, logs = oc.restore_output() self.assertTrue(host.filesystem.exists("/mock/output_dir/httpd.conf"))
def test_win32_start_and_stop(self): host = MockHost() test_port = test.TestPort(host) host.filesystem.write_text_file( "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf", "Mock Config\n") host.filesystem.write_text_file("/usr/lib/lighttpd/liblightcomp.dylib", "Mock dylib") host.filesystem.write_text_file( "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/aliases.json", '[["/js-test-resources", "resources"], ["/media-resources", "media"], ["/test/test.file", "resources/testfile"]]' ) host.platform.is_win = lambda: True host.platform.is_cygwin = lambda: False server = Lighttpd(test_port, "/mock/output_dir", additional_dirs={ "/mock/one-additional-dir": "/mock-checkout/one-additional-dir", "/mock/another-additional-dir": "/mock-checkout/one-additional-dir" }) server._check_that_all_ports_are_available = lambda: True server._is_server_running_on_all_ports = lambda: True server.start() self.assertNotEquals(host.executive.calls, []) def wait_for_action(action): if action(): return True return action() def mock_returns(return_values): def return_value_thunk(*args, **kwargs): return return_values.pop(0) return return_value_thunk host.executive.check_running_pid = mock_returns([True, False]) server._wait_for_action = wait_for_action server.stop() self.assertEqual(['taskkill.exe', '/f', '/t', '/pid', 42], host.executive.calls[1])
def test_test_timings_trie(self): test_port = test.TestPort(MockHost()) individual_test_timings = [] individual_test_timings.append(json_results_generator.TestResult('foo/bar/baz.html', elapsed_time=1.2)) individual_test_timings.append(json_results_generator.TestResult('bar.html', elapsed_time=0.0001)) trie = json_results_generator.test_timings_trie(test_port, individual_test_timings) expected_trie = { 'bar.html': 0, 'foo': { 'bar': { 'baz.html': 1200, } } } self.assertEqual(json.dumps(trie), json.dumps(expected_trie))
def test_corrupt_pid_file(self): # This tests that if the pid file is corrupt or invalid, # both start() and stop() deal with it correctly and delete the file. host = MockHost() test_port = test.TestPort(host) server = HttpServerBase(test_port) server._pid_file = '/tmp/pidfile' server._spawn_process = lambda: 4 server._is_server_running_on_all_ports = lambda: True host.filesystem.write_text_file(server._pid_file, 'foo') server.stop() self.assertEqual(host.filesystem.files[server._pid_file], None) host.filesystem.write_text_file(server._pid_file, 'foo') server.start() self.assertEqual(server._pid, 4) # Note that the pid file would not be None if _spawn_process() # was actually a real implementation. self.assertEqual(host.filesystem.files[server._pid_file], None)
def test_build_alias_path_pairs(self): host = MockHost() test_port = test.TestPort(host) server = HttpServerBase(test_port) data = [ ['/media-resources', 'media'], [ '/modern-media-controls', '../Source/WebCore/Modules/modern-media-controls' ], ['/resources/testharness.css', 'resources/testharness.css'], ] expected = [ ('/media-resources', '/test.checkout/LayoutTests/media'), ('/modern-media-controls', '/test.checkout/LayoutTests/../Source/WebCore/Modules/modern-media-controls' ), ('/resources/testharness.css', '/test.checkout/LayoutTests/resources/testharness.css'), ] self.assertEqual(server._build_alias_path_pairs(data), expected)