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

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


The following commit(s) were added to refs/heads/main by this push:
     new 894136fad0 [CALCITE-7412] Redis test failed on higher versions of macOS
894136fad0 is described below

commit 894136fad0456996f7bc3cb66f6a2366ff3199dd
Author: Zhen Chen <[email protected]>
AuthorDate: Sun Feb 8 10:16:38 2026 +0800

    [CALCITE-7412] Redis test failed on higher versions of macOS
---
 redis/build.gradle.kts                             |  1 +
 .../src/main/java/redis/embedded/util/JarUtil.java | 50 ++++++++++++++++++++++
 .../java/redis/embedded/util/package-info.java}    | 22 ++--------
 3 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/redis/build.gradle.kts b/redis/build.gradle.kts
index 80e24755d9..0cbc43112f 100644
--- a/redis/build.gradle.kts
+++ b/redis/build.gradle.kts
@@ -22,6 +22,7 @@
     implementation("com.fasterxml.jackson.core:jackson-core")
     implementation("com.fasterxml.jackson.core:jackson-databind")
     implementation("com.google.guava:guava")
+    implementation("commons-io:commons-io")
     implementation("org.apache.calcite.avatica:avatica-core")
     implementation("org.apache.commons:commons-lang3")
     implementation("org.apache.commons:commons-pool2")
diff --git a/redis/src/main/java/redis/embedded/util/JarUtil.java 
b/redis/src/main/java/redis/embedded/util/JarUtil.java
new file mode 100644
index 0000000000..9e8896ee10
--- /dev/null
+++ b/redis/src/main/java/redis/embedded/util/JarUtil.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package redis.embedded.util;
+
+import org.apache.commons.io.FileUtils;
+
+import com.google.common.io.Resources;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+
+/** Utility class for extracting executables from JAR files. */
+public class JarUtil {
+
+  private JarUtil() {
+    // Utility class should not be instantiated
+  }
+
+  public static File extractExecutableFromJar(String executable) throws 
IOException {
+    File tmpDir = Files.createTempDirectory("redis-").toFile();
+    tmpDir.deleteOnExit();
+
+    // On newer versions of macOS, the temporary directory /var/folders does 
not
+    // support executing binary files with a .app extension, which prevents 
Redis
+    // from starting. To ensure Redis runs correctly, the redis-server binary 
is
+    // uniformly renamed to redis-server.
+    String executableName = "redis-server";
+    File command = new File(tmpDir, executableName);
+    FileUtils.copyURLToFile(Resources.getResource(executable), command);
+    command.deleteOnExit();
+    command.setExecutable(true);
+
+    return command;
+  }
+}
diff --git a/redis/build.gradle.kts 
b/redis/src/main/java/redis/embedded/util/package-info.java
similarity index 50%
copy from redis/build.gradle.kts
copy to redis/src/main/java/redis/embedded/util/package-info.java
index 80e24755d9..5e31ad3901 100644
--- a/redis/build.gradle.kts
+++ b/redis/src/main/java/redis/embedded/util/package-info.java
@@ -14,22 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-dependencies {
-    api(project(":core"))
-    api(project(":linq4j"))
-    api("redis.clients:jedis")
 
-    implementation("com.fasterxml.jackson.core:jackson-core")
-    implementation("com.fasterxml.jackson.core:jackson-databind")
-    implementation("com.google.guava:guava")
-    implementation("org.apache.calcite.avatica:avatica-core")
-    implementation("org.apache.commons:commons-lang3")
-    implementation("org.apache.commons:commons-pool2")
-    implementation("org.slf4j:slf4j-api")
-
-    testImplementation(project(":testkit"))
-    testImplementation("com.github.kstyrc:embedded-redis")
-    testImplementation("org.mockito:mockito-core")
-    testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl")
-    testImplementation("org.testcontainers:testcontainers")
-}
+/**
+ * Utility classes for embedded Redis.
+ */
+package redis.embedded.util;

Reply via email to