diff --git a/tests/functional/repl_characterization/data/basic.ast b/tests/functional/repl_characterization/data/basic.ast index d494b00aa..af70e149b 100644 --- a/tests/functional/repl_characterization/data/basic.ast +++ b/tests/functional/repl_characterization/data/basic.ast @@ -9,3 +9,9 @@ Command "command two" Output "output output output" Commentary "commentary" Output "output output output" +Output "" +Commentary "the blank below should be chomped" +Command "command three" +Commentary "" +Output "meow output" +Output "" diff --git a/tests/functional/repl_characterization/data/basic.test b/tests/functional/repl_characterization/data/basic.test index d6b8427b4..d62bacbbc 100644 --- a/tests/functional/repl_characterization/data/basic.test +++ b/tests/functional/repl_characterization/data/basic.test @@ -9,3 +9,9 @@ meow meow output output output commentary output output output + +the blank below should be chomped + nix-repl> command three + + meow output + diff --git a/tests/functional/repl_characterization/data/basic_tidied.ast b/tests/functional/repl_characterization/data/basic_tidied.ast new file mode 100644 index 000000000..878065a5c --- /dev/null +++ b/tests/functional/repl_characterization/data/basic_tidied.ast @@ -0,0 +1,10 @@ +Command "command" +Output "output output one" +Output "" +Output "" +Output "output output two" +Command "command two" +Output "output output output" +Output "output output output" +Command "command three" +Output "meow output" diff --git a/tests/functional/repl_characterization/repl_characterization.cc b/tests/functional/repl_characterization/repl_characterization.cc index 200eda1ee..1d497fe13 100644 --- a/tests/functional/repl_characterization/repl_characterization.cc +++ b/tests/functional/repl_characterization/repl_characterization.cc @@ -4,6 +4,7 @@ #include #include #include +#include #include "test-session.hh" #include "util.hh" @@ -68,7 +69,10 @@ public: } session.close(); - auto parsedOutLog = CLILiterateParser::parse(AUTOMATION_PROMPT, trimOutLog(session.outLog), 0); + auto replacedOutLog = boost::algorithm::replace_all_copy(session.outLog, unitTestData, "TEST_DATA"); + auto cleanedOutLog = trimOutLog(replacedOutLog); + + auto parsedOutLog = CLILiterateParser::parse(AUTOMATION_PROMPT, cleanedOutLog, 0); parsedOutLog = CLILiterateParser::tidyOutputForComparison(std::move(parsedOutLog)); syntax = CLILiterateParser::tidyOutputForComparison(std::move(syntax)); @@ -90,6 +94,19 @@ TEST_F(ReplSessionTest, parses) } return out.str(); }); + + writeTest("basic_tidied.ast", [this]() { + const std::string content = readFile(goldenMaster("basic.test")); + auto syntax = CLILiterateParser::parse(REPL_PROMPT, content); + + syntax = CLILiterateParser::tidyOutputForComparison(std::move(syntax)); + + std::ostringstream out{}; + for (auto & bit : syntax) { + out << bit.print() << "\n"; + } + return out.str(); + }); } TEST_F(ReplSessionTest, repl_basic)