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

Unified Diff: recipe_engine/unittests/step_runner_test.py

Issue 2933473002: [context] Split "env" values and prefixes. (Closed)
Patch Set: plumb pathsep through so we don't assume OS Created 3 years, 6 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
Index: recipe_engine/unittests/step_runner_test.py
diff --git a/recipe_engine/unittests/step_runner_test.py b/recipe_engine/unittests/step_runner_test.py
index 152b39efa80e34c460698fb83afdfeefa4bf3484..299563162ad213df42742c1882a2705544410be2 100755
--- a/recipe_engine/unittests/step_runner_test.py
+++ b/recipe_engine/unittests/step_runner_test.py
@@ -3,6 +3,7 @@
# Use of this source code is governed under the Apache License, Version 2.0
# that can be found in the LICENSE file.
+import os
import unittest
import test_env
@@ -53,5 +54,77 @@ class TestLinebuf(unittest.TestCase):
self.assertEqual("", lb.extra.getvalue())
+class TestMergeEnvs(unittest.TestCase):
+ def setUp(self):
+ self.original = {
+ 'FOO': 'foo',
+ }
+
+ @staticmethod
+ def pathjoin(*parts):
+ return os.pathsep.join(parts)
+
+ def _merge(self, overrides, prefixes):
+ return step_runner._merge_envs(self.original, overrides, prefixes,
+ os.pathsep)
+
+ def test_nothing_to_do(self):
+ self.assertEqual(
+ self._merge({}, {}),
+ self.original)
+
+ def test_merge_with_empty_path_tuple(self):
+ self.assertEqual(self._merge(
+ {'FOO': ''}, {'FOO': ()}),
+ {'FOO': ''})
+
+ def test_merge_with_path_tuple(self):
+ self.assertEqual(self._merge(
+ {}, {'BAR': ('bar', 'baz')}),
+ {'FOO': 'foo', 'BAR': self.pathjoin('bar', 'baz')})
+
+ def test_merge_with_path_tuple_and_orig_env(self):
+ self.assertEqual(self._merge(
+ {}, {'FOO': ('bar', 'baz')}),
+ {'FOO': self.pathjoin('bar', 'baz', 'foo')})
+
+ def test_merge_with_path_tuple_and_env(self):
+ self.assertEqual(self._merge(
+ {'FOO': 'override'}, {'FOO': ('bar', 'baz')}),
+ {'FOO': self.pathjoin('bar', 'baz', 'override')})
+
+ def test_merge_with_path_tuple_and_env_subst(self):
+ self.assertEqual(self._merge(
+ {'FOO': 'a-%(FOO)s-b'}, {'FOO': ('bar', 'baz')}),
+ {'FOO': self.pathjoin('bar', 'baz', 'a-foo-b')})
+
+ def test_merge_with_path_tuple_and_env_empty_subst(self):
+ self.original['FOO'] = ''
+ self.assertEqual(self._merge(
+ {'FOO': '%(FOO)s'}, {'FOO': ('bar', 'baz')}),
+ {'FOO': self.pathjoin('bar', 'baz')})
+
+ def test_merge_with_path_tuple_and_env_clear(self):
+ self.assertEqual(self._merge(
+ {'FOO': None}, {'FOO': ('bar', 'baz')}),
+ {'FOO': self.pathjoin('bar', 'baz')})
+
+ def test_merge_with_subst(self):
+ self.assertEqual(self._merge(
+ {'FOO': 'a-%(FOO)s-b'}, {}),
+ {'FOO': 'a-foo-b'})
+
+ def test_merge_with_empty_subst(self):
+ self.original['FOO'] = ''
+ self.assertEqual(self._merge(
+ {'FOO': '%(FOO)s'}, {}),
+ {'FOO': ''})
+
+ def test_merge_with_clear(self):
+ self.assertEqual(self._merge(
+ {'FOO': None}, {}),
+ {})
+
+
if __name__ == '__main__':
unittest.main()

Powered by Google App Engine
This is Rietveld 408576698