From 212654d68f86fb3ce66f187abd1585e7f16a2804 Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Sat, 9 Mar 2024 23:59:50 -0800 Subject: [PATCH] repl_characterization: eat newlines after commands and source-dir paths This is because they are unrepresentable in the source files with commentary but not in the output, so we should just eat them in normalization. It's ok. Change-Id: I2cb7e8b3fc7b00874885bb287cbaa200b41cb16b --- .../repl_characterization/data/basic.ast | 6 ++++++ .../repl_characterization/data/basic.test | 6 ++++++ .../data/basic_tidied.ast | 10 ++++++++++ .../repl_characterization.cc | 19 ++++++++++++++++++- 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tests/functional/repl_characterization/data/basic_tidied.ast 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 a8d6c6d83..e6ccdd7cd 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" @@ -65,7 +66,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); CLILiterateParser::tidyOutputForComparison(parsedOutLog); CLILiterateParser::tidyOutputForComparison(syntax); @@ -87,6 +91,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); + + CLILiterateParser::tidyOutputForComparison(syntax); + + std::ostringstream out{}; + for (auto & bit : syntax) { + out << bit.print() << "\n"; + } + return out.str(); + }); } TEST_F(ReplSessionTest, repl_basic)