#!/usr/bin/env bash

# Sanity check for a PuppetDB test spec
# Ensures that correct JDK is installed and test flavor is valid

set -ueo pipefail

usage()
{
    echo "Usage: $(basename $0) SPEC"
}

misuse()
{
    usage 1>&2
    exit 2
}

# Ensure version of JDK from spec is available
verify-jdk() {
    local spec="$1"
    local actual_jdk expected_jdk
    expected_jdk="$(ext/bin/jdk-from-spec "$spec")"
    actual_jdk="$(ext/bin/jdk-info --print spec)"
    if test "$expected_jdk" != "$actual_jdk"; then
        printf "JDK in path %q is not what PDB_TEST specifies: %q\n" \
               "$actual_jdk" "$expected_jdk" 1>&2
        exit 2
    fi
}

test $# -ne 1 && misuse

# Ensure test kind/flavor from test spec is valid
spec="$1"
test_kind=$(ext/bin/flavor-from-spec "$spec")
case "$test_kind" in
    core|ext|core+ext|int|lint)
        verify-jdk "$spec"
        ;;
    rspec)
        ;;
    *)
        echo "Unexpected test category: $test_kind" 1>&2
        exit 2
        ;;
esac
