diff options
| author | Claude Paroz <claude@2xlibre.net> | 2015-05-22 19:43:08 +0200 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2015-05-22 20:06:31 +0200 |
| commit | 170f7115bbae45f26ca8078e749dfe67445a57ea (patch) | |
| tree | 07cdf37940e58d0239bb179be4aa71004a4c9e02 /tests/file_storage | |
| parent | 04e8d890aec8e996d568565555164a27a6a76057 (diff) | |
Fixed #24826 -- Accounted for filesystem-dependent filename max length
Thanks Raphaƫl Hertzog for the report and help on the patch, and Tim Graham
for the review.
Diffstat (limited to 'tests/file_storage')
| -rw-r--r-- | tests/file_storage/tests.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/tests/file_storage/tests.py b/tests/file_storage/tests.py index 49c951df6e..f8c1c43e08 100644 --- a/tests/file_storage/tests.py +++ b/tests/file_storage/tests.py @@ -435,6 +435,18 @@ class FileFieldStorageTests(TestCase): def tearDown(self): shutil.rmtree(temp_storage_location) + def _storage_max_filename_length(self, storage): + """ + Query filesystem for maximum filename length (e.g. AUFS has 242). + """ + dir_to_test = storage.location + while not os.path.exists(dir_to_test): + dir_to_test = os.path.dirname(dir_to_test) + try: + return os.pathconf(dir_to_test, 'PC_NAME_MAX') + except Exception: + return 255 # Should be safe on most backends + def test_files(self): # Attempting to access a FileField from the class raises a descriptive # error @@ -536,7 +548,7 @@ class FileFieldStorageTests(TestCase): def test_extended_length_storage(self): # Testing FileField with max_length > 255. Most systems have filename # length limitation of 255. Path takes extra chars. - filename = 251 * 'a' # 4 chars for extension. + filename = (self._storage_max_filename_length(temp_storage) - 4) * 'a' # 4 chars for extension. obj = Storage() obj.extended_length.save('%s.txt' % filename, ContentFile('Same Content')) self.assertEqual(obj.extended_length.name, 'tests/%s.txt' % filename) |
