This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/main by this push:
     new b287e336d fix the build on windows and try to add a windows build to 
our github ci (#2407)
b287e336d is described below

commit b287e336d95e6943d93911f8389889aeb5d53905
Author: Tim Allison <[email protected]>
AuthorDate: Wed Nov 26 11:25:03 2025 -0500

    fix the build on windows and try to add a windows build to our github ci 
(#2407)
---
 .../main-jdk17-windows-build-multi-locale.yml      | 45 ++++++++++++++++++++++
 .github/workflows/main-jdk17-windows-build.yml     | 44 +++++++++++++++++++++
 .../java/org/apache/tika/cli/TikaCLIAsyncTest.java |  1 +
 .../test/java/org/apache/tika/cli/TikaCLITest.java |  9 ++---
 .../tika/eval/app/ExtractComparerRunner.java       |  2 +-
 .../apache/tika/eval/app/ExtractProfileRunner.java |  1 +
 .../tika-parsers-standard-package/pom.xml          | 12 ------
 .../org/apache/tika/async/cli/PluginsWriter.java   |  2 +-
 .../apache/tika/async/cli/SimpleAsyncConfig.java   | 17 ++++++++
 .../apache/tika/async/cli/AsyncProcessorTest.java  |  2 +-
 .../tika/async/cli/TikaConfigAsyncWriterTest.java  |  4 +-
 .../apache/tika/pipes/core/PluginsTestHelper.java  |  1 +
 .../reporter/fs/TestFileSystemStatusReporter.java  |  3 +-
 .../pipes/reporter/jdbc/TestJDBCPipesReporter.java |  9 +++--
 .../org/apache/tika/server/core/CXFTestBase.java   |  4 +-
 .../tika/server/core/TikaResourceFetcherTest.java  |  2 +-
 16 files changed, 129 insertions(+), 29 deletions(-)

diff --git a/.github/workflows/main-jdk17-windows-build-multi-locale.yml 
b/.github/workflows/main-jdk17-windows-build-multi-locale.yml
new file mode 100644
index 000000000..0dbfe0e7e
--- /dev/null
+++ b/.github/workflows/main-jdk17-windows-build-multi-locale.yml
@@ -0,0 +1,45 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: main jdk17 windows build (multi-locale)
+
+on:
+  pull_request:
+    branches: [ main ]
+  push:
+    branches: [ main ]
+
+jobs:
+  build:
+    runs-on: windows-latest
+    strategy:
+      matrix:
+        java: [ '17' ]
+        locale: [ 'tr_TR.UTF-8', 'de_DE.UTF-8' ]
+    env:
+      LANG: ${{ matrix.locale }}
+      LC_ALL: ${{ matrix.locale }}
+
+    steps:
+      - uses: actions/checkout@v4
+      - name: Set up JDK ${{ matrix.java }}
+        uses: actions/setup-java@v4
+        with:
+          distribution: 'temurin'
+          java-version: ${{ matrix.java }}
+      - name: Build with Maven
+        run: mvn clean test install javadoc:aggregate
diff --git a/.github/workflows/main-jdk17-windows-build.yml 
b/.github/workflows/main-jdk17-windows-build.yml
new file mode 100644
index 000000000..070524e55
--- /dev/null
+++ b/.github/workflows/main-jdk17-windows-build.yml
@@ -0,0 +1,44 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: main jdk17 windows build
+
+on:
+  pull_request:
+    branches: [ main ]
+  push:
+    branches: [ main ]
+
+jobs:
+  build:
+    runs-on: windows-latest
+    strategy:
+      matrix:
+        java: [ '17' ]
+
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          path: 'tika build dir'
+      - name: Set up JDK ${{ matrix.java }}
+        uses: actions/setup-java@v4
+        with:
+          distribution: 'temurin'
+          java-version: ${{ matrix.java }}
+      - name: Build with Maven
+        working-directory: 'tika build dir'
+        run: mvn clean test install javadoc:aggregate
diff --git a/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java 
b/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java
index b13ae3803..235579c36 100644
--- a/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java
+++ b/tika-app/src/test/java/org/apache/tika/cli/TikaCLIAsyncTest.java
@@ -77,6 +77,7 @@ public class TikaCLIAsyncTest {
                         .replace("TIKA_CONFIG", 
ASYNC_CONFIG.toAbsolutePath().toString());
 
                 ;
+        json = json.replace("\\", "/");
         Files.writeString(ASYNC_PLUGINS_CONFIG, json, UTF_8);
     }
 
diff --git a/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java 
b/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
index e54f17f06..5a05e37a5 100644
--- a/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
+++ b/tika-app/src/test/java/org/apache/tika/cli/TikaCLITest.java
@@ -401,11 +401,9 @@ public class TikaCLITest {
         Path pluginsDir = Paths.get("target/plugins");
 
         String[] params = {"-Z",
-                "-p", 
ProcessUtils.escapeCommandLine(pluginsDir.toAbsolutePath().toString()),
-                
ProcessUtils.escapeCommandLine(input.toAbsolutePath().toString()),
-                ProcessUtils.escapeCommandLine(extractDir
-                .toAbsolutePath()
-                .toString())};
+                "-p", pluginsDir.toAbsolutePath().toString(),
+                input.toAbsolutePath().toString(),
+                extractDir.toAbsolutePath().toString()};
 
         TikaCLI.main(params);
 
@@ -429,7 +427,6 @@ public class TikaCLITest {
                 return FileVisitResult.CONTINUE;
             }
 
-            @Override
             public @NotNull FileVisitResult visitFile(Path path, @NotNull 
BasicFileAttributes basicFileAttributes) throws IOException {
                 names.add(extractDir.relativize(path).toString().replace('\\', 
'/'));
                 return FileVisitResult.CONTINUE;
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
index 9e3d7fe4b..6d23fe365 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java
@@ -187,7 +187,7 @@ public class ExtractComparerRunner {
             json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
         }
         json = json.replace("FETCHER_BASE_PATH", 
inputDir.toAbsolutePath().toString());
-
+        json = json.replace("\\", "/");
         try {
             return FileSystemPipesIterator.build(new ExtensionConfig("", "", 
json));
         } catch (TikaConfigException e) {
diff --git 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
index def728b9e..b7acb7c68 100644
--- 
a/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
+++ 
b/tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java
@@ -181,6 +181,7 @@ public class ExtractProfileRunner {
             json = new String(is.readAllBytes(), StandardCharsets.UTF_8);
         }
         json = json.replace("FETCHER_BASE_PATH", 
inputDir.toAbsolutePath().toString());
+        json = json.replace("\\", "/");
 
         try {
             return FileSystemPipesIterator.build(new ExtensionConfig("", "", 
json));
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml
index b1ca71e1a..2b9a4b1e1 100644
--- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml
+++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/pom.xml
@@ -176,11 +176,6 @@
       <version>${zstd.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>tika-serialization</artifactId>
-      <scope>test</scope>
-    </dependency>
     <!-- For legal reasons (incompatible license), jai-imageio-jpeg2000 is to 
be used
     only in the tests and may not be distributed. See also LEGAL-195 -->
     <dependency>
@@ -201,13 +196,6 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>tika-core</artifactId>
-      <version>${project.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>tika-parser-zip-commons</artifactId>
diff --git 
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
 
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
index 5aa5a2da9..bc653bbf0 100644
--- 
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
+++ 
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/PluginsWriter.java
@@ -58,7 +58,7 @@ public class PluginsWriter {
             if (Files.isDirectory(plugins)) {
                 pluginString = plugins.toAbsolutePath().toString();
             }
-            json = json.replace("PLUGIN_ROOTS", pluginString);
+            json = json.replace("PLUGIN_ROOTS", pluginString).replace("\\", 
"/");
             AsyncConfig asyncConfig = new AsyncConfig();
 
             asyncConfig.setNumClients(simpleAsyncConfig.getNumClients() == 
null ? 2 : simpleAsyncConfig.getNumClients());
diff --git 
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
 
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
index f3e21795a..3bc1eecb3 100644
--- 
a/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
+++ 
b/tika-pipes/tika-async-cli/src/main/java/org/apache/tika/async/cli/SimpleAsyncConfig.java
@@ -91,4 +91,21 @@ class SimpleAsyncConfig {
     public String getPluginsDir() {
         return pluginsDir;
     }
+
+    @Override
+    public String toString() {
+        return "SimpleAsyncConfig{" +
+                "inputDir='" + inputDir + '\'' +
+                ", outputDir='" + outputDir + '\'' +
+                ", numClients=" + numClients +
+                ", timeoutMs=" + timeoutMs +
+                ", xmx='" + xmx + '\'' +
+                ", fileList='" + fileList + '\'' +
+                ", tikaConfig='" + tikaConfig + '\'' +
+                ", asyncConfig='" + asyncConfig + '\'' +
+                ", extractBytes=" + extractBytes +
+                ", handlerType=" + handlerType +
+                ", pluginsDir='" + pluginsDir + '\'' +
+                '}';
+    }
 }
diff --git 
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
 
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
index 9e6f25ae9..64b27b463 100644
--- 
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
+++ 
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/AsyncProcessorTest.java
@@ -99,7 +99,7 @@ public class AsyncProcessorTest extends TikaTest {
                 .replace("PLUGIN_ROOTS", 
pluginsDir.toAbsolutePath().toString())
                 .replace("TIKA_CONFIG", 
tikaConfigPath.toAbsolutePath().toString())
                 .replace("PLUGINS_CONFIG", 
pipesConfig.toAbsolutePath().toString());
-
+        jsonTemp = jsonTemp.replace("\\", "/");
         Files.writeString(pipesConfig, jsonTemp, StandardCharsets.UTF_8);
 
         Path mock = inputDir.resolve("mock.xml");
diff --git 
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
 
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
index 822095289..34e75029e 100644
--- 
a/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
+++ 
b/tika-pipes/tika-async-cli/src/test/java/org/apache/tika/async/cli/TikaConfigAsyncWriterTest.java
@@ -36,8 +36,10 @@ public class TikaConfigAsyncWriterTest {
     public void testBasic(@TempDir Path dir) throws Exception {
         Path p = 
Paths.get(TikaConfigAsyncWriter.class.getResource("/configs/TIKA-4508-parsers.xml").toURI());
         SimpleAsyncConfig simpleAsyncConfig = new SimpleAsyncConfig("input", 
"output", 4,
-                10000L, "-Xmx1g", null, p.toAbsolutePath().toString(), null,
+                10000L, "-Xmx1g", null,
+                p.toAbsolutePath().toString().replace("\\", "/"), null,
                 BasicContentHandlerFactory.HANDLER_TYPE.TEXT, false, null);
+        System.out.println(simpleAsyncConfig);
         PluginsWriter pluginsWriter = new PluginsWriter(simpleAsyncConfig, 
null);
 
         Path tmp = Files.createTempFile(dir, "plugins-",".json");
diff --git 
a/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
 
b/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
index 025e16b2a..804ade3a7 100644
--- 
a/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
+++ 
b/tika-pipes/tika-pipes-integration-tests/src/test/java/org/apache/tika/pipes/core/PluginsTestHelper.java
@@ -68,6 +68,7 @@ public class PluginsTestHelper {
             json = json.replace("PLUGINS_CONFIG", 
pipesConfig.toAbsolutePath().toString());
         }
         json = json.replace("EMIT_INTERMEDIATE_RESULTS", 
String.valueOf(emitIntermediateResults));
+        json = json.replace("\\", "/");
         Files.write(pipesConfig, json.getBytes(StandardCharsets.UTF_8));
         return pipesConfig;
     }
diff --git 
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
 
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
index 88f79dda2..6d6b7ae4b 100644
--- 
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
+++ 
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/test/java/org/apache/tika/pipes/reporter/fs/TestFileSystemStatusReporter.java
@@ -63,7 +63,8 @@ public class TestFileSystemStatusReporter {
 
         Path path = Files.createTempFile(tmpDir, "tika-fssr-", ".xml");
 
-        String jsonStr = JSON_TEMPLATE.replace("STATUS_FILE", 
path.toAbsolutePath().toString());
+        String jsonStr = JSON_TEMPLATE.replace("STATUS_FILE", 
path.toAbsolutePath().toString()
+                .replace("\\", "/"));
         FileSystemStatusReporter reporter = new 
FileSystemReporterFactory().buildExtension(
                 new ExtensionConfig("test-fs-reporter", "fs-status-reporter", 
jsonStr));
         final ObjectMapper objectMapper = JsonMapper.builder()
diff --git 
a/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
 
b/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
index da276f6b7..99eb5f60c 100644
--- 
a/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
+++ 
b/tika-pipes/tika-pipes-plugins/tika-pipes-jdbc/src/test/java/org/apache/tika/pipes/reporter/jdbc/TestJDBCPipesReporter.java
@@ -88,7 +88,8 @@ public class TestJDBCPipesReporter {
 
         int numThreads = 10;
         int numIterations = 200;
-        String json = JSON_TEMPLATE.replace("CONNECTION_STRING", 
connectionString);
+        String json = JSON_TEMPLATE.replace("CONNECTION_STRING", 
connectionString)
+                .replace("\\", "/");
         JDBCPipesReporter reporter = JDBCPipesReporter.build(new 
ExtensionConfig("test-jdbc", "jdbc-reporter", json));
 
         Map<PipesResult.STATUS, Long> expected = runBatch(reporter, 
numThreads, numIterations);
@@ -112,7 +113,8 @@ public class TestJDBCPipesReporter {
         String connectionString = "jdbc:h2:file:" + dbDir.toAbsolutePath();
 
 
-        String json = JSON_TEMPLATE_INCLUDES.replace("CONNECTION_STRING", 
connectionString);
+        String json = JSON_TEMPLATE_INCLUDES.replace("CONNECTION_STRING", 
connectionString)
+                .replace("\\", "/");
         JDBCPipesReporter reporter = JDBCPipesReporter.build(new 
ExtensionConfig("", "", json));
         int numThreads = 10;
         int numIterations = 200;
@@ -140,7 +142,8 @@ public class TestJDBCPipesReporter {
         Path dbDir = tmpDir.resolve("db/h2");
         String connectionString = "jdbc:h2:file:" + dbDir.toAbsolutePath();
 
-        String json = JSON_TEMPLATE_EXCLUDES.replace("CONNECTION_STRING", 
connectionString);
+        String json = JSON_TEMPLATE_EXCLUDES.replace("CONNECTION_STRING", 
connectionString)
+                .replace("\\", "/");
         JDBCPipesReporter reporter = JDBCPipesReporter.build(new 
ExtensionConfig("", "", json));
         int numThreads = 10;
         int numIterations = 200;
diff --git 
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
 
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
index eacfc6aa1..a4c37fcb2 100644
--- 
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
+++ 
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/CXFTestBase.java
@@ -114,7 +114,7 @@ public abstract class CXFTestBase {
         if (bytesOutputDir != null) {
             json = json.replace("BYTES_EMITTER_BASE_PATH", 
bytesOutputDir.toAbsolutePath().toString());
         }
-
+        json = json.replace("\\", "/");
         Files.writeString(configPath, json, StandardCharsets.UTF_8);
     }
 
@@ -236,7 +236,7 @@ public abstract class CXFTestBase {
                         .toAbsolutePath()
                         .toString());
 
-
+        json = json.replace("\\", "/");
         return UnsynchronizedByteArrayInputStream
                 .builder()
                 .setByteArray(json.getBytes(UTF_8))
diff --git 
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
 
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
index 4d0c6a083..54bcbb4c3 100644
--- 
a/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
+++ 
b/tika-server/tika-server-core/src/test/java/org/apache/tika/server/core/TikaResourceFetcherTest.java
@@ -87,7 +87,7 @@ public class TikaResourceFetcherTest extends CXFTestBase {
         } catch (URISyntaxException e) {
             throw new RuntimeException(e);
         }
-        return inputDir.toAbsolutePath().toString();
+        return inputDir.toAbsolutePath().toString().replace("\\", "/");
     }
 
     @Override

Reply via email to