Opened 8 years ago

Closed 3 years ago

#26591 closed Bug (fixed)

Incorrect Manifest Keys for ManifestStaticFilesStorage on Windows

Reported by: David Sanders Owned by: nobody
Component: contrib.staticfiles Version: dev
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 8 years ago.
Test coverage patch

Download all attachments as: .zip

Change History (4)

by David Sanders, 8 years ago

Test coverage patch

comment:1 by Tim Graham, 8 years ago

Description: modified (diff)
Triage Stage: UnreviewedAccepted

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

comment:2 by David Sanders, 8 years ago

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.

comment:3 by Jacob Walls, 3 years ago

Resolution: fixed
Status: newclosed

Fixed in 53bffe8d03f01bd3214a5404998cb965fb28cd0b. The attached test case became assertPostCondition(). The author explained in PR comments finding, reporting, and fixing the issue in the same PR.

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