diff options
Diffstat (limited to 'lld/unittests/DriverTests/GnuLdDriverTest.cpp')
| -rw-r--r-- | lld/unittests/DriverTests/GnuLdDriverTest.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/lld/unittests/DriverTests/GnuLdDriverTest.cpp b/lld/unittests/DriverTests/GnuLdDriverTest.cpp index 87a25307d38..00cfa9558c1 100644 --- a/lld/unittests/DriverTests/GnuLdDriverTest.cpp +++ b/lld/unittests/DriverTests/GnuLdDriverTest.cpp @@ -21,32 +21,36 @@ using namespace lld; namespace { -class GnuLdParserTest : public ParserTest<GnuLdDriver, ELFTargetInfo> { +class GnuLdParserTest : public ParserTest< + GnuLdDriver, std::unique_ptr<ELFTargetInfo> > { protected: - virtual ELFTargetInfo* doParse(int argc, const char **argv, - raw_ostream &diag) { - std::unique_ptr<ELFTargetInfo> info; - GnuLdDriver::parse(argc, argv, info, diag); - return info.release(); + virtual const TargetInfo *targetInfo() { + return _info.get(); } }; +TEST_F(GnuLdParserTest, Empty) { + EXPECT_TRUE(parse("ld", nullptr)); + EXPECT_EQ(targetInfo(), nullptr); + EXPECT_EQ("No input files\n", errorMessage()); +} + TEST_F(GnuLdParserTest, Basic) { - parse("ld", "infile.o", nullptr); - ASSERT_TRUE(!!info); - EXPECT_EQ("a.out", info->outputPath()); - EXPECT_EQ(1, (int)inputFiles.size()); - EXPECT_EQ("infile.o", inputFiles[0]); - EXPECT_FALSE(info->outputYAML()); + EXPECT_FALSE(parse("ld", "infile.o", nullptr)); + EXPECT_NE(targetInfo(), nullptr); + EXPECT_EQ("a.out", targetInfo()->outputPath()); + EXPECT_EQ(1, inputFileCount()); + EXPECT_EQ("infile.o", inputFile(0)); + EXPECT_FALSE(_info->outputYAML()); } TEST_F(GnuLdParserTest, ManyOptions) { - parse("ld", "-entry", "_start", "-o", "outfile", - "-emit-yaml", "infile.o", nullptr); - ASSERT_TRUE(!!info); - EXPECT_EQ("outfile", info->outputPath()); - EXPECT_EQ("_start", info->entrySymbolName()); - EXPECT_TRUE(info->outputYAML()); + EXPECT_FALSE(parse("ld", "-entry", "_start", "-o", "outfile", + "-emit-yaml", "infile.o", nullptr)); + EXPECT_NE(targetInfo(), nullptr); + EXPECT_EQ("outfile", targetInfo()->outputPath()); + EXPECT_EQ("_start", targetInfo()->entrySymbolName()); + EXPECT_TRUE(_info->outputYAML()); } } // end anonymous namespace |

