abhina.sreeskantharajan updated this revision to Diff 319543.
abhina.sreeskantharajan added a comment.
I've changed the host check to use python's sys.platform to determine the host
as an alternative to using LLVM_HOST_TRIPLE. It will save us the effort of
making sure it's defined in all projects as well.
I noticed that llvm/docs/CommandGuide/lit.rst only lists substitutions that are
done in TestRunner.py and refers to llvm/docs/TestingGuide.rst for information
on the remaining substitutions. I think if we move the error substitution code
into TestRunner.py, then it would be appropriate to update the lit.rst. Where
do you think is the appropriate place to define the error substitutions,
TestRunner.py or config.py?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95246/new/
https://reviews.llvm.org/D95246
Files:
clang/test/Driver/clang-offload-bundler.c
clang/test/Frontend/output-failures.c
clang/test/Frontend/stats-file.c
lld/test/ELF/basic.s
llvm/docs/TestingGuide.rst
llvm/test/Object/archive-extract.test
llvm/test/Object/directory.ll
llvm/test/tools/llvm-ar/move.test
llvm/utils/lit/lit/llvm/config.py
Index: llvm/utils/lit/lit/llvm/config.py
===================================================================
--- llvm/utils/lit/lit/llvm/config.py
+++ llvm/utils/lit/lit/llvm/config.py
@@ -345,6 +345,17 @@
self.config.substitutions.extend(substitutions)
return True
+ def add_err_msg_substitutions(self):
+ if (sys.platform == 'zos'):
+ self.config.substitutions.append(('%errc_ENOENT', '\'EDC5129I No such file or directory.\''))
+ self.config.substitutions.append(('%errc_EISDIR', '\'EDC5123I Is a directory.\''))
+ elif (sys.platform == 'win32'):
+ self.config.substitutions.append(('%errc_ENOENT', '\'no such file or directory\''))
+ self.config.substitutions.append(('%errc_EISDIR', '\'is a directory\''))
+ else:
+ self.config.substitutions.append(('%errc_ENOENT', '\'No such file or directory\''))
+ self.config.substitutions.append(('%errc_EISDIR', '\'Is a directory\''))
+
def use_default_substitutions(self):
tool_patterns = [
ToolSubst('FileCheck', unresolved='fatal'),
@@ -358,6 +369,8 @@
self.add_tool_substitutions(
tool_patterns, [self.config.llvm_tools_dir])
+ self.add_err_msg_substitutions()
+
def use_llvm_tool(self, name, search_env=None, required=False, quiet=False):
"""Find the executable program 'name', optionally using the specified
environment variable as an override before searching the
Index: llvm/test/tools/llvm-ar/move.test
===================================================================
--- llvm/test/tools/llvm-ar/move.test
+++ llvm/test/tools/llvm-ar/move.test
@@ -82,9 +82,9 @@
## Member does not exist:
# RUN: llvm-ar rc %t/missing.a %t/1.o %t/2.o %t/3.o
# RUN: not llvm-ar m %t/missing.a %t/missing.txt 2>&1 \
-# RUN: | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt
+# RUN: | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt -DMSG=%errc_ENOENT
-# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory
+# MISSING-FILE: error: [[FILE]]: [[MSG]]
--- !ELF
FileHeader:
Index: llvm/test/Object/directory.ll
===================================================================
--- llvm/test/Object/directory.ll
+++ llvm/test/Object/directory.ll
@@ -1,6 +1,6 @@
;RUN: rm -rf %t && mkdir -p %t
-;RUN: not llvm-ar r %t/test.a . 2>&1 | FileCheck %s
-;CHECK: .: {{I|i}}s a directory
+;RUN: not llvm-ar r %t/test.a . 2>&1 | FileCheck -DMSG=%errc_EISDIR %s
+;CHECK: .: [[MSG]]
;RUN: rm -f %t/test.a
;RUN: touch %t/a-very-long-file-name
Index: llvm/test/Object/archive-extract.test
===================================================================
--- llvm/test/Object/archive-extract.test
+++ llvm/test/Object/archive-extract.test
@@ -57,5 +57,5 @@
RUN: llvm-ar p %p/Inputs/thin.a evenlen | FileCheck %s --check-prefix=EVENLEN
EVENLEN: evenlen
-RUN: not llvm-ar p %p/Inputs/thin-path.a t/test2.o 2>&1 | FileCheck %s --check-prefix=MISSING
-MISSING: error: {{N|n}}o such file or directory
+RUN: not llvm-ar p %p/Inputs/thin-path.a t/test2.o 2>&1 | FileCheck %s --DMSG=%errc_ENOENT --check-prefix=MISSING
+MISSING: error: [[MSG]]
Index: llvm/docs/TestingGuide.rst
===================================================================
--- llvm/docs/TestingGuide.rst
+++ llvm/docs/TestingGuide.rst
@@ -537,6 +537,14 @@
Example: ``%:s: C\Desktop Files\foo_test.s.tmp``
+``%errc_<ERRCODE>``
+
+ Some error messages may be substituted to allow different spellings
+ based on the host platform.
+
+ Example: ``Linux %errc_ENOENT: No such file or directory``
+
+ Example: ``Windows %errc_ENOENT: no such file or directory``
**LLVM-specific substitutions:**
Index: lld/test/ELF/basic.s
===================================================================
--- lld/test/ELF/basic.s
+++ lld/test/ELF/basic.s
@@ -219,8 +219,8 @@
# INVRSP: invalid response file quoting: patatino
# RUN: not ld.lld %t.foo -o /dev/null 2>&1 | \
-# RUN: FileCheck --check-prefix=MISSING %s
-# MISSING: cannot open {{.*}}.foo: {{[Nn]}}o such file or directory
+# RUN: FileCheck -DMSG=%errc_ENOENT --check-prefix=MISSING %s
+# MISSING: cannot open {{.*}}.foo: [[MSG]]
# RUN: not ld.lld -o /dev/null 2>&1 | \
# RUN: FileCheck --check-prefix=NO_INPUT %s
Index: clang/test/Frontend/stats-file.c
===================================================================
--- clang/test/Frontend/stats-file.c
+++ clang/test/Frontend/stats-file.c
@@ -4,5 +4,5 @@
// ... here come some json values ...
// CHECK: }
-// RUN: %clang_cc1 -emit-llvm -o %t -stats-file=%t.doesnotexist/bla %s 2>&1 | FileCheck -check-prefix=OUTPUTFAIL %s
-// OUTPUTFAIL: warning: unable to open statistics output file '{{.*}}doesnotexist{{.}}bla': '{{[Nn]}}o such file or directory'
+// RUN: %clang_cc1 -emit-llvm -o %t -stats-file=%t.doesnotexist/bla %s 2>&1 | FileCheck -DMSG=%errc_ENOENT -check-prefix=OUTPUTFAIL %s
+// OUTPUTFAIL: warning: unable to open statistics output file '{{.*}}doesnotexist{{.}}bla': '[[MSG]]'
Index: clang/test/Frontend/output-failures.c
===================================================================
--- clang/test/Frontend/output-failures.c
+++ clang/test/Frontend/output-failures.c
@@ -1,4 +1,4 @@
// RUN: not %clang_cc1 -emit-llvm -o %t.doesnotexist/somename %s 2> %t
-// RUN: FileCheck -check-prefix=OUTPUTFAIL -input-file=%t %s
+// RUN: FileCheck -check-prefix=OUTPUTFAIL -DMSG=%errc_ENOENT -input-file=%t %s
-// OUTPUTFAIL: error: unable to open output file '{{.*}}doesnotexist{{.}}somename': '{{[nN]}}o such file or directory'
+// OUTPUTFAIL: error: unable to open output file '{{.*}}doesnotexist{{.}}somename': '[[MSG]]'
Index: clang/test/Driver/clang-offload-bundler.c
===================================================================
--- clang/test/Driver/clang-offload-bundler.c
+++ clang/test/Driver/clang-offload-bundler.c
@@ -70,9 +70,11 @@
// RUN: not clang-offload-bundler -type=i -targets=host-%itanium_abi_triple,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu -outputs=%t.i,%t.tgt1 -inputs=%t.bundle.i -unbundle 2>&1 | FileCheck %s --check-prefix CK-ERR4
// CK-ERR4: error: number of output files and targets should match in unbundling mode
-// RUN: not clang-offload-bundler -type=i -targets=host-%itanium_abi_triple,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu -inputs=%t.i,%t.tgt1,%t.tgt2.notexist -outputs=%t.bundle.i 2>&1 | FileCheck %s -DFILE=%t.tgt2.notexist --check-prefix CK-ERR5
-// RUN: not clang-offload-bundler -type=i -targets=host-%itanium_abi_triple,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu -outputs=%t.i,%t.tgt1,%t.tgt2 -inputs=%t.bundle.i.notexist -unbundle 2>&1 | FileCheck %s -DFILE=%t.bundle.i.notexist --check-prefix CK-ERR5
-// CK-ERR5: error: '[[FILE]]': {{N|n}}o such file or directory
+// RUN: not clang-offload-bundler -type=i -targets=host-%itanium_abi_triple,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu -inputs=%t.i,%t.tgt1,%t.tgt2.notexist -outputs=%t.bundle.i 2>&1 | \
+// RUN: FileCheck %s -DFILE=%t.tgt2.notexist -DMSG=%errc_ENOENT --check-prefix CK-ERR5
+// RUN: not clang-offload-bundler -type=i -targets=host-%itanium_abi_triple,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu -outputs=%t.i,%t.tgt1,%t.tgt2 -inputs=%t.bundle.i.notexist -unbundle 2>&1 | \
+// RUN: FileCheck %s -DFILE=%t.bundle.i.notexist -DMSG=%errc_ENOENT --check-prefix CK-ERR5
+// CK-ERR5: error: '[[FILE]]': [[MSG]]
// RUN: not clang-offload-bundler -type=invalid -targets=host-%itanium_abi_triple,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu -inputs=%t.i,%t.tgt1,%t.tgt2 -outputs=%t.bundle.i 2>&1 | FileCheck %s -DTYPE=invalid --check-prefix CK-ERR6
// CK-ERR6: error: '[[TYPE]]': invalid file type specified
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits