1#!/usr/bin/env python
2# Copyright (C) 2010 Google Inc. All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are
6# met:
7#
8#     * Redistributions of source code must retain the above copyright
9# notice, this list of conditions and the following disclaimer.
10#     * Redistributions in binary form must reproduce the above
11# copyright notice, this list of conditions and the following disclaimer
12# in the documentation and/or other materials provided with the
13# distribution.
14#     * Neither the Google name nor the names of its
15# contributors may be used to endorse or promote products derived from
16# this software without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30"""Dummy Port implementation used for testing."""
31
32import os
33import time
34
35import base
36
37
38class TestPort(base.Port):
39    """Test implementation of the Port interface."""
40
41    def __init__(self, port_name=None, options=None):
42        base.Port.__init__(self, port_name, options)
43
44    def base_platforms(self):
45        return ('test',)
46
47    def baseline_path(self):
48        curdir = os.path.abspath(__file__)
49        self.topdir = curdir[0:curdir.index("WebKitTools")]
50        return os.path.join(self.topdir, 'LayoutTests', 'platform', 'test')
51
52    def baseline_search_path(self):
53        return [self.baseline_path()]
54
55    def check_sys_deps(self):
56        return True
57
58    def diff_image(self, actual_filename, expected_filename, diff_filename):
59        return False
60
61    def compare_text(self, actual_text, expected_text):
62        return False
63
64    def diff_text(self, actual_text, expected_text,
65                  actual_filename, expected_filename):
66        return ''
67
68    def name(self):
69        return self._name
70
71    def num_cores(self):
72        return int(os.popen2("sysctl -n hw.ncpu")[1].read())
73
74    def options(self):
75        return self._options
76
77    def results_directory(self):
78        return '/tmp' + self._options.results_directory
79
80    def setup_test_run(self):
81        pass
82
83    def show_results_html_file(self, filename):
84        pass
85
86    def start_driver(self, image_path, options):
87        return TestDriver(image_path, options, self)
88
89    def start_http_server(self):
90        pass
91
92    def start_websocket_server(self):
93        pass
94
95    def start_helper(self):
96        pass
97
98    def stop_http_server(self):
99        pass
100
101    def stop_websocket_server(self):
102        pass
103
104    def stop_helper(self):
105        pass
106
107    def test_expectations(self):
108        return ''
109
110    def test_base_platform_names(self):
111        return ('test',)
112
113    def test_platform_name(self):
114        return 'test'
115
116    def test_platform_names(self):
117        return self.test_base_platform_names()
118
119    def version():
120        return ''
121
122    def wdiff_text(self, actual_filename, expected_filename):
123        return ''
124
125
126class TestDriver(base.Driver):
127    """Test/Dummy implementation of the DumpRenderTree interface."""
128
129    def __init__(self, image_path, test_driver_options, port):
130        self._driver_options = test_driver_options
131        self._image_path = image_path
132        self._port = port
133
134    def poll(self):
135        return True
136
137    def returncode(self):
138        return 0
139
140    def run_test(self, uri, timeoutms, image_hash):
141        return (False, False, image_hash, '', None)
142
143    def stop(self):
144        pass
145