[Lldb-commits] [lldb] e3a7c77 - [lldb/Lit] Change the lldbtest format to behave more like shell test.
Vedant Kumar via lldb-commits
lldb-commits at lists.llvm.org
Thu Jan 30 13:43:13 PST 2020
> On Jan 24, 2020, at 4:18 PM, Jonas Devlieghere via lldb-commits <lldb-commits at lists.llvm.org> wrote:
>
>
> Author: Jonas Devlieghere
> Date: 2020-01-24T16:17:55-08:00
> New Revision: e3a7c7713cd87e37a95a544373cd21f6f06ab94e
>
> URL: https://github.com/llvm/llvm-project/commit/e3a7c7713cd87e37a95a544373cd21f6f06ab94e
> DIFF: https://github.com/llvm/llvm-project/commit/e3a7c7713cd87e37a95a544373cd21f6f06ab94e.diff
>
> LOG: [lldb/Lit] Change the lldbtest format to behave more like shell test.
>
> The current lldbtest format has a number of shortcomings, all related to
> how we omit information based on why the test fails. For example, a
> successful test would print nothing, even when `-a` is passed to lit.
> It's not up to the test format to decide whether to print something or
> not, that's handled by lit itself. For other test results we would
> sometimes print stdout & stderr, but not always, such as when a timeout
> was reached or we couldn't parse the dotest output.
>
> This patch changes the lldbtest format and makes it behave more like
> lit. We now always print the dotest invocation, the exit code, the
> output to stdout & stderr. If you're used to dealing with ShTests in
> lit, this will feel all very familiar.
>
> Differential revision: https://reviews.llvm.org/D73384
>
> Added:
>
>
> Modified:
> lldb/test/API/lldbtest.py
>
> Removed:
>
>
>
> ################################################################################
> diff --git a/lldb/test/API/lldbtest.py b/lldb/test/API/lldbtest.py
> index 349a67f22fb3..864d5ea1df03 100644
> --- a/lldb/test/API/lldbtest.py
> +++ b/lldb/test/API/lldbtest.py
> @@ -86,33 +86,46 @@ def execute(self, test, litConfig):
> shutil.copy(python, copied_python)
> cmd[0] = copied_python
>
> + timeoutInfo = None
> try:
> out, err, exitCode = lit.util.executeCommand(
> cmd,
> env=test.config.environment,
> timeout=litConfig.maxIndividualTestTime)
> except lit.util.ExecuteCommandTimeoutException:
> - return (lit.Test.TIMEOUT, 'Reached timeout of {} seconds'.format(
> - litConfig.maxIndividualTestTime))
> + timeoutInfo = 'Reached timeout of {} seconds'.format(
> + litConfig.maxIndividualTestTime)
> +
> + output = """Script:\n--\n%s\n--\nExit Code: %d\n""" % (
> + ' '.join(cmd), exitCode)
Heads up, when a test times out this prints:
File "/Users/vsk/src/llvm-project-master/lldb/test/API/lldbtest.py", line 100, in execute
' '.join(cmd), exitCode)
UnboundLocalError: local variable 'exitCode' referenced before assignment
> + if timeoutInfo is not None:
> + output += """Timeout: %s\n""" % (timeoutInfo,)
> + output += "\n"
> +
> + if out:
> + output += """Command Output (stdout):\n--\n%s\n--\n""" % (out,)
> + if err:
> + output += """Command Output (stderr):\n--\n%s\n--\n""" % (err,)
> +
> + if timeoutInfo:
> + return lit.Test.TIMEOUT, output
>
> if exitCode:
> # Match FAIL but not XFAIL.
> for line in out.splitlines() + err.splitlines():
> if line.startswith('FAIL:'):
> - return lit.Test.FAIL, out + err
> + return lit.Test.FAIL, output
>
> if 'XPASS:' in out or 'XPASS:' in err:
> - return lit.Test.XPASS, out + err
> + return lit.Test.XPASS, output
>
> has_unsupported_tests = 'UNSUPPORTED:' in out or 'UNSUPPORTED:' in err
> has_passing_tests = 'PASS:' in out or 'PASS:' in err
> if has_unsupported_tests and not has_passing_tests:
> - return lit.Test.UNSUPPORTED, out + err
> + return lit.Test.UNSUPPORTED, output
>
> passing_test_line = 'RESULT: PASSED'
> if passing_test_line not in out and passing_test_line not in err:
> - msg = ('Unable to find %r in dotest output (exit code %d):\n\n%s%s'
> - % (passing_test_line, exitCode, out, err))
> - return lit.Test.UNRESOLVED, msg
> + return lit.Test.UNRESOLVED, output
>
> - return lit.Test.PASS, ''
> + return lit.Test.PASS, output
>
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list