OLD | NEW |
1 # Copyright (C) 2011 Google Inc. All rights reserved. | 1 # Copyright (C) 2011 Google Inc. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
5 # met: | 5 # met: |
6 # | 6 # |
7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
11 # in the documentation and/or other materials provided with the | 11 # in the documentation and/or other materials provided with the |
12 # distribution. | 12 # distribution. |
13 # * Neither the name of Google Inc. nor the names of its | 13 # * Neither the name of Google Inc. nor the names of its |
14 # contributors may be used to endorse or promote products derived from | 14 # contributors may be used to endorse or promote products derived from |
15 # this software without specific prior written permission. | 15 # this software without specific prior written permission. |
16 # | 16 # |
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 | 28 |
29 from webkitpy.common.checkout.checkout_mock import MockCheckout | |
30 from webkitpy.common.checkout.scm.scm_mock import MockSCM | 29 from webkitpy.common.checkout.scm.scm_mock import MockSCM |
31 from webkitpy.common.net.buildbot.buildbot_mock import MockBuildBot | 30 from webkitpy.common.net.buildbot.buildbot_mock import MockBuildBot |
32 from webkitpy.common.net.web_mock import MockWeb | 31 from webkitpy.common.net.web_mock import MockWeb |
33 from webkitpy.common.system.systemhost_mock import MockSystemHost | 32 from webkitpy.common.system.systemhost_mock import MockSystemHost |
34 | 33 |
35 # New-style ports need to move down into webkitpy.common. | 34 # New-style ports need to move down into webkitpy.common. |
36 from webkitpy.layout_tests.port.factory import PortFactory | 35 from webkitpy.layout_tests.port.factory import PortFactory |
37 from webkitpy.layout_tests.port.test import add_unit_tests_to_mock_filesystem | 36 from webkitpy.layout_tests.port.test import add_unit_tests_to_mock_filesystem |
38 | 37 |
39 | 38 |
40 class MockHost(MockSystemHost): | 39 class MockHost(MockSystemHost): |
41 def __init__(self, log_executive=False, executive_throws_when_run=None, init
ialize_scm_by_default=True, web=None): | 40 def __init__(self, log_executive=False, executive_throws_when_run=None, init
ialize_scm_by_default=True, web=None): |
42 MockSystemHost.__init__(self, log_executive, executive_throws_when_run) | 41 MockSystemHost.__init__(self, log_executive, executive_throws_when_run) |
43 add_unit_tests_to_mock_filesystem(self.filesystem) | 42 add_unit_tests_to_mock_filesystem(self.filesystem) |
44 self.web = web or MockWeb() | 43 self.web = web or MockWeb() |
45 | 44 |
46 self._checkout = MockCheckout() | |
47 self._scm = None | 45 self._scm = None |
48 # FIXME: we should never initialize the SCM by default, since the real | 46 # FIXME: we should never initialize the SCM by default, since the real |
49 # object doesn't either. This has caused at least one bug (see bug 89498
). | 47 # object doesn't either. This has caused at least one bug (see bug 89498
). |
50 if initialize_scm_by_default: | 48 if initialize_scm_by_default: |
51 self.initialize_scm() | 49 self.initialize_scm() |
52 self.buildbot = MockBuildBot() | 50 self.buildbot = MockBuildBot() |
53 self._chromium_buildbot = MockBuildBot() | 51 self._chromium_buildbot = MockBuildBot() |
54 | 52 |
55 # Note: We're using a real PortFactory here. Tests which don't wish to
depend | 53 # Note: We're using a real PortFactory here. Tests which don't wish to
depend |
56 # on the list of known ports should override this with a MockPortFactory
. | 54 # on the list of known ports should override this with a MockPortFactory
. |
57 self.port_factory = PortFactory(self) | 55 self.port_factory = PortFactory(self) |
58 | 56 |
59 def initialize_scm(self, patch_directories=None): | 57 def initialize_scm(self, patch_directories=None): |
60 self._scm = MockSCM(filesystem=self.filesystem, executive=self.executive
) | 58 self._scm = MockSCM(filesystem=self.filesystem, executive=self.executive
) |
61 # Various pieces of code (wrongly) call filesystem.chdir(checkout_root). | 59 # Various pieces of code (wrongly) call filesystem.chdir(checkout_root). |
62 # Making the checkout_root exist in the mock filesystem makes that chdir
not raise. | 60 # Making the checkout_root exist in the mock filesystem makes that chdir
not raise. |
63 self.filesystem.maybe_make_directory(self._scm.checkout_root) | 61 self.filesystem.maybe_make_directory(self._scm.checkout_root) |
64 | 62 |
65 def scm(self): | 63 def scm(self): |
66 return self._scm | 64 return self._scm |
67 | 65 |
68 def checkout(self): | 66 def checkout(self): |
69 return self._checkout | 67 return self._checkout |
70 | 68 |
71 def chromium_buildbot(self): | 69 def chromium_buildbot(self): |
72 return self._chromium_buildbot | 70 return self._chromium_buildbot |
OLD | NEW |