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