blob: 317e68b82f741c7be4011d7063360753f834369d [file] [log] [blame]
Andrew Geissler5199d832021-09-24 16:47:35 -05001#
2# SPDX-License-Identifier: MIT
3#
4
5
6from oeqa.selftest.case import OESelftestTestCase
7from oeqa.utils.commands import bitbake
8
9class BitBakeLogging(OESelftestTestCase):
10
11 def assertCount(self, item, entry, count):
12 self.assertEqual(item.count(entry), count, msg="Output:\n'''\n%s\n'''\ndoesn't contain %d copies of:\n'''\n%s\n'''\n" % (item, count, entry))
13
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000014 def test_shell_loggingA(self):
Andrew Geissler5199d832021-09-24 16:47:35 -050015 # no logs, no verbose
16 self.write_config('BBINCLUDELOGS = ""')
17 result = bitbake("logging-test -c shelltest -f", ignore_status = True)
18 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
19 self.assertNotIn("This is shell stdout", result.output)
20 self.assertNotIn("This is shell stderr", result.output)
21
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000022 def test_shell_loggingB(self):
Andrew Geissler5199d832021-09-24 16:47:35 -050023 # logs, no verbose
24 self.write_config('BBINCLUDELOGS = "yes"')
25 result = bitbake("logging-test -c shelltest -f", ignore_status = True)
26 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
27 self.assertCount(result.output, "This is shell stdout", 1)
28 self.assertCount(result.output, "This is shell stderr", 1)
29
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000030 def test_shell_loggingC(self):
Andrew Geissler5199d832021-09-24 16:47:35 -050031 # no logs, verbose
32 self.write_config('BBINCLUDELOGS = ""')
33 result = bitbake("logging-test -c shelltest -f -v", ignore_status = True)
34 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000035 # two copies due to set +x
Andrew Geissler5199d832021-09-24 16:47:35 -050036 self.assertCount(result.output, "This is shell stdout", 2)
37 self.assertCount(result.output, "This is shell stderr", 2)
38
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000039 def test_shell_loggingD(self):
Andrew Geissler5199d832021-09-24 16:47:35 -050040 # logs, verbose
41 self.write_config('BBINCLUDELOGS = "yes"')
42 result = bitbake("logging-test -c shelltest -f -v", ignore_status = True)
43 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
44 # two copies due to set +x
45 self.assertCount(result.output, "This is shell stdout", 2)
46 self.assertCount(result.output, "This is shell stderr", 2)
47
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000048 def test_python_exec_func_shell_loggingA(self):
49 # no logs, no verbose
50 self.write_config('BBINCLUDELOGS = ""')
51 result = bitbake("logging-test -c pythontest_exec_func_shell -f",
52 ignore_status = True)
53 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
54 self.assertNotIn("This is shell stdout", result.output)
55 self.assertNotIn("This is shell stderr", result.output)
56
57 def test_python_exec_func_shell_loggingB(self):
58 # logs, no verbose
59 self.write_config('BBINCLUDELOGS = "yes"')
60 result = bitbake("logging-test -c pythontest_exec_func_shell -f",
61 ignore_status = True)
62 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
63 self.assertCount(result.output, "This is shell stdout", 1)
64 self.assertCount(result.output, "This is shell stderr", 1)
65
66 def test_python_exec_func_shell_loggingC(self):
67 # no logs, verbose
68 self.write_config('BBINCLUDELOGS = ""')
69 result = bitbake("logging-test -c pythontest_exec_func_shell -f -v",
70 ignore_status = True)
71 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
72 # two copies due to set +x
73 self.assertCount(result.output, "This is shell stdout", 2)
74 self.assertCount(result.output, "This is shell stderr", 2)
75
76 def test_python_exec_func_shell_loggingD(self):
77 # logs, verbose
78 self.write_config('BBINCLUDELOGS = "yes"')
79 result = bitbake("logging-test -c pythontest_exec_func_shell -f -v",
80 ignore_status = True)
81 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
82 # two copies due to set +x
83 self.assertCount(result.output, "This is shell stdout", 2)
84 self.assertCount(result.output, "This is shell stderr", 2)
85
86 def test_python_exit_loggingA(self):
Andrew Geissler5199d832021-09-24 16:47:35 -050087 # no logs, no verbose
88 self.write_config('BBINCLUDELOGS = ""')
89 result = bitbake("logging-test -c pythontest_exit -f", ignore_status = True)
90 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
91 self.assertNotIn("This is python stdout", result.output)
92
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000093 def test_python_exit_loggingB(self):
Andrew Geissler5199d832021-09-24 16:47:35 -050094 # logs, no verbose
95 self.write_config('BBINCLUDELOGS = "yes"')
96 result = bitbake("logging-test -c pythontest_exit -f", ignore_status = True)
97 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
98 # A sys.exit() should include the output
99 self.assertCount(result.output, "This is python stdout", 1)
100
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000101 def test_python_exit_loggingC(self):
Andrew Geissler5199d832021-09-24 16:47:35 -0500102 # no logs, verbose
103 self.write_config('BBINCLUDELOGS = ""')
104 result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True)
105 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
106 # python tasks don't log output with -v currently
107 #self.assertCount(result.output, "This is python stdout", 1)
108
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000109 def test_python_exit_loggingD(self):
Andrew Geissler5199d832021-09-24 16:47:35 -0500110 # logs, verbose
111 self.write_config('BBINCLUDELOGS = "yes"')
112 result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True)
113 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
114 # python tasks don't log output with -v currently
115 #self.assertCount(result.output, "This is python stdout", 1)
116
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000117 def test_python_exec_func_python_loggingA(self):
118 # no logs, no verbose
119 self.write_config('BBINCLUDELOGS = ""')
120 result = bitbake("logging-test -c pythontest_exec_func_python -f",
121 ignore_status = True)
122 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
123 self.assertNotIn("This is python stdout", result.output)
124
125 def test_python_exec_func_python_loggingB(self):
126 # logs, no verbose
127 self.write_config('BBINCLUDELOGS = "yes"')
128 result = bitbake("logging-test -c pythontest_exec_func_python -f",
129 ignore_status = True)
130 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
131 # A sys.exit() should include the output
132 self.assertCount(result.output, "This is python stdout", 1)
133
134 def test_python_exec_func_python_loggingC(self):
135 # no logs, verbose
136 self.write_config('BBINCLUDELOGS = ""')
137 result = bitbake("logging-test -c pythontest_exec_func_python -f -v",
138 ignore_status = True)
139 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
140 # python tasks don't log output with -v currently
141 #self.assertCount(result.output, "This is python stdout", 1)
142
143 def test_python_exec_func_python_loggingD(self):
144 # logs, verbose
145 self.write_config('BBINCLUDELOGS = "yes"')
146 result = bitbake("logging-test -c pythontest_exec_func_python -f -v",
147 ignore_status = True)
148 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
149 # python tasks don't log output with -v currently
150 #self.assertCount(result.output, "This is python stdout", 1)
151
152 def test_python_fatal_loggingA(self):
Andrew Geissler5199d832021-09-24 16:47:35 -0500153 # no logs, no verbose
154 self.write_config('BBINCLUDELOGS = ""')
155 result = bitbake("logging-test -c pythontest_fatal -f", ignore_status = True)
156 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
157 self.assertNotIn("This is python fatal test stdout", result.output)
158 self.assertCount(result.output, "This is a fatal error", 1)
159
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000160 def test_python_fatal_loggingB(self):
Andrew Geissler5199d832021-09-24 16:47:35 -0500161 # logs, no verbose
162 self.write_config('BBINCLUDELOGS = "yes"')
163 result = bitbake("logging-test -c pythontest_fatal -f", ignore_status = True)
164 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
165 # A bb.fatal() should not include the output
166 self.assertNotIn("This is python fatal test stdout", result.output)
167 self.assertCount(result.output, "This is a fatal error", 1)
168
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000169 def test_python_fatal_loggingC(self):
Andrew Geissler5199d832021-09-24 16:47:35 -0500170 # no logs, verbose
171 self.write_config('BBINCLUDELOGS = ""')
172 result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True)
173 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
174 # python tasks don't log output with -v currently
175 #self.assertCount(result.output, "This is python fatal test stdout", 1)
176 self.assertCount(result.output, "This is a fatal error", 1)
177
Andrew Geissler7e0e3c02022-02-25 20:34:39 +0000178 def test_python_fatal_loggingD(self):
Andrew Geissler5199d832021-09-24 16:47:35 -0500179 # logs, verbose
180 self.write_config('BBINCLUDELOGS = "yes"')
181 result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True)
182 self.assertIn("ERROR: Logfile of failure stored in:", result.output)
183 # python tasks don't log output with -v currently
184 #self.assertCount(result.output, "This is python fatal test stdout", 1)
185 self.assertCount(result.output, "This is a fatal error", 1)
186