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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits