Additionally run android tests with enabled D8
This commit is contained in:
+23
-4
@@ -33,7 +33,7 @@ import javax.xml.parsers.ParserConfigurationException
|
|||||||
|
|
||||||
class CodegenTestsOnAndroidRunner private constructor(private val pathManager: PathManager) {
|
class CodegenTestsOnAndroidRunner private constructor(private val pathManager: PathManager) {
|
||||||
|
|
||||||
private fun generateTestSuite(): TestSuite {
|
private fun runTestsInEmulator(): TestSuite {
|
||||||
val rootSuite = TestSuite("Root")
|
val rootSuite = TestSuite("Root")
|
||||||
|
|
||||||
downloadDependencies()
|
downloadDependencies()
|
||||||
@@ -54,6 +54,14 @@ class CodegenTestsOnAndroidRunner private constructor(private val pathManager: P
|
|||||||
rootSuite.addTest(this)
|
rootSuite.addTest(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enableD8(true)
|
||||||
|
runTestsOnEmulator(gradleRunner, TestSuite("D8")).apply {
|
||||||
|
(0 until this.countTestCases()).forEach {
|
||||||
|
val testCase = testAt(it) as TestCase
|
||||||
|
testCase.name += "_D8"
|
||||||
|
}
|
||||||
|
rootSuite.addTest(this)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (e: RuntimeException) {
|
catch (e: RuntimeException) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
@@ -74,6 +82,17 @@ class CodegenTestsOnAndroidRunner private constructor(private val pathManager: P
|
|||||||
return rootSuite
|
return rootSuite
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun enableD8(enable: Boolean) {
|
||||||
|
val file = File(pathManager.androidTmpFolder, "gradle.properties")
|
||||||
|
val lines = file.readLines().map {
|
||||||
|
if (it.startsWith("android.enableD8=")) {
|
||||||
|
"android.enableD8=$enable"
|
||||||
|
}
|
||||||
|
else it
|
||||||
|
}
|
||||||
|
file.writeText(lines.joinToString("\n"))
|
||||||
|
}
|
||||||
|
|
||||||
private fun processReport(suite: TestSuite, resultOutput: String) {
|
private fun processReport(suite: TestSuite, resultOutput: String) {
|
||||||
val reportFolder = pathManager.tmpFolder + "/build/outputs/androidTest-results/connected"
|
val reportFolder = pathManager.tmpFolder + "/build/outputs/androidTest-results/connected"
|
||||||
try {
|
try {
|
||||||
@@ -87,7 +106,7 @@ class CodegenTestsOnAndroidRunner private constructor(private val pathManager: P
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun runTestsOnEmulator(gradleRunner: GradleRunner, suite: TestSuite): TestSuite? {
|
private fun runTestsOnEmulator(gradleRunner: GradleRunner, suite: TestSuite): TestSuite {
|
||||||
val platformPrefixProperty = System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, "Idea")
|
val platformPrefixProperty = System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, "Idea")
|
||||||
try {
|
try {
|
||||||
val resultOutput = gradleRunner.connectedDebugAndroidTest()
|
val resultOutput = gradleRunner.connectedDebugAndroidTest()
|
||||||
@@ -120,8 +139,8 @@ class CodegenTestsOnAndroidRunner private constructor(private val pathManager: P
|
|||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getTestSuite(pathManager: PathManager): TestSuite {
|
fun runTestsInEmulator(pathManager: PathManager): TestSuite {
|
||||||
return CodegenTestsOnAndroidRunner(pathManager).generateTestSuite()
|
return CodegenTestsOnAndroidRunner(pathManager).runTestsInEmulator()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun cleanAndBuildProject(gradleRunner: GradleRunner) {
|
private fun cleanAndBuildProject(gradleRunner: GradleRunner) {
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ public class PathManager {
|
|||||||
return tmpFolder + "/src";
|
return tmpFolder + "/src";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getAndroidTmpFolder() {
|
||||||
|
return tmpFolder;
|
||||||
|
}
|
||||||
|
|
||||||
public String getAndroidSdkRoot() {
|
public String getAndroidSdkRoot() {
|
||||||
return getDependenciesRoot() + "/android-sdk";
|
return getDependenciesRoot() + "/android-sdk";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class AndroidRunner {
|
|||||||
CodegenTestsOnAndroidGenerator.generate(pathManager);
|
CodegenTestsOnAndroidGenerator.generate(pathManager);
|
||||||
|
|
||||||
System.out.println("Run tests on android...");
|
System.out.println("Run tests on android...");
|
||||||
TestSuite suite = CodegenTestsOnAndroidRunner.getTestSuite(pathManager);
|
TestSuite suite = CodegenTestsOnAndroidRunner.runTestsInEmulator(pathManager);
|
||||||
//AndroidJpsBuildTestCase indirectly depends on UsefulTestCase which compiled against java 8
|
//AndroidJpsBuildTestCase indirectly depends on UsefulTestCase which compiled against java 8
|
||||||
//TODO: Need add separate run configuration for AndroidJpsBuildTestCase
|
//TODO: Need add separate run configuration for AndroidJpsBuildTestCase
|
||||||
//suite.addTest(new AndroidJpsBuildTestCase());
|
//suite.addTest(new AndroidJpsBuildTestCase());
|
||||||
|
|||||||
Reference in New Issue
Block a user