/*
 * Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

dependencies {
    compile project(':kotlinx-coroutines-reactive')
    testCompile project(':kotlinx-coroutines-reactive').sourceSets.test.output
    testCompile "org.reactivestreams:reactive-streams-tck:$reactive_streams_version"
    compile "io.reactivex.rxjava2:rxjava:$rxjava2_version"
}

tasks.withType(dokka.getClass()) {
    externalDocumentationLink {
        url = new URL('http://reactivex.io/RxJava/2.x/javadoc/')
        packageListUrl = projectDir.toPath().resolve("package.list").toUri().toURL()
    }
}

task testNG(type: Test) {
    useTestNG()
    reports.html.destination = file("$buildDir/reports/testng")
    include '**/*ReactiveStreamTckTest.*'
    // Skip testNG when tests are filtered with --tests, otherwise it simply fails
    onlyIf {
        filter.includePatterns.isEmpty()
    }
    doFirst {
        // Classic gradle, nothing works without doFirst
        println "TestNG tests: ($includes)"
    }
}

test {
    dependsOn(testNG)
    reports.html.destination = file("$buildDir/reports/junit")
}
