@@ -19,6 +19,7 @@ import kotlinx.coroutines.CoroutineDispatcher
19
19
import kotlinx.coroutines.ExperimentalCoroutinesApi
20
20
import kotlinx.coroutines.GlobalScope
21
21
import kotlinx.coroutines.async
22
+ import kotlinx.coroutines.launch
22
23
import kotlinx.coroutines.runBlocking
23
24
import kotlinx.coroutines.withContext
24
25
import okhttp3.OkHttpClient
@@ -36,6 +37,9 @@ import retrofit2.helpers.ToStringConverterFactory
36
37
import retrofit2.http.GET
37
38
import retrofit2.http.Path
38
39
import java.io.IOException
40
+ import java.io.PrintWriter
41
+ import java.io.StringWriter
42
+ import java.lang.Runnable
39
43
import java.lang.reflect.ParameterizedType
40
44
import java.lang.reflect.Type
41
45
import kotlin.coroutines.CoroutineContext
@@ -179,6 +183,58 @@ class KotlinSuspendTest {
179
183
}
180
184
}
181
185
186
+ @Test fun await404 () {
187
+ val retrofit = Retrofit .Builder ()
188
+ .baseUrl(server.url(" /" ))
189
+ .addConverterFactory(ToStringConverterFactory ())
190
+ .build()
191
+ val example = retrofit.create(Service ::class .java)
192
+
193
+ server.enqueue(MockResponse ().setResponseCode(404 ))
194
+
195
+ try {
196
+ runBlocking {
197
+ val deferred = async { example.body() }
198
+
199
+ deferred.await()
200
+ }
201
+ fail()
202
+ } catch (e: HttpException ) {
203
+ val writer = StringWriter ()
204
+ e.printStackTrace(PrintWriter (writer))
205
+ val trace = writer.toString()
206
+
207
+ assertThat(trace).contains(" KotlinSuspendTest" )
208
+ assertThat(trace).contains(" await404" )
209
+ }
210
+ }
211
+
212
+ @Test fun launch404 () {
213
+ val retrofit = Retrofit .Builder ()
214
+ .baseUrl(server.url(" /" ))
215
+ .addConverterFactory(ToStringConverterFactory ())
216
+ .build()
217
+ val example = retrofit.create(Service ::class .java)
218
+
219
+ server.enqueue(MockResponse ().setResponseCode(404 ))
220
+
221
+ try {
222
+ runBlocking {
223
+ val job = launch { example.body() }
224
+
225
+ job.join()
226
+ }
227
+ fail()
228
+ } catch (e: HttpException ) {
229
+ val writer = StringWriter ()
230
+ e.printStackTrace(PrintWriter (writer))
231
+ val trace = writer.toString()
232
+
233
+ assertThat(trace).contains(" KotlinSuspendTest" )
234
+ assertThat(trace).contains(" launch404" )
235
+ }
236
+ }
237
+
182
238
@Test fun params () {
183
239
val retrofit = Retrofit .Builder ()
184
240
.baseUrl(server.url(" /" ))
0 commit comments