| #!/usr/bin/env bats |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| |
| setup() { |
| load test_helper/common |
| source "${LIBS_DIR}/_maven.sh" |
| export NEXUS_USERNAME="testuser" |
| export NEXUS_PASSWORD="testpass" |
| TEST_TMPDIR=$(mktemp -d) |
| } |
| |
| teardown() { |
| rm -rf "${TEST_TMPDIR}" |
| } |
| |
| # ---- generate_maven_settings ---- |
| |
| @test "generate_maven_settings: creates settings file" { |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| [ -f "${settings_file}" ] |
| } |
| |
| @test "generate_maven_settings: includes server ID" { |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| [[ "$(cat "${settings_file}")" == *"apache.releases.https"* ]] |
| } |
| |
| @test "generate_maven_settings: uses env var references instead of real credentials" { |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| local content |
| content=$(cat "${settings_file}") |
| [[ "$content" == *'${env.NEXUS_USERNAME}'* ]] |
| [[ "$content" == *'${env.NEXUS_PASSWORD}'* ]] |
| [[ "$content" != *"testuser"* ]] |
| [[ "$content" != *"testpass"* ]] |
| } |
| |
| @test "generate_maven_settings: enables GPG agent" { |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| [[ "$(cat "${settings_file}")" == *"gpg.useagent"* ]] |
| [[ "$(cat "${settings_file}")" == *"true"* ]] |
| } |
| |
| @test "generate_maven_settings: produces valid XML" { |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| # Check that xmllint can parse it, if available |
| if command -v xmllint &>/dev/null; then |
| run xmllint --noout "${settings_file}" |
| [ "$status" -eq 0 ] |
| else |
| # Fallback: check basic XML structure |
| [[ "$(head -1 "${settings_file}")" == *"<?xml"* ]] |
| [[ "$(cat "${settings_file}")" == *"</settings>"* ]] |
| fi |
| } |
| |
| # ---- maven_deploy ---- |
| |
| @test "maven_deploy: dry-run does not execute mvnw" { |
| DRY_RUN=1 |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| run maven_deploy "${settings_file}" |
| [ "$status" -eq 0 ] |
| [[ "$output" == *"Dry-run"* ]] |
| [[ "$output" == *"deploy"* ]] |
| } |
| |
| @test "maven_deploy: includes apache-release profile in dry-run output" { |
| DRY_RUN=1 |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| run maven_deploy "${settings_file}" |
| [[ "$output" == *"apache-release"* ]] |
| } |
| |
| @test "maven_deploy: includes skipTests in dry-run output" { |
| DRY_RUN=1 |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| generate_maven_settings "${settings_file}" |
| run maven_deploy "${settings_file}" |
| [[ "$output" == *"skipTests"* ]] |
| } |
| |
| # ---- maven_cleanup_settings ---- |
| |
| @test "maven_cleanup_settings: removes settings file" { |
| local settings_file="${TEST_TMPDIR}/settings.xml" |
| echo "test" > "${settings_file}" |
| maven_cleanup_settings "${settings_file}" |
| [ ! -f "${settings_file}" ] |
| } |
| |
| @test "maven_cleanup_settings: no error if file missing" { |
| run maven_cleanup_settings "${TEST_TMPDIR}/nonexistent.xml" |
| [ "$status" -eq 0 ] |
| } |