Merge "Fix REPL test parser nits" into main
This commit is contained in:
commit
3910d4aa68
4 changed files with 7 additions and 14 deletions
|
@ -123,11 +123,6 @@ public:
|
|||
{
|
||||
runReplTestPath(nameBase, {});
|
||||
}
|
||||
|
||||
void runDebuggerTest(const std::string_view & nameBase)
|
||||
{
|
||||
runReplTestPath(nameBase, {"--debugger"});
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(ReplSessionTest, round_trip)
|
||||
|
|
|
@ -121,7 +121,7 @@ bool TestSession::readOutThen(ReadOutThenCallback cb)
|
|||
|
||||
bool TestSession::waitForPrompt()
|
||||
{
|
||||
bool notEof = readOutThen([&](std::span<char> s) -> ReadOutThenCallbackResult {
|
||||
bool notEof = readOutThen([&](std::span<const char> s) -> ReadOutThenCallbackResult {
|
||||
bool foundPrompt = false;
|
||||
|
||||
for (auto ch : s) {
|
||||
|
@ -147,7 +147,7 @@ bool TestSession::waitForPrompt()
|
|||
|
||||
void TestSession::wait()
|
||||
{
|
||||
readOutThen([&](std::span<char> s) {
|
||||
readOutThen([&](std::span<const char> s) {
|
||||
for (auto ch : s) {
|
||||
eater.feed(ch, [&](char c) {
|
||||
outputParser.feed(c);
|
||||
|
|
|
@ -76,7 +76,7 @@ private:
|
|||
void wait();
|
||||
|
||||
enum class ReadOutThenCallbackResult { Stop, Continue };
|
||||
using ReadOutThenCallback = std::function<ReadOutThenCallbackResult(std::span<char>)>;
|
||||
using ReadOutThenCallback = std::function<ReadOutThenCallbackResult(std::span<const char>)>;
|
||||
/** Reads some chunks of output, calling the callback provided for each
|
||||
* chunk and stopping if it returns Stop.
|
||||
*
|
||||
|
|
|
@ -35,7 +35,7 @@ struct Parser
|
|||
: input(input)
|
||||
, rest(this->input)
|
||||
, prompt(config.prompt)
|
||||
, indentString(std::string(config.indent, ' '))
|
||||
, indentString(config.indent, ' ')
|
||||
, lastWasOutput(false)
|
||||
, syntax{}
|
||||
{
|
||||
|
@ -260,12 +260,11 @@ struct Parser
|
|||
std::vector<Node> newSyntax;
|
||||
auto shouldStart = true;
|
||||
|
||||
for (auto it = syntax.begin(); it != syntax.end(); ++it) {
|
||||
Node node = std::move(*it);
|
||||
for (auto & node : syntax) {
|
||||
std::visit(
|
||||
overloaded{
|
||||
[&](Args & e) {
|
||||
auto split = shell_split(std::string(e.text));
|
||||
auto split = shell_split(e.text);
|
||||
args.insert(args.end(), split.begin(), split.end());
|
||||
},
|
||||
[&](ShouldStart & e) { shouldStart = e.shouldStart; },
|
||||
|
@ -293,8 +292,7 @@ auto tidySyntax(View syntax) -> std::vector<Node>
|
|||
auto lastWasCommand = true;
|
||||
std::vector<Node> newSyntax;
|
||||
|
||||
for (auto it = syntax.begin(); it != syntax.end(); ++it) {
|
||||
Node node = *it;
|
||||
for (auto & node : syntax) {
|
||||
// Only compare `Command` and `Output` nodes.
|
||||
if (std::visit([&](auto && e) { return !e.shouldCompare(); }, node)) {
|
||||
continue;
|
||||
|
|
Loading…
Reference in a new issue