//===-- tools/llvm-reduce/TestRunner.h ---------------------------*- C++ -*-===/ // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_LLVMREDUCE_TESTRUNNER_H #define LLVM_TOOLS_LLVMREDUCE_TESTRUNNER_H #include "llvm/ADT/SmallString.h" #include "llvm/IR/Module.h" #include "llvm/Support/Error.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" #include "llvm/Support/Program.h" #include namespace llvm { // This class contains all the info necessary for running the provided // interesting-ness test, as well as the most reduced module and its // respective filename. class TestRunner { public: TestRunner(StringRef TestName, const std::vector &TestArgs); /// Runs the interesting-ness test for the specified file /// @returns 0 if test was successful, 1 if otherwise int run(StringRef Filename); /// Returns the most reduced version of the original testcase Module *getProgram() const { return Program.get(); } void setProgram(std::unique_ptr P) { Program = std::move(P); } private: StringRef TestName; const std::vector &TestArgs; std::unique_ptr Program; }; } // namespace llvm #endif