Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
af8061a4
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
af8061a4
编写于
2月 10, 2021
作者:
I
Ilya Gorbunov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove kotlin-test-multiplatform special dependency handling
#KT-40225
上级
2cd1aefd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
3 addition
and
108 deletion
+3
-108
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt
...ns/kotlin/gradle/internal/KotlinDependenciesManagement.kt
+3
-108
未找到文件。
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KotlinDependenciesManagement.kt
浏览文件 @
af8061a4
...
...
@@ -41,7 +41,6 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
internal
fun
customizeKotlinDependencies
(
project
:
Project
)
{
configureStdlibDefaultDependency
(
project
)
configureKotlinTestDependencies
(
project
)
configureKotlinTestDependency
(
project
)
configureDefaultVersionsResolutionStrategy
(
project
)
}
...
...
@@ -287,113 +286,6 @@ private fun kotlinTestCapabilityForJvmSourceSet(project: Project, kotlinSourceSe
internal
const
val
KOTLIN_TEST_ROOT_MODULE_NAME
=
"kotlin-test"
internal
fun
configureKotlinTestDependencies
(
project
:
Project
)
{
fun
isKotlinTestMultiplatformDependency
(
dependency
:
Dependency
)
=
dependency
.
group
==
KOTLIN_MODULE_GROUP
&&
dependency
.
name
==
KOTLIN_TEST_MULTIPLATFORM_MODULE_NAME
KotlinDependencyScope
.
values
().
forEach
{
scope
->
val
versionOrNullBySourceSet
=
mutableMapOf
<
KotlinSourceSet
,
String
?>()
project
.
kotlinExtension
.
sourceSets
.
all
{
kotlinSourceSet
->
val
configuration
=
project
.
sourceSetDependencyConfigurationByScope
(
kotlinSourceSet
,
scope
)
var
finalizingDependencies
=
false
configuration
.
dependencies
.
matching
(
::
isKotlinTestMultiplatformDependency
).
apply
{
firstOrNull
()
?.
let
{
versionOrNullBySourceSet
[
kotlinSourceSet
]
=
it
.
version
}
whenObjectRemoved
{
if
(!
finalizingDependencies
&&
!
any
())
versionOrNullBySourceSet
.
remove
(
kotlinSourceSet
)
}
whenObjectAdded
{
item
->
versionOrNullBySourceSet
[
kotlinSourceSet
]
=
item
.
version
}
}
project
.
tryWithDependenciesIfUnresolved
(
configuration
)
{
dependencies
->
val
parentOrOwnVersions
:
List
<
String
?
>
=
kotlinSourceSet
.
getSourceSetHierarchy
().
filter
(
versionOrNullBySourceSet
::
contains
).
map
(
versionOrNullBySourceSet
::
get
)
finalizingDependencies
=
true
parentOrOwnVersions
.
distinct
().
forEach
{
version
->
// add dependencies with each version and let Gradle disambiguate them
val
dependenciesToAdd
=
kotlinTestDependenciesForSourceSet
(
project
,
kotlinSourceSet
,
version
)
dependenciesToAdd
.
filterIsInstance
<
ExternalDependency
>().
forEach
{
if
(
it
.
version
==
null
)
{
it
.
version
{
constraint
->
constraint
.
require
(
project
.
kotlinExtension
.
coreLibrariesVersion
)
}
}
}
dependencies
.
addAll
(
dependenciesToAdd
)
dependencies
.
removeIf
(
::
isKotlinTestMultiplatformDependency
)
}
}
}
}
}
private
fun
kotlinTestDependenciesForSourceSet
(
project
:
Project
,
kotlinSourceSet
:
KotlinSourceSet
,
version
:
String
?):
List
<
Dependency
>
{
val
compilations
=
CompilationSourceSetUtil
.
compilationsBySourceSets
(
project
).
getValue
(
kotlinSourceSet
)
.
filter
{
it
.
target
!
is
KotlinMetadataTarget
}
val
platformTypes
=
compilations
.
mapTo
(
mutableSetOf
())
{
it
.
platformType
}
return
when
{
platformTypes
.
isEmpty
()
->
emptyList
()
setOf
(
KotlinPlatformType
.
jvm
,
KotlinPlatformType
.
androidJvm
).
containsAll
(
platformTypes
)
->
listOf
(
kotlinTestDependenciesForJvm
(
project
,
compilations
,
version
)
)
platformTypes
.
singleOrNull
()
==
KotlinPlatformType
.
js
->
listOf
(
project
.
kotlinDependency
(
"kotlin-test-js"
,
version
)
)
platformTypes
.
singleOrNull
()
==
KotlinPlatformType
.
native
->
emptyList
()
else
->
listOf
(
project
.
kotlinDependency
(
"kotlin-test-common"
,
version
),
project
.
kotlinDependency
(
"kotlin-test-annotations-common"
,
version
)
)
}
}
internal
const
val
KOTLIN_TEST_MULTIPLATFORM_MODULE_NAME
=
"kotlin-test-multiplatform"
private
fun
Project
.
kotlinDependency
(
moduleName
:
String
,
versionOrNull
:
String
?)
=
project
.
dependencies
.
create
(
"$KOTLIN_MODULE_GROUP:$moduleName${versionOrNull?.prependIndent("
:
").orEmpty()}"
)
private
fun
kotlinTestDependenciesForJvm
(
project
:
Project
,
compilations
:
Iterable
<
KotlinCompilation
<
*
>>,
version
:
String
?):
Dependency
{
val
testTaskLists
:
List
<
List
<
Task
>
?
>
=
compilations
.
map
{
compilation
->
val
target
=
compilation
.
target
when
{
target
is
KotlinTargetWithTests
<
*
,
*
>
->
target
.
findTestRunsByCompilation
(
compilation
)
?.
filterIsInstance
<
KotlinTaskTestRun
<
*
,
*
>>()
?.
map
{
it
.
executionTask
.
get
()
}
target
is
KotlinWithJavaTarget
<
*
>
->
if
(
compilation
.
name
==
KotlinCompilation
.
TEST_COMPILATION_NAME
)
project
.
locateTask
<
AbstractTestTask
>(
target
.
testTaskName
)
?.
get
()
?.
let
(
::
listOf
)
else
null
compilation
is
KotlinJvmAndroidCompilation
->
when
(
compilation
.
androidVariant
)
{
is
UnitTestVariant
->
project
.
locateTask
<
AbstractTestTask
>(
lowerCamelCaseName
(
"test"
,
compilation
.
androidVariant
.
name
))
?.
get
()
?.
let
(
::
listOf
)
is
TestVariant
->
(
compilation
.
androidVariant
as
TestVariant
).
connectedInstrumentTest
?.
let
(
::
listOf
)
else
->
null
}
else
->
null
}
}
if
(
null
in
testTaskLists
)
{
return
project
.
kotlinDependency
(
"kotlin-test"
,
version
)
}
val
testTasks
=
testTaskLists
.
flatMap
{
checkNotNull
(
it
)
}
val
frameworks
=
testTasks
.
mapTo
(
mutableSetOf
())
{
testTask
->
when
(
testTask
)
{
is
Test
->
testFrameworkOf
(
testTask
)
else
->
// Android connected test tasks don't inherit from Test, but we use JUnit for them
KotlinTestJvmFramework
.
junit
}
}
return
when
{
frameworks
.
size
>
1
->
project
.
kotlinDependency
(
"kotlin-test"
,
version
)
else
->
project
.
kotlinDependency
(
"kotlin-test-${frameworks.single().name}"
,
version
)
}
}
private
enum
class
KotlinTestJvmFramework
{
junit
,
testng
,
junit5
}
...
...
@@ -417,6 +309,9 @@ private fun KotlinTargetWithTests<*, *>.findTestRunsByCompilation(byCompilation:
}
//endregion
private
fun
Project
.
kotlinDependency
(
moduleName
:
String
,
versionOrNull
:
String
?)
=
project
.
dependencies
.
create
(
"$KOTLIN_MODULE_GROUP:$moduleName${versionOrNull?.prependIndent("
:
").orEmpty()}"
)
private
fun
Project
.
tryWithDependenciesIfUnresolved
(
configuration
:
Configuration
,
action
:
(
DependencySet
)
->
Unit
)
{
fun
reportAlreadyResolved
()
{
logger
.
info
(
"Could not setup Kotlin-specific dependencies for $configuration as it is already resolved"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录