mirror of https://github.com/django/django.git
Refs #30461 -- Added django.utils._os.to_path().
This commit is contained in:
parent
c19ad2da4b
commit
88c0b907e7
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
from os.path import abspath, dirname, join, normcase, sep
|
from os.path import abspath, dirname, join, normcase, sep
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from django.core.exceptions import SuspiciousFileOperation
|
from django.core.exceptions import SuspiciousFileOperation
|
||||||
|
|
||||||
|
@ -47,3 +48,12 @@ def symlinks_supported():
|
||||||
except (OSError, NotImplementedError):
|
except (OSError, NotImplementedError):
|
||||||
supported = False
|
supported = False
|
||||||
return supported
|
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 os
|
||||||
import unittest
|
import unittest
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from django.core.exceptions import SuspiciousFileOperation
|
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):
|
class SafeJoinTests(unittest.TestCase):
|
||||||
|
@ -29,3 +30,14 @@ class SafeJoinTests(unittest.TestCase):
|
||||||
def test_parent_path(self):
|
def test_parent_path(self):
|
||||||
with self.assertRaises(SuspiciousFileOperation):
|
with self.assertRaises(SuspiciousFileOperation):
|
||||||
safe_join("/abc/", "../def")
|
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