# # SPDX-License-Identifier: MIT # from oeqa.selftest.case import OESelftestTestCase from oeqa.utils.commands import bitbake class BitBakeLogging(OESelftestTestCase): def assertCount(self, item, entry, count): 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)) def test_shell_logging(self): # no logs, no verbose self.write_config('BBINCLUDELOGS = ""') result = bitbake("logging-test -c shelltest -f", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) self.assertNotIn("This is shell stdout", result.output) self.assertNotIn("This is shell stderr", result.output) # logs, no verbose self.write_config('BBINCLUDELOGS = "yes"') result = bitbake("logging-test -c shelltest -f", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) self.assertCount(result.output, "This is shell stdout", 1) self.assertCount(result.output, "This is shell stderr", 1) # no logs, verbose self.write_config('BBINCLUDELOGS = ""') result = bitbake("logging-test -c shelltest -f -v", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # two copies due to set +x self.assertCount(result.output, "This is shell stdout", 2) self.assertCount(result.output, "This is shell stderr", 2) # logs, verbose self.write_config('BBINCLUDELOGS = "yes"') result = bitbake("logging-test -c shelltest -f -v", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # two copies due to set +x self.assertCount(result.output, "This is shell stdout", 2) self.assertCount(result.output, "This is shell stderr", 2) def test_python_exit_logging(self): # no logs, no verbose self.write_config('BBINCLUDELOGS = ""') result = bitbake("logging-test -c pythontest_exit -f", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) self.assertNotIn("This is python stdout", result.output) # logs, no verbose self.write_config('BBINCLUDELOGS = "yes"') result = bitbake("logging-test -c pythontest_exit -f", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # A sys.exit() should include the output self.assertCount(result.output, "This is python stdout", 1) # no logs, verbose self.write_config('BBINCLUDELOGS = ""') result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # python tasks don't log output with -v currently #self.assertCount(result.output, "This is python stdout", 1) # logs, verbose self.write_config('BBINCLUDELOGS = "yes"') result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # python tasks don't log output with -v currently #self.assertCount(result.output, "This is python stdout", 1) def test_python_fatal_logging(self): # no logs, no verbose self.write_config('BBINCLUDELOGS = ""') result = bitbake("logging-test -c pythontest_fatal -f", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) self.assertNotIn("This is python fatal test stdout", result.output) self.assertCount(result.output, "This is a fatal error", 1) # logs, no verbose self.write_config('BBINCLUDELOGS = "yes"') result = bitbake("logging-test -c pythontest_fatal -f", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # A bb.fatal() should not include the output self.assertNotIn("This is python fatal test stdout", result.output) self.assertCount(result.output, "This is a fatal error", 1) # no logs, verbose self.write_config('BBINCLUDELOGS = ""') result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # python tasks don't log output with -v currently #self.assertCount(result.output, "This is python fatal test stdout", 1) self.assertCount(result.output, "This is a fatal error", 1) # logs, verbose self.write_config('BBINCLUDELOGS = "yes"') result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True) self.assertIn("ERROR: Logfile of failure stored in:", result.output) # python tasks don't log output with -v currently #self.assertCount(result.output, "This is python fatal test stdout", 1) self.assertCount(result.output, "This is a fatal error", 1)