string, remove the suffix from the path.
"""
stem = self.stem
- if not suffix:
- return self.with_name(stem)
- elif not stem:
+ if not stem:
# If the stem is empty, we can't make the suffix non-empty.
raise ValueError(f"{self!r} has an empty name")
- elif suffix.startswith('.') and len(suffix) > 1:
- return self.with_name(stem + suffix)
- else:
+ elif suffix and not (suffix.startswith('.') and len(suffix) > 1):
raise ValueError(f"Invalid suffix {suffix!r}")
+ else:
+ return self.with_name(stem + suffix)
def relative_to(self, other, *, walk_up=False):
"""Return the relative path to another path identified by the passed
self.assertRaises(ValueError, P('c:a/b').with_suffix, 'c\\d')
self.assertRaises(ValueError, P('c:a/b').with_suffix, '.c/d')
self.assertRaises(ValueError, P('c:a/b').with_suffix, '.c\\d')
+ self.assertRaises(TypeError, P('c:a/b').with_suffix, None)
def test_with_suffix_empty(self):
P = self.cls
self.assertRaises(ValueError, P('').with_suffix, '.gz')
self.assertRaises(ValueError, P('/').with_suffix, '.gz')
- def test_with_suffix_seps(self):
+ def test_with_suffix_invalid(self):
P = self.cls
# Invalid suffix.
self.assertRaises(ValueError, P('a/b').with_suffix, 'gz')
self.assertRaises(ValueError, P('a/b').with_suffix, '.c/.d')
self.assertRaises(ValueError, P('a/b').with_suffix, './.d')
self.assertRaises(ValueError, P('a/b').with_suffix, '.d/.')
+ self.assertRaises(TypeError, P('a/b').with_suffix, None)
def test_relative_to_common(self):
P = self.cls