1#!/usr/bin/env python
2
3# Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# 1. Redistributions of source code must retain the above
10#    copyright notice, this list of conditions and the following
11#    disclaimer.
12# 2. Redistributions in binary form must reproduce the above
13#    copyright notice, this list of conditions and the following
14#    disclaimer in the documentation and/or other materials
15#    provided with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY
18# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
21# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
22# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
26# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28# SUCH DAMAGE.
29
30import optparse
31import shutil
32import tempfile
33import webkitpy.thirdparty.unittest2 as unittest
34
35from webkitpy.common.host_mock import MockHost
36from webkitpy.common.system.filesystem_mock import MockFileSystem
37from webkitpy.common.system.executive_mock import MockExecutive2, ScriptError
38from webkitpy.common.system.outputcapture import OutputCapture
39from webkitpy.w3c.test_importer import TestImporter
40
41
42FAKE_SOURCE_DIR = '/blink/w3c'
43FAKE_REPO_DIR = '/blink'
44
45FAKE_FILES = {
46    '/blink/w3c/empty_dir/README.txt': '',
47    '/mock-checkout/third_party/WebKit/LayoutTests/w3c/README.txt': '',
48    '/mock-checkout/third_party/WebKit/LayoutTests/W3CImportExpectations': '',
49}
50
51class TestImporterTest(unittest.TestCase):
52
53    def test_import_dir_with_no_tests_and_no_hg(self):
54        host = MockHost()
55        host.executive = MockExecutive2(exception=OSError())
56        host.filesystem = MockFileSystem(files=FAKE_FILES)
57
58        importer = TestImporter(host, FAKE_SOURCE_DIR, FAKE_REPO_DIR, optparse.Values({"overwrite": False, 'destination': 'w3c', 'ignore_expectations': False}))
59
60        oc = OutputCapture()
61        oc.capture_output()
62        try:
63            importer.do_import()
64        finally:
65            oc.restore_output()
66
67    def test_import_dir_with_no_tests(self):
68        host = MockHost()
69        host.executive = MockExecutive2(exception=ScriptError("abort: no repository found in '/Volumes/Source/src/wk/Tools/Scripts/webkitpy/w3c' (.hg not found)!"))
70        host.filesystem = MockFileSystem(files=FAKE_FILES)
71
72        importer = TestImporter(host, FAKE_SOURCE_DIR, FAKE_REPO_DIR, optparse.Values({"overwrite": False, 'destination': 'w3c', 'ignore_expectations': False}))
73        oc = OutputCapture()
74        oc.capture_output()
75        try:
76            importer.do_import()
77        finally:
78            oc.restore_output()
79
80    # FIXME: Needs more tests.
81