MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_exit

Method test_exit

Lib/test/test_sys.py:213–290  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

211
212 @unittest.expectedFailure # TODO: RUSTPYTHON; latin-1 codec not registered
213 def test_exit(self):
214 # call with two arguments
215 self.assertRaises(TypeError, sys.exit, 42, 42)
216
217 # call without argument
218 with self.assertRaises(SystemExit) as cm:
219 sys.exit()
220 self.assertIsNone(cm.exception.code)
221
222 rc, out, err = assert_python_ok('-c', 'import sys; sys.exit()')
223 self.assertEqual(rc, 0)
224 self.assertEqual(out, b'')
225 self.assertEqual(err, b'')
226
227 # gh-125842: Windows uses 32-bit unsigned integers for exit codes
228 # so a -1 exit code is sometimes interpreted as 0xffff_ffff.
229 rc, out, err = assert_python_failure('-c', 'import sys; sys.exit(0xffff_ffff)')
230 self.assertIn(rc, (-1, 0xff, 0xffff_ffff))
231 self.assertEqual(out, b'')
232 self.assertEqual(err, b'')
233
234 # Overflow results in a -1 exit code, which may be converted to 0xff
235 # or 0xffff_ffff.
236 rc, out, err = assert_python_failure('-c', 'import sys; sys.exit(2**128)')
237 self.assertIn(rc, (-1, 0xff, 0xffff_ffff))
238 self.assertEqual(out, b'')
239 self.assertEqual(err, b'')
240
241 # call with integer argument
242 with self.assertRaises(SystemExit) as cm:
243 sys.exit(42)
244 self.assertEqual(cm.exception.code, 42)
245
246 # call with tuple argument with one entry
247 # entry will be unpacked
248 with self.assertRaises(SystemExit) as cm:
249 sys.exit((42,))
250 self.assertEqual(cm.exception.code, 42)
251
252 # call with string argument
253 with self.assertRaises(SystemExit) as cm:
254 sys.exit("exit")
255 self.assertEqual(cm.exception.code, "exit")
256
257 # call with tuple argument with two entries
258 with self.assertRaises(SystemExit) as cm:
259 sys.exit((17, 23))
260 self.assertEqual(cm.exception.code, (17, 23))
261
262 # test that the exit machinery handles SystemExits properly
263 rc, out, err = assert_python_failure('-c', 'raise SystemExit(47)')
264 self.assertEqual(rc, 47)
265 self.assertEqual(out, b'')
266 self.assertEqual(err, b'')
267
268 def check_exit_message(code, expected, **env_vars):
269 rc, out, err = assert_python_failure('-c', code, **env_vars)
270 self.assertEqual(rc, 1)

Callers

nothing calls this directly

Calls 7

assert_python_okFunction · 0.90
assert_python_failureFunction · 0.90
assertIsNoneMethod · 0.80
assertInMethod · 0.80
assertRaisesMethod · 0.45
exitMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected