
### Description of the change This adds an environment for unit testing our bash scripts, using [BATS](https://github.com/bats-core/bats-core). It implements first tests for `config_environment.sh`. ### Benefits Writing unit tests for bash scripts documents the expected behavior and allows it being a quality gate in our CI. ### Possible drawbacks Not everyone is familiar with this approach and unit testing framework. Me neither, it took me some hours to get into it. ### Applicable issues - Related to #691 where an issue in `config_environment.sh` was detected. It doesn't fixes it yet. This will be a dedicated Pull Request. ### Additional information I've verified that the changes for Renovate are indeed working. You may wonder why there is only one `run $PROJECT_ROOT/scripts/init-containers/config/config_environment.sh` and many `run execute_test_script` calls. Usually, testing a script itself would be executing `run $PROJECT_ROOT/scripts/init-containers/config/config_environment.sh`. You then can assert the exit code and other things. Since the `config_environment.sh` exports environment variables and we are not able to access them from outside a `run` execution, the function `execute_test_script` wraps our script execution between environment comparison. Doing so allows us capture environment variables that were added/removed during script execution. Reviewed-on: https://gitea.com/gitea/helm-chart/pulls/724 Reviewed-by: pat-s <pat-s@noreply.gitea.com> Co-authored-by: justusbunsi <sk.bunsenbrenner@gmail.com> Co-committed-by: justusbunsi <sk.bunsenbrenner@gmail.com>
46 lines
1.2 KiB
YAML
46 lines
1.2 KiB
YAML
name: check-and-test
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- "*"
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
env:
|
|
# renovate: datasource=github-releases depName=helm-unittest/helm-unittest
|
|
HELM_UNITTEST_VERSION: "v0.7.0"
|
|
|
|
jobs:
|
|
check-and-test:
|
|
runs-on: ubuntu-latest
|
|
container: alpine/helm:3.16.3
|
|
steps:
|
|
- name: install tools
|
|
run: |
|
|
apk update
|
|
apk add --update bash make nodejs npm yamllint ncurses
|
|
- uses: actions/checkout@v4
|
|
- name: install chart dependencies
|
|
run: helm dependency build
|
|
- name: lint
|
|
run: helm lint
|
|
- name: template
|
|
run: helm template --debug gitea-helm .
|
|
- name: prepare unit test environment
|
|
run: |
|
|
helm plugin install --version ${{ env.HELM_UNITTEST_VERSION }} https://github.com/helm-unittest/helm-unittest
|
|
git submodule update --init --recursive
|
|
- name: unit tests
|
|
env:
|
|
TERM: xterm
|
|
run: |
|
|
make unittests
|
|
- name: verify readme
|
|
run: |
|
|
make readme
|
|
git diff --exit-code --name-only README.md
|
|
- name: yaml lint
|
|
uses: https://github.com/ibiqlik/action-yamllint@v3
|