diff options
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py')
-rw-r--r-- | WebKitTools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py b/WebKitTools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py deleted file mode 100644 index 309bf8d..0000000 --- a/WebKitTools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2010 Google Inc. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -"""Unit tests for deduplicate_tests.py.""" - -import deduplicate_tests -import os -import unittest -import webkitpy.common.checkout.scm as scm - - -class MockExecutive(object): - last_run_command = [] - response = '' - - class Executive(object): - def run_command(self, - args, - cwd=None, - input=None, - error_handler=None, - return_exit_code=False, - return_stderr=True, - decode_output=True): - MockExecutive.last_run_command += [args] - return MockExecutive.response - - -class ListDuplicatesTest(unittest.TestCase): - def setUp(self): - MockExecutive.last_run_command = [] - MockExecutive.response = '' - deduplicate_tests.executive = MockExecutive - self._original_cwd = os.getcwd() - checkout_root = scm.find_checkout_root() - self.assertNotEqual(checkout_root, None) - os.chdir(checkout_root) - - def tearDown(self): - os.chdir(self._original_cwd) - - def test_parse_git_output(self): - git_output = ( - '100644 blob 5053240b3353f6eb39f7cb00259785f16d121df2\tLayoutTests/mac/foo-expected.txt\n' - '100644 blob a004548d107ecc4e1ea08019daf0a14e8634a1ff\tLayoutTests/platform/chromium/foo-expected.txt\n' - '100644 blob d6bb0bc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-linux/foo-expected.txt\n' - '100644 blob abcdebc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-linux/animage.png\n' - '100644 blob d6bb0bc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-win/foo-expected.txt\n' - '100644 blob abcdebc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-win/animage.png\n' - '100644 blob 4303df5389ca87cae83dd3236b8dd84e16606517\tLayoutTests/platform/mac/foo-expected.txt\n') - hashes = deduplicate_tests.parse_git_output(git_output, '*') - expected = {('mac/foo-expected.txt', '5053240b3353f6eb39f7cb00259785f16d121df2'): set(['mac/foo-expected.txt']), - ('animage.png', 'abcdebc762e3aec5df03b5c04485b2cb3b65ffb1'): set(['platform/chromium-linux/animage.png', 'platform/chromium-win/animage.png']), - ('foo-expected.txt', '4303df5389ca87cae83dd3236b8dd84e16606517'): set(['platform/mac/foo-expected.txt']), - ('foo-expected.txt', 'd6bb0bc762e3aec5df03b5c04485b2cb3b65ffb1'): set(['platform/chromium-linux/foo-expected.txt', 'platform/chromium-win/foo-expected.txt']), - ('foo-expected.txt', 'a004548d107ecc4e1ea08019daf0a14e8634a1ff'): set(['platform/chromium/foo-expected.txt'])} - self.assertEquals(expected, hashes) - - hashes = deduplicate_tests.parse_git_output(git_output, '*.png') - expected = {('animage.png', 'abcdebc762e3aec5df03b5c04485b2cb3b65ffb1'): set(['platform/chromium-linux/animage.png', 'platform/chromium-win/animage.png'])} - self.assertEquals(expected, hashes) - - def test_extract_platforms(self): - self.assertEquals({'foo': 'platform/foo/bar', - 'zoo': 'platform/zoo/com'}, - deduplicate_tests.extract_platforms(['platform/foo/bar', 'platform/zoo/com'])) - self.assertEquals({'foo': 'platform/foo/bar', - deduplicate_tests._BASE_PLATFORM: 'what/'}, - deduplicate_tests.extract_platforms(['platform/foo/bar', 'what/'])) - - def test_has_intermediate_results(self): - test_cases = ( - # If we found a duplicate in our first fallback, we have no - # intermediate results. - (False, ('fast/foo-expected.txt', - ['chromium-win', 'chromium', 'base'], - 'chromium-win', - lambda path: True)), - # Since chromium-win has a result, we have an intermediate result. - (True, ('fast/foo-expected.txt', - ['chromium-win', 'chromium', 'base'], - 'chromium', - lambda path: True)), - # There are no intermediate results. - (False, ('fast/foo-expected.txt', - ['chromium-win', 'chromium', 'base'], - 'chromium', - lambda path: False)), - # There are no intermediate results since a result for chromium is - # our duplicate file. - (False, ('fast/foo-expected.txt', - ['chromium-win', 'chromium', 'base'], - 'chromium', - lambda path: path == 'LayoutTests/platform/chromium/fast/foo-expected.txt')), - # We have an intermediate result in 'chromium' even though our - # duplicate is with the file in 'base'. - (True, ('fast/foo-expected.txt', - ['chromium-win', 'chromium', 'base'], - 'base', - lambda path: path == 'LayoutTests/platform/chromium/fast/foo-expected.txt')), - # We have an intermediate result in 'chromium-win' even though our - # duplicate is in 'base'. - (True, ('fast/foo-expected.txt', - ['chromium-win', 'chromium', 'base'], - 'base', - lambda path: path == 'LayoutTests/platform/chromium-win/fast/foo-expected.txt')), - ) - for expected, inputs in test_cases: - self.assertEquals(expected, - deduplicate_tests.has_intermediate_results(*inputs)) - - def test_unique(self): - MockExecutive.response = ( - '100644 blob 5053240b3353f6eb39f7cb00259785f16d121df2\tLayoutTests/mac/foo-expected.txt\n' - '100644 blob a004548d107ecc4e1ea08019daf0a14e8634a1ff\tLayoutTests/platform/chromium/foo-expected.txt\n' - '100644 blob abcd0bc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-linux/foo-expected.txt\n' - '100644 blob d6bb0bc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-win/foo-expected.txt\n' - '100644 blob 4303df5389ca87cae83dd3236b8dd84e16606517\tLayoutTests/platform/mac/foo-expected.txt\n') - result = deduplicate_tests.deduplicate('*') - self.assertEquals(1, len(MockExecutive.last_run_command)) - self.assertEquals(('git', 'ls-tree', '-r', 'HEAD', 'LayoutTests'), MockExecutive.last_run_command[-1]) - self.assertEquals(0, len(result)) - - def test_duplicates(self): - MockExecutive.response = ( - '100644 blob 5053240b3353f6eb39f7cb00259785f16d121df2\tLayoutTests/mac/foo-expected.txt\n' - '100644 blob a004548d107ecc4e1ea08019daf0a14e8634a1ff\tLayoutTests/platform/chromium/foo-expected.txt\n' - '100644 blob d6bb0bc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-linux/foo-expected.txt\n' - '100644 blob abcdebc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-linux/animage.png\n' - '100644 blob d6bb0bc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-win/foo-expected.txt\n' - '100644 blob abcdebc762e3aec5df03b5c04485b2cb3b65ffb1\tLayoutTests/platform/chromium-win/animage.png\n' - '100644 blob 4303df5389ca87cae83dd3236b8dd84e16606517\tLayoutTests/platform/mac/foo-expected.txt\n') - - result = deduplicate_tests.deduplicate('*') - self.assertEquals(1, len(MockExecutive.last_run_command)) - self.assertEquals(('git', 'ls-tree', '-r', 'HEAD', 'LayoutTests'), MockExecutive.last_run_command[-1]) - self.assertEquals(2, len(result)) - self.assertEquals({'test': 'animage.png', - 'path': 'LayoutTests/platform/chromium-linux/animage.png', - 'fallback': 'chromium-win', - 'platform': 'chromium-linux'}, - result[0]) - self.assertEquals({'test': 'foo-expected.txt', - 'path': 'LayoutTests/platform/chromium-linux/foo-expected.txt', - 'fallback': 'chromium-win', - 'platform': 'chromium-linux'}, - result[1]) - - result = deduplicate_tests.deduplicate('*.txt') - self.assertEquals(2, len(MockExecutive.last_run_command)) - self.assertEquals(('git', 'ls-tree', '-r', 'HEAD', 'LayoutTests'), MockExecutive.last_run_command[-1]) - self.assertEquals(1, len(result)) - self.assertEquals({'test': 'foo-expected.txt', - 'path': 'LayoutTests/platform/chromium-linux/foo-expected.txt', - 'fallback': 'chromium-win', - 'platform': 'chromium-linux'}, - result[0]) - - result = deduplicate_tests.deduplicate('*.png') - self.assertEquals(3, len(MockExecutive.last_run_command)) - self.assertEquals(('git', 'ls-tree', '-r', 'HEAD', 'LayoutTests'), MockExecutive.last_run_command[-1]) - self.assertEquals(1, len(result)) - self.assertEquals({'test': 'animage.png', - 'path': 'LayoutTests/platform/chromium-linux/animage.png', - 'fallback': 'chromium-win', - 'platform': 'chromium-linux'}, - result[0]) - - def test_get_relative_test_path(self): - checkout_root = scm.find_checkout_root() - layout_test_dir = os.path.join(checkout_root, 'LayoutTests') - test_cases = ( - ('platform/mac/test.html', - ('platform/mac/test.html', layout_test_dir)), - ('LayoutTests/platform/mac/test.html', - ('platform/mac/test.html', checkout_root)), - (None, - ('platform/mac/test.html', os.path.join(checkout_root, 'WebCore'))), - ('test.html', - ('platform/mac/test.html', os.path.join(layout_test_dir, 'platform/mac'))), - (None, - ('platform/mac/test.html', os.path.join(layout_test_dir, 'platform/win'))), - ) - for expected, inputs in test_cases: - self.assertEquals(expected, - deduplicate_tests.get_relative_test_path(*inputs)) - -if __name__ == '__main__': - unittest.main() |