예제 #1
0
    def test_default_configuration(self):
        mock_options = mocktool.MockOptions()
        port = ChromiumPortTest.TestLinuxPort(options=mock_options)
        self.assertEquals(mock_options.configuration, 'default')
        self.assertTrue(port.default_configuration_called)

        mock_options = mocktool.MockOptions(configuration=None)
        port = ChromiumPortTest.TestLinuxPort(mock_options)
        self.assertEquals(mock_options.configuration, 'default')
        self.assertTrue(port.default_configuration_called)
예제 #2
0
    def test_diff_image(self):
        class TestPort(ChromiumPortTest.TestLinuxPort):
            def _path_to_image_diff(self):
                return "/path/to/image_diff"

        mock_options = mocktool.MockOptions()
        port = ChromiumPortTest.TestLinuxPort(mock_options)

        mock_image_diff = "MOCK Image Diff"

        def mock_run_command(args):
            port._filesystem.write_binary_file(args[4], mock_image_diff)
            return 1

        # Images are different.
        port._executive = executive_mock.MockExecutive2(run_command_fn=mock_run_command)
        self.assertEquals(mock_image_diff, port.diff_image("EXPECTED", "ACTUAL")[0])

        # Images are the same.
        port._executive = executive_mock.MockExecutive2(exit_code=0)
        self.assertEquals(None, port.diff_image("EXPECTED", "ACTUAL")[0])

        # There was some error running image_diff.
        port._executive = executive_mock.MockExecutive2(exit_code=2)
        exception_raised = False
        try:
            port.diff_image("EXPECTED", "ACTUAL")
        except ValueError, e:
            exception_raised = True
def test_options():
    return mocktool.MockOptions(configuration=None,
                                backup=False,
                                html_directory='/tmp',
                                archive_url=ARCHIVE_URL,
                                force_archive_url=None,
                                verbose=False,
                                quiet=False,
                                platforms=None)
예제 #4
0
 def test_path_to_image_diff(self):
     mock_options = mocktool.MockOptions()
     port = ChromiumPortTest.TestLinuxPort(options=mock_options)
     self.assertTrue(port._path_to_image_diff().endswith(
         '/out/default/ImageDiff'))
     port = ChromiumPortTest.TestMacPort(options=mock_options)
     self.assertTrue(port._path_to_image_diff().endswith(
         '/xcodebuild/default/ImageDiff'))
     port = ChromiumPortTest.TestWinPort(options=mock_options)
     self.assertTrue(port._path_to_image_diff().endswith(
         '/default/ImageDiff.exe'))
예제 #5
0
    def test_driver_cmd_line(self):
        port = self.make_port()
        if not port:
            return
        self.assertTrue(len(port.driver_cmd_line()))

        options = mocktool.MockOptions(
            additional_drt_flag=['--foo=bar', '--foo=baz'])
        port = self.make_port(options=options)
        cmd_line = port.driver_cmd_line()
        self.assertTrue('--foo=bar' in cmd_line)
        self.assertTrue('--foo=baz' in cmd_line)
 def assert_result(self, release_present, debug_present, valid_port_obj):
     # Tests whether we get a valid port object returned when we claim
     # that Image diff is (or isn't) present in the two configs.
     port.get = get_mock_get({'Release': release_present,
                              'Debug': debug_present})
     options = mocktool.MockOptions(configuration=None,
                                    html_directory='/tmp')
     port_obj = rebaseline_chromium_webkit_tests.get_host_port_object(options)
     if valid_port_obj:
         self.assertNotEqual(port_obj, None)
     else:
         self.assertEqual(port_obj, None)
 def make_generator(self, files, tests):
     options = mocktool.MockOptions(configuration=None,
                                    html_directory='/tmp')
     host_port = port.get('test',
                          options,
                          filesystem=port.unit_test_filesystem(files))
     generator = rebaseline_chromium_webkit_tests.HtmlGenerator(
         host_port,
         target_port=None,
         options=options,
         platforms=['test-mac-leopard'],
         rebaselining_tests=tests)
     return generator, host_port
예제 #8
0
    def test_skipped_layout_tests(self):
        mock_options = mocktool.MockOptions()
        port = ChromiumPortTest.TestLinuxPort(options=mock_options)

        fake_test = port._filesystem.join(port.layout_tests_dir(), "fast/js/not-good.js")

        port.test_expectations = lambda: """BUG_TEST SKIP : fast/js/not-good.js = TEXT
LINUX WIN : fast/js/very-good.js = TIMEOUT PASS"""
        port.test_expectations_overrides = lambda: ''
        port.tests = lambda paths: set()
        port.path_exists = lambda test: True

        skipped_tests = port.skipped_layout_tests(extra_test_files=[fake_test, ])
        self.assertTrue("fast/js/not-good.js" in skipped_tests)
예제 #9
0
    def assertOverridesWorked(self, port_name, input_name=None, platform=None):
        # test that we got the right port
        mock_options = mocktool.MockOptions(accelerated_compositing=None,
                                            accelerated_2d_canvas=None,
                                            builder_name='foo',
                                            child_processes=None)
        if input_name and platform:
            port = chromium_gpu.get(platform=platform,
                                    port_name=input_name,
                                    options=mock_options)
        else:
            port = chromium_gpu.get(port_name=port_name, options=mock_options)
        self.assertTrue(port._options.accelerated_compositing)
        self.assertTrue(port._options.accelerated_2d_canvas)
        self.assertEqual(port.default_child_processes(), 1)
        self.assertEqual(port._options.builder_name, 'foo - GPU')

        self.assertTrue(port.name().startswith(port_name))

        # test that it has the right directories in front of the search path.
        paths = port.baseline_search_path()
        self.assertEqual(port._webkit_baseline_path(port_name), paths[0])
        if port_name == 'chromium-gpu-linux':
            self.assertEqual(port._webkit_baseline_path('chromium-gpu-win'),
                             paths[1])
            self.assertEqual(port._webkit_baseline_path('chromium-gpu'),
                             paths[2])
        else:
            self.assertEqual(port._webkit_baseline_path('chromium-gpu'),
                             paths[1])

        # Test that we're limiting to the correct directories.
        # These two tests are picked mostly at random, but we make sure they
        # exist separately from being filtered out by the port.
        files = port.tests(None)

        path = port.abspath_for_test('compositing/checkerboard.html')
        self.assertTrue(port._filesystem.exists(path))
        self.assertTrue(path in files)

        path = port.abspath_for_test('fast/html/keygen.html')
        self.assertTrue(port._filesystem.exists(path))
        self.assertFalse(path in files)
        if port_name.startswith('chromium-gpu-mac'):
            path = port.abspath_for_test('fast/canvas/set-colors.html')
            self.assertTrue(port._filesystem.exists(path))
            self.assertFalse(path in files)
예제 #10
0
    def test_check_sys_deps(self):
        mock_options = mocktool.MockOptions()
        port = ChromiumPortTest.TestLinuxPort(options=mock_options)

        # Success
        port._executive = executive_mock.MockExecutive2(exit_code=0)
        self.assertTrue(port.check_sys_deps(needs_http=False))

        # Failure
        port._executive = executive_mock.MockExecutive2(exit_code=1,
            output='testing output failure')
        self.assertFalse(port.check_sys_deps(needs_http=False))
        self.assertLog([
            'ERROR: System dependencies check failed.\n',
            'ERROR: To override, invoke with --nocheck-sys-deps\n',
            'ERROR: \n',
            'ERROR: testing output failure\n'])
예제 #11
0
 def run_one_thread(self, msg):
     runner = self.MockTestRunner()
     port = None
     options = mocktool.MockOptions(child_processes='1')
     starting_queue = Queue.Queue()
     stopping_queue = Queue.Queue()
     broker = message_broker.MultiThreadedBroker(port, options)
     broker._test_runner = runner
     child_thread = TestThread(starting_queue, stopping_queue)
     broker._workers['worker-0'] = message_broker._WorkerState('worker-0')
     broker._workers['worker-0'].thread = child_thread
     child_thread.start()
     started_msg = starting_queue.get()
     stopping_queue.put(msg)
     res = broker.run_message_loop()
     if msg == 'Timeout':
         child_thread._timeout_queue.put('done')
     child_thread.join(1.0)
     self.assertFalse(child_thread.isAlive())
     return res
예제 #12
0
    def test_diff_image(self):
        class TestPort(ChromiumPortTest.TestLinuxPort):
            def _path_to_image_diff(self):
                return "/path/to/image_diff"

        mock_options = mocktool.MockOptions()
        port = ChromiumPortTest.TestLinuxPort(mock_options)

        # Images are different.
        port._executive = executive_mock.MockExecutive2(exit_code=0)
        self.assertEquals(False, port.diff_image("EXPECTED", "ACTUAL"))

        # Images are the same.
        port._executive = executive_mock.MockExecutive2(exit_code=1)
        self.assertEquals(True, port.diff_image("EXPECTED", "ACTUAL"))

        # There was some error running image_diff.
        port._executive = executive_mock.MockExecutive2(exit_code=2)
        exception_raised = False
        try:
            port.diff_image("EXPECTED", "ACTUAL")
        except ValueError, e:
            exception_raised = True
예제 #13
0
# (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 MockDRT."""

import sys
import unittest2 as unittest

from webkitpy.common import newstringio
from webkitpy.common.system.systemhost_mock import MockSystemHost
from webkitpy.layout_tests.port import mock_drt
from webkitpy.layout_tests.port import port_testcase
from webkitpy.layout_tests.port import test
from webkitpy.layout_tests.port.factory import PortFactory
from webkitpy.tool import mocktool

mock_options = mocktool.MockOptions(configuration='Release')


class MockDRTPortTest(port_testcase.PortTestCase):
    def make_port(self, options=mock_options):
        host = MockSystemHost()
        test.add_unit_tests_to_mock_filesystem(host.filesystem)
        return mock_drt.MockDRTPort(host,
                                    port_name='mock-chromium-mac',
                                    options=options)

    def test_port_name_in_constructor(self):
        self.assertTrue(
            mock_drt.MockDRTPort(MockSystemHost(), port_name='mock-test'))

    def test_check_sys_deps(self):
 def setUp(self):
     self.real_sys_platform = sys.platform
     self.webkit_options = mocktool.MockOptions(pixel_tests=False)
     self.chromium_options = mocktool.MockOptions(pixel_tests=False,
                                                  chromium=True)
# (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 MockDRT."""

import sys
import unittest

from webkitpy.common import newstringio

from webkitpy.layout_tests.port import mock_drt
from webkitpy.layout_tests.port import factory
from webkitpy.layout_tests.port import port_testcase
from webkitpy.layout_tests.port import test

from webkitpy.tool import mocktool
mock_options = mocktool.MockOptions(use_apache=True, configuration='Release')


class MockDRTPortTest(port_testcase.PortTestCase):
    def make_port(self, options=mock_options):
        if sys.platform == 'win32':
            # We use this because the 'win' port doesn't work yet.
            return mock_drt.MockDRTPort(port_name='mock-chromium-win',
                                        options=options)
        return mock_drt.MockDRTPort(options=options)

    def test_default_worker_model(self):
        # only overridding the default test; we don't care about this one.
        pass

    def test_port_name_in_constructor(self):
예제 #16
0
# (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 testing base class for Port implementations."""

import sys
import unittest

# Handle Python < 2.6 where multiprocessing isn't available.
try:
    import multiprocessing
except ImportError:
    multiprocessing = None

from webkitpy.tool import mocktool
mock_options = mocktool.MockOptions(results_directory='layout-test-results',
                                    use_apache=True,
                                    configuration='Release')

# FIXME: This should be used for all ports, not just WebKit Mac. See
# https://bugs.webkit.org/show_bug.cgi?id=50043 .


class PortTestCase(unittest.TestCase):
    """Tests the WebKit port implementation."""
    def port_maker(self, platform):
        """Override to return the class object of the port to be tested,
        or None if a valid port object cannot be constructed on the specified
        platform."""
        raise NotImplementedError()

    def make_port(self, options=mock_options):