summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/tests/utils.py18
-rw-r--r--bitbake/lib/bb/utils.py16
2 files changed, 34 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/utils.py b/bitbake/lib/bb/tests/utils.py
index a7ff33db52..4d5e21b99e 100644
--- a/bitbake/lib/bb/tests/utils.py
+++ b/bitbake/lib/bb/tests/utils.py
@@ -666,3 +666,21 @@ class GetReferencedVars(unittest.TestCase):
666 666
667 layers = [{"SRC_URI"}, {"QT_GIT", "QT_MODULE", "QT_MODULE_BRANCH_PARAM", "QT_GIT_PROTOCOL"}, {"QT_GIT_PROJECT", "QT_MODULE_BRANCH", "BPN"}, {"PN", "SPECIAL_PKGSUFFIX"}] 667 layers = [{"SRC_URI"}, {"QT_GIT", "QT_MODULE", "QT_MODULE_BRANCH_PARAM", "QT_GIT_PROTOCOL"}, {"QT_GIT_PROJECT", "QT_MODULE_BRANCH", "BPN"}, {"PN", "SPECIAL_PKGSUFFIX"}]
668 self.check_referenced("${SRC_URI}", layers) 668 self.check_referenced("${SRC_URI}", layers)
669
670
671class EnvironmentTests(unittest.TestCase):
672 def test_environment(self):
673 os.environ["A"] = "this is A"
674 self.assertIn("A", os.environ)
675 self.assertEqual(os.environ["A"], "this is A")
676 self.assertNotIn("B", os.environ)
677
678 with bb.utils.environment(B="this is B"):
679 self.assertIn("A", os.environ)
680 self.assertEqual(os.environ["A"], "this is A")
681 self.assertIn("B", os.environ)
682 self.assertEqual(os.environ["B"], "this is B")
683
684 self.assertIn("A", os.environ)
685 self.assertEqual(os.environ["A"], "this is A")
686 self.assertNotIn("B", os.environ)
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index e6e82d1118..70634910f7 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -1681,3 +1681,19 @@ def rename(src, dst):
1681 shutil.move(src, dst) 1681 shutil.move(src, dst)
1682 else: 1682 else:
1683 raise err 1683 raise err
1684
1685@contextmanager
1686def environment(**envvars):
1687 """
1688 Context manager to selectively update the environment with the specified mapping.
1689 """
1690 backup = dict(os.environ)
1691 try:
1692 os.environ.update(envvars)
1693 yield
1694 finally:
1695 for var in envvars:
1696 if var in backup:
1697 os.environ[var] = backup[var]
1698 else:
1699 del os.environ[var]