OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import os | 5 import os |
6 from slave import recipe_api | 6 from slave import recipe_api |
7 | 7 |
8 | 8 |
9 def path_method(api, name, base): | 9 def path_method(api, name, base): |
10 """Returns a shortcut static method which functions like os.path.join but | 10 """Returns a shortcut static method which functions like os.path.join but |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 exists (list): Paths which should exist in the test case. Thes must be paths | 93 exists (list): Paths which should exist in the test case. Thes must be paths |
94 using the [*_ROOT] placeholders. ex. '[BUILD_ROOT]/scripts'. | 94 using the [*_ROOT] placeholders. ex. '[BUILD_ROOT]/scripts'. |
95 """ | 95 """ |
96 | 96 |
97 OK_METHODS = ('abspath', 'basename', 'exists', 'join', 'pardir', | 97 OK_METHODS = ('abspath', 'basename', 'exists', 'join', 'pardir', |
98 'sep', 'split', 'splitext') | 98 'sep', 'split', 'splitext') |
99 | 99 |
100 def __init__(self, **kwargs): | 100 def __init__(self, **kwargs): |
101 super(PathApi, self).__init__(**kwargs) | 101 super(PathApi, self).__init__(**kwargs) |
102 | 102 |
103 if self._mock is None: # pragma: no cover | 103 if not self._test_data.enabled: # pragma: no cover |
104 self._path_mod = os.path | 104 self._path_mod = os.path |
105 # e.g. /b/build/slave/<slavename>/build | 105 # e.g. /b/build/slave/<slavename>/build |
106 self.slave_build = path_method( | 106 self.slave_build = path_method( |
107 self, 'slave_build', self.abspath(os.getcwd())) | 107 self, 'slave_build', self.abspath(os.getcwd())) |
108 | 108 |
109 # e.g. /b | 109 # e.g. /b |
110 r = self.abspath(self.join(self.slave_build(), *([self.pardir]*4))) | 110 r = self.abspath(self.join(self.slave_build(), *([self.pardir]*4))) |
111 for token in ('build_internal', 'build', 'depot_tools'): | 111 for token in ('build_internal', 'build', 'depot_tools'): |
112 # e.g. /b/{token} | 112 # e.g. /b/{token} |
113 setattr(self, token, path_method(self, token, self.join(r, token))) | 113 setattr(self, token, path_method(self, token, self.join(r, token))) |
114 self.root = path_method(self, 'root', r) | 114 self.root = path_method(self, 'root', r) |
115 else: | 115 else: |
116 self._path_mod = mock_path(self.m, self._mock.get('exists', [])) | 116 self._path_mod = mock_path(self.m, self._test_data.get('exists', [])) |
117 self.slave_build = path_method(self, 'slave_build', '[SLAVE_BUILD_ROOT]') | 117 self.slave_build = path_method(self, 'slave_build', '[SLAVE_BUILD_ROOT]') |
118 self.build_internal = path_method( | 118 self.build_internal = path_method( |
119 self, 'build_internal', '[BUILD_INTERNAL_ROOT]') | 119 self, 'build_internal', '[BUILD_INTERNAL_ROOT]') |
120 self.build = path_method(self, 'build', '[BUILD_ROOT]') | 120 self.build = path_method(self, 'build', '[BUILD_ROOT]') |
121 self.depot_tools = path_method(self, 'depot_tools', '[DEPOT_TOOLS_ROOT]') | 121 self.depot_tools = path_method(self, 'depot_tools', '[DEPOT_TOOLS_ROOT]') |
122 self.root = path_method(self, 'root', '[ROOT]') | 122 self.root = path_method(self, 'root', '[ROOT]') |
123 | 123 |
124 # Because it only makes sense to call self.checkout() after | 124 # Because it only makes sense to call self.checkout() after |
125 # a checkout has been defined, make calls to self.checkout() | 125 # a checkout has been defined, make calls to self.checkout() |
126 # explode with a helpful message until that point. | 126 # explode with a helpful message until that point. |
(...skipping 10 matching lines...) Expand all Loading... |
137 | 137 |
138 The checked out source is often a forest of trees possibly inside other | 138 The checked out source is often a forest of trees possibly inside other |
139 trees. One of these trees' root is designated as special/primary and | 139 trees. One of these trees' root is designated as special/primary and |
140 this method builds paths inside of it. For Chrome, that would be 'src'. | 140 this method builds paths inside of it. For Chrome, that would be 'src'. |
141 This defaults to the special root of the first checkout. | 141 This defaults to the special root of the first checkout. |
142 """ | 142 """ |
143 return self._checkout(*args, **kwargs) | 143 return self._checkout(*args, **kwargs) |
144 | 144 |
145 def mock_add_paths(self, path): | 145 def mock_add_paths(self, path): |
146 """For testing purposes, assert that |path| exists.""" | 146 """For testing purposes, assert that |path| exists.""" |
147 if self._mock is not None: | 147 if self._test_data.enabled: |
148 self._path_mod.mock_add_paths(path) | 148 self._path_mod.mock_add_paths(path) |
149 | 149 |
150 def add_checkout(self, checkout, *pieces): | 150 def add_checkout(self, checkout, *pieces): |
151 """Assert that we have a source directory with this name. """ | 151 """Assert that we have a source directory with this name. """ |
152 checkout = self.join(checkout, *pieces) | 152 checkout = self.join(checkout, *pieces) |
153 self.assert_absolute(checkout) | 153 self.assert_absolute(checkout) |
154 if not self._checkouts: | 154 if not self._checkouts: |
155 self._checkout = path_method(self, 'checkout', checkout) | 155 self._checkout = path_method(self, 'checkout', checkout) |
156 self._checkouts.append(checkout) | 156 self._checkouts.append(checkout) |
157 | 157 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 if name in self.OK_METHODS: | 190 if name in self.OK_METHODS: |
191 return getattr(self._path_mod, name) | 191 return getattr(self._path_mod, name) |
192 raise AttributeError("'%s' object has no attribute '%s'" % | 192 raise AttributeError("'%s' object has no attribute '%s'" % |
193 (self._path_mod, name)) # pragma: no cover | 193 (self._path_mod, name)) # pragma: no cover |
194 | 194 |
195 def __dir__(self): # pragma: no cover | 195 def __dir__(self): # pragma: no cover |
196 # Used for helping out show_me_the_modules.py | 196 # Used for helping out show_me_the_modules.py |
197 return self.__dict__.keys() + list(self.OK_METHODS) | 197 return self.__dict__.keys() + list(self.OK_METHODS) |
198 | 198 |
199 # TODO(iannucci): Custom paths? | 199 # TODO(iannucci): Custom paths? |
OLD | NEW |