Message ID | 20200930183151.1046716-1-dlatypov@google.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | kunit: tool: fix display of make errors | expand |
On Wed, Sep 30, 2020 at 11:32 AM Daniel Latypov <dlatypov@google.com> wrote: > > CalledProcessError stores the output of the failed process as `bytes`, > not a `str`. > > So when we log it on build error, the make output is all crammed into > one line with "\n" instead of actually printing new lines. > > After this change, we get readable output with new lines, e.g. > > CC lib/kunit/kunit-example-test.o > > In file included from ../lib/kunit/test.c:9: > > ../include/kunit/test.h:22:1: error: unknown type name ‘invalid_type_that_causes_compile’ > > 22 | invalid_type_that_causes_compile errors; > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > make[3]: *** [../scripts/Makefile.build:283: lib/kunit/test.o] Error 1 > > Secondly, trying to concat exceptions to strings will fail with > > TypeError: can only concatenate str (not "OSError") to str > so fix this with an explicit cast to str. > > Signed-off-by: Daniel Latypov <dlatypov@google.com> Reviewed-by: Brendan Higgins <brendanhiggins@google.com> Tested-by: Brendan Higgins <brendanhiggins@google.com> Cheers!
diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py index e20e2056cb38..0e19089f62f0 100644 --- a/tools/testing/kunit/kunit_kernel.py +++ b/tools/testing/kunit/kunit_kernel.py @@ -36,9 +36,9 @@ class LinuxSourceTreeOperations(object): try: subprocess.check_output(['make', 'mrproper'], stderr=subprocess.STDOUT) except OSError as e: - raise ConfigError('Could not call make command: ' + e) + raise ConfigError('Could not call make command: ' + str(e)) except subprocess.CalledProcessError as e: - raise ConfigError(e.output) + raise ConfigError(e.output.decode()) def make_olddefconfig(self, build_dir, make_options): command = ['make', 'ARCH=um', 'olddefconfig'] @@ -49,9 +49,9 @@ class LinuxSourceTreeOperations(object): try: subprocess.check_output(command, stderr=subprocess.STDOUT) except OSError as e: - raise ConfigError('Could not call make command: ' + e) + raise ConfigError('Could not call make command: ' + str(e)) except subprocess.CalledProcessError as e: - raise ConfigError(e.output) + raise ConfigError(e.output.decode()) def make_allyesconfig(self): kunit_parser.print_with_timestamp( @@ -79,9 +79,9 @@ class LinuxSourceTreeOperations(object): try: subprocess.check_output(command, stderr=subprocess.STDOUT) except OSError as e: - raise BuildError('Could not call execute make: ' + e) + raise BuildError('Could not call execute make: ' + str(e)) except subprocess.CalledProcessError as e: - raise BuildError(e.output) + raise BuildError(e.output.decode()) def linux_bin(self, params, timeout, build_dir, outfile): """Runs the Linux UML binary. Must be named 'linux'."""