diff options
| author | Theron Luhn <theron@luhn.com> | 2025-08-24 21:38:56 -0700 |
|---|---|---|
| committer | Theron Luhn <theron@luhn.com> | 2025-08-24 21:38:56 -0700 |
| commit | 9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206 (patch) | |
| tree | 7cc971498749043e8db5058313086ecb7964c275 | |
| parent | 832cae47693b4c07a1fa826dce13b9af7a91ebaf (diff) | |
| download | pyramid-9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206.tar.gz pyramid-9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206.tar.bz2 pyramid-9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206.zip | |
Add `get_spec` to `PackageOverrides`
| -rw-r--r-- | src/pyramid/config/assets.py | 6 | ||||
| -rw-r--r-- | tests/test_config/test_assets.py | 26 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/pyramid/config/assets.py b/src/pyramid/config/assets.py index 2838db1e5..3c6a8d360 100644 --- a/src/pyramid/config/assets.py +++ b/src/pyramid/config/assets.py @@ -122,6 +122,12 @@ class PackageOverrides: if o is not None: yield o + def get_spec(self, resource_name): + for source, path in self.filtered_sources(resource_name): + result = source.get_spec(path) + if result is not None: + return result + def get_filename(self, resource_name): for source, path in self.filtered_sources(resource_name): result = source.get_filename(path) diff --git a/tests/test_config/test_assets.py b/tests/test_config/test_assets.py index 5c535ec6c..ea2fff741 100644 --- a/tests/test_config/test_assets.py +++ b/tests/test_config/test_assets.py @@ -638,6 +638,28 @@ class TestPackageOverrides(unittest.TestCase): po.overrides = overrides self.assertEqual(list(po.filtered_sources('whatever')), ['foo']) + def test_get_spec(self): + source = DummyAssetSource(spec='test:foo.pt') + overrides = [DummyOverride(None), DummyOverride((source, ''))] + package = DummyPackage('package') + po = self._makeOne(package) + po.overrides = overrides + result = po.get_spec('whatever') + self.assertEqual(result, 'test:foo.pt') + self.assertEqual(source.resource_name, '') + + def test_get_spec_file_doesnt_exist(self): + source = DummyAssetSource(spec=None) + overrides = [ + DummyOverride(None), + DummyOverride((source, 'wont_exist')), + ] + package = DummyPackage('package') + po = self._makeOne(package) + po.overrides = overrides + self.assertEqual(po.get_spec('whatever'), None) + self.assertEqual(source.resource_name, 'wont_exist') + def test_get_filename(self): source = DummyAssetSource(filename='foo.pt') overrides = [DummyOverride(None), DummyOverride((source, ''))] @@ -1053,6 +1075,10 @@ class DummyAssetSource: def __init__(self, **kw): self.kw = kw + def get_spec(self, resource_name): + self.resource_name = resource_name + return self.kw['spec'] + def get_filename(self, resource_name): self.resource_name = resource_name return self.kw['filename'] |
