From bf2705f92c9a922b7d39d2eed70ed3ff17f98cce Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Mon, 16 Oct 2023 11:49:29 +0200 Subject: [PATCH 01/11] Add verification of the GNATcheck worker executable --- lkql_checker/lalcheck/gnatcheck-compiler.adb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lkql_checker/lalcheck/gnatcheck-compiler.adb b/lkql_checker/lalcheck/gnatcheck-compiler.adb index 8911f50cb..a673639e4 100644 --- a/lkql_checker/lalcheck/gnatcheck-compiler.adb +++ b/lkql_checker/lalcheck/gnatcheck-compiler.adb @@ -1405,6 +1405,13 @@ package body Gnatcheck.Compiler is end if; end loop; + -- Test if the worker executable exists + if Worker = null then + Error ("cannot locate the worker executable: " + & Base_Name (Worker_Command)); + raise Fatal_Error; + end if; + if Prj /= "" then Num_Args := @ + 1; Args (Num_Args) := new String'("-P" & Prj); From bc71aa0865b494bc6eccb2918df7733513135a71 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Mon, 16 Oct 2023 17:04:21 +0200 Subject: [PATCH 02/11] Remove 'Not_A_Diagnosis' diagnosis kind --- lkql_checker/lalcheck/gnatcheck-diagnoses.adb | 3 --- lkql_checker/lalcheck/gnatcheck-diagnoses.ads | 3 +-- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/lkql_checker/lalcheck/gnatcheck-diagnoses.adb b/lkql_checker/lalcheck/gnatcheck-diagnoses.adb index 2b76a8e50..e776d5d0c 100644 --- a/lkql_checker/lalcheck/gnatcheck-diagnoses.adb +++ b/lkql_checker/lalcheck/gnatcheck-diagnoses.adb @@ -703,9 +703,6 @@ package body Gnatcheck.Diagnoses is end if; case Error_Messages_Storage.Element (Position).Diagnosis_Kind is - when Not_A_Diagnosis => - pragma Assert (False); - null; when Rule_Violation => if Error_Messages_Storage.Element (Position).Justification = Null_Unbounded_String diff --git a/lkql_checker/lalcheck/gnatcheck-diagnoses.ads b/lkql_checker/lalcheck/gnatcheck-diagnoses.ads index 06f92fc60..e0eb77721 100644 --- a/lkql_checker/lalcheck/gnatcheck-diagnoses.ads +++ b/lkql_checker/lalcheck/gnatcheck-diagnoses.ads @@ -46,8 +46,7 @@ package Gnatcheck.Diagnoses is ----------------------- type Diagnosis_Kinds is - (Not_A_Diagnosis, - Rule_Violation, + (Rule_Violation, -- Corresponds to all rule diagnoses, including compiler checks Exemption_Warning, -- Warnings generated for Annotate pragmas used to implement rule From 66fa6ee6531b08fd9d6eb82be8c4b7282f681a17 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Tue, 17 Oct 2023 16:04:50 +0200 Subject: [PATCH 03/11] Add worker error parsing in the GNATcheck driver --- lkql_checker/lalcheck/gnatcheck-compiler.adb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lkql_checker/lalcheck/gnatcheck-compiler.adb b/lkql_checker/lalcheck/gnatcheck-compiler.adb index a673639e4..6424d6a73 100644 --- a/lkql_checker/lalcheck/gnatcheck-compiler.adb +++ b/lkql_checker/lalcheck/gnatcheck-compiler.adb @@ -478,6 +478,12 @@ package body Gnatcheck.Compiler is end if; end; end if; + elsif Line_Len >= 20 + and then Line (1 .. 20) = "WORKER_FATAL_ERROR: " + then + Error ("error raised by the worker: " & Line (21 .. Line_Len)); + Errors := True; + return; else Analyze_Line (Line (1 .. Line_Len)); end if; From 98f921ed59beeba42e9578e6206cce87afb1a5bc Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Mon, 23 Oct 2023 12:27:44 +0200 Subject: [PATCH 04/11] Move file presence verification in line analyzing to report all unparsable lines --- lkql_checker/lalcheck/gnatcheck-compiler.adb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lkql_checker/lalcheck/gnatcheck-compiler.adb b/lkql_checker/lalcheck/gnatcheck-compiler.adb index 6424d6a73..53c21966e 100644 --- a/lkql_checker/lalcheck/gnatcheck-compiler.adb +++ b/lkql_checker/lalcheck/gnatcheck-compiler.adb @@ -259,8 +259,7 @@ package body Gnatcheck.Compiler is procedure Format_Error is begin - Error ("Unexpected format of message:"); - Error_No_Tool_Name (Msg); + Error ("Unparsable line: " & Msg); Errors := True; end Format_Error; @@ -271,8 +270,9 @@ package body Gnatcheck.Compiler is end if; -- We assume the following format of the message: + -- filename:line:column: -- - -- filename:line:column: + -- If this format is violated we display the line as unparasable. Idx := Index (Msg (Idx .. Msg'Last), ":"); @@ -284,11 +284,6 @@ package body Gnatcheck.Compiler is File_Idx := Idx; SF := File_Find (Msg (First_Idx .. Idx - 1), Use_Short_Name => True); - if not Present (SF) or else Source_Info (SF) = Ignore_Unit then - -- This source should be ignored - return; - end if; - Word_End := Index (Msg (Idx + 1 .. Msg'Last), ":"); if Word_End = 0 then @@ -320,6 +315,12 @@ package body Gnatcheck.Compiler is return; end; + -- Test if the provided sources is present and is not ignored + if not Present (SF) or else Source_Info (SF) = Ignore_Unit then + -- This source should be ignored + return; + end if; + Idx := Word_End + 2; -- A gnatcheck message emitted by a child process via --subprocess From 7e76e2c442bc41cf22c9ed6b9932dcb4292c94f3 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Tue, 17 Oct 2023 16:05:41 +0200 Subject: [PATCH 05/11] Adapt LKQL JIT to only emit GNATcheck compatible messages Avoid arbitrary calls to 'System.out.println'. Catch all exceptions raised during the 'GNATCheckWorker' to turn them into worker fatal errors. --- .../main/java/com/adacore/lkql_jit/LKQLContext.java | 12 ++++++++++-- .../lkql_jit/exception/LKQLRuntimeException.java | 2 +- .../java/com/adacore/lkql_jit/nodes/LKQLNode.java | 1 - .../java/com/adacore/lkql_jit/GNATCheckWorker.java | 6 +----- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lkql_jit/language/src/main/java/com/adacore/lkql_jit/LKQLContext.java b/lkql_jit/language/src/main/java/com/adacore/lkql_jit/LKQLContext.java index 90903b0f2..695d35351 100644 --- a/lkql_jit/language/src/main/java/com/adacore/lkql_jit/LKQLContext.java +++ b/lkql_jit/language/src/main/java/com/adacore/lkql_jit/LKQLContext.java @@ -533,7 +533,8 @@ public void initSources() { if (sourceFile.isFile()) { this.specifiedSourceFiles.add(sourceFile.getAbsolutePath()); } else { - System.err.println("Source file '" + file + "' not found"); + this.getDiagnosticEmitter() + .emitMissingFile(null, file, !this.keepGoingOnMissingFile(), this); } } } @@ -567,6 +568,12 @@ public void initSources() { Libadalang.ProjectManager.create( projectFileName, this.getScenarioVars(), "", ""); + // Test if there is any diagnostic in the project manager + if (!this.projectManager.getDiagnostics().isEmpty()) { + throw LKQLRuntimeException.fromMessage( + "Error(s) during project opening: " + this.projectManager.getDiagnostics()); + } + final String subprojectName = this.env.getOptions().get(LKQLLanguage.subprojectFile); final String[] subprojects = subprojectName.isEmpty() ? null : new String[] {subprojectName}; @@ -616,7 +623,8 @@ public void initSources() { // We should not get any scenario variable if we are being run without a project file. if (this.getScenarioVars().length != 0) { - System.err.println("Scenario variable specifications require a project file"); + throw LKQLRuntimeException.fromMessage( + "Scenario variable specifications require a project file"); } this.adaContext = diff --git a/lkql_jit/language/src/main/java/com/adacore/lkql_jit/exception/LKQLRuntimeException.java b/lkql_jit/language/src/main/java/com/adacore/lkql_jit/exception/LKQLRuntimeException.java index bc288a6ee..31b59be16 100644 --- a/lkql_jit/language/src/main/java/com/adacore/lkql_jit/exception/LKQLRuntimeException.java +++ b/lkql_jit/language/src/main/java/com/adacore/lkql_jit/exception/LKQLRuntimeException.java @@ -78,7 +78,7 @@ public static LKQLRuntimeException fromMessage(String message, Locatable locatio */ @CompilerDirectives.TruffleBoundary public static LKQLRuntimeException fromMessage(String message) { - return new LKQLRuntimeException("Error: " + message); + return new LKQLRuntimeException(message); } /** diff --git a/lkql_jit/language/src/main/java/com/adacore/lkql_jit/nodes/LKQLNode.java b/lkql_jit/language/src/main/java/com/adacore/lkql_jit/nodes/LKQLNode.java index 77d766e47..28954d18d 100644 --- a/lkql_jit/language/src/main/java/com/adacore/lkql_jit/nodes/LKQLNode.java +++ b/lkql_jit/language/src/main/java/com/adacore/lkql_jit/nodes/LKQLNode.java @@ -235,7 +235,6 @@ else if (fieldValue instanceof LKQLNode lkqlNode) { + childField.getName() + " for " + this.getClass().getSimpleName()); - e.printStackTrace(); } } diff --git a/lkql_jit/lkql_cli/src/main/java/com/adacore/lkql_jit/GNATCheckWorker.java b/lkql_jit/lkql_cli/src/main/java/com/adacore/lkql_jit/GNATCheckWorker.java index 79473099b..dceb62d12 100644 --- a/lkql_jit/lkql_cli/src/main/java/com/adacore/lkql_jit/GNATCheckWorker.java +++ b/lkql_jit/lkql_cli/src/main/java/com/adacore/lkql_jit/GNATCheckWorker.java @@ -262,11 +262,7 @@ protected int executeScript(Context.Builder contextBuilder) { executable.executeVoid(true); return 0; } catch (Exception e) { - if (this.args.verbose) { - e.printStackTrace(); - } else { - System.err.println(e.getMessage()); - } + System.out.println("WORKER_FATAL_ERROR: " + e.getMessage()); return 0; } } From f52a42682006fb6e6c70513ea2e7b1a1603fff03 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Mon, 23 Oct 2023 12:07:07 +0200 Subject: [PATCH 06/11] Move GNATcheck internal error testing in the 'gnatcheck_errors' dir --- .../lal_property_error/main.adb | 0 .../lal_property_error/prj.gpr | 0 .../lal_property_error/rules/foo.lkql | 0 .../lal_property_error/rules/foo_unit.lkql | 0 .../lal_property_error/test.out | 0 .../lal_property_error/test.yaml | 0 .../internal_errors => gnatcheck_errors}/lkql_error/main.adb | 0 .../internal_errors => gnatcheck_errors}/lkql_error/prj.gpr | 0 .../lkql_error/rules/foo.lkql | 0 .../lkql_error/rules/foo_unit.lkql | 0 .../internal_errors => gnatcheck_errors}/lkql_error/test.out | 0 .../internal_errors => gnatcheck_errors}/lkql_error/test.yaml | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lal_property_error/main.adb (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lal_property_error/prj.gpr (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lal_property_error/rules/foo.lkql (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lal_property_error/rules/foo_unit.lkql (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lal_property_error/test.out (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lal_property_error/test.yaml (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lkql_error/main.adb (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lkql_error/prj.gpr (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lkql_error/rules/foo.lkql (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lkql_error/rules/foo_unit.lkql (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lkql_error/test.out (100%) rename testsuite/tests/{gnatcheck/internal_errors => gnatcheck_errors}/lkql_error/test.yaml (100%) diff --git a/testsuite/tests/gnatcheck/internal_errors/lal_property_error/main.adb b/testsuite/tests/gnatcheck_errors/lal_property_error/main.adb similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lal_property_error/main.adb rename to testsuite/tests/gnatcheck_errors/lal_property_error/main.adb diff --git a/testsuite/tests/gnatcheck/internal_errors/lal_property_error/prj.gpr b/testsuite/tests/gnatcheck_errors/lal_property_error/prj.gpr similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lal_property_error/prj.gpr rename to testsuite/tests/gnatcheck_errors/lal_property_error/prj.gpr diff --git a/testsuite/tests/gnatcheck/internal_errors/lal_property_error/rules/foo.lkql b/testsuite/tests/gnatcheck_errors/lal_property_error/rules/foo.lkql similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lal_property_error/rules/foo.lkql rename to testsuite/tests/gnatcheck_errors/lal_property_error/rules/foo.lkql diff --git a/testsuite/tests/gnatcheck/internal_errors/lal_property_error/rules/foo_unit.lkql b/testsuite/tests/gnatcheck_errors/lal_property_error/rules/foo_unit.lkql similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lal_property_error/rules/foo_unit.lkql rename to testsuite/tests/gnatcheck_errors/lal_property_error/rules/foo_unit.lkql diff --git a/testsuite/tests/gnatcheck/internal_errors/lal_property_error/test.out b/testsuite/tests/gnatcheck_errors/lal_property_error/test.out similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lal_property_error/test.out rename to testsuite/tests/gnatcheck_errors/lal_property_error/test.out diff --git a/testsuite/tests/gnatcheck/internal_errors/lal_property_error/test.yaml b/testsuite/tests/gnatcheck_errors/lal_property_error/test.yaml similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lal_property_error/test.yaml rename to testsuite/tests/gnatcheck_errors/lal_property_error/test.yaml diff --git a/testsuite/tests/gnatcheck/internal_errors/lkql_error/main.adb b/testsuite/tests/gnatcheck_errors/lkql_error/main.adb similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lkql_error/main.adb rename to testsuite/tests/gnatcheck_errors/lkql_error/main.adb diff --git a/testsuite/tests/gnatcheck/internal_errors/lkql_error/prj.gpr b/testsuite/tests/gnatcheck_errors/lkql_error/prj.gpr similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lkql_error/prj.gpr rename to testsuite/tests/gnatcheck_errors/lkql_error/prj.gpr diff --git a/testsuite/tests/gnatcheck/internal_errors/lkql_error/rules/foo.lkql b/testsuite/tests/gnatcheck_errors/lkql_error/rules/foo.lkql similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lkql_error/rules/foo.lkql rename to testsuite/tests/gnatcheck_errors/lkql_error/rules/foo.lkql diff --git a/testsuite/tests/gnatcheck/internal_errors/lkql_error/rules/foo_unit.lkql b/testsuite/tests/gnatcheck_errors/lkql_error/rules/foo_unit.lkql similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lkql_error/rules/foo_unit.lkql rename to testsuite/tests/gnatcheck_errors/lkql_error/rules/foo_unit.lkql diff --git a/testsuite/tests/gnatcheck/internal_errors/lkql_error/test.out b/testsuite/tests/gnatcheck_errors/lkql_error/test.out similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lkql_error/test.out rename to testsuite/tests/gnatcheck_errors/lkql_error/test.out diff --git a/testsuite/tests/gnatcheck/internal_errors/lkql_error/test.yaml b/testsuite/tests/gnatcheck_errors/lkql_error/test.yaml similarity index 100% rename from testsuite/tests/gnatcheck/internal_errors/lkql_error/test.yaml rename to testsuite/tests/gnatcheck_errors/lkql_error/test.yaml From 74ce3d0dce62f2dd3848f7b094d4291ce9a4d488 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Tue, 7 Nov 2023 10:45:28 +0100 Subject: [PATCH 07/11] Add the 'worker' option in the GNATcheck driver to configure a custom worker --- testsuite/drivers/gnatcheck_driver.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/testsuite/drivers/gnatcheck_driver.py b/testsuite/drivers/gnatcheck_driver.py index dbe6f8a02..e6eda25bb 100644 --- a/testsuite/drivers/gnatcheck_driver.py +++ b/testsuite/drivers/gnatcheck_driver.py @@ -138,6 +138,7 @@ class GnatcheckDriver(BaseDriver): - ``profile-time``: Enable the time profiling or not as a boolean - ``pre_python``/``post_python``: Python code to be executed before/after the test + - ``worker``: Provide a custom worker for the GNATcheck run .. NOTE:: In practice, the above allows several different ways to express the same test, which dis not ideal. It was necessary to transition @@ -172,7 +173,8 @@ def run(self) -> None: gnatcheck_env["LKQL_RULES_PATH"] = getattr( self.env, "gnatcheck_rules_path", "" ) - gnatcheck_env["GNATCHECK_WORKER"] = " ".join( + custom_worker = self.test_env.get('worker', None) + gnatcheck_env["GNATCHECK_WORKER"] = custom_worker or " ".join( self.gnatcheck_worker_exe ) From ffb1a9493afc56894a875b1d1d50d43d28c2eab1 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Mon, 23 Oct 2023 12:28:51 +0200 Subject: [PATCH 08/11] Add a test for missing source directories --- testsuite/tests/gnatcheck_errors/missing_source_dirs/prj.gpr | 3 +++ .../tests/gnatcheck_errors/missing_source_dirs/test.out | 4 ++++ .../tests/gnatcheck_errors/missing_source_dirs/test.yaml | 5 +++++ 3 files changed, 12 insertions(+) create mode 100644 testsuite/tests/gnatcheck_errors/missing_source_dirs/prj.gpr create mode 100644 testsuite/tests/gnatcheck_errors/missing_source_dirs/test.out create mode 100644 testsuite/tests/gnatcheck_errors/missing_source_dirs/test.yaml diff --git a/testsuite/tests/gnatcheck_errors/missing_source_dirs/prj.gpr b/testsuite/tests/gnatcheck_errors/missing_source_dirs/prj.gpr new file mode 100644 index 000000000..a6fe033af --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_source_dirs/prj.gpr @@ -0,0 +1,3 @@ +project Prj is + for Source_Dirs use ("invalid_source_dirs"); +end Prj; diff --git a/testsuite/tests/gnatcheck_errors/missing_source_dirs/test.out b/testsuite/tests/gnatcheck_errors/missing_source_dirs/test.out new file mode 100644 index 000000000..20ef0795e --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_source_dirs/test.out @@ -0,0 +1,4 @@ +gnatcheck: prj.gpr:2:26: error: "/invalid_source_dirs" is not a valid directory +gnatcheck: prj.gpr: warning: there are no sources of language "Ada" in this project +try "gnatcheck --help" for more information. +>>>program returned status code 2 diff --git a/testsuite/tests/gnatcheck_errors/missing_source_dirs/test.yaml b/testsuite/tests/gnatcheck_errors/missing_source_dirs/test.yaml new file mode 100644 index 000000000..dd920e401 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_source_dirs/test.yaml @@ -0,0 +1,5 @@ +driver: gnatcheck +format: brief +project: prj.gpr +rules: + - +RGOTO_Statements From d97badb20470db4f39984b5abd0b57c626576a37 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Mon, 23 Oct 2023 12:32:50 +0200 Subject: [PATCH 09/11] Add a test for worker fatal errors --- .../tests/gnatcheck_errors/missing_excluded_source/main.adb | 4 ++++ .../tests/gnatcheck_errors/missing_excluded_source/prj.gpr | 3 +++ .../tests/gnatcheck_errors/missing_excluded_source/test.out | 1 + .../tests/gnatcheck_errors/missing_excluded_source/test.yaml | 5 +++++ 4 files changed, 13 insertions(+) create mode 100644 testsuite/tests/gnatcheck_errors/missing_excluded_source/main.adb create mode 100644 testsuite/tests/gnatcheck_errors/missing_excluded_source/prj.gpr create mode 100644 testsuite/tests/gnatcheck_errors/missing_excluded_source/test.out create mode 100644 testsuite/tests/gnatcheck_errors/missing_excluded_source/test.yaml diff --git a/testsuite/tests/gnatcheck_errors/missing_excluded_source/main.adb b/testsuite/tests/gnatcheck_errors/missing_excluded_source/main.adb new file mode 100644 index 000000000..6b8ed1786 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_excluded_source/main.adb @@ -0,0 +1,4 @@ +procedure Main is +begin + Put_Line ("Main"); +end Main; diff --git a/testsuite/tests/gnatcheck_errors/missing_excluded_source/prj.gpr b/testsuite/tests/gnatcheck_errors/missing_excluded_source/prj.gpr new file mode 100644 index 000000000..4b513093f --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_excluded_source/prj.gpr @@ -0,0 +1,3 @@ +project Prj is + for Excluded_Source_Files use ("invalid.adb"); +end Prj; diff --git a/testsuite/tests/gnatcheck_errors/missing_excluded_source/test.out b/testsuite/tests/gnatcheck_errors/missing_excluded_source/test.out new file mode 100644 index 000000000..7eed09a74 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_excluded_source/test.out @@ -0,0 +1 @@ +gnatcheck: error raised by the worker: Error(s) during project opening: [prj.gpr:2:36: unknown file "invalid.adb"] diff --git a/testsuite/tests/gnatcheck_errors/missing_excluded_source/test.yaml b/testsuite/tests/gnatcheck_errors/missing_excluded_source/test.yaml new file mode 100644 index 000000000..dd920e401 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_excluded_source/test.yaml @@ -0,0 +1,5 @@ +driver: gnatcheck +format: brief +project: prj.gpr +rules: + - +RGOTO_Statements From bb0ac5af9586d729732ab94593671e0caed1f1e7 Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Tue, 7 Nov 2023 10:58:58 +0100 Subject: [PATCH 10/11] Add a test for a 'not found GNATcheck worker' cases --- testsuite/tests/gnatcheck_errors/missing_worker/main.adb | 4 ++++ testsuite/tests/gnatcheck_errors/missing_worker/test.out | 2 ++ testsuite/tests/gnatcheck_errors/missing_worker/test.yaml | 7 +++++++ 3 files changed, 13 insertions(+) create mode 100644 testsuite/tests/gnatcheck_errors/missing_worker/main.adb create mode 100644 testsuite/tests/gnatcheck_errors/missing_worker/test.out create mode 100644 testsuite/tests/gnatcheck_errors/missing_worker/test.yaml diff --git a/testsuite/tests/gnatcheck_errors/missing_worker/main.adb b/testsuite/tests/gnatcheck_errors/missing_worker/main.adb new file mode 100644 index 000000000..0d740f2bb --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_worker/main.adb @@ -0,0 +1,4 @@ +procedure Main is +begin + null; +end Name; diff --git a/testsuite/tests/gnatcheck_errors/missing_worker/test.out b/testsuite/tests/gnatcheck_errors/missing_worker/test.out new file mode 100644 index 000000000..0d0f13456 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_worker/test.out @@ -0,0 +1,2 @@ +gnatcheck: cannot locate the worker executable: i_dont_exist +>>>program returned status code 2 diff --git a/testsuite/tests/gnatcheck_errors/missing_worker/test.yaml b/testsuite/tests/gnatcheck_errors/missing_worker/test.yaml new file mode 100644 index 000000000..12fff3301 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/missing_worker/test.yaml @@ -0,0 +1,7 @@ +driver: gnatcheck +format: brief +worker: i_dont_exist +input_sources: + - main.adb +rules: + - +RGOTO_Statements From 1fe6ca3470d5c95c374432e5301fa2b9b96a475b Mon Sep 17 00:00:00 2001 From: Hugo Guerrier Date: Tue, 7 Nov 2023 11:12:35 +0100 Subject: [PATCH 11/11] Add a test for invalid worker messages reporting --- testsuite/tests/gnatcheck_errors/invalid_worker/main.adb | 4 ++++ testsuite/tests/gnatcheck_errors/invalid_worker/test.out | 3 +++ testsuite/tests/gnatcheck_errors/invalid_worker/test.yaml | 7 +++++++ 3 files changed, 14 insertions(+) create mode 100644 testsuite/tests/gnatcheck_errors/invalid_worker/main.adb create mode 100644 testsuite/tests/gnatcheck_errors/invalid_worker/test.out create mode 100644 testsuite/tests/gnatcheck_errors/invalid_worker/test.yaml diff --git a/testsuite/tests/gnatcheck_errors/invalid_worker/main.adb b/testsuite/tests/gnatcheck_errors/invalid_worker/main.adb new file mode 100644 index 000000000..0d740f2bb --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/invalid_worker/main.adb @@ -0,0 +1,4 @@ +procedure Main is +begin + null; +end Name; diff --git a/testsuite/tests/gnatcheck_errors/invalid_worker/test.out b/testsuite/tests/gnatcheck_errors/invalid_worker/test.out new file mode 100644 index 000000000..ad5cd3fb7 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/invalid_worker/test.out @@ -0,0 +1,3 @@ +gnatcheck: Unparsable line: Not a message +gnatcheck: Unparsable line: Message: Should appear +gnatcheck: Unparsable line: --files-from=/gnatcheck-files1.TMP --rules-from=/gnatcheck-rules0.TMP diff --git a/testsuite/tests/gnatcheck_errors/invalid_worker/test.yaml b/testsuite/tests/gnatcheck_errors/invalid_worker/test.yaml new file mode 100644 index 000000000..5c8444b92 --- /dev/null +++ b/testsuite/tests/gnatcheck_errors/invalid_worker/test.yaml @@ -0,0 +1,7 @@ +driver: gnatcheck +format: brief +worker: "echo Not a message\nnot_a_file.adb:01:01: Should not appear\nMessage: Should appear\n" +input_sources: + - main.adb +rules: + - +RGOTO_Statements