Browse Source

修复单元测试失败的问题

Yiding He 3 years ago
parent
commit
a3081ef4a9

+ 33 - 11
office-plugin/src/main/java/org/artofsolving/jodconverter/util/ConfigUtils.java

@@ -29,22 +29,44 @@ public class ConfigUtils {
         return userDir;
     }
 
+    // 获取环境变量,如果找不到则返回默认值
+    @SuppressWarnings("SameParameterValue")
+    private static String env(String key, String def) {
+        String value = System.getenv(key);
+        return value == null ? def : value;
+    }
 
-    public static String getOfficePluginPath() {
-        String userDir = System.getenv("KKFILEVIEW_BIN_FOLDER");
-        if (userDir == null) {
-            userDir = System.getProperty("user.dir");
+    // 返回参数列表中第一个真实存在的路径,或者 null
+    private static String firstExists(File... paths) {
+        for (File path : paths) {
+            if (path.exists()) {
+                return path.getAbsolutePath();
+            }
         }
-        if (userDir.endsWith("bin")) {
-            userDir = userDir.substring(0, userDir.length() - 4);
+        return null;
+    }
+
+    public static String getOfficePluginPath() {
+        String userDir = System.getProperty("user.dir");
+        String binFolder = env("KKFILEVIEW_BIN_FOLDER", userDir);
+
+        File pluginPath = new File(binFolder);
+
+        // 如果指定了 bin 或其父目录,则返回父目录
+        // 否则在当前目录和父目录中寻找 office-plugin
+        if (new File(pluginPath, "bin").exists()) {
+            return pluginPath.getAbsolutePath();
+
+        } else if (pluginPath.exists() && pluginPath.getName().equals("bin")) {
+            return pluginPath.getParentFile().getAbsolutePath();
+
         } else {
-            String separator = File.separator;
-            if (!userDir.contains(OFFICE_PLUGIN_NAME)) {
-                userDir = userDir + separator + OFFICE_PLUGIN_NAME;
+            return firstExists(
+                    new File(pluginPath, OFFICE_PLUGIN_NAME),
+                    new File(pluginPath.getParentFile(), OFFICE_PLUGIN_NAME)
+            );
             }
         }
-        return userDir;
-    }
 
     public static String getCustomizedConfigPath() {
         String homePath = getHomePath();