summaryrefslogtreecommitdiff
path: root/tests/exec_utils_test.py
blob: 11dda89350c9f23c99bb0dba0fdf706d9cb65154 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env python3

# © Copyright 2021-2022, Scott Gasch

"""exec_utils unittest."""

import subprocess
import unittest

import exec_utils
import unittest_utils


class TestExecUtils(unittest.TestCase):
    def test_cmd_showing_output(self):
        with unittest_utils.RecordStdout() as record:
            ret = exec_utils.cmd_showing_output('/usr/bin/printf hello')
        self.assertEqual('hello', record().readline())
        self.assertEqual(0, ret)
        record().close()

    def test_cmd_showing_output_with_timeout(self):
        try:
            exec_utils.cmd_showing_output('sleep 10', timeout_seconds=0.1)
        except subprocess.TimeoutExpired:
            pass
        else:
            self.fail('Expected a TimeoutException, didn\'t see one.')

    def test_cmd_showing_output_fails(self):
        with unittest_utils.RecordStdout() as record:
            ret = exec_utils.cmd_showing_output('/usr/bin/printf hello && false')
        self.assertEqual('hello', record().readline())
        self.assertEqual(1, ret)
        record().close()

    def test_cmd_in_background(self):
        p = exec_utils.cmd_in_background('sleep 100')
        self.assertEqual(None, p.poll())


if __name__ == '__main__':
    unittest.main()