summaryrefslogtreecommitdiff
path: root/Userland/Utilities/update-cpp-test-results.cpp
diff options
context:
space:
mode:
authorItamar <itamar8910@gmail.com>2022-02-08 19:16:44 +0200
committerLinus Groh <mail@linusgroh.de>2022-02-12 11:45:15 +0000
commit2903c47ba068a5a22735411ec445efbfda53bbe1 (patch)
tree0633904c491d42c6d5a8145d5aa69e741bc0c594 /Userland/Utilities/update-cpp-test-results.cpp
parente9d3f3793c26c343001ab5eb87dc92dec46d6a9e (diff)
downloadserenity-2903c47ba068a5a22735411ec445efbfda53bbe1.zip
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.
Diffstat (limited to 'Userland/Utilities/update-cpp-test-results.cpp')
-rw-r--r--Userland/Utilities/update-cpp-test-results.cpp39
1 files changed, 39 insertions, 0 deletions
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. <itamar8910@gmail.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <AK/Format.h>
+#include <AK/LexicalPath.h>
+#include <LibCore/Command.h>
+#include <LibCore/DirIterator.h>
+#include <LibCore/StandardPaths.h>
+#include <LibMain/Main.h>
+
+ErrorOr<int> 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;
+}