#!groovy

def prepareDocker () {
    def img
    stage('Prepare environment') {
        def uid = sh returnStdout: true, script: 'id -u'
        writeFile file: 'Dockerfile', text: """
        FROM python:3.8-buster
        RUN pip install pytest-cov && \\
        useradd -m -u ${uid.trim()} jenkins
        """
        img = docker.build('local:test-all-comics')
    }
    return img
}

def runTests() {
    stage('Checkout') {
        checkout scm
    }
    stage ('Install lib') {
        sh "pip install --user -e .[css,test]"
    }
    stage ('Run tests') {
        sh "TESTALL=1 py.test -v --cov=dosagelib --cov-report xml --tb=short -n10 --junitxml=junit.xml tests/modules/check_comics.py || true"
    }
    stage('Report') {
        junit 'junit.xml'
        publishCoverage calculateDiffForChangeRequests: true,
            sourceFileResolver: sourceFiles('STORE_LAST_BUILD'),
            adapters: [
                coberturaAdapter('coverage.xml')
            ]
    }
}

ansiColor('xterm') {
    node {
        def img = prepareDocker()

        img.inside {
            runTests()
        }
    }
}