1 // Copyright 2015-present 650 Industries. All rights reserved. 2 package host.exp.exponent.utils 3 4 import android.util.Log 5 import org.junit.rules.TestRule 6 import org.junit.runner.Description 7 import org.junit.runners.model.Statement 8 import java.lang.Exception 9 10 class TestReporterRule : TestRule { 11 private var logs = "" logTestInfonull12 fun logTestInfo(log: String) { 13 logs += log + "\n" 14 } 15 reportResultnull16 private fun reportResult(success: Boolean, testName: String) { 17 try { 18 TestServerUtils.reportTestResult(success, testName, logs) 19 } catch (e: Exception) { 20 e.printStackTrace() 21 } 22 } 23 applynull24 override fun apply(base: Statement, description: Description): Statement { 25 return statement(base, description) 26 } 27 statementnull28 private fun statement(base: Statement, description: Description): Statement { 29 return object : Statement() { 30 @Throws(Throwable::class) 31 override fun evaluate() { 32 Log.d(TAG, "start_test_" + description.displayName) 33 try { 34 logs = "" 35 base.evaluate() 36 Log.d(TAG, "end_test_" + description.displayName) 37 reportResult(true, description.displayName) 38 return 39 } catch (t: Throwable) { 40 Log.d(TAG, "end_test_" + description.displayName) 41 reportResult(false, description.displayName) 42 throw t 43 } 44 } 45 } 46 } 47 48 companion object { 49 private const val TAG = "EXPO_TEST_REPORTER" 50 } 51 } 52