Skip to content

Commit a554136

Browse files
Fix tests on FreeBSD and OpenIndiana.
1 parent 7c1fea7 commit a554136

1 file changed

Lines changed: 26 additions & 14 deletions

File tree

Lib/test/test_resource.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -112,37 +112,49 @@ def test_fsize_not_too_big(self):
112112
(cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE)
113113
self.addCleanup(resource.setrlimit, resource.RLIMIT_FSIZE, (cur, max))
114114

115-
resource.setrlimit(resource.RLIMIT_FSIZE, (2**31-1, max))
116-
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**31-1, max))
117-
resource.setrlimit(resource.RLIMIT_FSIZE, (2**31, max))
118-
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**31, max))
119-
resource.setrlimit(resource.RLIMIT_FSIZE, (2**32-2, max))
120-
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**32-2, max))
115+
def expected(cur):
116+
if resource.RLIM_INFINITY < 0:
117+
return [(cur, max), (resource.RLIM_INFINITY, max)]
118+
elif resource.RLIM_INFINITY < cur:
119+
return [(resource.RLIM_INFINITY, max)]
120+
else:
121+
return [(cur, max)]
122+
123+
resource.setrlimit(resource.RLIMIT_FSIZE, (2**31-5, max))
124+
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**31-5, max))
121125

122126
try:
123127
resource.setrlimit(resource.RLIMIT_FSIZE, (2**32, max))
124128
except OverflowError:
125-
pass
129+
resource.setrlimit(resource.RLIMIT_FSIZE, (2**31, max))
130+
self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**31))
131+
resource.setrlimit(resource.RLIMIT_FSIZE, (2**32-5, max))
132+
self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**32-5))
126133
else:
127-
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**32, max))
128-
resource.setrlimit(resource.RLIMIT_FSIZE, (2**63-1, max))
129-
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**63-1, max))
134+
self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**32))
135+
resource.setrlimit(resource.RLIMIT_FSIZE, (2**31, max))
136+
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**31, max))
137+
resource.setrlimit(resource.RLIMIT_FSIZE, (2**32-5, max))
138+
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**32-5, max))
139+
140+
resource.setrlimit(resource.RLIMIT_FSIZE, (2**63-5, max))
141+
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**63-5, max))
130142
try:
131143
resource.setrlimit(resource.RLIMIT_FSIZE, (2**63, max))
132144
except ValueError:
133145
# There is a hard limit on macOS.
134146
pass
135147
else:
136-
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**63, max))
137-
resource.setrlimit(resource.RLIMIT_FSIZE, (2**64-2, max))
138-
self.assertEqual(resource.getrlimit(resource.RLIMIT_FSIZE), (2**64-2, max))
148+
self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**63))
149+
resource.setrlimit(resource.RLIMIT_FSIZE, (2**64-5, max))
150+
self.assertIn(resource.getrlimit(resource.RLIMIT_FSIZE), expected(2**64-5))
139151

140152
@unittest.skipIf(sys.platform == "vxworks",
141153
"setting RLIMIT_FSIZE is not supported on VxWorks")
142154
@unittest.skipUnless(hasattr(resource, 'RLIMIT_FSIZE'), 'requires resource.RLIMIT_FSIZE')
143155
def test_fsize_negative(self):
144156
(cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE)
145-
for value in -2, -2**31, -2**32-1, -2**63, -2**64-1, -2**1000:
157+
for value in -5, -2**31, -2**32-5, -2**63, -2**64-5, -2**1000:
146158
with self.subTest(value=value):
147159
self.assertRaises(ValueError, resource.setrlimit, resource.RLIMIT_FSIZE, (value, max))
148160
self.assertRaises(ValueError, resource.setrlimit, resource.RLIMIT_FSIZE, (cur, value))

0 commit comments

Comments
 (0)