mirror of
https://github.com/asdf-vm/asdf.git
synced 2024-11-15 01:28:17 -07:00
ci: enable Bats test file-level parallel execution (#1461)
This commit is contained in:
parent
cd4c3f9698
commit
03b9479558
8
.github/workflows/tests.yml
vendored
8
.github/workflows/tests.yml
vendored
@ -61,7 +61,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
sudo add-apt-repository -y ppa:fish-shell/nightly-master
|
sudo add-apt-repository -y ppa:fish-shell/nightly-master
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get -y install fish curl
|
sudo apt-get -y install fish curl parallel
|
||||||
|
|
||||||
# Create $HOME/bin
|
# Create $HOME/bin
|
||||||
mkdir -p "$HOME/bin"
|
mkdir -p "$HOME/bin"
|
||||||
@ -87,7 +87,7 @@ jobs:
|
|||||||
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
|
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: bats test
|
run: scripts/test.bash
|
||||||
env:
|
env:
|
||||||
GITHUB_API_TOKEN: ${{ github.token }}
|
GITHUB_API_TOKEN: ${{ github.token }}
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Install test dependencies
|
- name: Install test dependencies
|
||||||
run: brew install coreutils fish elvish nushell
|
run: brew install coreutils parallel fish elvish nushell
|
||||||
|
|
||||||
- name: Install bats
|
- name: Install bats
|
||||||
run: |
|
run: |
|
||||||
@ -112,7 +112,7 @@ jobs:
|
|||||||
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
|
echo "$HOME/bats-core/bin" >>"$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: bats test
|
run: scripts/test.bash
|
||||||
env:
|
env:
|
||||||
GITHUB_API_TOKEN: ${{ github.token }}
|
GITHUB_API_TOKEN: ${{ github.token }}
|
||||||
|
|
||||||
|
@ -93,7 +93,19 @@ It is possible to configure IDEs to use this file. For example, when using VSCod
|
|||||||
|
|
||||||
## Bats Testing
|
## Bats Testing
|
||||||
|
|
||||||
It is **strongly encouraged** to examine the existing test suite and the [bats-core documentation](https://bats-core.readthedocs.io/en/stable/index.html) before writing tests.
|
Execute tests locally with:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./scripts/test.bash
|
||||||
|
```
|
||||||
|
|
||||||
|
Before writing tests **please read**:
|
||||||
|
|
||||||
|
- existing tests in `test/`
|
||||||
|
- [bats-core documentation](https://bats-core.readthedocs.io/en/stable/index.html)
|
||||||
|
- existing Bats settings used in `scripts/test.bash`
|
||||||
|
|
||||||
|
### Bats Tips
|
||||||
|
|
||||||
Bats debugging can be difficult at times. Using the TAP output with `-t` flag will enable you to print outputs with the special file descriptor `>&3` during test execution, simplifying debugging. As an example:
|
Bats debugging can be difficult at times. Using the TAP output with `-t` flag will enable you to print outputs with the special file descriptor `>&3` during test execution, simplifying debugging. As an example:
|
||||||
|
|
||||||
|
19
scripts/test.bash
Executable file
19
scripts/test.bash
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
test_directory="test"
|
||||||
|
bats_options=(--timing --print-output-on-failure)
|
||||||
|
|
||||||
|
if command -v parallel >/dev/null; then
|
||||||
|
# enable parallel jobs
|
||||||
|
bats_options=("${bats_options[@]}" --jobs 2 --no-parallelize-within-files)
|
||||||
|
elif [[ -n "${CI-}" ]]; then
|
||||||
|
printf "* %s\n" "GNU parallel should be installed in the CI environment. Please install and rerun the test suite."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
printf "* %s\n" "For faster test execution, install GNU parallel."
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "* %s\n" "Running Bats in directory '${test_directory}' with options:" "${bats_options[@]}"
|
||||||
|
bats "${bats_options[@]}" "${test_directory}"
|
Loading…
Reference in New Issue
Block a user