diff --git a/tests/build_schema_tests.cpp b/tests/build_schema_tests.cpp index 11bb3f7..8805f83 100644 --- a/tests/build_schema_tests.cpp +++ b/tests/build_schema_tests.cpp @@ -224,24 +224,17 @@ int test_main(int argc, char** argv) { const auto previous_manifest = read_text(directory / "manifest.json"); atomic_write(config.project_root / "emit-clang-error-and-fail-build", "fixture\n"); const auto compile_failed = builds.wait(builds.start_build()); + bool retained_compile_error = false; + for (const auto& diagnostic : compile_failed.diagnostics) + retained_compile_error |= diagnostic.value("severity", "") == "error" && + diagnostic.value("file", "") == "Scripts/Gameplay.cpp"; check(compile_failed.state == "failed" && read_text(last_build) == previous_pointer && - compile_failed.json().at("diagnostics").size() == 1 && - compile_failed.json().at("diagnostics")[0].at("file") == - "Scripts/Gameplay.cpp" && + compile_failed.diagnostics.size() == 200 && retained_compile_error && + compile_failed.log.find("dependency warning 249") != std::string::npos && compile_failed.log.find("fixture compile failure") != std::string::npos, - "Failed compiler output retains raw log and structured source location"); + "Error after 250 warnings keeps raw log and structured source location"); fs::remove(config.project_root / "emit-clang-error-and-fail-build"); - atomic_write(config.project_root / "flood-warnings-and-fail-build", "fixture\n"); - const auto flooded = builds.wait(builds.start_build()); - bool retained_error = false; - for (const auto& diagnostic : flooded.diagnostics) - retained_error |= diagnostic.value("severity", "") == "error" && - diagnostic.value("file", "") == "Scripts/Gameplay.cpp"; - check(flooded.state == "failed" && flooded.diagnostics.size() <= 200 && - retained_error && read_text(last_build) == previous_pointer, - "Compiler errors survive bounded third-party warning floods"); - fs::remove(config.project_root / "flood-warnings-and-fail-build"); atomic_write(config.project_root / "fail-unparseable-build", "fixture\n"); const auto generic_failed = builds.wait(builds.start_build()); check(generic_failed.state == "failed" && diff --git a/tests/build_schema_tool.cpp b/tests/build_schema_tool.cpp index 9a80549..13aa18c 100644 --- a/tests/build_schema_tool.cpp +++ b/tests/build_schema_tool.cpp @@ -40,15 +40,10 @@ int tool_main(int argc, char** argv) { return 0; } if (argc > 2 && std::string_view(argv[1]) == "--build") { - if (fs::exists("flood-warnings-and-fail-build")) { + if (fs::exists("emit-clang-error-and-fail-build")) { for (int index = 0; index < 250; ++index) std::cerr << "/external/library.cpp:1:1: warning: dependency warning " << index << '\n'; - std::cerr << path_to_utf8(fs::current_path() / "Scripts/Gameplay.cpp") - << ":7:3: error: gameplay error after warnings\n"; - return 1; - } - if (fs::exists("emit-clang-error-and-fail-build")) { std::cerr << path_to_utf8(fs::current_path() / "Scripts/Gameplay.cpp") << ":7:3: error: fixture compile failure\n"; return 1;