Rombobjörn

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Persson <Bjorn@Rombobjörn.se>2025-09-05 12:12:42 +0200
committerBjörn Persson <Bjorn@Rombobjörn.se>2025-09-05 12:12:42 +0200
commit140a63ae7af13b8db25237c387efabd8ba1e2325 (patch)
tree072900b437905b5ee7d4f5c7fc35933e1cb45f22
parentb3263dc7119ce5e7da4422bc48877b8b93fc187a (diff)
Added testing of the switch variables.
-rw-r--r--testsuite/sources/embedding/Makefile28
-rw-r--r--testsuite/sources/embedding/build_check_pathnames.gpr29
-rw-r--r--testsuite/sources/embedding/check_pathnames.adb93
-rw-r--r--testsuite/sources/embedding/generated_files2
4 files changed, 152 insertions, 0 deletions
diff --git a/testsuite/sources/embedding/Makefile b/testsuite/sources/embedding/Makefile
new file mode 100644
index 0000000..696e5a8
--- /dev/null
+++ b/testsuite/sources/embedding/Makefile
@@ -0,0 +1,28 @@
+# part of Comfignat's testsuite
+# Copyright 2025 B. Persson, Bjorn@Rombobeorn.se
+#
+# This material is provided as is, with absolutely no warranty expressed
+# or implied. Any use is at your own risk.
+#
+# Permission is hereby granted to use or copy this testsuite
+# for any purpose, provided the above notices are retained on all copies.
+# Permission to modify the code and to distribute modified code is granted,
+# provided the above notices are retained, and a notice that the code was
+# modified is included with the above copyright notice.
+
+
+# This test checks that the switch variables convey directory names correctly
+# to a compiled program.
+
+
+include comfignat.mk
+
+build_GPRs = build_check_pathnames.gpr
+
+# Convey relocatable_package so check_pathnames knows whether the pathnames
+# shall be absolute or relative.
+options = relocatable_package
+
+# After check_pathnames has been built, run it to check the values.
+build:
+ "${stage_libexecdir}/check_pathnames"
diff --git a/testsuite/sources/embedding/build_check_pathnames.gpr b/testsuite/sources/embedding/build_check_pathnames.gpr
new file mode 100644
index 0000000..735e354
--- /dev/null
+++ b/testsuite/sources/embedding/build_check_pathnames.gpr
@@ -0,0 +1,29 @@
+-- part of Comfignat's testsuite
+-- Copyright 2025 B. Persson, Bjorn@Rombobeorn.se
+--
+-- This material is provided as is, with absolutely no warranty expressed
+-- or implied. Any use is at your own risk.
+--
+-- Permission is hereby granted to use or copy this testsuite
+-- for any purpose, provided the above notices are retained on all copies.
+-- Permission to modify the code and to distribute modified code is granted,
+-- provided the above notices are retained, and a notice that the code was
+-- modified is included with the above copyright notice.
+
+
+with "comfignat.gpr";
+
+standard project Build_Check_Pathnames is
+ for Main use ("check_pathnames");
+ for Object_Dir use Comfignat.Objdir;
+ for Exec_Dir use Comfignat.Stage_Libexecdir;
+
+ Relocatable := external("relocatable_package");
+
+ package Compiler is
+ for Default_Switches ("Ada") use
+ ("-Wall", "-Wextra", "-gnatwa", "-gnatVa",
+ "-gnateDRelocatable=" & Relocatable) &
+ Comfignat.All_Dir_Switches;
+ end Compiler;
+end Build_Check_Pathnames;
diff --git a/testsuite/sources/embedding/check_pathnames.adb b/testsuite/sources/embedding/check_pathnames.adb
new file mode 100644
index 0000000..9da0cf4
--- /dev/null
+++ b/testsuite/sources/embedding/check_pathnames.adb
@@ -0,0 +1,93 @@
+-- part of Comfignat's testsuite
+-- Copyright 2025 B. Persson, Bjorn@Rombobeorn.se
+--
+-- This material is provided as is, with absolutely no warranty expressed
+-- or implied. Any use is at your own risk.
+--
+-- Permission is hereby granted to use or copy this testsuite
+-- for any purpose, provided the above notices are retained on all copies.
+-- Permission to modify the code and to distribute modified code is granted,
+-- provided the above notices are retained, and a notice that the code was
+-- modified is included with the above copyright notice.
+
+
+with Ada.Text_IO; use Ada.Text_IO;
+with Ada.Command_Line; use Ada.Command_Line;
+with GNAT.Regexp; use GNAT.Regexp;
+
+procedure Check_Pathnames is
+
+ Result : Exit_Status := Success;
+
+ procedure Check_Pattern(Name : String; Pattern : String; Value : String) is
+ begin
+ if not Match(Value, Compile(Pattern)) then
+ Put_Line(Current_Error,
+ "Bad value of " & Name &
+ ": expected """ & Pattern & """, got """ & Value & '"');
+ Result := Failure;
+ end if;
+ end Check_Pattern;
+
+ procedure Check_Relocatable(Name : String; Value : String) is
+ Relocatable : constant Boolean := $Relocatable;
+ begin
+ if (Value(Value'First) = '/') = Relocatable then
+ Put_Line(Current_Error,
+ Name & " is not " &
+ (if Relocatable then "relative" else "absolute") &
+ ": """ & Value & '"');
+ Result := Failure;
+ end if;
+ end Check_Relocatable;
+
+ Bindir : constant String := $Bindir;
+ Libexecdir : constant String := $Libexecdir;
+ Datadir : constant String := $Datadir;
+ Sysconfdir : constant String := $Sysconfdir;
+ Statedir : constant String := $Statedir;
+ Cachedir : constant String := $Cachedir;
+ Logdir : constant String := $Logdir;
+ Runstatedir : constant String := $Runstatedir;
+ Lockdir : constant String := $Lockdir;
+ Libdir : constant String := $Libdir;
+ Localedir : constant String := $Localedir;
+ Mandir : constant String := $Mandir;
+ Infodir : constant String := $Infodir;
+ Miscdocdir : constant String := $Miscdocdir;
+
+begin
+ -- Check those parts of the pathnames that are unchanged in all of
+ -- Comfignat's tests.
+ Check_Pattern("Bindir", ".+/bin", Bindir);
+ Check_Pattern("Libexecdir", ".+/libexec", Libexecdir);
+ Check_Pattern("Datadir", ".+/share", Datadir);
+ Check_Pattern("Sysconfdir", ".+/etc", Sysconfdir);
+ Check_Pattern("Statedir", ".*/var/lib", Statedir);
+ Check_Pattern("Cachedir", ".*/var/cache", Cachedir);
+ Check_Pattern("Logdir", ".*/var/log", Logdir);
+ Check_Pattern("Runstatedir", "/run", Runstatedir);
+ Check_Pattern("Lockdir", "/run/lock", Lockdir);
+ Check_Pattern("Libdir", ".+lib.*", Libdir);
+ Check_Pattern("Localedir", ".+/locale", Localedir);
+ Check_Pattern("Mandir", ".+/man", Mandir);
+ Check_Pattern("Infodir", ".+/info", Infodir);
+ Check_Pattern("Miscdocdir", ".+/doc", Miscdocdir);
+
+ -- All except Runstatedir and Lockdir shall be relative pathnames in a
+ -- relocatable build.
+ Check_Relocatable("Bindir", Bindir);
+ Check_Relocatable("Libexecdir", Libexecdir);
+ Check_Relocatable("Datadir", Datadir);
+ Check_Relocatable("Sysconfdir", Sysconfdir);
+ Check_Relocatable("Statedir", Statedir);
+ Check_Relocatable("Cachedir", Cachedir);
+ Check_Relocatable("Logdir", Logdir);
+ Check_Relocatable("Libdir", Libdir);
+ Check_Relocatable("Localedir", Localedir);
+ Check_Relocatable("Mandir", Mandir);
+ Check_Relocatable("Infodir", Infodir);
+ Check_Relocatable("Miscdocdir", Miscdocdir);
+
+ Set_Exit_Status(Result);
+end Check_Pathnames;
diff --git a/testsuite/sources/embedding/generated_files b/testsuite/sources/embedding/generated_files
new file mode 100644
index 0000000..af67a6a
--- /dev/null
+++ b/testsuite/sources/embedding/generated_files
@@ -0,0 +1,2 @@
+comfignat.gpr
+${stage_libexecdir}/check_pathnames