From 7fe2fb3fed23ff2122790c50394e9c717859032e Mon Sep 17 00:00:00 2001 From: Clint Herron Date: Mon, 29 Apr 2024 14:17:59 -0400 Subject: [PATCH] Implementing suggestions from @ochafik -- grammars and test strings now print and flush before tests to aid in debugging segfaults and whatnot. --- tests/test-grammar-integration.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/tests/test-grammar-integration.cpp b/tests/test-grammar-integration.cpp index fe43ad552..51e59f05a 100644 --- a/tests/test-grammar-integration.cpp +++ b/tests/test-grammar-integration.cpp @@ -53,21 +53,27 @@ static bool match_string(const std::string & input, llama_grammar* grammar) { } static void test_grammar(const std::string & grammar_str, const std::vector & passing_strings, const std::vector & failing_strings) { - fprintf(stderr, "🟢 Testing grammar: %s\n", grammar_str.c_str()); + fprintf(stderr, "⚪ Testing grammar: %s\n", grammar_str.c_str()); + fflush(stderr); auto grammar = build_grammar(grammar_str); // Save the original grammar stacks so that we can reset after every new string we want to test auto original_stacks = grammar->stacks; + fprintf(stderr, " Checking valid strings:\n"); + // Passing strings for (const auto & test_string : passing_strings) { + fprintf(stderr, " \"%s\" ", test_string.c_str()); + fflush(stderr); + bool matched = match_string(test_string, grammar); if (!matched) { - fprintf(stderr, " ❌ Failed to match string: \"%s\"\n", test_string.c_str()); + fprintf(stderr, "❌ (failed to match)\n"); } else { - fprintf(stdout, " ✅︎ Matched string: \"%s\"\n", test_string.c_str()); + fprintf(stdout, "✅︎\n"); } assert(matched); @@ -76,14 +82,19 @@ static void test_grammar(const std::string & grammar_str, const std::vectorstacks = original_stacks; } + fprintf(stderr, " Checking invalid strings:\n"); + // Failing strings for (const auto & test_string : failing_strings) { + fprintf(stderr, " \"%s\" ", test_string.c_str()); + fflush(stderr); + bool matched = match_string(test_string, grammar); if (matched) { - fprintf(stderr, " ❌ Improperly matched string: \"%s\"\n", test_string.c_str()); + fprintf(stderr, "❌ (incorrectly matched)\n"); } else { - fprintf(stdout, " ✅︎ Correctly did not match string: \"%s\"\n", test_string.c_str()); + fprintf(stdout, "✅︎\n"); } assert(!matched);