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-x86'
            }, result[0])
        self.assertEquals(
            {
                'test': 'foo-expected.txt',
                'path': 'LayoutTests/platform/chromium-linux/foo-expected.txt',
                'fallback': 'chromium-win',
                'platform': 'chromium-linux-x86'
            }, 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-x86'
            }, 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-x86'
            }, result[0])
    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-x86'},
                          result[0])
        self.assertEquals({'test': 'foo-expected.txt',
                           'path': 'LayoutTests/platform/chromium-linux/foo-expected.txt',
                           'fallback': 'chromium-win',
                           'platform': 'chromium-linux-x86'},
                          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-x86'},
                          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-x86'},
                          result[0])