Adds a __repr__ to graph.
[pyutils.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 from pyutils import exec_utils, unittest_utils
11
12
13 class TestExecUtils(unittest.TestCase):
14     def test_cmd_showing_output(self):
15         with unittest_utils.RecordStdout() as record:
16             ret = exec_utils.cmd_showing_output('/usr/bin/printf hello')
17         self.assertEqual('hello', record().readline())
18         self.assertEqual(0, ret)
19         record().close()
20
21     def test_cmd_showing_output_with_timeout(self):
22         try:
23             exec_utils.cmd_showing_output('sleep 10', timeout_seconds=0.1)
24         except subprocess.TimeoutExpired:
25             pass
26         else:
27             self.fail('Expected a TimeoutException, didn\'t see one.')
28
29     def test_cmd_showing_output_fails(self):
30         with unittest_utils.RecordStdout() as record:
31             ret = exec_utils.cmd_showing_output('/usr/bin/printf hello && false')
32         self.assertEqual('hello', record().readline())
33         self.assertEqual(1, ret)
34         record().close()
35
36     def test_cmd_in_background(self):
37         p = exec_utils.cmd_in_background('sleep 100')
38         self.assertEqual(None, p.poll())
39
40
41 if __name__ == '__main__':
42     unittest.main()