Refs #30461 -- Added django.utils._os.to_path().
This commit is contained in:
parent
c19ad2da4b
commit
88c0b907e7
|
@ -1,6 +1,7 @@
|
|||
import os
|
||||
import tempfile
|
||||
from os.path import abspath, dirname, join, normcase, sep
|
||||
from pathlib import Path
|
||||
|
||||
from django.core.exceptions import SuspiciousFileOperation
|
||||
|
||||
|
@ -47,3 +48,12 @@ def symlinks_supported():
|
|||
except (OSError, NotImplementedError):
|
||||
supported = False
|
||||
return supported
|
||||
|
||||
|
||||
def to_path(value):
|
||||
"""Convert value to a pathlib.Path instance, if not already a Path."""
|
||||
if isinstance(value, Path):
|
||||
return value
|
||||
elif not isinstance(value, str):
|
||||
raise TypeError('Invalid path type: %s' % type(value).__name__)
|
||||
return Path(value)
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import os
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from django.core.exceptions import SuspiciousFileOperation
|
||||
from django.utils._os import safe_join
|
||||
from django.utils._os import safe_join, to_path
|
||||
|
||||
|
||||
class SafeJoinTests(unittest.TestCase):
|
||||
|
@ -29,3 +30,14 @@ class SafeJoinTests(unittest.TestCase):
|
|||
def test_parent_path(self):
|
||||
with self.assertRaises(SuspiciousFileOperation):
|
||||
safe_join("/abc/", "../def")
|
||||
|
||||
|
||||
class ToPathTests(unittest.TestCase):
|
||||
def test_to_path(self):
|
||||
for path in ('/tmp/some_file.txt', Path('/tmp/some_file.txt')):
|
||||
with self.subTest(path):
|
||||
self.assertEqual(to_path(path), Path('/tmp/some_file.txt'))
|
||||
|
||||
def test_to_path_invalid_value(self):
|
||||
with self.assertRaises(TypeError):
|
||||
to_path(42)
|
||||
|
|
Loading…
Reference in New Issue