Opened 4 years ago

Last modified 4 years 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 4 years ago.
Test coverage patch

Download all attachments as: .zip

Change History (3)

Changed 4 years ago by David Sanders

Test coverage patch

comment:1 Changed 4 years 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 4 years 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