7 # Syntax: prefTest.pl [<var1>=<Subst1> [<var2>=<Subst> ...]] [[ctest parameters]]
9 my $bindir = "@CMAKE_BINARY_DIR@";
11 my $userdir = "$bindir/Testing/.lyx";
13 sub createConvLine($);
19 "use_converter_needauth_forbidden" => ["true", "false"],
20 "use_converter_needauth" => ["true", "false"],
21 "allow_geometry_session" => ["false"],
28 # Parse Arguments for strings to substitute
35 &getConverters($userdir);
37 for my $arg ("allow_geometry_session=false", @ARGV) {
39 push(@ctestpars, $arg);
42 if ($arg =~ /^([^=]+)=(.*)$/) {
46 if (defined($allowedKeys{$key})) {
47 for my $val (@{$allowedKeys{$key}}) {
55 $Subst{$key} = [$value, 0];
58 die("invalid key or value specified in \"$arg\"");
63 push(@ctestpars, $arg);
68 if (%Subst) { # Try to do something only if a substitute is requested
69 if (open(FO, '>', "$userdir/preferences.tmp")) {
70 if (open(FI, "$userdir/preferences")) {
71 while (my $l = <FI>) {
72 for my $k (keys %Subst) {
73 if ($l =~ /^\\$k\b/) {
74 $l = "\\$k $Subst{$k}->[0]\n";
77 elsif ($l =~ /^\\converter\s+(.*)$/) {
78 my $entry = &getConverter($1);
79 if (defined($entry)) {
80 my $key = $entry->[0];
81 if (defined($Converter{$key})) {
82 if (defined($Converter{$key}->[2])) {
86 $Converter{$key}->[2] = 1;
87 $l = &createConvLine($key);
96 for my $k (keys %Subst) {
97 if ($Subst{$k}->[1] == 0) {
98 print FO "\\$k $Subst{$k}->[0]\n";
101 for my $key (keys %Converter) {
102 if (! defined($Converter{$key}->[2])) {
103 $Converter{$key}->[2] = 1;
104 my $l = &createConvLine($key);
108 rename("$userdir/preferences.tmp", "$userdir/preferences");
114 $res = system("ctest", @ctestpars);
119 sub createConvLine($)
122 my $l = "\\converter $key \"$Converter{$key}->[0]\" \"$Converter{$key}->[1]\"\n";
130 if (open(FI, "$userdir/lyxrc.defaults")) {
131 while (my $l = <FI>) {
132 if ($l =~ s/^\s*\\converter\s+//) {
133 my $entry = &getConverter($l);
134 if (defined($entry)) {
135 $Converter{$entry->[0]} = $entry->[1];
146 my ($from, $to, $cmd, $par);
147 ($l, $from) = getNext($l);
148 return undef if ($from !~ /tex$/);
149 ($l, $to) = getNext($l);
150 return undef if ($to !~ /^(dvi|dvi3|pdf|pdf[23456])$/);
151 ($l, $cmd) = getNext($l);
152 if ($cmd !~ /\-shell-escape/) {
153 if ($cmd =~ /^(\S+)\s*(.*)$/) {
154 $cmd = "$1 -shell-escape $2";
158 ($l, $par) = getNext($l);
159 return undef if ($par !~ /^latex/);
160 my $key = "\"$from\" \"$to\"";
161 return([$key, [$cmd, $par]]);
169 if ($l =~ /^\s*\"([^\"]*)\"\s*(.*)$/) {
173 elsif ($l =~ /^\s*(\S+)\s*(.*)$/) {