Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
15c887e7
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
15c887e7
编写于
8月 02, 2017
作者:
M
mchung
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8185541: Add back test cases for resource lookup from bootclasspath
Reviewed-by: alanb
上级
768193ca
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
131 addition
and
106 deletion
+131
-106
jdk/test/java/lang/ClassLoader/getResource/GetResource.java
jdk/test/java/lang/ClassLoader/getResource/GetResource.java
+131
-2
jdk/test/java/lang/ClassLoader/getResource/GetResource.sh
jdk/test/java/lang/ClassLoader/getResource/GetResource.sh
+0
-104
未找到文件。
jdk/test/java/lang/ClassLoader/getResource/GetResource.java
浏览文件 @
15c887e7
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014,
2017,
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
...
...
@@ -21,11 +21,45 @@
* questions.
*/
/*
* @test
* @bug 6760902
* @library /lib/testlibrary
* @build jdk.testlibrary.ProcessTools
* @run testng GetResource
* @summary Empty path on bootclasspath is not default to current working
* directory for both class lookup and resource lookup whereas
* empty path on classpath is default to current working directory.
*/
import
java.io.File
;
import
java.io.IOException
;
import
java.net.URL
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
jdk.testlibrary.JDKToolFinder
;
import
static
jdk
.
testlibrary
.
ProcessTools
.*;
import
org.testng.annotations.BeforeTest
;
import
org.testng.annotations.DataProvider
;
import
org.testng.annotations.Test
;
public
class
GetResource
{
private
static
final
Path
CWD
=
Paths
.
get
(
System
.
getProperty
(
"user.dir"
));
private
static
final
String
DIR_A
=
"a"
;
private
static
final
String
DIR_B
=
"b"
;
private
static
final
String
RESOURCE_NAME
=
"test.properties"
;
public
static
void
main
(
String
[]
args
)
{
private
static
final
String
GETRESOURCE_CLASS
=
"GetResource.class"
;
public
static
void
main
(
String
...
args
)
{
String
expect
=
args
[
0
]
+
"/"
+
RESOURCE_NAME
;
URL
url
=
GetResource
.
class
.
getResource
(
RESOURCE_NAME
);
System
.
out
.
println
(
"getResource found: "
+
url
);
...
...
@@ -39,4 +73,99 @@ public class GetResource {
throw
new
RuntimeException
(
url
+
" != expected resource "
+
expect
);
}
}
@BeforeTest
public
void
setup
()
throws
IOException
{
// setup two directories "a" and "b"
// each directory contains both test.properties and this test class
Path
testSrc
=
Paths
.
get
(
System
.
getProperty
(
"test.src"
));
Path
testClasses
=
Paths
.
get
(
System
.
getProperty
(
"test.classes"
));
Files
.
createDirectories
(
Paths
.
get
(
DIR_A
));
Files
.
createDirectories
(
Paths
.
get
(
DIR_B
));
Files
.
copy
(
testSrc
.
resolve
(
RESOURCE_NAME
),
Paths
.
get
(
DIR_A
,
RESOURCE_NAME
));
Files
.
copy
(
testSrc
.
resolve
(
RESOURCE_NAME
),
Paths
.
get
(
DIR_B
,
RESOURCE_NAME
));
Files
.
copy
(
testClasses
.
resolve
(
GETRESOURCE_CLASS
),
Paths
.
get
(
DIR_A
,
GETRESOURCE_CLASS
));
Files
.
copy
(
testClasses
.
resolve
(
GETRESOURCE_CLASS
),
Paths
.
get
(
DIR_B
,
GETRESOURCE_CLASS
));
}
private
String
concat
(
String
...
dirs
)
{
return
Stream
.
of
(
dirs
).
collect
(
Collectors
.
joining
(
File
.
pathSeparator
));
}
@DataProvider
public
Object
[][]
options
()
{
return
new
Object
[][]
{
new
Object
[]
{
List
.
of
(
"-Xbootclasspath/a:a"
),
"a"
},
new
Object
[]
{
List
.
of
(
"-Xbootclasspath/a:b"
),
"b"
},
new
Object
[]
{
List
.
of
(
"-Xbootclasspath/a:"
+
concat
(
"a"
,
"b"
)),
"a"
},
new
Object
[]
{
List
.
of
(
"-Xbootclasspath/a:"
+
concat
(
"b"
,
"a"
)),
"b"
},
new
Object
[]
{
List
.
of
(
"-cp"
,
"a"
),
"a"
},
new
Object
[]
{
List
.
of
(
"-cp"
,
"b"
),
"b"
},
new
Object
[]
{
List
.
of
(
"-cp"
,
concat
(
"a"
,
"b"
)),
"a"
},
new
Object
[]
{
List
.
of
(
"-cp"
,
concat
(
"b"
,
"a"
)),
"b"
},
};
}
@Test
(
dataProvider
=
"options"
)
public
void
test
(
List
<
String
>
options
,
String
expected
)
throws
Throwable
{
runTest
(
CWD
,
options
,
expected
);
}
@DataProvider
public
Object
[][]
dirA
()
{
String
dirB
=
".."
+
File
.
separator
+
"b"
;
return
new
Object
[][]
{
new
Object
[]
{
List
.
of
(
"-Xbootclasspath/a:."
),
"a"
},
// "b" is the expected result when JDK-8185540 is resolved
new
Object
[]
{
List
.
of
(
"-Xbootclasspath/a:"
+
dirB
),
"a"
},
// empty path in first element
new
Object
[]
{
List
.
of
(
"-Xbootclasspath/a:"
+
File
.
pathSeparator
+
dirB
),
"a"
},
new
Object
[]
{
List
.
of
(
"-cp"
,
File
.
pathSeparator
),
"a"
},
new
Object
[]
{
List
.
of
(
"-cp"
,
dirB
),
"b"
},
new
Object
[]
{
List
.
of
(
"-cp"
,
File
.
pathSeparator
+
dirB
),
"a"
},
};
}
@Test
(
dataProvider
=
"dirA"
)
public
void
testCurrentDirA
(
List
<
String
>
options
,
String
expected
)
throws
Throwable
{
// current working directory is "a"
runTest
(
CWD
.
resolve
(
DIR_A
),
options
,
expected
);
}
private
void
runTest
(
Path
dir
,
List
<
String
>
options
,
String
expected
)
throws
Throwable
{
String
javapath
=
JDKToolFinder
.
getJDKTool
(
"java"
);
List
<
String
>
cmdLine
=
new
ArrayList
<>();
cmdLine
.
add
(
javapath
);
options
.
forEach
(
cmdLine:
:
add
);
cmdLine
.
add
(
"GetResource"
);
cmdLine
.
add
(
expected
);
System
.
out
.
println
(
"Command line: "
+
cmdLine
);
ProcessBuilder
pb
=
new
ProcessBuilder
(
cmdLine
.
stream
().
toArray
(
String
[]::
new
));
// change working directory
pb
.
directory
(
dir
.
toFile
());
// remove CLASSPATH environment variable
Map
<
String
,
String
>
env
=
pb
.
environment
();
String
value
=
env
.
remove
(
"CLASSPATH"
);
executeCommand
(
pb
).
shouldHaveExitValue
(
0
);
}
}
jdk/test/java/lang/ClassLoader/getResource/GetResource.sh
已删除
100644 → 0
浏览文件 @
768193ca
#
# Copyright (c) 2014, 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.
#
# @test
# @bug 6760902
# @summary Empty path on bootclasspath is not default to current working
# directory for both class lookup and resource lookup whereas
# empty path on classpath is default to current working directory.
#
# @run shell GetResource.sh
if
[
-z
"
$TESTJAVA
"
]
;
then
if
[
$#
-lt
1
]
;
then
exit
1
;
fi
TESTJAVA
=
"
$1
"
;
shift
COMPILEJAVA
=
"
${
TESTJAVA
}
"
TESTSRC
=
"
`
pwd
`
"
TESTCLASSES
=
"
`
pwd
`
"
fi
# set platform-specific variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
Windows
*
)
PS
=
";"
;;
CYGWIN
*
)
PS
=
";"
TESTCLASSES
=
`
/usr/bin/cygpath
-a
-s
-m
${
TESTCLASSES
}
`
;;
*
)
PS
=
":"
;;
esac
echo
TESTSRC
=
${
TESTSRC
}
echo
TESTCLASSES
=
${
TESTCLASSES
}
echo
TESTJAVA
=
${
TESTJAVA
}
echo
""
${
COMPILEJAVA
}
/bin/javac
${
TESTJAVACOPTS
}
${
TESTTOOLVMOPTS
}
\
-d
${
TESTCLASSES
}
\
${
TESTSRC
}
/GetResource.java
||
exit
10
setup
()
{
dest
=
${
TESTCLASSES
}
/
$1
rm
-rf
$dest
mkdir
$dest
cp
${
TESTSRC
}
/test.properties
$dest
cp
${
TESTCLASSES
}
/GetResource.class
$dest
}
count
=
0
runTest
()
{
expected
=
$1
;
vmoption
=
$2
;
shift
;
shift
count
=
`
expr
$count
+1
`
echo
"Test
$count
:
$vmoption
$@
"
${
TESTJAVA
}
/bin/java
${
TESTVMOPTS
}
"
$vmoption
"
$@
\
GetResource
$expected
||
exit
$count
}
# run test
setup
"a"
setup
"b"
cd
${
TESTCLASSES
}
DIR
=
`
pwd
`
# Expected -classpath
runTest
"a"
-cp
a
runTest
"a"
-cp
"a
${
PS
}
b"
runTest
"b"
-cp
b
runTest
"b"
-cp
"b
${
PS
}
a"
cd
${
DIR
}
/a
# no -classpath
runTest
"a"
-cp
"
${
PS
}
"
runTest
"b"
-cp
"../b"
# Test empty path in classpath default to current working directory
runTest
"a"
-cp
"
${
PS
}
../b"
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录