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

Unified Diff: tools/isolate/merge_isolate_test.py

Issue 10019014: Convert isolate.py to exclusively use .isolate files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Do not read as binary Created 8 years, 8 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
« no previous file with comments | « tools/isolate/merge_isolate.py ('k') | tools/isolate/trace_inputs.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/isolate/merge_isolate_test.py
diff --git a/tools/isolate/merge_isolate_test.py b/tools/isolate/merge_isolate_test.py
index bf82492e1b9b4206f108b2cdf4e987f40cedfc79..e110a747ad614a03e72e899d1e9c91c4212f2816 100755
--- a/tools/isolate/merge_isolate_test.py
+++ b/tools/isolate/merge_isolate_test.py
@@ -6,182 +6,325 @@
import unittest
import merge_isolate
+# Create shortcuts.
+from merge_isolate import KEY_TRACKED, KEY_UNTRACKED
class MergeGyp(unittest.TestCase):
def test_unknown_key(self):
try:
- merge_isolate.process_variables(None, {'foo': [],})
+ merge_isolate.verify_variables({'foo': [],})
self.fail()
except AssertionError:
pass
def test_unknown_var(self):
try:
- merge_isolate.process_variables(None, {'variables': {'foo': [],}})
+ merge_isolate.verify_condition({'variables': {'foo': [],}})
self.fail()
except AssertionError:
pass
- def test_parse_gyp_dict_empty(self):
- f, d, o = merge_isolate.parse_gyp_dict({})
- self.assertEquals({}, f)
- self.assertEquals({}, d)
- self.assertEquals(set(), o)
+ def test_union(self):
+ value1 = {
+ 'a': set(['A']),
+ 'b': ['B', 'C'],
+ 'c': 'C',
+ }
+ value2 = {
+ 'a': set(['B', 'C']),
+ 'b': [],
+ 'd': set(),
+ }
+ expected = {
+ 'a': set(['A', 'B', 'C']),
+ 'b': ['B', 'C'],
+ 'c': 'C',
+ 'd': set(),
+ }
+ self.assertEquals(expected, merge_isolate.union(value1, value2))
+
+ def test_eval_content(self):
+ try:
+ # Intrinsics are not available.
+ merge_isolate.eval_content('map(str, [1, 2])')
+ self.fail()
+ except NameError:
+ pass
- def test_parse_gyp_dict(self):
+ def test_load_gyp_empty(self):
+ self.assertEquals({}, merge_isolate.load_gyp({}).flatten())
+
+ def test_load_gyp(self):
value = {
'variables': {
- 'isolate_files': [
- 'a',
- ],
- 'isolate_dirs': [
- 'b',
- ],
+ KEY_TRACKED: ['a'],
+ KEY_UNTRACKED: ['b'],
},
'conditions': [
['OS=="atari"', {
'variables': {
- 'isolate_files': [
- 'c',
- 'x',
- ],
- 'isolate_dirs': [
- 'd',
- ],
+ KEY_TRACKED: ['c', 'x'],
+ KEY_UNTRACKED: ['d'],
+ 'command': ['echo', 'Hello World'],
+ 'read_only': True,
},
}, { # else
'variables': {
- 'isolate_files': [
- 'e',
- 'x',
- ],
- 'isolate_dirs': [
- 'f',
- ],
+ KEY_TRACKED: ['e', 'x'],
+ KEY_UNTRACKED: ['f'],
+ 'command': ['echo', 'You should get an Atari'],
},
}],
['OS=="amiga"', {
'variables': {
- 'isolate_files': [
- 'g',
- ],
+ KEY_TRACKED: ['g'],
+ 'read_only': False,
},
}],
- ['OS=="inexistent"', {
+ ['OS=="dendy"', {
}],
['OS=="coleco"', {
}, { # else
'variables': {
- 'isolate_dirs': [
- 'h',
- ],
+ KEY_UNTRACKED: ['h'],
+ 'read_only': None,
},
}],
],
}
- expected_files = {
- 'a': set([None]),
- 'c': set(['atari']),
- 'e': set(['!atari']),
- 'g': set(['amiga']),
- 'x': set(['!atari', 'atari']), # potential for reduction
+ expected = {
+ 'amiga': {
+ 'command': ['echo', 'You should get an Atari'],
+ KEY_TRACKED: ['a', 'e', 'g', 'x'],
+ KEY_UNTRACKED: ['b', 'f', 'h'],
+ 'read_only': False,
+ },
+ 'atari': {
+ 'command': ['echo', 'Hello World'],
+ KEY_TRACKED: ['a', 'c', 'x'],
+ KEY_UNTRACKED: ['b', 'd', 'h'],
+ 'read_only': True,
+ },
+ 'coleco': {
+ 'command': ['echo', 'You should get an Atari'],
+ KEY_TRACKED: ['a', 'e', 'x'],
+ KEY_UNTRACKED: ['b', 'f'],
+ },
+ 'dendy': {
+ 'command': ['echo', 'You should get an Atari'],
+ KEY_TRACKED: ['a', 'e', 'x'],
+ KEY_UNTRACKED: ['b', 'f', 'h'],
+ },
}
- expected_dirs = {
- 'b': set([None]),
- 'd': set(['atari']),
- 'f': set(['!atari']),
- 'h': set(['!coleco']),
+ self.assertEquals(expected, merge_isolate.load_gyp(value).flatten())
+
+ def test_load_gyp_duplicate_command(self):
+ value = {
+ 'variables': {
+ 'command': ['rm', '-rf', '/'],
+ },
+ 'conditions': [
+ ['OS=="atari"', {
+ 'variables': {
+ 'command': ['echo', 'Hello World'],
+ },
+ }],
+ ],
}
- # coleco is included even if only negative.
- expected_oses = set(['atari', 'amiga', 'coleco'])
- actual_files, actual_dirs, actual_oses = merge_isolate.parse_gyp_dict(value)
- self.assertEquals(expected_files, actual_files)
- self.assertEquals(expected_dirs, actual_dirs)
- self.assertEquals(expected_oses, actual_oses)
+ try:
+ merge_isolate.load_gyp(value)
+ self.fail()
+ except AssertionError:
+ pass
- def test_reduce_inputs(self):
- value_files = {
- 'a': set([None]),
- 'c': set(['atari']),
- 'e': set(['!atari']),
- 'g': set(['amiga']),
- 'x': set(['!atari', 'atari']),
+ def test_load_gyp_no_condition(self):
+ value = {
+ 'variables': {
+ KEY_TRACKED: ['a'],
+ KEY_UNTRACKED: ['b'],
+ },
}
- value_dirs = {
- 'b': set([None]),
- 'd': set(['atari']),
- 'f': set(['!atari']),
- 'h': set(['!coleco']),
+ expected = {
+ KEY_TRACKED: ['a'],
+ KEY_UNTRACKED: ['b'],
}
- value_oses = set(['atari', 'amiga', 'coleco'])
- expected_files = {
- 'a': set([None]),
- 'c': set(['atari']),
- 'e': set(['!atari']),
- 'g': set(['amiga']),
- 'x': set([None]), # Reduced.
+ actual = merge_isolate.load_gyp(value)
+ # Flattening the whole config will discard 'None'.
+ self.assertEquals({}, actual.flatten())
+ self.assertEquals([None], actual.per_os.keys())
+ # But the 'None' value is still available as a backup.
+ self.assertEquals(expected, actual.per_os[None].flatten())
+
+ def test_invert_map(self):
+ value = {
+ 'amiga': {
+ 'command': ['echo', 'You should get an Atari'],
+ KEY_TRACKED: ['a', 'e', 'g', 'x'],
+ KEY_UNTRACKED: ['b', 'f', 'h'],
+ 'read_only': False,
+ },
+ 'atari': {
+ 'command': ['echo', 'Hello World'],
+ KEY_TRACKED: ['a', 'c', 'x'],
+ KEY_UNTRACKED: ['b', 'd', 'h'],
+ 'read_only': True,
+ },
+ 'coleco': {
+ 'command': ['echo', 'You should get an Atari'],
+ KEY_TRACKED: ['a', 'e', 'x'],
+ KEY_UNTRACKED: ['b', 'f'],
+ },
+ 'dendy': {
+ 'command': ['echo', 'You should get an Atari'],
+ KEY_TRACKED: ['a', 'e', 'x'],
+ KEY_UNTRACKED: ['b', 'f', 'h'],
+ },
}
- expected_dirs = {
- 'b': set([None]),
- 'd': set(['atari']),
- 'f': set(['!atari']),
- 'h': set(['!coleco']),
+ expected_values = {
+ 'command': {
+ ('echo', 'Hello World'): set(['atari']),
+ ('echo', 'You should get an Atari'): set(['amiga', 'coleco', 'dendy']),
+ },
+ KEY_TRACKED: {
+ 'a': set(['amiga', 'atari', 'coleco', 'dendy']),
+ 'c': set(['atari']),
+ 'e': set(['amiga', 'coleco', 'dendy']),
+ 'g': set(['amiga']),
+ 'x': set(['amiga', 'atari', 'coleco', 'dendy']),
+ },
+ KEY_UNTRACKED: {
+ 'b': set(['amiga', 'atari', 'coleco', 'dendy']),
+ 'd': set(['atari']),
+ 'f': set(['amiga', 'coleco', 'dendy']),
+ 'h': set(['amiga', 'atari', 'dendy']),
+ },
+ 'read_only': {
+ None: set(['coleco', 'dendy']),
+ False: set(['amiga']),
+ True: set(['atari']),
+ },
}
- actual_files, actual_dirs = merge_isolate.reduce_inputs(
- value_files, value_dirs, value_oses)
- self.assertEquals(expected_files, actual_files)
- self.assertEquals(expected_dirs, actual_dirs)
-
- def test_convert_to_gyp(self):
- files = {
- 'a': set([None]),
- 'x': set([None]),
-
- 'g': set(['amiga']),
+ expected_oses = set(['amiga', 'atari', 'coleco', 'dendy'])
+ actual_values, actual_oses = merge_isolate.invert_map(value)
+ self.assertEquals(expected_values, actual_values)
+ self.assertEquals(expected_oses, actual_oses)
- 'c': set(['atari']),
- 'e': set(['!atari']),
+ def test_reduce_inputs(self):
+ values = {
+ 'command': {
+ ('echo', 'Hello World'): set(['atari']),
+ ('echo', 'You should get an Atari'): set(['amiga', 'coleco', 'dendy']),
+ },
+ KEY_TRACKED: {
+ 'a': set(['amiga', 'atari', 'coleco', 'dendy']),
+ 'c': set(['atari']),
+ 'e': set(['amiga', 'coleco', 'dendy']),
+ 'g': set(['amiga']),
+ 'x': set(['amiga', 'atari', 'coleco', 'dendy']),
+ },
+ KEY_UNTRACKED: {
+ 'b': set(['amiga', 'atari', 'coleco', 'dendy']),
+ 'd': set(['atari']),
+ 'f': set(['amiga', 'coleco', 'dendy']),
+ 'h': set(['amiga', 'atari', 'dendy']),
+ },
+ 'read_only': {
+ None: set(['coleco', 'dendy']),
+ False: set(['amiga']),
+ True: set(['atari']),
+ },
}
- dirs = {
- 'b': set([None]),
-
- 'd': set(['atari']),
- 'f': set(['!atari']),
+ oses = set(['amiga', 'atari', 'coleco', 'dendy'])
+ expected_values = {
+ 'command': {
+ ('echo', 'Hello World'): set(['atari']),
+ ('echo', 'You should get an Atari'): set(['!atari']),
+ },
+ KEY_TRACKED: {
+ 'a': set([None]),
+ 'c': set(['atari']),
+ 'e': set(['!atari']),
+ 'g': set(['amiga']),
+ 'x': set([None]),
+ },
+ KEY_UNTRACKED: {
+ 'b': set([None]),
+ 'd': set(['atari']),
+ 'f': set(['!atari']),
+ 'h': set(['!coleco']),
+ },
+ 'read_only': {
+ None: set(['coleco', 'dendy']),
+ False: set(['amiga']),
+ True: set(['atari']),
+ },
+ }
+ actual_values, actual_oses = merge_isolate.reduce_inputs(values, oses)
+ self.assertEquals(expected_values, actual_values)
+ self.assertEquals(oses, actual_oses)
- 'h': set(['!coleco']),
+ def test_convert_map_to_gyp(self):
+ values = {
+ 'command': {
+ ('echo', 'Hello World'): set(['atari']),
+ ('echo', 'You should get an Atari'): set(['!atari']),
+ },
+ KEY_TRACKED: {
+ 'a': set([None]),
+ 'c': set(['atari']),
+ 'e': set(['!atari']),
+ 'g': set(['amiga']),
+ 'x': set([None]),
+ },
+ KEY_UNTRACKED: {
+ 'b': set([None]),
+ 'd': set(['atari']),
+ 'f': set(['!atari']),
+ 'h': set(['!coleco']),
+ },
+ 'read_only': {
+ None: set(['coleco', 'dendy']),
+ False: set(['amiga']),
+ True: set(['atari']),
+ },
}
+ oses = set(['amiga', 'atari', 'coleco', 'dendy'])
expected = {
'variables': {
- 'isolate_dirs': ['b'],
- 'isolate_files': ['a', 'x'],
+ KEY_TRACKED: ['a', 'x'],
+ KEY_UNTRACKED: ['b'],
},
'conditions': [
['OS=="amiga"', {
'variables': {
- 'isolate_files': ['g'],
+ KEY_TRACKED: ['g'],
+ 'read_only': False,
},
}],
['OS=="atari"', {
'variables': {
- 'isolate_dirs': ['d'],
- 'isolate_files': ['c'],
+ 'command': ['echo', 'Hello World'],
+ KEY_TRACKED: ['c'],
+ KEY_UNTRACKED: ['d'],
+ 'read_only': True,
},
}, {
'variables': {
- 'isolate_dirs': ['f'],
- 'isolate_files': ['e'],
+ 'command': ['echo', 'You should get an Atari'],
+ KEY_TRACKED: ['e'],
+ KEY_UNTRACKED: ['f'],
},
}],
['OS=="coleco"', {
}, {
'variables': {
- 'isolate_dirs': ['h'],
+ KEY_UNTRACKED: ['h'],
},
}],
],
}
- self.assertEquals(expected, merge_isolate.convert_to_gyp(files, dirs))
+ self.assertEquals(expected, merge_isolate.convert_map_to_gyp(values, oses))
if __name__ == '__main__':
« no previous file with comments | « tools/isolate/merge_isolate.py ('k') | tools/isolate/trace_inputs.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698