Skip to content

[update_mc_test_checks.py] Report llvm-mc errors on failure#199820

Open
arichardson wants to merge 1 commit into
users/arichardson/spr/main.update_mc_test_checkspy-report-llvm-mc-errors-on-failurefrom
users/arichardson/spr/update_mc_test_checkspy-report-llvm-mc-errors-on-failure
Open

[update_mc_test_checks.py] Report llvm-mc errors on failure#199820
arichardson wants to merge 1 commit into
users/arichardson/spr/main.update_mc_test_checkspy-report-llvm-mc-errors-on-failurefrom
users/arichardson/spr/update_mc_test_checkspy-report-llvm-mc-errors-on-failure

Conversation

@arichardson
Copy link
Copy Markdown
Member

Printing the llvm-mc stderr when the script fails is helpful to
determine whether it was an issue with the input or the update script.

Created using spr 1.3.8-beta.1
@llvmorg-github-actions
Copy link
Copy Markdown

@llvm/pr-subscribers-testing-tools

Author: Alexander Richardson (arichardson)

Changes

Printing the llvm-mc stderr when the script fails is helpful to
determine whether it was an issue with the input or the update script.


Full diff: https://github.com/llvm/llvm-project/pull/199820.diff

3 Files Affected:

  • (added) llvm/test/tools/UpdateTestChecks/update_mc_test_checks/Inputs/error_reporting.s (+3)
  • (added) llvm/test/tools/UpdateTestChecks/update_mc_test_checks/error-reporting.test (+11)
  • (modified) llvm/utils/update_mc_test_checks.py (+16-9)
diff --git a/llvm/test/tools/UpdateTestChecks/update_mc_test_checks/Inputs/error_reporting.s b/llvm/test/tools/UpdateTestChecks/update_mc_test_checks/Inputs/error_reporting.s
new file mode 100644
index 0000000000000..9f303b19c1cd7
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_mc_test_checks/Inputs/error_reporting.s
@@ -0,0 +1,3 @@
+// RUN: llvm-mc -triple=riscv64 %s | FileCheck %s
+
+add x1, x2, x3, x4
diff --git a/llvm/test/tools/UpdateTestChecks/update_mc_test_checks/error-reporting.test b/llvm/test/tools/UpdateTestChecks/update_mc_test_checks/error-reporting.test
new file mode 100644
index 0000000000000..fca1e753762b3
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_mc_test_checks/error-reporting.test
@@ -0,0 +1,11 @@
+# REQUIRES: riscv-registered-target
+## Check that update_mc_test_checks prints a useful error message with stderr when the command fails
+
+# RUN: cp -f %S/Inputs/error_reporting.s %t.s
+# RUN: not %update_mc_test_checks %t.s 2>&1 | FileCheck %s
+
+# CHECK: Error running command: {{.*}}llvm-mc{{.*}} -triple=riscv64
+# CHECK: Exit code: 1
+# CHECK: Stderr:
+# CHECK: error: expected
+# CHECK: Error: Failed to update test
diff --git a/llvm/utils/update_mc_test_checks.py b/llvm/utils/update_mc_test_checks.py
index 565e1ad085dff..d60d1c2df5e0e 100755
--- a/llvm/utils/update_mc_test_checks.py
+++ b/llvm/utils/update_mc_test_checks.py
@@ -79,17 +79,24 @@ def invoke_tool(
     if verbose:
         print("Command: ", cmd)
 
-    out = subprocess.run(
-        cmd,
-        shell=True,
-        input=full_input.encode(),
-        check=check_rc,
-        stdout=subprocess.PIPE,
-        stderr=subprocess.DEVNULL,
-    ).stdout
+    try:
+        completed = subprocess.run(
+            cmd,
+            shell=True,
+            input=full_input.encode(),
+            check=check_rc,
+            stdout=subprocess.PIPE,
+            stderr=subprocess.PIPE,
+        )
+    except subprocess.CalledProcessError as e:
+        sys.stderr.write(f"Error running command: {cmd}\n")
+        sys.stderr.write(f"Exit code: {e.returncode}\n")
+        if e.stderr:
+            sys.stderr.write(f"Stderr:\n{e.stderr.decode(errors='replace')}\n")
+        raise e
 
     # Fix line endings to unix CR style.
-    return out.decode().replace("\r\n", "\n")
+    return completed.stdout.decode().replace("\r\n", "\n")
 
 
 def isRunLine(l):

@github-actions
Copy link
Copy Markdown

🪟 Windows x64 Test Results

  • 135097 tests passed
  • 3328 tests skipped
  • 1 test failed

Failed Tests

(click on a test name to see its output)

LLVM

LLVM.tools/llvm-symbolizer/wasm-basic.s
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llvm-mc.exe -triple=wasm32-unknown-unknown -filetype=obj C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s -o C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.o -g
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-mc.exe' -triple=wasm32-unknown-unknown -filetype=obj 'C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s' -o 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.o' -g
# note: command had no output on stdout or stderr
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\llvm-symbolizer.exe --basenames --output-style=GNU -e C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.o 0 1 2 3 4 5 6 7 8 9 10 11 12 13 16 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-symbolizer.exe' --basenames --output-style=GNU -e 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.o' 0 1 2 3 4 5 6 7 8 9 10 11 12 13 16
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s'
# note: command had no output on stdout or stderr
# RUN: at line 7
c:\_work\llvm-project\llvm-project\build\bin\wasm-ld.exe C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.o -o C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.wasm --no-entry --export=foo --export=bar
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\wasm-ld.exe' 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.o' -o 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.wasm' --no-entry --export=foo --export=bar
# note: command had no output on stdout or stderr
# RUN: at line 8
c:\_work\llvm-project\llvm-project\build\bin\llvm-symbolizer.exe --basenames --output-style=GNU -e C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.wasm 3 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x51 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-symbolizer.exe' --basenames --output-style=GNU -e 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-symbolizer\Output\wasm-basic.s.tmp.wasm' 3 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x51
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s:38:10: error: CHECK: expected string not found in input
# | # CHECK: foo
# |          ^
# | <stdin>:2:5: note: scanning from here
# | ??:0
# |     ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-symbolizer\wasm-basic.s
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           1: ?? 
# |           2: ??:0 
# | check:38         X error: no match found
# |           3: bar 
# | check:38     ~~~~
# |           4: wasm-basic.s:22 
# | check:38     ~~~~~~~~~~~~~~~~
# |           5: bar 
# | check:38     ~~~~
# |           6: wasm-basic.s:23 
# | check:38     ~~~~~~~~~~~~~~~~
# |           7: ?? 
# | check:38     ~~~
# |           .
# |           .
# |           .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the infrastructure label.

@github-actions
Copy link
Copy Markdown

🐧 Linux x64 Test Results

  • 174723 tests passed
  • 3385 tests skipped
  • 1 test failed

Failed Tests

(click on a test name to see its output)

LLVM

LLVM.tools/llvm-symbolizer/wasm-basic.s (Likely Already Failing) This test is already failing at the base commit.
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-mc -triple=wasm32-unknown-unknown -filetype=obj /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s -o /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.o -g
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-mc -triple=wasm32-unknown-unknown -filetype=obj /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s -o /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.o -g
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-symbolizer --basenames --output-style=GNU -e /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.o 0 1 2 3 4 5 6 7 8 9 10 11 12 13 16 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-symbolizer --basenames --output-style=GNU -e /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.o 0 1 2 3 4 5 6 7 8 9 10 11 12 13 16
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s
# note: command had no output on stdout or stderr
# RUN: at line 7
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/wasm-ld /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.o -o /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.wasm --no-entry --export=foo --export=bar
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/wasm-ld /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.o -o /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.wasm --no-entry --export=foo --export=bar
# note: command had no output on stdout or stderr
# RUN: at line 8
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-symbolizer --basenames --output-style=GNU -e /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.wasm 3 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x51 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llvm-symbolizer --basenames --output-style=GNU -e /home/gha/actions-runner/_work/llvm-project/llvm-project/build/test/tools/llvm-symbolizer/Output/wasm-basic.s.tmp.wasm 3 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x51
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s:38:10: error: CHECK: expected string not found in input
# | # CHECK: foo
# |          ^
# | <stdin>:2:5: note: scanning from here
# | ??:0
# |     ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/tools/llvm-symbolizer/wasm-basic.s
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           1: ?? 
# |           2: ??:0 
# | check:38         X error: no match found
# |           3: bar 
# | check:38     ~~~~
# |           4: wasm-basic.s:22 
# | check:38     ~~~~~~~~~~~~~~~~
# |           5: bar 
# | check:38     ~~~~
# |           6: wasm-basic.s:23 
# | check:38     ~~~~~~~~~~~~~~~~
# |           7: ?? 
# | check:38     ~~~
# |           .
# |           .
# |           .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the infrastructure label.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant