Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: tools/mb/mb_unittest.py

Issue 1338123002: Make MB clobber build directories when switching between GYP and GN. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« tools/mb/mb.py ('K') | « tools/mb/mb.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/mb/mb_unittest.py
diff --git a/tools/mb/mb_unittest.py b/tools/mb/mb_unittest.py
index 942defb9f98cc8ca6fdb03d726d0e846f2e15832..e762b8d206d5c20a517b5c44463250935978c7fc 100755
--- a/tools/mb/mb_unittest.py
+++ b/tools/mb/mb_unittest.py
@@ -25,6 +25,7 @@ class FakeMBW(mb.MetaBuildWrapper):
self.platform = 'linux2'
self.chromium_src_dir = '/fake_src'
self.default_config = '/fake_src/tools/mb/mb_config.pyl'
+ self.rmdirs = []
def ExpandUser(self, path):
return '$HOME/%s' % path
@@ -33,7 +34,7 @@ class FakeMBW(mb.MetaBuildWrapper):
return self.files.get(path) is not None
def MaybeMakeDirectory(self, path):
- pass
+ self.files[path] = True
def ReadFile(self, path):
return self.files[path]
@@ -64,6 +65,12 @@ class FakeMBW(mb.MetaBuildWrapper):
def RemoveFile(self, path):
del self.files[path]
+ def RemoveDirectory(self, path):
+ self.rmdirs.append(path)
+ files_to_delete = [f for f in self.files if f.startswith(path)]
+ for f in files_to_delete:
+ self.files[f] = None
+
class FakeFile(object):
def __init__(self, files):
@@ -84,6 +91,7 @@ TEST_CONFIG = """\
'configs': {
'gyp_rel_bot': ['gyp', 'rel', 'goma'],
'gn_debug': ['gn', 'debug'],
+ 'gyp_debug': ['gyp', 'debug'],
'gn_rel_bot': ['gn', 'rel', 'goma'],
'private': ['gyp', 'rel', 'fake_feature1'],
'unsupported': ['gn', 'fake_feature2'],
@@ -92,6 +100,7 @@ TEST_CONFIG = """\
'fake_master': {
'fake_builder': 'gyp_rel_bot',
'fake_gn_builder': 'gn_rel_bot',
+ 'fake_gyp_builder': 'gyp_debug',
},
},
'mixins': {
@@ -116,6 +125,7 @@ TEST_CONFIG = """\
},
'debug': {
'gn_args': 'is_debug=true',
+ 'gyp_config': 'Debug',
},
},
'private_configs': ['private'],
@@ -146,6 +156,37 @@ class UnitTest(unittest.TestCase):
self.assertEqual(mbw.err, err)
return mbw
+ def test_clobber(self):
+ files = {
+ '/fake_src/out/Debug': None,
+ '/fake_src/out/Debug/mb_type': None,
+ }
+ mbw = self.fake_mbw(files)
+
+ # The first time we run this, the build dir doesn't exist, so no clobber.
+ self.check(['gen', '-c', 'gn_debug', '//out/Debug'], mbw=mbw, ret=0)
+ self.assertEqual(mbw.rmdirs, [])
+ self.assertTrue(mbw.files['/fake_src/out/Debug/mb_type'], 'gn')
+
+ # The second time we run this, the build dir exists and matches, so no
+ # clobber.
+ self.check(['gen', '-c', 'gn_debug', '//out/Debug'], mbw=mbw, ret=0)
+ self.assertEqual(mbw.rmdirs, [])
+ self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gn')
+
+ # Now we switch build types; this should result in a clobber.
+ self.check(['gen', '-c', 'gyp_debug', '//out/Debug'], mbw=mbw, ret=0)
+ self.assertEqual(mbw.rmdirs, ['/fake_src/out/Debug'])
+ self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gyp')
+
+ # Now we delete mb_type; this checks the case where the build dir
+ # exists but wasn't populated by mb; this should also result in a clobber.
+ del mbw.files['/fake_src/out/Debug/mb_type']
+ self.check(['gen', '-c', 'gyp_debug', '//out/Debug'], mbw=mbw, ret=0)
+ self.assertEqual(mbw.rmdirs,
+ ['/fake_src/out/Debug', '/fake_src/out/Debug'])
+ self.assertEqual(mbw.files['/fake_src/out/Debug/mb_type'], 'gyp')
+
def test_gn_analyze(self):
files = {'/tmp/in.json': """{\
"files": ["foo/foo_unittest.cc"],
« tools/mb/mb.py ('K') | « tools/mb/mb.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698