evaluationDependsOn(':lib-commonbase')
evaluationDependsOn(':lib-common')
evaluationDependsOn(':api-openbis-java')
evaluationDependsOn(':api-openbis-javascript')
evaluationDependsOn(':lib-openbis-common')
evaluationDependsOn(':lib-authentication')
evaluationDependsOn(':lib-dbmigration')
evaluationDependsOn(':server-application-server')
evaluationDependsOn(':server-original-data-store')
evaluationDependsOn(':test-ui-core')
evaluationDependsOn(':server-screening')


apply from: '../build/javaproject.gradle'

sourceSets {
    main {
        java {
            srcDirs = ['sourceTest/java']
        }
    }
    test {
        java {
            srcDirs = ['source/java']
        }
        resources {
            srcDirs = ['servers/common/openBIS-server/etc', 'servers/common/openBIS-server/resource']
        }
    }
}

configurations.create('testRuntimeFirst')
configurations.create('testRuntimeSecond')
configurations.create('externalDss')
configurations.create('blast_tar')

dependencies {
    api project(path: ':server-screening'),
            project(path: ':core-plugin-openbis'),
            project(path: ':test-ui-core', configuration: 'tests'),
            'reflections:reflections:0.9.10',
            'fasterxml:jackson-core:2.9.10',
            'fasterxml:jackson-annotations:2.9.10',
            'fasterxml:jackson-databind:2.9.10.8',
            'testng:testng:6.8-CISD',
            'selenium:selenium-java:3.141.59'

    testRuntimeFirst 'javax:servlet-api:3.1.0', 'reflections:reflections:0.9.10', 'apache:commons-lang3:3.11'

    testRuntimeSecond 'google:gwt-user:2.4'

    externalDss project(':server-screening')

    blast_tar "blast:blast:2.2.30@tar.gz"
}

sourceSets.test.runtimeClasspath = configurations.testRuntimeFirst + configurations.testRuntimeSecond + sourceSets.test.runtimeClasspath

task copyWar(type: Copy, dependsOn: project(':core-plugin-openbis').war) {
    from project(':core-plugin-openbis').war
    into 'targets/gradle/openbis-war'
    rename { filename -> 'openbis.war' }
}

task copyBlast(type: Copy) {
    doFirst {
        println "Copying blast library into plugins folder for test"
    }
    from(configurations.blast_tar.collect { tarTree(it) })
    into 'servers/common/core-plugins/eln-lims'
}

task deleteBlast(type: Delete) {
    doFirst {
        println "DELETE temporary blast library folder"
    }
    delete 'servers/common/core-plugins/eln-lims/bin'
}

task deleteXlsImportVersionInfoJson(type: Delete) {
    doFirst {
        println "DELETE xls-import-version-info.json file in $buildDir"
    }
    delete 'xls-import-version-info.json'
}

task deleteFullTextSearchDocumentVersion(type: Delete) {
    doFirst {
        println 'DELETE full-text-search-document-version file in servers/common/openBIS-server/etc'
    }
    delete 'servers/common/openBIS-server/etc/full-text-search-document-version'
}

clean.dependsOn deleteXlsImportVersionInfoJson
clean.dependsOn deleteFullTextSearchDocumentVersion

import org.gradle.internal.os.OperatingSystem

test {
    useTestNG()
    def eln = System.getProperty("eln") == "yes" ? "-eln" : ""
    def dev = System.getProperty("dev") == "yes" ? "-dev" : ""
    def testSuitePath = 'source/java/tests' + eln + dev + '.xml'
    println "TEST SUITE PATH: " + testSuitePath
    options.suites(testSuitePath)

    jvmArgs '-Xmx2048m', '-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StrErrLog', '-Duser.timezone=Europe/Zurich',
            '-Xdebug', '-Xrunjdwp:transport=dt_socket,address=20010,server=y,suspend=n'

    testLogging.showStandardStreams = true
    ignoreFailures = false
    systemProperty 'selenium.dss-runtime-classpath', configurations.externalDss.asPath
    systemProperty 'jetty.home', '../../../targets/gradle'
    systemProperty 'jetty.base', '../../../targets/gradle'
    systemProperty 'ui-test.start-page', 'http://localhost:20000/openbis'
    systemProperty 'org.mortbay.util.FileResource.checkAliases', 'false'
    systemProperty 'org.eclipse.jetty.util.log.class', 'org.eclipse.jetty.util.log.StrErrLog'

    workingDir = 'servers/common/openBIS-server'

    if (OperatingSystem.current().isLinux()) {
        systemProperty 'webdriver.gecko.driver', 'gecko-driver/linux/geckodriver'
    } else if (OperatingSystem.current().isMacOsX()) {
        systemProperty 'webdriver.gecko.driver', 'gecko-driver/mac/geckodriver'
    } else {
        println "Please set up geckodriver"
    }
}
test.dependsOn clean
test.dependsOn copyWar
test.dependsOn copyBlast

test.finalizedBy deleteBlast