ci: add testing & shellcheck workflows (#159)
This commit is contained in:
parent
cece0c3677
commit
4eb10fa510
3 changed files with 157 additions and 0 deletions
71
.github/scripts/test.bash
vendored
Executable file
71
.github/scripts/test.bash
vendored
Executable 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
33
.github/workflows/shellcheck.yml
vendored
Normal 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
53
.github/workflows/test.yml
vendored
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue