# -*- coding: utf-8; mode: tcl; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- vim:fenc=utf-8:ft=tcl:et:sw=8:ts=8:sts=8

PortSystem              1.0
PortGroup               github 1.0
PortGroup               java 1.0

github.setup            testng-team testng 7.12.0
github.tarball_from     archive
github.livecheck.regex  {([0-9.]+)}

categories              java devel
license                 Apache-2
platforms               any
supported_archs         noarch
homepage                https://testng.org
maintainers             {sethm.id.au:dev @McDaMastR} \
                        openmaintainer

description             The TestNG testing framework
long_description        TestNG is a testing framework inspired from JUnit and \
                        NUnit but introducing some new functionalities that \
                        make it more powerful and easier to use.

depends_build-append    port:gradle
depends_test-append     port:commons-io

# Building requires Java == 21
# Running requires Java >= 11
java.version            21
java.fallback           openjdk21

set gradle_home         ${workpath}/.home/.gradle

checksums               rmd160  93003068f43593d7f26739a6a56dda21d3a2a947 \
                        sha256  0983e3e7593b87ccb65ef9470034b310d05fbc638386e7b82b0d97676c19e008 \
                        size    943572

patchfiles              migrate-to-gradle-9.6.1.diff \
                        use-installed-jars.diff

post-patch {
    reinplace -W ${worksrcpath} \
        "s|@@PREFIX@@|${prefix}|g" \
        testng-core/testng-core-build.gradle.kts
}

use_configure           no

build.cmd               gradle
build.target            build
build.args              --no-daemon \
                        --exclude-task=check \
                        --exclude-task=javadocJar \
                        --exclude-task=sourcesJar \
                        --gradle-user-home="${gradle_home}" \
                        --max-workers=${build.jobs} \
                        --project-prop=release=true

test.run                yes
test.target             check
test.args               --no-daemon \
                        --gradle-user-home="${gradle_home}" \
                        --max-workers=${build.jobs} \
                        --project-prop=release=true \
                        --project-prop=signing.pgp.enabled=OFF

destroot {
    set destdocdir  ${destroot}${prefix}/share/doc/${name}
    set destjavadir ${destroot}${prefix}/share/java

    xinstall -d ${destjavadir}
    xinstall -W ${worksrcpath} -m 644 \
        ${name}/build/libs/${name}-${version}-all.jar \
        ${destjavadir}/${name}-all.jar

    xinstall -d ${destdocdir}
    xinstall -W ${worksrcpath} -m 644 \
        CHANGES.txt \
        LICENSE.txt \
        README.md \
        ${destdocdir}

    if {[variant_isset doc]} {
        xinstall -d ${destdocdir}/javadoc
        foreach module {
                testng-asserts testng-collections testng-core testng-core-api} {
            copy \
                ${worksrcpath}/${module}/build/docs/javadoc \
                ${destdocdir}/javadoc/${module}
        }
    }
}

variant doc \
        description {Install javadoc} {
    build.target-append javadoc
}
