From 2903c47ba068a5a22735411ec445efbfda53bbe1 Mon Sep 17 00:00:00 2001 From: Itamar Date: Tue, 8 Feb 2022 19:16:44 +0200 Subject: [PATCH] Utilities: Add update-cpp-test-results utility This is a small utility that updates the target tests results for the LibCpp parser and preprocessor regression tests. It's handy to run after changing something in the output of either the parser or the preprocessor. --- Userland/Utilities/CMakeLists.txt | 1 + .../Utilities/update-cpp-test-results.cpp | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 Userland/Utilities/update-cpp-test-results.cpp diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 459e993511..f762d7c23d 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -190,6 +190,7 @@ target_link_libraries(umount LibMain) target_link_libraries(uname LibMain) target_link_libraries(uniq LibMain) target_link_libraries(unzip LibArchive LibCompress LibMain) +target_link_libraries(update-cpp-test-results LibCpp LibCore LibMain) target_link_libraries(uptime LibMain) target_link_libraries(userdel LibMain) target_link_libraries(usermod LibMain) diff --git a/Userland/Utilities/update-cpp-test-results.cpp b/Userland/Utilities/update-cpp-test-results.cpp new file mode 100644 index 0000000000..51f9aa1e5a --- /dev/null +++ b/Userland/Utilities/update-cpp-test-results.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2022, Itamar S. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include +#include +#include + +ErrorOr serenity_main(Main::Arguments) +{ + Core::DirIterator parser_tests(LexicalPath::join(Core::StandardPaths::home_directory(), "cpp-tests/parser").string()); + while (parser_tests.has_next()) { + auto cpp_full_path = parser_tests.next_full_path(); + if (!cpp_full_path.ends_with(".cpp")) + continue; + auto ast_full_path = cpp_full_path.replace(".cpp", ".ast"); + outln("{}", cpp_full_path); + auto res = Core::command("/bin/sh", { "sh", "-c", String::formatted("cpp-parser {} > {}", cpp_full_path, ast_full_path) }, {}); + VERIFY(!res.is_error()); + } + + Core::DirIterator preprocessor_tests(LexicalPath::join(Core::StandardPaths::home_directory(), "cpp-tests/preprocessor").string()); + while (preprocessor_tests.has_next()) { + auto cpp_full_path = preprocessor_tests.next_full_path(); + if (!cpp_full_path.ends_with(".cpp")) + continue; + auto ast_full_path = cpp_full_path.replace(".cpp", ".txt"); + outln("{}", cpp_full_path); + auto res = Core::command("/bin/sh", { "sh", "-c", String::formatted("cpp-preprocessor {} > {}", cpp_full_path, ast_full_path) }, {}); + VERIFY(!res.is_error()); + } + + return 0; +}