]> git.lyx.org Git - lyx.git/commitdiff
Cmake lyx2lyx export tests: Try to use output format from the lyx-source
authorKornel Benko <kornel@lyx.org>
Tue, 17 Sep 2024 16:42:46 +0000 (18:42 +0200)
committerKornel Benko <kornel@lyx.org>
Tue, 17 Sep 2024 16:42:46 +0000 (18:42 +0200)
development/autotests/export.cmake
development/autotests/readDefaultOutputFormat.pl [new file with mode: 0644]

index fb85a9dbee942da771dc6a148f06d7dcb3edc75b..54c98ca161e4fb3fb35738a7dae14519b808f9bd 100755 (executable)
@@ -7,8 +7,8 @@
 # LYX_ROOT  = ${TOP_SRC_DIR}/lib/{doc,examples,templates,tabletemplates}
 # LYX_USERDIR_VER = Name of environment variable for the user directory
 # lyx       =
-# format    = lyx16x|lyx20x|lyx21x|lyx22x|xhtml|docbook5|epub
-# extension = 16.lyx|20.lyx|21.lyx|22.lyx|xhtml|xml|epub
+# format    = lyx16x|lyx20x|lyx21x|lyx22x|lyx23x|xhtml|docbook5|epub
+# extension = 16.lyx|20.lyx|21.lyx|22.lyx|23.lyx|xhtml|xml|epub
 # file      = xxx
 #
 # Script should be called like:
@@ -37,6 +37,7 @@ set(_TestResultMessage "")
 message(STATUS "IgnoreErrorMessage = \"${IgnoreErrorMessage}\"")
 set(Perl_Script "${TOP_SRC_DIR}/development/autotests/useSystemFonts.pl")
 set(Structure_Script "${TOP_SRC_DIR}/development/autotests/beginEndStructureCheck.pl")
+set(readDefaultOutputFormat "${TOP_SRC_DIR}/development/autotests/readDefaultOutputFormat.pl")
 set(LanguageFile "${TOP_SRC_DIR}/lib/languages")
 set(GetTempDir "${TOP_SRC_DIR}/development/autotests/getTempDir.pl")
 set(_ft ${fonttype})
@@ -226,6 +227,23 @@ set(ENV{LANGUAGE} "US:en")
 if (extension MATCHES "\\.lyx$")
   include(${TOP_SRC_DIR}/development/autotests/CheckLoadErrors.cmake)
   get_md5sum(LYX_SOURCE source_md5sum _err)
+  message(STATUS "Executing ${PERL_EXECUTABLE} ${readDefaultOutputFormat} ${LYX_SOURCE}")
+  execute_process(
+    COMMAND ${PERL_EXECUTABLE} ${readDefaultOutputFormat} "${LYX_SOURCE}"
+    OUTPUT_VARIABLE _export_format)
+  message(STATUS "readDefaultOutputFormat = ${_export_format}")
+  if (${_export_format} MATCHES "pdf2")
+    set(_texformat "pdflatex")
+  elsif(${_export_format} MATCHES "pdf3")
+    set(_texformat "platex")
+  elsif(${_export_format} MATCHES "pdf4")
+    set(_texformat "xetex")
+  elsif(${_export_format} MATCHES "pdf5")
+    set(_texformat "luatex")
+  else()
+    set(_texformat "empty")
+  endif()
+
   foreach(_lv RANGE 1 20)
     set(used_tex_file "${result_file_base}.tex")
     set(result_file_base "${result_file_base}.${LYX_FORMAT_NUM}")
@@ -260,9 +278,11 @@ if (extension MATCHES "\\.lyx$")
           break()
         endif()
         message(STATUS "Create the corresponding .tex file \"${used_tex_file}\"")
-        execute_process(
-          COMMAND ${lyx} -userdir "${LYX_TESTS_USERDIR}" -E pdflatex ${used_tex_file} "${LYX_SOURCE}"
-          RESULT_VARIABLE _errx)
+       if (NOT ${_texformat} MATCHES "empty")
+          execute_process(
+            COMMAND ${lyx} -userdir "${LYX_TESTS_USERDIR}" -E ${_texformat} ${used_tex_file} "${LYX_SOURCE}"
+            RESULT_VARIABLE _errx)
+        endif()
       endif()
     endif()
     get_md5sum(result_file_name result_md5sum _err)
@@ -284,12 +304,14 @@ if (extension MATCHES "\\.lyx$")
       endif()
       message(STATUS "Source(${LYX_SOURCE}) and dest(${result_file_name}) are equal")
       message(STATUS "Now try to export the lyx2lyx created file")
-      message(STATUS "Executing ${lyx} -userdir \"${LYX_TESTS_USERDIR}\" -E default \"${result_file_name}.default\" \"${result_file_name}\"")
-      execute_process(
-        COMMAND ${lyx} -userdir "${LYX_TESTS_USERDIR}" -E default "${result_file_name}.default" "${result_file_name}"
-        RESULT_VARIABLE _err
-        ERROR_VARIABLE lyxerr)
-      Summary(_err "Test-compilation of \"${result_file_name}\" to format default")
+      if (_export_format MATCHES "^pdf")
+        message(STATUS "Executing ${lyx} -userdir \"${LYX_TESTS_USERDIR}\" -E ${_export_format} \"${result_file_name}.default\" \"${result_file_name}\"")
+        execute_process(
+          COMMAND ${lyx} -userdir "${LYX_TESTS_USERDIR}" -E ${_export_format} "${result_file_name}.default" "${result_file_name}"
+          RESULT_VARIABLE _err
+          ERROR_VARIABLE lyxerr)
+        Summary(_err "Test-compilation of \"${result_file_name}\" to format ${_export_format}")
+      endif()
       break()
     else()
       list(APPEND _TestResultMessage "Warning: \"${LYX_SOURCE}\" and \"${result_file_name}\" differ")
diff --git a/development/autotests/readDefaultOutputFormat.pl b/development/autotests/readDefaultOutputFormat.pl
new file mode 100644 (file)
index 0000000..b86e015
--- /dev/null
@@ -0,0 +1,60 @@
+#! /usr/bin/env perl
+# -*- mode: perl; -*-
+
+#
+use strict;
+
+my $useNonTexFonts = undef;
+my $outputFormat = undef;
+my $outputFormat = undef;
+my $language = undef;
+if (-e "$ARGV[0]") {
+  if (open(FI, "$ARGV[0]")) {
+    while (my $l = <FI>) {
+      chomp($l);
+      if ($l =~ /^\\use_non_tex_fonts\s+([a-z]+)/) {
+        $useNonTexFonts = ($1 eq "true");
+      }
+      elsif ($l =~ /^\\default_output_format\s+([a-z0-9]+)/) {
+        $outputFormat = $1;
+      }
+      elsif ($l =~ /\\language\s+([\-a-z_]+)/) {
+        $language = $1;
+      }
+      last if (defined($useNonTexFonts) && defined($outputFormat) && defined($language));
+    }
+    close(FI);
+  }
+}
+if (defined($useNonTexFonts) && defined($outputFormat)) {
+  if ($useNonTexFonts) {
+    if ($outputFormat eq "default") {
+      if ($language eq "japanese") {
+        $outputFormat = "pdf3";
+      }
+      else {
+        $outputFormat = "pdf5";
+      }
+    }
+  }
+  elsif ($outputFormat eq "default") {
+    if ($language eq "japanese") {
+      $outputFormat = "pdf3";
+    }
+    else {
+      $outputFormat = "pdf2";
+    }
+  }
+  if ($outputFormat !~ /^pdf/) {
+    $outputFormat = undef;
+  }
+}
+
+if (defined($outputFormat)) {
+  print "$outputFormat";
+}
+else {
+  print "undefined_output_format";
+}
+
+exit(0);