1 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 import flakytests 6 7 from webkitpy.common.checkout.scm.scm_mock import MockSCM 8 from webkitpy.tool.commands.commandtest import CommandsTest 9 from webkitpy.tool.mocktool import MockTool, MockOptions 10 11 12 class FakeBotTestExpectations(object): 13 def expectation_lines(self, only_ignore_very_flaky=False): 14 return [] 15 16 17 class FakeBotTestExpectationsFactory(object): 18 def expectations_for_builder(self, builder): 19 return FakeBotTestExpectations() 20 21 22 class ChangedExpectationsMockSCM(MockSCM): 23 def changed_files(self): 24 return ['LayoutTests/FlakyTests'] 25 26 27 class FlakyTestsTest(CommandsTest): 28 def test_simple(self): 29 command = flakytests.FlakyTests() 30 factory = FakeBotTestExpectationsFactory() 31 lines = command._collect_expectation_lines(['foo'], factory) 32 self.assertEqual(lines, []) 33 34 def test_integration(self): 35 command = flakytests.FlakyTests() 36 tool = MockTool() 37 command.expectations_factory = FakeBotTestExpectationsFactory 38 options = MockOptions(upload=True) 39 expected_stdout = """Updated /mock-checkout/third_party/WebKit/LayoutTests/FlakyTests 40 LayoutTests/FlakyTests is not changed, not uploading. 41 """ 42 self.assert_execute_outputs(command, options=options, tool=tool, expected_stdout=expected_stdout) 43 44 port = tool.port_factory.get() 45 self.assertEqual(tool.filesystem.read_text_file(tool.filesystem.join(port.layout_tests_dir(), 'FlakyTests')), command.FLAKY_TEST_CONTENTS % '') 46 47 def test_integration_uploads(self): 48 command = flakytests.FlakyTests() 49 tool = MockTool() 50 tool.scm = ChangedExpectationsMockSCM 51 command.expectations_factory = FakeBotTestExpectationsFactory 52 reviewer = 'foo (at] chromium.org' 53 options = MockOptions(upload=True, reviewers=reviewer) 54 expected_stdout = """Updated /mock-checkout/third_party/WebKit/LayoutTests/FlakyTests 55 """ 56 self.assert_execute_outputs(command, options=options, tool=tool, expected_stdout=expected_stdout) 57 self.assertEqual(tool.executive.calls, 58 [ 59 ['git', 'commit', '-m', command.COMMIT_MESSAGE % reviewer, '/mock-checkout/third_party/WebKit/LayoutTests/FlakyTests'], 60 ['git', 'cl', 'upload', '--send-mail', '-f', '--cc', 'ojan (at] chromium.org,dpranke (at] chromium.org,eseidel (at] chromium.org'], 61 ]) 62 63 port = tool.port_factory.get() 64 self.assertEqual(tool.filesystem.read_text_file(tool.filesystem.join(port.layout_tests_dir(), 'FlakyTests')), command.FLAKY_TEST_CONTENTS % '') 65