Index: tests/gclient_test.py |
diff --git a/tests/gclient_test.py b/tests/gclient_test.py |
index 73353dbc51c1dca0c604515c39d3f19f29368016..b758718cccb1d730b6c0a364cccee460dc827f10 100755 |
--- a/tests/gclient_test.py |
+++ b/tests/gclient_test.py |
@@ -9,6 +9,7 @@ See gclient_smoketest.py for integration tests. |
""" |
import Queue |
+import copy |
import logging |
import os |
import sys |
@@ -475,8 +476,85 @@ class GclientTest(trial_dir.TestCase): |
], |
sorted(self._get_processed())) |
+ def testUpdateWithOsDeps(self): |
+ """Verifies that complicated deps_os constructs result in the |
+ correct data also with multple operating systems. Also see |
+ testDepsOsOverrideDepsInDepsFile.""" |
+ |
+ test_data = [ |
+ # Tuples of deps, deps_os, os_list and expected_deps. |
+ ( |
+ # OS doesn't need module. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'foo': None } }, |
+ ['os1'], |
+ {'foo': None} |
+ ), |
+ ( |
+ # OS wants a different version of module. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'foo': 'os1_foo'} }, |
+ ['os1'], |
+ {'foo': 'os1_foo'} |
+ ), |
+ ( |
+ # OS with no overrides at all. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'foo': None } }, |
+ ['os2'], |
+ {'foo': 'default_foo'} |
+ ), |
+ ( |
+ # One OS doesn't need module, one OS wants the default. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'foo': None }, |
+ 'os2': {}}, |
+ ['os1', 'os2'], |
+ {'foo': 'default_foo'} |
+ ), |
+ ( |
+ # One OS doesn't need module, another OS wants a special version. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'foo': None }, |
+ 'os2': { 'foo': 'os2_foo'}}, |
+ ['os1', 'os2'], |
+ {'foo': 'os2_foo'} |
+ ), |
+ ( |
+ # One OS wants to add a module. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'bar': 'os1_bar' }}, |
+ ['os1'], |
+ {'foo': 'default_foo', |
+ 'bar': 'os1_bar'} |
+ ), |
+ ( |
+ # One OS wants to add a module. One doesn't care. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'bar': 'os1_bar' }}, |
+ ['os1', 'os2'], |
+ {'foo': 'default_foo', |
+ 'bar': 'os1_bar'} |
+ ), |
+ ( |
+ # Two OSes want to add a module with the same definition. |
+ {'foo': 'default_foo'}, |
+ {'os1': { 'bar': 'os12_bar' }, |
+ 'os2': { 'bar': 'os12_bar' }}, |
+ ['os1', 'os2'], |
+ {'foo': 'default_foo', |
+ 'bar': 'os12_bar'} |
+ ), |
+ ] |
+ for deps, deps_os, target_os_list, expected_deps in test_data: |
+ orig_deps = copy.deepcopy(deps) |
+ result = gclient.Dependency.MergeWithOsDeps(deps, deps_os, target_os_list) |
+ self.assertEqual(result, expected_deps) |
+ self.assertEqual(deps, orig_deps) |
+ |
def testDepsOsOverrideDepsInDepsFile(self): |
- """Verifies that a 'deps_os' path can override a 'deps' path. |
+ """Verifies that a 'deps_os' path can override a 'deps' path. Also |
+ see testUpdateWithOsDeps above. |
""" |
write( |
@@ -495,7 +573,8 @@ class GclientTest(trial_dir.TestCase): |
'deps_os = {\n' |
' "unix": { "foo/unix": "/unix",' |
' "foo/src": "/src_unix"},\n' |
- ' "baz": { "foo/baz": "/baz", },\n' |
+ ' "baz": { "foo/baz": "/baz",\n' |
+ ' "foo/src": None},\n' |
' "jaz": { "foo/jaz": "/jaz", },\n' |
'}') |