ci: add testing & shellcheck workflows (#159)

This commit is contained in:
vdbe 2024-03-15 16:34:04 +01:00 committed by GitHub
parent cece0c3677
commit 4eb10fa510
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 157 additions and 0 deletions

71
.github/scripts/test.bash vendored Executable file
View file

@ -0,0 +1,71 @@
#!/usr/bin/env bash
#
# Usage:
# ./test.bash catpuccin-tmux/catpuccin-tmux.tmux
# ./test.bash catpuccin-tmux/catpuccin-tmux.tmux ./config-example1
#
SOCKET_NAME="${SOCKET_NAME:-test}"
tmux() {
command tmux -L "$SOCKET_NAME" "$@"
}
start_tmux_server() {
echo "Starting tmux server" >&2
tmux new -s dummy -d
}
kill_tmux_server() {
echo "Stopping tmux server" >&2
tmux kill-server
}
check() {
local out exit_code
exit_code="$1"
out="$2"
if [ "$exit_code" -ne 0 ] || [ -n "$out" ]; then
echo "Failed with exit code $exit_code and output:"
echo "$out"
exit 1
fi
}
main() {
local config_file plugin output exit_code
plugin="$1"
config_file="$2"
echo "Using socket '$SOCKET_NAME'" >&2
# Make sure its a new/clean server
kill_tmux_server 2>/dev/null
start_tmux_server
if [ -z "$config_file" ]; then
echo "No config file provided" >&2
else
echo "sourcing config file '$config_file'" >&2
tmux source-file "$config_file"
fi
if [ -z "$plugin" ]; then
echo "ERROR: No path to the plugin provided" >&2
exit 1
else
echo "Running plugin: $plugin" >&2
output=$(tmux run-shell "$plugin" 2>&2)
exit_code="$?"
check "$exit_code" "$output"
fi
kill_tmux_server
}
main "$@"

33
.github/workflows/shellcheck.yml vendored Normal file
View file

@ -0,0 +1,33 @@
---
name: Shellcheck
permissions:
contents: read
on:
pull_request:
paths-ignore:
- "*.md"
- "assets/**"
push:
paths-ignore:
- "*.md"
- "assets/**"
branches:
- main
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
shellcheck:
name: Shellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
with:
severity: error
additional_files: "catppuccin.tmux"
env:
SHELLCHECK_OPTS: "-s bash"

53
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,53 @@
---
name: Tests
permissions:
contents: read
on:
pull_request:
paths-ignore:
- "*.md"
- "assets/**"
push:
paths-ignore:
- "*.md"
- "assets/**"
branches:
- main
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
ubuntu:
name: Test
runs-on: ubuntu-latest
steps:
- name: Install tmux
run: sudo apt-get update && sudo apt-get install -y tmux=3.2a-4ubuntu0.2
- uses: actions/checkout@v4
- name: Config and Plugin
shell: bash
run: |
bash --version
tmux -V
./.github/scripts/test.bash ./catppuccin.tmux
old-bash:
name: "Old Bash"
runs-on: ubuntu-latest
container:
image: bash:3.2.57 # Bash version used by macos
steps:
- uses: actions/checkout@v4
- name: Check Syntax is Valid
shell: bash
run: |
# No tmux available in this container
tmp="$(mktemp -d)"
touch "$tmp/tmux"
chmod +x "$tmp/tmux"
export PATH="$tmp:$PATH"
bash --version
./.github/scripts/test.bash ./catppuccin.tmux