Upgrade to python 3.9.
[python_utils.git] / tests / exec_utils_test.py
1 #!/usr/bin/env python3
2
3 # © Copyright 2021-2022, Scott Gasch
4
5 """exec_utils unittest."""
6
7 import subprocess
8 import unittest
9
10 import exec_utils
11 import unittest_utils
12
13
14 class TestExecUtils(unittest.TestCase):
15     def test_cmd_showing_output(self):
16         with unittest_utils.RecordStdout() as record:
17             ret = exec_utils.cmd_showing_output('/usr/bin/printf hello')
18         self.assertEqual('hello', record().readline())
19         self.assertEqual(0, ret)
20         record().close()
21
22     def test_cmd_showing_output_with_timeout(self):
23         try:
24             exec_utils.cmd_showing_output('sleep 10', timeout_seconds=0.1)
25         except subprocess.TimeoutExpired:
26             pass
27         else:
28             self.fail('Expected a TimeoutException, didn\'t see one.')
29
30     def test_cmd_showing_output_fails(self):
31         with unittest_utils.RecordStdout() as record:
32             ret = exec_utils.cmd_showing_output('/usr/bin/printf hello && false')
33         self.assertEqual('hello', record().readline())
34         self.assertEqual(1, ret)
35         record().close()
36
37     def test_cmd_in_background(self):
38         p = exec_utils.cmd_in_background('sleep 100')
39         self.assertEqual(None, p.poll())
40
41
42 if __name__ == '__main__':
43     unittest.main()