Commit 8eefffad by John Porto

Unittest fixes.

Adjusts the expected unittest output. BUG= None R=kschimpf@google.com, stichnot@chromium.org Review URL: https://codereview.chromium.org/1173353003.
parent 6da4cef7
...@@ -19,11 +19,6 @@ ...@@ -19,11 +19,6 @@
namespace IceTest { namespace IceTest {
void IceTest::SubzeroBitcodeMunger::resetFlags() {
Ice::ClFlags::resetClFlags(Flags);
resetMungeFlags();
}
void IceTest::SubzeroBitcodeMunger::resetMungeFlags() { void IceTest::SubzeroBitcodeMunger::resetMungeFlags() {
Flags.setAllowErrorRecovery(true); Flags.setAllowErrorRecovery(true);
Flags.setGenerateUnitTestMessages(true); Flags.setGenerateUnitTestMessages(true);
...@@ -34,12 +29,14 @@ void IceTest::SubzeroBitcodeMunger::resetMungeFlags() { ...@@ -34,12 +29,14 @@ void IceTest::SubzeroBitcodeMunger::resetMungeFlags() {
} }
bool IceTest::SubzeroBitcodeMunger::runTest(const uint64_t Munges[], bool IceTest::SubzeroBitcodeMunger::runTest(const uint64_t Munges[],
size_t MungeSize) { size_t MungeSize,
bool DisableTranslation) {
const bool AddHeader = true; const bool AddHeader = true;
setupTest(Munges, MungeSize, AddHeader); setupTest(Munges, MungeSize, AddHeader);
Ice::GlobalContext Ctx(DumpStream, DumpStream, DumpStream, nullptr, Flags); Ice::GlobalContext Ctx(DumpStream, DumpStream, DumpStream, nullptr, Flags);
Ice::PNaClTranslator Translator(&Ctx); Ice::PNaClTranslator Translator(&Ctx);
const char *BufferName = "Test"; const char *BufferName = "Test";
Flags.setDisableTranslation(DisableTranslation);
Translator.translateBuffer(BufferName, MungedInput.get()); Translator.translateBuffer(BufferName, MungedInput.get());
cleanupTest(); cleanupTest();
......
...@@ -33,20 +33,18 @@ public: ...@@ -33,20 +33,18 @@ public:
resetMungeFlags(); resetMungeFlags();
} }
/// Runs PNaClTranslator to translate bitcode records (with defined /// Runs PNaClTranslator to parse and (optionally) translate bitcode records
/// record Munges), and puts output into DumpResults. Returns true /// (with defined record Munges), and puts output into DumpResults. Returns
/// if parse is successful. /// true if parse is successful.
bool runTest(const uint64_t Munges[], size_t MungeSize); bool runTest(const uint64_t Munges[], size_t MungeSize,
bool DisableTranslation = false);
/// Same as above, but without any edits. /// Same as above, but without any edits.
bool runTest() { bool runTest(bool DisableTranslation = false) {
uint64_t NoMunges[] = {0}; uint64_t NoMunges[] = {0};
return runTest(NoMunges, 0); return runTest(NoMunges, 0, DisableTranslation);
} }
/// Sets flags back to default assumptions for munging.
void resetFlags();
/// Flags to use to run tests. Use to change default assumptions. /// Flags to use to run tests. Use to change default assumptions.
Ice::ClFlags Flags; Ice::ClFlags Flags;
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include <string>
#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/STLExtras.h"
#include "llvm/Bitcode/NaCl/NaClBitcodeParser.h" #include "llvm/Bitcode/NaCl/NaClBitcodeParser.h"
#include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h" #include "llvm/Bitcode/NaCl/NaClLLVMBitCodes.h"
...@@ -19,6 +21,10 @@ using namespace naclmungetest; ...@@ -19,6 +21,10 @@ using namespace naclmungetest;
namespace { namespace {
// The ParseError constant is passed to the BitcodeMunger to prevent translation
// when we expect a Parse error.
constexpr bool ParseError = true;
// Note: alignment stored as 0 or log2(Alignment)+1. // Note: alignment stored as 0 or log2(Alignment)+1.
uint64_t getEncAlignPower(unsigned Power) { uint64_t getEncAlignPower(unsigned Power) {
return Power + 1; return Power + 1;
...@@ -56,13 +62,13 @@ TEST(IceParseInstsTest, NonexistentCallArg) { ...@@ -56,13 +62,13 @@ TEST(IceParseInstsTest, NonexistentCallArg) {
// Show that we get appropriate error when parsing in Subzero. // Show that we get appropriate error when parsing in Subzero.
IceTest::SubzeroBitcodeMunger Munger(ARRAY_TERM(BitcodeRecords)); IceTest::SubzeroBitcodeMunger Munger(ARRAY_TERM(BitcodeRecords));
EXPECT_FALSE(Munger.runTest()); EXPECT_FALSE(Munger.runTest(ParseError));
EXPECT_EQ("Error(66:4): Invalid function record: <34 0 4 2 100>\n", EXPECT_EQ("Error(66:4): Invalid function record: <34 0 4 2 100>\n",
Munger.getTestResults()); Munger.getTestResults());
// Show that we generate a fatal error when not allowing error recovery. // Show that we generate a fatal error when not allowing error recovery.
Munger.Flags.setAllowErrorRecovery(false); Munger.Flags.setAllowErrorRecovery(false);
EXPECT_DEATH(Munger.runTest(), ".*ERROR: Unable to continue.*"); EXPECT_DEATH(Munger.runTest(ParseError), ".*ERROR: Unable to continue.*");
} }
/// Test how we recognize alignments in alloca instructions. /// Test how we recognize alignments in alloca instructions.
...@@ -112,7 +118,7 @@ TEST(IceParseInstsTests, AllocaAlignment) { ...@@ -112,7 +118,7 @@ TEST(IceParseInstsTests, AllocaAlignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_ALLOCA, 1, getEncAlignPower(30), Terminator, 3, naclbitc::FUNC_CODE_INST_ALLOCA, 1, getEncAlignPower(30), Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align30))); EXPECT_FALSE(Munger.runTest(ARRAY(Align30), ParseError));
EXPECT_EQ("Error(62:4): Invalid function record: <19 1 31>\n", EXPECT_EQ("Error(62:4): Invalid function record: <19 1 31>\n",
Munger.getTestResults()); Munger.getTestResults());
...@@ -167,7 +173,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) { ...@@ -167,7 +173,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignZero(), 0, Terminator, 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignZero(), 0, Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align0))); EXPECT_FALSE(Munger.runTest(ARRAY(Align0), ParseError));
EXPECT_EQ("Error(58:4): Invalid function record: <20 1 0 0>\n", EXPECT_EQ("Error(58:4): Invalid function record: <20 1 0 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0)));
...@@ -180,7 +186,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) { ...@@ -180,7 +186,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(2), 0, Terminator, 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(2), 0, Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align4))); EXPECT_FALSE(Munger.runTest(ARRAY(Align4), ParseError));
EXPECT_EQ("Error(58:4): Invalid function record: <20 1 3 0>\n", EXPECT_EQ("Error(58:4): Invalid function record: <20 1 3 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align4))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align4)));
...@@ -193,7 +199,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) { ...@@ -193,7 +199,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(29), 0, Terminator, 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(29), 0, Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align29))); EXPECT_FALSE(Munger.runTest(ARRAY(Align29), ParseError));
EXPECT_EQ("Error(58:4): Invalid function record: <20 1 30 0>\n", EXPECT_EQ("Error(58:4): Invalid function record: <20 1 30 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29)));
...@@ -206,7 +212,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) { ...@@ -206,7 +212,7 @@ TEST(IceParseInstsTests, LoadI32Alignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(30), 0, Terminator, 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(30), 0, Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align30))); EXPECT_FALSE(Munger.runTest(ARRAY(Align30), ParseError));
EXPECT_EQ("Error(58:4): Invalid function record: <20 1 31 0>\n", EXPECT_EQ("Error(58:4): Invalid function record: <20 1 31 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30)));
...@@ -249,7 +255,7 @@ TEST(IceParseInstsTests, LoadFloatAlignment) { ...@@ -249,7 +255,7 @@ TEST(IceParseInstsTests, LoadFloatAlignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignZero(), 0, Terminator, 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignZero(), 0, Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align0))); EXPECT_FALSE(Munger.runTest(ARRAY(Align0), ParseError));
EXPECT_EQ("Error(58:4): Invalid function record: <20 1 0 0>\n", EXPECT_EQ("Error(58:4): Invalid function record: <20 1 0 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0)));
...@@ -272,7 +278,7 @@ TEST(IceParseInstsTests, LoadFloatAlignment) { ...@@ -272,7 +278,7 @@ TEST(IceParseInstsTests, LoadFloatAlignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(29), 0, Terminator, 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(29), 0, Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align29))); EXPECT_FALSE(Munger.runTest(ARRAY(Align29), ParseError));
EXPECT_EQ("Error(58:4): Invalid function record: <20 1 30 0>\n", EXPECT_EQ("Error(58:4): Invalid function record: <20 1 30 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29)));
...@@ -286,7 +292,7 @@ TEST(IceParseInstsTests, LoadFloatAlignment) { ...@@ -286,7 +292,7 @@ TEST(IceParseInstsTests, LoadFloatAlignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(30), 0, Terminator, 3, naclbitc::FUNC_CODE_INST_LOAD, 1, getEncAlignPower(30), 0, Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align30))); EXPECT_FALSE(Munger.runTest(ARRAY(Align30), ParseError));
EXPECT_EQ("Error(58:4): Invalid function record: <20 1 31 0>\n", EXPECT_EQ("Error(58:4): Invalid function record: <20 1 31 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30)));
...@@ -332,7 +338,7 @@ TEST(NaClParseInstsTests, StoreAlignment) { ...@@ -332,7 +338,7 @@ TEST(NaClParseInstsTests, StoreAlignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignZero(), Terminator, 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignZero(), Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align0))); EXPECT_FALSE(Munger.runTest(ARRAY(Align0), ParseError));
EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 0>\n", EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 0>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align0)));
...@@ -354,7 +360,7 @@ TEST(NaClParseInstsTests, StoreAlignment) { ...@@ -354,7 +360,7 @@ TEST(NaClParseInstsTests, StoreAlignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(3), Terminator, 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(3), Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align8))); EXPECT_FALSE(Munger.runTest(ARRAY(Align8), ParseError));
EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 4>\n", EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 4>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align8))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align8)));
...@@ -368,7 +374,7 @@ TEST(NaClParseInstsTests, StoreAlignment) { ...@@ -368,7 +374,7 @@ TEST(NaClParseInstsTests, StoreAlignment) {
ReplaceIndex, NaClMungedBitcode::Replace, ReplaceIndex, NaClMungedBitcode::Replace,
3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(29), Terminator, 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(29), Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align29))); EXPECT_FALSE(Munger.runTest(ARRAY(Align29), ParseError));
EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 30>\n", EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 30>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align29)));
...@@ -382,7 +388,7 @@ TEST(NaClParseInstsTests, StoreAlignment) { ...@@ -382,7 +388,7 @@ TEST(NaClParseInstsTests, StoreAlignment) {
// Note: alignment stored as 0 or log2(Alignment)+1. // Note: alignment stored as 0 or log2(Alignment)+1.
3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(30), Terminator, 3, naclbitc::FUNC_CODE_INST_STORE, 2, 1, getEncAlignPower(30), Terminator,
}; };
EXPECT_FALSE(Munger.runTest(ARRAY(Align30))); EXPECT_FALSE(Munger.runTest(ARRAY(Align30), ParseError));
EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 31>\n", EXPECT_EQ("Error(62:4): Invalid function record: <24 2 1 31>\n",
Munger.getTestResults()); Munger.getTestResults());
EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30))); EXPECT_FALSE(DumpMunger.runTestForAssembly(ARRAY(Align30)));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment