Skip to content

Commit b4be526

Browse files
Use subTest().
1 parent 2eeb438 commit b4be526

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

Lib/test/test_posix.py

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,43 +1523,47 @@ def test_pidfd_open(self):
15231523

15241524
@unittest.skipUnless(hasattr(os, "link"), "test needs os.link()")
15251525
def test_link_follow_symlinks(self):
1526+
default_follow = sys.platform.startswith(
1527+
('darwin', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'sunos5'))
1528+
default_no_follow = sys.platform.startswith(('win32', 'linux'))
15261529
orig = os_helper.TESTFN
15271530
symlink = orig + 'symlink'
15281531
posix.symlink(orig, symlink)
15291532
self.addCleanup(os_helper.unlink, symlink)
15301533

1531-
link = orig + 'link'
1532-
posix.link(symlink, link)
1533-
self.addCleanup(os_helper.unlink, link)
1534-
default_follow = sys.platform.startswith(
1535-
('darwin', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'sunos5'))
1536-
default_no_follow = sys.platform.startswith(('win32', 'linux'))
1537-
if os.link in os.supports_follow_symlinks or default_follow:
1538-
self.assertEqual(posix.lstat(link), posix.lstat(orig))
1539-
elif default_no_follow:
1540-
self.assertEqual(posix.lstat(link), posix.lstat(symlink))
1534+
with self.subTest('no follow_symlinks'):
1535+
# no follow_symlinks -> platform depending
1536+
link = orig + 'link'
1537+
posix.link(symlink, link)
1538+
self.addCleanup(os_helper.unlink, link)
1539+
if os.link in os.supports_follow_symlinks or default_follow:
1540+
self.assertEqual(posix.lstat(link), posix.lstat(orig))
1541+
elif default_no_follow:
1542+
self.assertEqual(posix.lstat(link), posix.lstat(symlink))
15411543

1542-
# follow_symlinks=False -> duplicate the symlink itself
1543-
link_nofollow = orig + 'link_nofollow'
1544-
try:
1545-
posix.link(symlink, link_nofollow, follow_symlinks=False)
1546-
except NotImplementedError:
1547-
if os.link in os.supports_follow_symlinks or default_no_follow:
1548-
raise
1549-
else:
1550-
self.addCleanup(os_helper.unlink, link_nofollow)
1551-
self.assertEqual(posix.lstat(link_nofollow), posix.lstat(symlink))
1544+
with self.subTest('follow_symlinks=False'):
1545+
# follow_symlinks=False -> duplicate the symlink itself
1546+
link = orig + 'link_nofollow'
1547+
try:
1548+
posix.link(symlink, link, follow_symlinks=False)
1549+
except NotImplementedError:
1550+
if os.link in os.supports_follow_symlinks or default_no_follow:
1551+
raise
1552+
else:
1553+
self.addCleanup(os_helper.unlink, link)
1554+
self.assertEqual(posix.lstat(link), posix.lstat(symlink))
15521555

1553-
# follow_symlinks=True -> duplicate the target file
1554-
link_following = orig + 'link_following'
1555-
try:
1556-
posix.link(symlink, link_following, follow_symlinks=True)
1557-
except NotImplementedError:
1558-
if os.link in os.supports_follow_symlinks or default_follow:
1559-
raise
1560-
else:
1561-
self.addCleanup(os_helper.unlink, link_following)
1562-
self.assertEqual(posix.lstat(link_following), posix.lstat(orig))
1556+
with self.subTest('follow_symlinks=True'):
1557+
# follow_symlinks=True -> duplicate the target file
1558+
link = orig + 'link_following'
1559+
try:
1560+
posix.link(symlink, link, follow_symlinks=True)
1561+
except NotImplementedError:
1562+
if os.link in os.supports_follow_symlinks or default_follow:
1563+
raise
1564+
else:
1565+
self.addCleanup(os_helper.unlink, link)
1566+
self.assertEqual(posix.lstat(link), posix.lstat(orig))
15631567

15641568

15651569
# tests for the posix *at functions follow

0 commit comments

Comments
 (0)