Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ jobs:
fail-fast: false
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12', 'pypy-3.10']
django-version: ['4.1', '4.2', '5.0', '5.1', 'main']
django-version: ['4.1', '4.2', '5.0', '5.1', '5.2', 'main']
exclude:
- python-version: '3.9'
django-version: '5.0'
- python-version: '3.9'
django-version: '5.1'
- python-version: '3.9'
django-version: '5.2'
- python-version: '3.9'
django-version: 'main'
- python-version: 'pypy-3.10'
Expand All @@ -26,6 +28,8 @@ jobs:
django-version: '5.0'
- python-version: 'pypy-3.10'
django-version: '5.1'
- python-version: 'pypy-3.10'
django-version: '5.2'
- python-version: 'pypy-3.10'
django-version: 'main'
- python-version: '3.12'
Expand Down
12 changes: 6 additions & 6 deletions pipeline/finders.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@
class PipelineFinder(BaseStorageFinder):
storage = staticfiles_storage

def find(self, path, all=False):
def find(self, path, **kwargs):
if not settings.PIPELINE_ENABLED:
return super().find(path, all)
return super().find(path, **kwargs)
else:
return []

Expand All @@ -29,15 +29,15 @@ def list(self, ignore_patterns):


class ManifestFinder(BaseFinder):
def find(self, path, all=False):
def find(self, path, **kwargs):
"""
Looks for files in PIPELINE.STYLESHEETS and PIPELINE.JAVASCRIPT
"""
matches = []
for elem in chain(settings.STYLESHEETS.values(), settings.JAVASCRIPT.values()):
if normpath(elem["output_filename"]) == normpath(path):
match = safe_join(settings.PIPELINE_ROOT, path)
if not all:
if not kwargs.get("find_all", kwargs.get("all", False)):
return match
matches.append(match)
return matches
Expand All @@ -47,7 +47,7 @@ def list(self, *args):


class CachedFileFinder(BaseFinder):
def find(self, path, all=False):
def find(self, path, **kwargs):
"""
Work out the uncached name of the file and look that up instead
"""
Expand All @@ -56,7 +56,7 @@ def find(self, path, all=False):
except ValueError:
return []
path = ".".join((start, extn))
return find(path, all=all) or []
return find(path, **kwargs) or []

def list(self, *args):
return []
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ classifiers = [
"Framework :: Django :: 4.2",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
Expand Down
37 changes: 37 additions & 0 deletions tests/tests/test_storage.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from io import StringIO

import django
from django.contrib.staticfiles import finders
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.management import call_command
Expand Down Expand Up @@ -88,6 +89,24 @@ def test_nonexistent_file_pipeline_finder(self):
path = finders.find("nothing.css")
self.assertIsNone(path)

@modify_settings(STATICFILES_FINDERS={"append": "pipeline.finders.PipelineFinder"})
def test_nonexistent_file_pipeline_finder_find_all(self):
if django.__version__ < "5.2":
self.skipTest("Only applicable to Django 5.2 and up")

path = finders.find("nothing.css", find_all=True)
self.assertIsNotNone(path)
self.assertEqual([], path)

@modify_settings(STATICFILES_FINDERS={"append": "pipeline.finders.PipelineFinder"})
def test_nonexistent_file_pipeline_finder_all(self):
if django.__version__ < "6.0":
self.skipTest("Only applicable to versions of Django before 6.0")

path = finders.find("nothing.css", all=True)
self.assertIsNotNone(path)
self.assertEqual([], path)

@modify_settings(
STATICFILES_FINDERS={"append": "pipeline.finders.CachedFileFinder"}
)
Expand All @@ -106,3 +125,21 @@ def test_nonexistent_double_extension_file_pipeline_finder(self):
def test_nonexistent_double_extension_file_cached_finder(self):
path = finders.find("app.css.map")
self.assertIsNone(path)

@modify_settings(STATICFILES_FINDERS={"append": "pipeline.finders.ManifestFinder"})
def test_manifest_finder_finds_stylesheet(self):
path = finders.find("screen.css")
self.assertIsNotNone(path)

path = finders.find("screen.scss")
self.assertIsNone(path)

@modify_settings(STATICFILES_FINDERS={"append": "pipeline.finders.ManifestFinder"})
def test_manifest_finder_finds_all_stylesheet(self):
paths = finders.find("screen.css", all=True)
self.assertIsNotNone(paths)
self.assertEqual(1, len(paths))

paths = finders.find("screen.scss", all=True)
self.assertIsNotNone(paths)
self.assertEqual([], paths)
3 changes: 3 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ envlist =
py{39,310,311,312}-dj42
py{310,311,312}-dj50
py{310,311,312}-dj51
py{310,311,312}-dj52
py{310,311,312}-djmain
docs

Expand All @@ -22,6 +23,7 @@ DJANGO =
4.2: dj42
5.0: dj50
5.1: dj51
5.2: dj52
main: djmain

[testenv]
Expand All @@ -38,6 +40,7 @@ deps =
dj42: Django>=4.2,<4.3
dj50: Django>=5.0,<5.1
dj51: Django>=5.1,<5.2
dj52: Django>=5.2,<5.3
djmain: https://github.com/django/django/archive/main.tar.gz
jinja2
coverage
Expand Down