8264403: [macos]: App names containing '.' characters results in an error message when launching
Reviewed-by: asemenyuk
This commit is contained in:
parent
b953386de1
commit
04f24fe9ad
src/jdk.jpackage
share/native
unix/native/common
windows/native/common
test/jdk/tools/jpackage/share/jdk/jpackage/tests
@ -93,9 +93,8 @@ tstring findJvmLib(const CfgFile& cfgFile, const tstring& defaultRuntimePath,
|
|||||||
|
|
||||||
Jvm* AppLauncher::createJvmLauncher() const {
|
Jvm* AppLauncher::createJvmLauncher() const {
|
||||||
const tstring cfgFilePath = FileUtils::mkpath()
|
const tstring cfgFilePath = FileUtils::mkpath()
|
||||||
<< appDirPath
|
<< appDirPath << FileUtils::stripExeSuffix(
|
||||||
<< FileUtils::basename(FileUtils::replaceSuffix(
|
FileUtils::basename(launcherPath)) + _T(".cfg");
|
||||||
launcherPath, _T(".cfg")));
|
|
||||||
|
|
||||||
LOG_TRACE(tstrings::any() << "Launcher config file path: \""
|
LOG_TRACE(tstrings::any() << "Launcher config file path: \""
|
||||||
<< cfgFilePath << "\"");
|
<< cfgFilePath << "\"");
|
||||||
|
@ -72,6 +72,9 @@ namespace FileUtils {
|
|||||||
*/
|
*/
|
||||||
tstring replaceSuffix(const tstring& path, const tstring& suffix=tstring());
|
tstring replaceSuffix(const tstring& path, const tstring& suffix=tstring());
|
||||||
|
|
||||||
|
// remove the executable suffix if there is one
|
||||||
|
tstring stripExeSuffix(const tstring& path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns absolute path of the given path.
|
* Returns absolute path of the given path.
|
||||||
* If the given string is empty, returns absolute path to the current
|
* If the given string is empty, returns absolute path to the current
|
||||||
|
@ -62,4 +62,9 @@ tstring toAbsolutePath(const tstring& path) {
|
|||||||
return mkpath() << toAbsolutePath("") << path;
|
return mkpath() << toAbsolutePath("") << path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tstring stripExeSuffix(const tstring& path) {
|
||||||
|
// for unix - there is no suffix to remove
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace FileUtils
|
} // namespace FileUtils
|
||||||
|
@ -658,4 +658,13 @@ void FileWriter::finalize() {
|
|||||||
cleaner.cancel();
|
cleaner.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tstring stripExeSuffix(const tstring& path) {
|
||||||
|
// for windows - there is a ".exe" suffix to remove
|
||||||
|
const tstring::size_type pos = path.rfind(_T(".exe"));
|
||||||
|
if (pos == tstring::npos) {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
return path.substr(0, pos);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace FileUtils
|
} // namespace FileUtils
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package jdk.jpackage.tests;
|
||||||
|
|
||||||
|
import jdk.jpackage.test.JPackageCommand;
|
||||||
|
import jdk.jpackage.test.HelloApp;
|
||||||
|
import jdk.jpackage.test.TKit;
|
||||||
|
import jdk.jpackage.test.Annotations.Parameters;
|
||||||
|
import jdk.jpackage.test.Annotations.Test;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @summary jpackage create image with --java-options test
|
||||||
|
* @library ../../../../helpers
|
||||||
|
* @build jdk.jpackage.test.*
|
||||||
|
* @modules jdk.jpackage/jdk.jpackage.internal
|
||||||
|
* @compile DotInNameTest.java
|
||||||
|
* @run main/othervm/timeout=360 -Xmx512m jdk.jpackage.test.Main
|
||||||
|
* --jpt-run=jdk.jpackage.tests.DotInNameTest
|
||||||
|
* --jpt-before-run=jdk.jpackage.test.JPackageCommand.useToolProviderByDefault
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class DotInNameTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
JPackageCommand cmd = JPackageCommand.helloAppImage("Hello");
|
||||||
|
|
||||||
|
cmd.setArgumentValue("--name",
|
||||||
|
cmd.getArgumentValue("--name") + ".with.dot");
|
||||||
|
// run the jpackage command
|
||||||
|
cmd.executeAndAssertImageCreated();
|
||||||
|
|
||||||
|
// run the launcher it generated
|
||||||
|
HelloApp.executeLauncherAndVerifyOutput(cmd);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user