Reorganize build logic in AndroidTestGenerator.kt
This commit is contained in:
+54
-44
@@ -51,52 +51,24 @@ public class CodegenTestsOnAndroidRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TestSuite generateTestSuite() {
|
private TestSuite generateTestSuite() {
|
||||||
TestSuite suite = new TestSuite("MySuite");
|
TestSuite rootSuite = new TestSuite("Root");
|
||||||
|
|
||||||
String resultOutput = runTests();
|
|
||||||
|
|
||||||
String reportFolder = pathManager.getTmpFolder() + "/build/outputs/androidTest-results/connected";
|
|
||||||
try {
|
|
||||||
List<TestCase> testCases = parseSingleReportInFolder(reportFolder);
|
|
||||||
for (TestCase aCase : testCases) {
|
|
||||||
suite.addTest(aCase);
|
|
||||||
}
|
|
||||||
Assert.assertNotEquals("There is no test results in report", 0, testCases.size());
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
throw new RuntimeException("Can't parse test results in " + reportFolder +"\n" + resultOutput);
|
|
||||||
}
|
|
||||||
|
|
||||||
return suite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public String runTests() {
|
|
||||||
File rootForAndroidDependencies = new File(pathManager.getDependenciesRoot());
|
|
||||||
if (!rootForAndroidDependencies.exists()) {
|
|
||||||
rootForAndroidDependencies.mkdirs();
|
|
||||||
}
|
|
||||||
|
|
||||||
SDKDownloader downloader = new SDKDownloader(pathManager);
|
|
||||||
downloader.downloadAll();
|
|
||||||
downloader.unzipAll();
|
|
||||||
PermissionManager.setPermissions(pathManager);
|
|
||||||
|
|
||||||
|
downloadDependencies();
|
||||||
Emulator emulator = new Emulator(pathManager, Emulator.ARM);
|
Emulator emulator = new Emulator(pathManager, Emulator.ARM);
|
||||||
GradleRunner gradleRunner = new GradleRunner(pathManager);
|
|
||||||
gradleRunner.clean();
|
|
||||||
gradleRunner.build();
|
|
||||||
|
|
||||||
emulator.createEmulator();
|
emulator.createEmulator();
|
||||||
|
|
||||||
String platformPrefixProperty = System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, "Idea");
|
GradleRunner gradleRunner = new GradleRunner(pathManager);
|
||||||
|
//old dex
|
||||||
|
cleanAndBuildProject(gradleRunner);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
emulator.startEmulator();
|
emulator.startEmulator();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
emulator.waitEmulatorStart();
|
emulator.waitEmulatorStart();
|
||||||
//runTestsViaAdb(emulator, gradleRunner);
|
|
||||||
return gradleRunner.connectedDebugAndroidTest();
|
TestSuite dex = runTestsOnEmulator(gradleRunner, new TestSuite("Dex"));
|
||||||
|
rootSuite.addTest(dex);
|
||||||
}
|
}
|
||||||
catch (RuntimeException e) {
|
catch (RuntimeException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -110,6 +82,35 @@ public class CodegenTestsOnAndroidRunner {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
finally {
|
||||||
|
emulator.finishEmulatorProcesses();
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootSuite;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processReport(TestSuite suite, String resultOutput) {
|
||||||
|
String reportFolder = pathManager.getTmpFolder() + "/build/outputs/androidTest-results/connected";
|
||||||
|
try {
|
||||||
|
List<TestCase> testCases = parseSingleReportInFolder(reportFolder);
|
||||||
|
for (TestCase aCase : testCases) {
|
||||||
|
suite.addTest(aCase);
|
||||||
|
}
|
||||||
|
Assert.assertNotEquals("There is no test results in report", 0, testCases.size());
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
throw new RuntimeException("Can't parse test results in " + reportFolder +"\n" + resultOutput);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private TestSuite runTestsOnEmulator(GradleRunner gradleRunner, TestSuite suite) {
|
||||||
|
String platformPrefixProperty = System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, "Idea");
|
||||||
|
try {
|
||||||
|
String resultOutput = gradleRunner.connectedDebugAndroidTest();
|
||||||
|
processReport(suite, resultOutput);
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
finally {
|
finally {
|
||||||
if (platformPrefixProperty != null) {
|
if (platformPrefixProperty != null) {
|
||||||
System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, platformPrefixProperty);
|
System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, platformPrefixProperty);
|
||||||
@@ -117,16 +118,25 @@ public class CodegenTestsOnAndroidRunner {
|
|||||||
else {
|
else {
|
||||||
System.clearProperty(PlatformUtils.PLATFORM_PREFIX_KEY);
|
System.clearProperty(PlatformUtils.PLATFORM_PREFIX_KEY);
|
||||||
}
|
}
|
||||||
emulator.finishEmulatorProcesses();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String runTestsViaAdb(Emulator emulator, GradleRunner gradleRunner) {
|
private static void cleanAndBuildProject(GradleRunner gradleRunner) {
|
||||||
gradleRunner.installDebugAndroidTest();
|
gradleRunner.clean();
|
||||||
String result = emulator.runTestsViaAdb();
|
gradleRunner.build();
|
||||||
System.out.println(result);
|
}
|
||||||
gradleRunner.uninstallDebugAndroidTest();
|
|
||||||
return result;
|
private void downloadDependencies() {
|
||||||
|
File rootForAndroidDependencies = new File(pathManager.getDependenciesRoot());
|
||||||
|
if (!rootForAndroidDependencies.exists()) {
|
||||||
|
rootForAndroidDependencies.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
SDKDownloader downloader = new SDKDownloader(pathManager);
|
||||||
|
downloader.downloadAll();
|
||||||
|
downloader.unzipAll();
|
||||||
|
PermissionManager.setPermissions(pathManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<TestCase> parseSingleReportInFolder(String reportFolder) throws
|
private static List<TestCase> parseSingleReportInFolder(String reportFolder) throws
|
||||||
|
|||||||
Reference in New Issue
Block a user