Opened 19 months ago

Last modified 19 months ago

#26591 new Bug

Incorrect Manifest Keys for ManifestStaticFilesStorage on Windows

Reported by: David Sanders Owned by: nobody
Component: contrib.staticfiles Version: master
Severity: Normal Keywords: staticfiles manifest manifeststaticfileststorage windows
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Tim Graham)

The manifest created by ManifestStaticFilesStorage on Windows has some incorrect keys (haven't determined the pattern yet) where slashes are '\\' instead of '/'.

This silently 'succeeds' because HashedFilesMixin will hash the original file on a 'cache miss' (in the case of ManifestStaticFilesStorage it's a manifest miss) and insert the result into the in-memory hashed files map.

I've attached a patch for staticfiles_tests which checks that the manifest is the same in memory and on disk after the manifest tests finish (unless it was a test which cleared the in-memory version). It passes for the Linux build but fails on the Windows build, nicely illustrating the problem.

Attachments (1)

manifeststaticfilesstorage_test.patch (879 bytes) - added by David Sanders 19 months ago.
Test coverage patch

Download all attachments as: .zip

Change History (3)

Changed 19 months ago by David Sanders

Test coverage patch

comment:1 Changed 19 months ago by Tim Graham

Description: modified (diff)
Triage Stage: UnreviewedAccepted

The final version of the patch shouldn't put the assertions in tearDown(), if possible.

comment:2 Changed 19 months ago by David Sanders

Yea, it's not a 'correct' place to put assertions, but it was the best spot to put the assertion to run the code after all test cases, short of a much more intrusive patch. The nice bit about putting it there is that it automatically is run for all new test cases added.

The alternative would be to add it to the end of each of the test cases (I think it's a couple dozen), or to think of a clever way to get a 'post-test pre-tearDown' hook in place.

Note: See TracTickets for help on using tickets.
Back to Top