commit 1d90561675b43906cc109ef35e2616d1e95e859a
Author: Kornel Benko <[email protected]>
Date:   Sun Mar 31 18:06:40 2019 +0200

    Cmake export tests: Set \origin also for unavailable
    
    This is important for lyx-files not under the lyxsystemdir.
    Since the exports are done from a copied lyx-file, some referenced data
    may be available only relative to the source of the original.
---
 development/autotests/lyxStatus.pm      |   18 +++++++++++-------
 development/autotests/useSystemFonts.pl |    4 ++--
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/development/autotests/lyxStatus.pm 
b/development/autotests/lyxStatus.pm
index 0c66776..99c1f6d 100644
--- a/development/autotests/lyxStatus.pm
+++ b/development/autotests/lyxStatus.pm
@@ -26,12 +26,12 @@ sub getFileType($);
 sub getFileIdx($);
 sub getExt($);
 sub getResult($);
-sub checkForHeader($);
+sub checkForHeader($$);
 sub checkForPreamble($);
 sub checkForLayoutStart($);
 sub checkForInsetStart($);
 sub checkForLatexCommand($);
-sub checkLyxLine($);
+sub checkLyxLine($$);
 
 my @stack = ();                        # list of HASH-Arrays
 my $rFont = {};
@@ -201,9 +201,9 @@ sub getResult($)
   return($m->{"result"});
 }
 
-sub checkForHeader($)
+sub checkForHeader($$)
 {
-  my ($l) = @_;
+  my ($l, $sourcedir) = @_;
 
   if ($l =~ /^\\begin_header\s*$/) {
     my %selem = ();
@@ -247,6 +247,10 @@ sub checkForHeader($)
                           "filetype" => "replace_only",
                           "result" => ["\\origin $sysdir", "2"]);
     push(@rElems, $origin);
+    my $originu = newMatch("search" => qr/^\\origin\s+unavailable/,
+                          "filetype" => "replace_only",
+                          "result" => ["\\origin $sourcedir"]);
+    push(@rElems, $originu);
     setMatching(\@rElems);
     return(1);
   }
@@ -369,11 +373,11 @@ sub checkForLatexCommand($)
 #    separator: to be used while concatenating the filenames
 #    filetype: prefix_only,replace_only,copy_only,interpret
 #              same as before, but without 'prefix_for_list'
-sub checkLyxLine($)
+sub checkLyxLine($$)
 {
-  my ($l) = @_;
+  my ($l, $sourcedir) = @_;
 
-  return({"found" => 0}) if (checkForHeader($l));
+  return({"found" => 0}) if (checkForHeader($l, $sourcedir));
   return({"found" => 0}) if (checkForPreamble($l));
   return({"found" => 0}) if (checkForEndBlock($l));
   return({"found" => 0}) if (checkForLayoutStart($l));
diff --git a/development/autotests/useSystemFonts.pl 
b/development/autotests/useSystemFonts.pl
index 8beb94c..2eae022 100644
--- a/development/autotests/useSystemFonts.pl
+++ b/development/autotests/useSystemFonts.pl
@@ -182,7 +182,7 @@ sub interpretedCopy($$$$)
     $fi_line_no += 1;
     $l =~ s/[\n\r]+$//;
     #chomp($l);
-    my $rStatus = checkLyxLine($l);
+    my $rStatus = checkLyxLine($l, $sourcedir);
     if ($rStatus->{found}) {
       my $rF = $rStatus->{result};
       if ($rStatus->{"filetype"} eq "replace_only") {
@@ -258,7 +258,7 @@ sub interpretedCopy($$$$)
            }
          }
        }
-       if ($foundrelative && $rStatus->{"filetype"} ne "prefix_for_list") {
+       if ($foundrelative && $rStatus->{"filetype"} !~ 
/^(prefix_for_list|prefix_only)$/) {
           # The result can be relative too
           # but, since prefix_for_list does no copy, we have to use absolute 
paths
           # to address files inside the source dir

Reply via email to