diff --git a/test/DebugInfo/DumpDeclFromMangledName.swift b/test/DebugInfo/DumpDeclFromMangledName.swift index 154afd3290f..4b8bcef646b 100644 --- a/test/DebugInfo/DumpDeclFromMangledName.swift +++ b/test/DebugInfo/DumpDeclFromMangledName.swift @@ -7,6 +7,22 @@ // RUN: sed -ne '/--->/s/^.*---> *//p' < %S/Inputs/decl-reconstr-names.txt > %t.check // RUN: %target-build-swift -emit-executable %s -g -o %t/DeclReconstr -emit-module + +// Input validation tests. +// RUN: not %lldb-moduleimport-test patatino 2>&1 | %FileCheck %s \ +// RUN: --check-prefix=INVALID-INPUT +// INVALID-INPUT: patatino does not exists, exiting. + +// RUN: not %lldb-moduleimport-test %t/DeclReconstr \ +// RUN: --decl-from-mangled=patatino 2>&1 | \ +// RUN: %FileCheck %s --check-prefix=INVALID-DECL +// INVALID-DECL: patatino does not exists, exiting. + +// RUN: not %lldb-moduleimport-test %t/DeclReconstr \ +// RUN: --type-from-mangled=patatino 2>&1 | \ +// RUN: %FileCheck %s --check-prefix=INVALID-TYPE +// INVALID-TYPE: patatino does not exists, exiting. + // RUN: %lldb-moduleimport-test %t/DeclReconstr \ // RUN: -decl-from-mangled=%t.input > %t.output 2>&1 // RUN: diff %t.check %t.output diff --git a/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp b/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp index 140bedbd4f5..1ac528d57bc 100644 --- a/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp +++ b/tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp @@ -199,6 +199,28 @@ int main(int argc, char **argv) { DumpTypeFromMangled.removeArgument(); InputNames.removeArgument(); + auto validateInputFile = [](std::string Filename) { + if (Filename.empty()) + return true; + if (!llvm::sys::fs::exists(llvm::Twine(Filename))) { + llvm::errs() << Filename << " does not exists, exiting.\n"; + return false; + } + if (!llvm::sys::fs::is_regular_file(llvm::Twine(Filename))) { + llvm::errs() << Filename << " is not a regular file, exiting.\n"; + return false; + } + return true; + }; + + for (auto &InputFilename : InputNames) + if (!validateInputFile(InputFilename)) + return 1; + if (!validateInputFile(DumpTypeFromMangled)) + return 1; + if (!validateInputFile(DumpDeclFromMangled)) + return 1; + // Fetch the serialized module bitstreams from the Mach-O files and // register them with the module loader. llvm::SmallVector, 8> Modules;