Skip to content

Improve + fix test #112

Improve + fix test

Improve + fix test #112

---
name: Test and Release
on:
push:
branches:
- '**'
tags-ignore:
- '**'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Run ShellCheck
uses: ludeeus/[email protected]
with:
check_together: 'yes'
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup bats
uses: bats-core/[email protected]
with:
bats-version: 1.11.0
- name: Test
run: bats tests/*.bats
test-api-mode: # requires github API, didn't want to mock it
runs-on: ubuntu-latest
env:
github_token: ${{ github.token }}
steps:
- name: Checkout code # have to checkout to have the source code available
uses: actions/checkout@v4
- name: Remove .git directory # remove the git directory to make the testing valid
run: rm -rf .git/
- name: Test lookup version (with API)
id: version-lookup
env:
use_api: 'true'
run: ./version-lookup.sh
- name: Check lookup result
shell: bash
run: '[[ -n "${{ steps.version-lookup.outputs.CURRENT_VERSION }}" ]]'
- name: Test increment version (with API)
id: version-increment
run: ./version-increment.sh
env:
current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }}
scheme: calver
use_api: 'true'
- name: Check increment result
shell: bash
run: '[[ "$(date +%Y.%-m)" == "$(echo "${{ steps.version-increment.outputs.VERSION }}" | cut -d "." -f 1-2)" ]]'
test-action-yml: # integration testing
needs:
- lint
- test
- test-api-mode
strategy:
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code # have to checkout to have the source code available
uses: actions/checkout@v4
- name: Remove .git directory # remove the git directory to make the testing valid
shell: bash
run: rm -rf .git/
- name: Get next version via API
uses: ./
id: version-via-api
with:
scheme: 'calver'
use_api: true
- name: Checkout code
uses: actions/checkout@v4
- name: Get next version via Git
uses: ./
id: version-via-git
with:
scheme: 'calver'
use_api: false
- name: Check results agree
shell: bash
run: |
[[ "${{ steps.version-via-api.outputs.current-version }}" == "${{ steps.version-via-git.outputs.current-version }}" ]]
[[ "${{ steps.version-via-api.outputs.major-version }}" == "${{ steps.version-via-git.outputs.major-version }}" ]]
[[ "${{ steps.version-via-api.outputs.minor-version }}" == "${{ steps.version-via-git.outputs.minor-version }}" ]]
[[ "${{ steps.version-via-api.outputs.patch-version }}" == "${{ steps.version-via-git.outputs.patch-version }}" ]]
# Don't test the full version or pre-version, since the number of digits is likely to be different (9 via api vs. 7 via git)
- name: Get next version via Git with tag-prefix
uses: ./
id: version-prefix
with:
scheme: 'semver'
use_api: false
tag_prefix: 'foo/bar@'
- name: Check that it starts from 0.0.1 (since prefix doesn't exist)
shell: bash
run: |
[[ "${{ steps.version-prefix.outputs.current-version }}" == "0.0.0" ]]
[[ "${{ steps.version-prefix.outputs.major-version }}" == "0" ]]
[[ "${{ steps.version-prefix.outputs.minor-version }}" == "0" ]]
[[ "${{ steps.version-prefix.outputs.patch-version }}" == "1" ]]
[[ "${{ steps.version-prefix.outputs.version }}" = "0.0.1-"* ]]
[[ "${{ steps.version-prefix.outputs.prefixed-version }}" = "foo/[email protected]"* ]]
release:
needs:
- test-action-yml
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Lookup version
id: version-lookup
run: ./version-lookup.sh
- name: Increment version
id: version-increment
run: ./version-increment.sh
env:
current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }}
scheme: calver
- name: Release version
uses: softprops/action-gh-release@v1
if: ${{ github.ref_name == github.event.repository.default_branch }}
with:
draft: false
prerelease: false
tag_name: "${{ steps.version-increment.outputs.VERSION }}"