| # |
| # Copyright (C) 2026 Agilent Technologies, Inc. |
| # |
| # SPDX-License-Identifier: GPL-2.0-only |
| # |
| |
| import os |
| import subprocess |
| import sys |
| import unittest |
| |
| |
| class FetchImportTests(unittest.TestCase): |
| def run_python(self, code): |
| env = os.environ.copy() |
| libdir = os.path.realpath(os.path.join(os.path.dirname(__file__), "..", "..")) |
| env["PYTHONPATH"] = os.pathsep.join(filter(None, (libdir, env.get("PYTHONPATH")))) |
| result = subprocess.run( |
| [sys.executable, "-c", code], |
| env=env, |
| stdout=subprocess.PIPE, |
| stderr=subprocess.PIPE, |
| text=True, |
| ) |
| self.assertEqual(result.returncode, 0, result.stderr) |
| |
| def test_fetch_is_lazy(self): |
| self.run_python(""" |
| import sys |
| import bb |
| |
| assert "bb.fetch" not in sys.modules |
| assert "bb.fetch2" not in sys.modules |
| """) |
| |
| def test_fetch_import(self): |
| self.run_python(""" |
| import sys |
| import bb.fetch |
| from bb.fetch import Fetch |
| |
| assert sys.modules["bb.fetch"] is bb.fetch |
| assert Fetch is bb.fetch.Fetch |
| """) |
| |
| def test_fetch2_import_compatibility(self): |
| self.run_python(""" |
| import sys |
| import warnings |
| |
| with warnings.catch_warnings(record=True) as caught: |
| warnings.simplefilter("always") |
| import bb.fetch2 |
| from bb.fetch2 import Fetch |
| |
| assert len(caught) == 1 |
| assert caught[0].category is DeprecationWarning |
| assert str(caught[0].message) == "bb.fetch2 is deprecated; use bb.fetch instead" |
| assert caught[0].filename == "<string>" |
| |
| assert bb.fetch2 is bb.fetch |
| assert sys.modules["bb.fetch2"] is bb.fetch |
| assert Fetch is bb.fetch.Fetch |
| """) |
| |
| def test_fetch2_attribute_access(self): |
| self.run_python(""" |
| import sys |
| import warnings |
| import bb |
| |
| assert "bb.fetch" not in sys.modules |
| assert "bb.fetch2" not in sys.modules |
| |
| with warnings.catch_warnings(record=True) as caught: |
| warnings.simplefilter("always") |
| fetch2 = bb.fetch2 |
| |
| assert len(caught) == 1 |
| assert caught[0].category is DeprecationWarning |
| assert str(caught[0].message) == "bb.fetch2 is deprecated; use bb.fetch instead" |
| |
| assert fetch2 is bb.fetch |
| assert bb.fetch2 is bb.fetch |
| assert sys.modules["bb.fetch2"] is bb.fetch |
| """) |