Skip to content
This repository has been archived by the owner on Dec 7, 2019. It is now read-only.

Commit

Permalink
Change assumption violation instrumentation result from failed to ign…
Browse files Browse the repository at this point in the history
…ored (#113)

* Change assumption violation instrumentation result from failed to ignored.

* Fix typos in InstrumentationSpec.
  • Loading branch information
koral-- authored and yunikkk committed Nov 13, 2017
1 parent bed656c commit 25ddfa0
Show file tree
Hide file tree
Showing 3 changed files with 194 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ data class InstrumentationTest(

sealed class Status {
object Passed : Status()
object Ignored : Status()
data class Ignored(val stacktrace: String = "") : Status()
data class Failed(val stacktrace: String) : Status()
}
}
Expand Down Expand Up @@ -154,8 +154,9 @@ fun Observable<InstrumentationEntry>.asTests(): Observable<InstrumentationTest>
testName = first.test,
status = when (second.statusCode) {
StatusCode.Ok -> Passed
StatusCode.Ignored -> Ignored
StatusCode.Failure, StatusCode.AssumptionFailure -> Failed(stacktrace = second.stack)
StatusCode.Ignored -> Ignored()
StatusCode.AssumptionFailure -> Ignored(stacktrace = second.stack)
StatusCode.Failure -> Failed(stacktrace = second.stack)
StatusCode.Start -> throw IllegalStateException(
"Unexpected status code [Start] in second entry, " +
"please report that to Composer maintainers ($first, $second)"
Expand Down
142 changes: 135 additions & 7 deletions composer/src/test/kotlin/com/gojuno/composer/InstrumentationSpec.kt
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ at android.app.Instrumentation.InstrumentationThread.run(Instrumentation.java:19
))
}

it("completest stream") {
it("completes stream") {
entriesSubscriber.assertCompleted()
}

Expand Down Expand Up @@ -305,7 +305,7 @@ at android.app.Instrumentation.InstrumentationThread.run(Instrumentation.java:19
entriesSubscriber.assertNoValues()
}

it("completest stream") {
it("completes stream") {
entriesSubscriber.assertCompleted()
}

Expand All @@ -326,7 +326,7 @@ at android.app.Instrumentation.InstrumentationThread.run(Instrumentation.java:19
testsSubscriber.assertNoValues()
}

it("completest stream") {
it("completes stream") {
testsSubscriber.assertCompleted()
}

Expand Down Expand Up @@ -418,7 +418,7 @@ at android.app.Instrumentation.InstrumentationThread.run(Instrumentation.java:19
)
}

it("completest stream") {
it("completes stream") {
entriesSubscriber.assertCompleted()
}

Expand Down Expand Up @@ -464,7 +464,7 @@ at android.app.Instrumentation.InstrumentationThread.run(Instrumentation.java:19
))
}

it("completest stream") {
it("completes stream") {
testsSubscriber.assertCompleted()
}

Expand Down Expand Up @@ -534,7 +534,7 @@ at android.app.Instrumentation.InstrumentationThread.run(Instrumentation.java:19
)
}

it("completest stream") {
it("completes stream") {
entriesSubscriber.assertCompleted()
}

Expand Down Expand Up @@ -566,7 +566,135 @@ at android.app.Instrumentation.InstrumentationThread.run(Instrumentation.java:19
total = 2,
className = "com.example.test.TestClass",
testName = "test2",
status = Ignored,
status = Ignored(),
durationNanos = 0L
)
))
}
}
}

context("read output containing test with assumption violation") {

val entries by memoized { readInstrumentationOutput(fileFromJarResources<InstrumentationSpec>("instrumentation-output-assumption-violation.txt")) }
val entriesSubscriber by memoized { TestSubscriber<InstrumentationEntry>() }

perform {
entries.subscribe(entriesSubscriber)
entriesSubscriber.awaitTerminalEvent(30, SECONDS)
}

it("emits expected entries") {
// We have no control over system time in tests.
assertThat(entriesSubscriber.onNextEvents.map { it.copy(timestampNanos = 0) }).isEqualTo(listOf(
InstrumentationEntry(
numTests = 1,
stream = "com.example.test.TestClass:",
id = "AndroidJUnitRunner",
test = "violated",
clazz = "com.example.test.TestClass",
current = 1,
stack = "",
statusCode = StatusCode.Start,
timestampNanos = 0
),
InstrumentationEntry(
numTests = 1,
stream = "com.example.test.TestClass:",
id = "AndroidJUnitRunner",
test = "violated",
clazz = "com.example.test.TestClass",
current = 1,
stack = """org.junit.AssumptionViolatedException: got: "foo", expected: is "bar"
at org.junit.Assume.assumeThat(Assume.java:95)
at com.example.test.TestClass.violated(TestClass.java:22)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod${'$'}1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner${'$'}3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner${'$'}1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access${'$'}000(ParentRunner.java:58)
at org.junit.runners.ParentRunner${'$'}2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner${'$'}3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner${'$'}1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access${'$'}000(ParentRunner.java:58)
at org.junit.runners.ParentRunner${'$'}2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:58)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:375)
at android.app.Instrumentation${'$'}InstrumentationThread.run(Instrumentation.java:2074)""",
statusCode = StatusCode.AssumptionFailure,
timestampNanos = 0
)
))
}

it("completes stream") {
entriesSubscriber.assertCompleted()
}

it("does not emit error") {
entriesSubscriber.assertNoErrors()
}

context("as tests") {

val testsSubscriber by memoized { TestSubscriber<InstrumentationTest>() }

perform {
entries.asTests().subscribe(testsSubscriber)
testsSubscriber.awaitTerminalEvent(30, SECONDS)
}

it("emits expected tests") {
assertThat(testsSubscriber.onNextEvents.map { it.copy(durationNanos = 0) }).isEqualTo(listOf(
InstrumentationTest(
index = 1,
total = 1,
className = "com.example.test.TestClass",
testName = "violated",
status = Ignored(stacktrace = """org.junit.AssumptionViolatedException: got: "foo", expected: is "bar"
at org.junit.Assume.assumeThat(Assume.java:95)
at com.example.test.TestClass.violated(TestClass.java:22)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod${'$'}1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner${'$'}3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner${'$'}1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access${'$'}000(ParentRunner.java:58)
at org.junit.runners.ParentRunner${'$'}2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner${'$'}3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner${'$'}1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access${'$'}000(ParentRunner.java:58)
at org.junit.runners.ParentRunner${'$'}2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:58)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:375)
at android.app.Instrumentation${'$'}InstrumentationThread.run(Instrumentation.java:2074)"""),
durationNanos = 0L
)
))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: stream=
com.example.test.TestClass:
INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
INSTRUMENTATION_STATUS: test=violated
INSTRUMENTATION_STATUS: class=com.example.test.TestClass
INSTRUMENTATION_STATUS: current=1
INSTRUMENTATION_STATUS_CODE: 1
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: stream=
com.example.test.TestClass:
INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
INSTRUMENTATION_STATUS: test=violated
INSTRUMENTATION_STATUS: class=com.example.test.TestClass
INSTRUMENTATION_STATUS: stack=org.junit.AssumptionViolatedException: got: "foo", expected: is "bar"
at org.junit.Assume.assumeThat(Assume.java:95)
at com.example.test.TestClass.violated(TestClass.java:22)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:58)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:375)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)

INSTRUMENTATION_STATUS: current=1
INSTRUMENTATION_STATUS_CODE: -4
INSTRUMENTATION_RESULT: stream=

Time: ٠٫٠١٥

OK (1 test)


INSTRUMENTATION_CODE: -1

0 comments on commit 25ddfa0

Please sign in to comment.