summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheron Luhn <theron@luhn.com>2025-08-24 21:38:56 -0700
committerTheron Luhn <theron@luhn.com>2025-08-24 21:38:56 -0700
commit9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206 (patch)
tree7cc971498749043e8db5058313086ecb7964c275
parent832cae47693b4c07a1fa826dce13b9af7a91ebaf (diff)
downloadpyramid-9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206.tar.gz
pyramid-9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206.tar.bz2
pyramid-9b9ac95c7207a5b0a5c2fd7ef56977e9b285f206.zip
Add `get_spec` to `PackageOverrides`
-rw-r--r--src/pyramid/config/assets.py6
-rw-r--r--tests/test_config/test_assets.py26
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']