diff --git a/compiler/android-tests/android-module/AndroidManifest.xml b/compiler/android-tests/android-module/AndroidManifest.xml
deleted file mode 100644
index de6be785e87..00000000000
--- a/compiler/android-tests/android-module/AndroidManifest.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/compiler/android-tests/android-module/build.gradle b/compiler/android-tests/android-module/build.gradle
index f1702c3a2c8..04c9148d3e0 100644
--- a/compiler/android-tests/android-module/build.gradle
+++ b/compiler/android-tests/android-module/build.gradle
@@ -7,7 +7,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.1'
+ classpath 'com.android.tools.build:gradle:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -22,7 +22,7 @@ repositories {
android {
compileSdkVersion 19
- buildToolsVersion "27.0.3"
+ buildToolsVersion "28.0.3"
defaultConfig {
applicationId "org.jetbrains.kotlin.android.tests"
@@ -31,7 +31,7 @@ android {
versionCode 1
versionName "1.0"
testApplicationId "org.jetbrains.kotlin.android.tests.gradle"
- testInstrumentationRunner "android.test.InstrumentationTestRunner"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
@@ -41,20 +41,6 @@ android {
}
}
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java {
- srcDirs = ['src']
- }
- res.srcDirs = ['res']
- }
- androidTest {
- java {
- srcDirs = ['src']
- }
- }
- }
packagingOptions { exclude 'META-INF/build.txt' }
//TODO run under java 6, cause there is error on implicit 'stream' import in 'asWithMutable' test
@@ -72,6 +58,11 @@ android {
maxProcessCount 4
additionalParameters "--debug"
}
+
+ testOptions {
+ resultsDir = "build/test/results"
+ }
+
}
task jarTestFolders() {
@@ -89,7 +80,8 @@ tasks.withType(JavaCompile) {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- androidTestCompile 'junit:junit:4.12'
- compile 'com.android.support:multidex:1.0.1'
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ androidTestImplementation 'junit:junit:4.12'
+ implementation 'com.android.support:multidex:1.0.3'
+ androidTestImplementation 'com.android.support.test:runner:1.0.2'
}
diff --git a/compiler/android-tests/android-module/gradle.properties b/compiler/android-tests/android-module/gradle.properties
index 75e39fe7d17..56e25b9919c 100644
--- a/compiler/android-tests/android-module/gradle.properties
+++ b/compiler/android-tests/android-module/gradle.properties
@@ -1,4 +1,3 @@
#don't try to download android specific tools within gradle: licence acceptance will be required
android.builder.sdkDownload=false
-android.enableAapt2=false
android.enableD8=false
\ No newline at end of file
diff --git a/compiler/android-tests/android-module/src/main/AndroidManifest.xml b/compiler/android-tests/android-module/src/main/AndroidManifest.xml
new file mode 100644
index 00000000000..8b7f6ac94b8
--- /dev/null
+++ b/compiler/android-tests/android-module/src/main/AndroidManifest.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/compiler/android-tests/android-module/src/org/jetbrains/kotlin/android/tests/AbstractCodegenTestCaseOnAndroid.java b/compiler/android-tests/android-module/src/main/java/org/jetbrains/kotlin/android/tests/AbstractCodegenTestCaseOnAndroid.java
similarity index 100%
rename from compiler/android-tests/android-module/src/org/jetbrains/kotlin/android/tests/AbstractCodegenTestCaseOnAndroid.java
rename to compiler/android-tests/android-module/src/main/java/org/jetbrains/kotlin/android/tests/AbstractCodegenTestCaseOnAndroid.java
diff --git a/compiler/android-tests/android-module/src/org/jetbrains/kotlin/android/tests/MyActivity.java b/compiler/android-tests/android-module/src/main/java/org/jetbrains/kotlin/android/tests/MyActivity.java
similarity index 100%
rename from compiler/android-tests/android-module/src/org/jetbrains/kotlin/android/tests/MyActivity.java
rename to compiler/android-tests/android-module/src/main/java/org/jetbrains/kotlin/android/tests/MyActivity.java
diff --git a/compiler/android-tests/android-module/res/values/strings.xml b/compiler/android-tests/android-module/src/main/res/values/strings.xml
similarity index 100%
rename from compiler/android-tests/android-module/res/values/strings.xml
rename to compiler/android-tests/android-module/src/main/res/values/strings.xml
diff --git a/compiler/android-tests/android-module/tested-module/AndroidManifest.xml b/compiler/android-tests/android-module/tested-module/AndroidManifest.xml
deleted file mode 100644
index 62a659797e9..00000000000
--- a/compiler/android-tests/android-module/tested-module/AndroidManifest.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
diff --git a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.kt b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.kt
index b26199a1a02..74927c98736 100644
--- a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.kt
+++ b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.kt
@@ -54,6 +54,7 @@ class CodegenTestsOnAndroidRunner private constructor(private val pathManager: P
rootSuite.addTest(this)
}
+ renameReport()
enableD8(true)
runTestsOnEmulator(gradleRunner, TestSuite("D8")).apply {
(0 until this.countTestCases()).forEach {
@@ -94,18 +95,23 @@ class CodegenTestsOnAndroidRunner private constructor(private val pathManager: P
}
private fun processReport(suite: TestSuite, resultOutput: String) {
- val reportFolder = pathManager.tmpFolder + "/build/outputs/androidTest-results/connected"
+ val reportFolder = reportFolder()
try {
val testCases = parseSingleReportInFolder(reportFolder)
testCases.forEach { aCase -> suite.addTest(aCase) }
Assert.assertNotEquals("There is no test results in report", 0, testCases.size.toLong())
+ } catch (e: Exception) {
+ throw RuntimeException("Can't parse test results in $reportFolder\n$resultOutput", e)
}
- catch (e: Exception) {
- throw RuntimeException("Can't parse test results in " + reportFolder + "\n" + resultOutput)
- }
-
}
+ private fun renameReport() {
+ val reportFolder = File(reportFolder())
+ reportFolder.renameTo(File(reportFolder.parentFile, reportFolder.name + "_dex"))
+ }
+
+ private fun reportFolder() = pathManager.tmpFolder + "/build/test/results/connected/"
+
private fun runTestsOnEmulator(gradleRunner: GradleRunner, suite: TestSuite): TestSuite {
val platformPrefixProperty = System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, "Idea")
try {
diff --git a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java
index 6e8d6480f98..4a6d5ebc1f4 100644
--- a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java
+++ b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java
@@ -38,11 +38,11 @@ public class SDKDownloader {
private final PathManager pathManager;
- private static final String PLATFORM_TOOLS = "27.0.1";
- private static final String SDK_TOOLS = "25.1.6";
- public static final String BUILD_TOOLS = "27.0.3";
+ private static final String PLATFORM_TOOLS = "28.0.1";
+ private static final String SDK_TOOLS = "25.2.5";
+ public static final String BUILD_TOOLS = "28.0.3";
private static final int ANDROID_VERSION = 19;
- public static final String GRADLE_VERSION = "4.5.1";
+ public static final String GRADLE_VERSION = "4.6";
public SDKDownloader(PathManager pathManager) {
@@ -126,7 +126,7 @@ public class SDKDownloader {
String buildToolsFolder = buildTools + BUILD_TOOLS + "/";
new File(buildToolsFolder).delete();
unzip(buildToolsZipPath, buildTools);
- new File(buildTools + "/android-8.1.0").renameTo(new File(buildToolsFolder));
+ new File(buildTools + "/android-9").renameTo(new File(buildToolsFolder));
}
public void deleteAll() {
diff --git a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/gradle/GradleRunner.java b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/gradle/GradleRunner.java
index d8c100636f4..0f3b7d9d680 100644
--- a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/gradle/GradleRunner.java
+++ b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/gradle/GradleRunner.java
@@ -49,6 +49,7 @@ public class GradleRunner {
System.out.println("Building gradle project...");
GeneralCommandLine build = generateCommandLine("build");
build.addParameter("--stacktrace");
+ build.addParameter("--warn");
RunResult result = RunUtils.execute(build);
OutputUtils.checkResult(result);
}
@@ -67,8 +68,11 @@ public class GradleRunner {
public String connectedDebugAndroidTest() {
System.out.println("Starting tests...");
- RunResult result = RunUtils.execute(generateCommandLine("connectedAndroidTest"));
- return result.getOutput();
+ GeneralCommandLine test = generateCommandLine("connectedAndroidTest");
+ test.addParameters("--stacktrace");
+ //To avoid problem with discovering tests on Android in multidex build
+ test.addParameters("-Pandroid.testInstrumentationRunnerArguments.class=org.jetbrains.kotlin.android.tests.CodegenTestCaseOnAndroid");
+ return RunUtils.execute(test).getOutput();
}
private GeneralCommandLine generateCommandLine(String taskName) {
diff --git a/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt b/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt
index ea0e3dfafb9..8d0547f4cdb 100644
--- a/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt
+++ b/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt
@@ -76,9 +76,9 @@ class CodegenTestsOnAndroidGenerator private constructor(private val pathManager
private fun generateAndSave() {
println("Generating test files...")
val testSourceFilePath =
- pathManager.srcFolderInAndroidTmpFolder + "/" + testClassPackage.replace(".", "/") + "/" + testClassName + ".java"
+ pathManager.srcFolderInAndroidTmpFolder + "/androidTest/java/" + testClassPackage.replace(".", "/") + "/" + testClassName + ".java"
- FileWriter(File(testSourceFilePath)).use {
+ FileWriter(File(testSourceFilePath).also { it.parentFile.mkdirs() }).use {
val p = Printer(it)
p.print(FileUtil.loadFile(File("license/LICENSE.txt")))
p.println(