blob: 2fc41bddcb8aea52b657618a36c764f63c2bb6d0 [file] [log] [blame]
Steve Dowerb82e17e2019-05-23 08:45:22 -07001"""Tests for sys.audit and sys.addaudithook
2"""
3
4import os
5import subprocess
6import sys
7import unittest
8from test import support
9
10if not hasattr(sys, "addaudithook") or not hasattr(sys, "audit"):
11 raise unittest.SkipTest("test only relevant when sys.audit is available")
12
Steve Dower9ddc4162019-05-29 08:20:35 -070013AUDIT_TESTS_PY = support.findfile("audit-tests.py")
Steve Dowerb82e17e2019-05-23 08:45:22 -070014
15
16class AuditTest(unittest.TestCase):
Steve Dower9ddc4162019-05-29 08:20:35 -070017 def do_test(self, *args):
Steve Dowerb82e17e2019-05-23 08:45:22 -070018 with subprocess.Popen(
Steve Dower9ddc4162019-05-29 08:20:35 -070019 [sys.executable, "-X utf8", AUDIT_TESTS_PY, *args],
Steve Dowerb82e17e2019-05-23 08:45:22 -070020 encoding="utf-8",
21 stdout=subprocess.PIPE,
22 stderr=subprocess.PIPE,
23 ) as p:
24 p.wait()
Steve Dower9ddc4162019-05-29 08:20:35 -070025 sys.stdout.writelines(p.stdout)
26 sys.stderr.writelines(p.stderr)
27 if p.returncode:
28 self.fail(''.join(p.stderr))
29
30 def test_basic(self):
31 self.do_test("test_basic")
32
33 def test_block_add_hook(self):
34 self.do_test("test_block_add_hook")
35
36 def test_block_add_hook_baseexception(self):
37 self.do_test("test_block_add_hook_baseexception")
38
39 def test_finalize_hooks(self):
40 events = []
41 with subprocess.Popen(
42 [sys.executable, "-X utf8", AUDIT_TESTS_PY, "test_finalize_hooks"],
43 encoding="utf-8",
44 stdout=subprocess.PIPE,
45 stderr=subprocess.PIPE,
46 ) as p:
47 p.wait()
48 for line in p.stdout:
Steve Dowerb82e17e2019-05-23 08:45:22 -070049 events.append(line.strip().partition(" "))
Steve Dower9ddc4162019-05-29 08:20:35 -070050 sys.stderr.writelines(p.stderr)
51 if p.returncode:
52 self.fail(''.join(p.stderr))
53
Steve Dowerb82e17e2019-05-23 08:45:22 -070054 firstId = events[0][2]
55 self.assertSequenceEqual(
56 [
57 ("Created", " ", firstId),
58 ("cpython._PySys_ClearAuditHooks", " ", firstId),
59 ],
60 events,
61 )
62
63 def test_pickle(self):
Steve Dower9ddc4162019-05-29 08:20:35 -070064 support.import_module("pickle")
Steve Dowerb82e17e2019-05-23 08:45:22 -070065
Steve Dower9ddc4162019-05-29 08:20:35 -070066 self.do_test("test_pickle")
Steve Dowerb82e17e2019-05-23 08:45:22 -070067
68 def test_monkeypatch(self):
Steve Dower9ddc4162019-05-29 08:20:35 -070069 self.do_test("test_monkeypatch")
Steve Dowerb82e17e2019-05-23 08:45:22 -070070
71 def test_open(self):
Steve Dower9ddc4162019-05-29 08:20:35 -070072 self.do_test("test_open", support.TESTFN)
Steve Dowerb82e17e2019-05-23 08:45:22 -070073
74 def test_cantrace(self):
Steve Dower9ddc4162019-05-29 08:20:35 -070075 self.do_test("test_cantrace")
Steve Dowerb82e17e2019-05-23 08:45:22 -070076
Zackery Spytz08286d52019-06-21 09:31:59 -060077 def test_mmap(self):
78 self.do_test("test_mmap")
79
Steve Dowerb82e17e2019-05-23 08:45:22 -070080
81if __name__ == "__main__":
Steve Dowerb82e17e2019-05-23 08:45:22 -070082 unittest.main()