]> git.lyx.org Git - features.git/commitdiff
Cmake tests: Add a script to modify preferences prior to export testing
authorKornel Benko <kornel@lyx.org>
Sat, 3 Dec 2016 10:32:19 +0000 (11:32 +0100)
committerKornel Benko <kornel@lyx.org>
Sat, 3 Dec 2016 10:32:19 +0000 (11:32 +0100)
lib/scripts/CMakeLists.txt
lib/scripts/prefTest.pl.in [new file with mode: 0755]

index a9439b7c51e4d290e55bb7d44ca7bde2f0c1e5f3..d39e4fbdb14d8ea1ab5d80190898ec1a6e8980ed 100644 (file)
@@ -9,4 +9,5 @@ if (UNIX)
        set(_project "scripts")
        # include(../PyCompile)
 endif()
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/prefTest.pl.in" "${CMAKE_BINARY_DIR}/prefTest.pl" @ONLY)
 
diff --git a/lib/scripts/prefTest.pl.in b/lib/scripts/prefTest.pl.in
new file mode 100755 (executable)
index 0000000..08a6c0c
--- /dev/null
@@ -0,0 +1,82 @@
+#! /usr/bin/env perl
+# -*- mode: perl; -*-
+
+use strict;
+
+# Syntax: ReplaceValuesprefTest.pl [<var1>=<Subst1> [<var2>=<Subst> ...]] [[ctest parameters]]
+
+my $bindir = "@CMAKE_BINARY_DIR@";
+
+my $userdir = "$bindir/Testing/.lyx";
+
+my %allowedKeys = (
+  "use_converter_needauth_forbidden" => ["true", "false"],
+  "use_converter_needauth" => ["true", "false"],
+    );
+
+chdir($bindir);
+
+# Parse Arguments for strings to substitute
+
+my %Subst = ();
+
+my $ctestparams = 0;
+my @ctestpars = ();
+for my $arg (@ARGV) {
+  if ($ctestparams) {
+    push(@ctestpars, $arg);
+  }
+  else {
+    if ($arg =~ /^([^=]+)=(.*)$/) {
+      my $key = $1;
+      my $value = $2;
+      my $valid = 0;
+      if (defined($allowedKeys{$key})) {
+       for my $val (@{$allowedKeys{$key}}) {
+         if ($val eq $value) {
+           $valid = 1;
+           last;
+         }
+       }
+      }
+      if ($valid) {
+       $Subst{$key} = [$value, 0];
+      }
+      else {
+       die("invalid key or value specified in \"$arg\"");
+      }
+    }
+    else {
+      $ctestparams = 1;
+      push(@ctestpars, $arg);
+    }
+  }
+}
+if (%Subst) { # Try to do something only if a substitute is requested
+  if (open(FO, '>', "$userdir/preferences.tmp")) {
+    if (open(FI, "$userdir/preferences")) {
+      while (my $l = <FI>) {
+       for my $k (keys %Subst) {
+         if ($l =~ /^\\$k\b/) {
+           $l = "\\$k $Subst{$k}->[0]\n";
+           $Subst{$k}->[1] = 1;
+         }
+       }
+       print FO $l;
+      }
+    }
+    for my $k (keys %Subst) {
+      if ($Subst{$k}->[1] == 0) {
+       print FO "\\$k $Subst{$k}->[0]\n";
+      }
+    }
+    rename("$userdir/preferences.tmp", "$userdir/preferences");
+  }
+}
+
+my $res = 0;
+if (@ctestpars) {
+  $res = system("ctest", @ctestpars);
+}
+
+exit($res);