Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add tests for linux #39

Merged
merged 12 commits into from
Sep 22, 2024
34 changes: 34 additions & 0 deletions .github/workflows/dev-push-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: dev-push-check
run-name: ${{ github.actor }} pushed new code 💻
on: [push] #, pull_request]
jobs:
lint_shellcheck:
runs-on: ubuntu-latest
steps:
- name: Install shellcheck
run: sudo apt-get install -y shellcheck
- name: Checkout repo
uses: actions/checkout@main
- name: Lint files against shellcheck
run: make lint_shellcheck
lint_shfmt:
runs-on: ubuntu-latest
steps:
- name: Install shfmt
run: sudo apt-get install -y shfmt
- name: Checkout repository
uses: actions/checkout@main
- name: Lint files against shfmt
run: make lint_shfmt
tests_linux:
runs-on: ubuntu-latest
needs:
- lint_shfmt
- lint_shellcheck
steps:
- name: Install required software
run: sudo apt install -y tmux git
- name: Checkout repository
uses: actions/checkout@main
- name: Execute all linux tests and check results
run: ./tests/run_all_linux_tests.sh
22 changes: 0 additions & 22 deletions .github/workflows/github-actions.yml

This file was deleted.

1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Added light and dark transparent themes [#18](https://github.com/egel/tmux-gruvbox/issues/18)
- Added editorconfig
- Added code linters for shellcheck & shfmt [#33](https://github.com/egel/tmux-gruvbox/issues/33)
- Added tests (for linux) [#39](https://github.com/egel/tmux-gruvbox/issues/39)

### Changed

Expand Down
21 changes: 18 additions & 3 deletions src/gruvbox-main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,24 @@ get_theme() {
}

main() {
local theme
theme=$(get_theme "$THEME_OPTION" "$DEFAULT_THEME")
tmux source-file "$CURRENT_DIR/tmux-gruvbox-${theme}.conf"
local _theme _path
_theme=$(get_theme "$THEME_OPTION" "$DEFAULT_THEME")
case "$_theme" in
light-transparent)
_theme="light-transparent"
;;
dark-transparent)
_theme="dark-transparent"
;;
light | light256)
_theme="light"
;;
dark | dark256 | *)
_theme="dark"
;;
esac

tmux source-file "${CURRENT_DIR}/tmux-gruvbox-${_theme}.conf"
}

main "$@"
6 changes: 6 additions & 0 deletions tests/linux/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Linux tests

Those tests are meant to run on linux:

- ubuntu 20.04 LTS
- with bash
57 changes: 57 additions & 0 deletions tests/linux/test_check_gruvbox_dark256_enabled.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/bin/bash

CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# shellcheck disable=SC1091
source "${CURRENT_DIR}/../tmux_helpers.sh"

main() {
helper_tearup_linux

cat <<EOF >~/.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other plugins
set -g @plugin 'egel/tmux-gruvbox'
set -g @tmux-gruvbox 'dark256'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
EOF

cat ~/.tmux.conf

# it's essential to link current repo to the plugins' directory
ln -sfv "$CURRENT_DIR/../../../tmux-gruvbox" "${HOME}/.tmux/plugins/tmux-gruvbox"

helper_install_tpm_plugins

# start new detached session
tmux new -d

# check if left side match
_status_left_expected="#[bg=colour241,fg=colour248] #S #[bg=colour237,fg=colour241,nobold,noitalics,nounderscore]"
_status_left_current=$(tmux show-option -gqv status-left)
if [[ "$_status_left_current" != "$_status_left_expected" ]]; then
helper_print_fail "status-left did not match" "$_status_left_current" "$_status_left_expected"
helper_teardown
exit 1
fi
# check if status is not transparent
_status_style_expected="bg=colour237,fg=colour223"
_status_style_current=$(tmux show-option -gqv status-style)
if [[ "$_status_style_current" != "$_status_style_expected" ]]; then
helper_print_fail "status-style did not match" "$_status_style_current" "$_status_style_expected"
helper_teardown
exit 1
fi

helper_print_success "status-left match"
helper_teardown
exit 0

}

main "$@"
57 changes: 57 additions & 0 deletions tests/linux/test_check_gruvbox_dark_transparent_enabled.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/bin/bash

CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# shellcheck disable=SC1091
source "${CURRENT_DIR}/../tmux_helpers.sh"

main() {
helper_tearup_linux

cat <<EOF >~/.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other plugins
set -g @plugin 'egel/tmux-gruvbox'
set -g @tmux-gruvbox 'dark-transparent'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
EOF

cat ~/.tmux.conf

# it's essential to link current repo to the plugins' directory
ln -sfv "$CURRENT_DIR/../../../tmux-gruvbox" "${HOME}/.tmux/plugins/tmux-gruvbox"

helper_install_tpm_plugins

# start new detached session
tmux new -d

# check if left side match
_status_left_expected="#[bg=colour241,fg=colour248] #S #[bg=colour237,fg=colour241,nobold,noitalics,nounderscore]"
_status_left_current=$(tmux show-option -gqv status-left)
if [[ "$_status_left_current" != "$_status_left_expected" ]]; then
helper_print_fail "status-left did not match" "$_status_left_current" "$_status_left_expected"
helper_teardown
exit 1
fi
# check if status is not transparent
_status_style_expected="bg=default,fg=colour223"
_status_style_current=$(tmux show-option -gqv status-style)
if [[ "$_status_style_current" != "$_status_style_expected" ]]; then
helper_print_fail "status-style did not match" "$_status_style_current" "$_status_style_expected"
helper_teardown
exit 1
fi

helper_print_success "status-left match"
helper_teardown
exit 0

}

main "$@"
57 changes: 57 additions & 0 deletions tests/linux/test_check_gruvbox_light256_enabled.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/bin/bash

CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# shellcheck disable=SC1091
source "${CURRENT_DIR}/../tmux_helpers.sh"

main() {
helper_tearup_linux

cat <<EOF >~/.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other plugins
set -g @plugin 'egel/tmux-gruvbox'
set -g @tmux-gruvbox 'light256'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
EOF

cat ~/.tmux.conf

# it's essential to link current repo to the plugins' directory
ln -sfv "$CURRENT_DIR/../../../tmux-gruvbox" "${HOME}/.tmux/plugins/tmux-gruvbox"

helper_install_tpm_plugins

# start new detached session
tmux new -d

# check if left side match
_status_left_expected="#[bg=colour243,fg=colour255] #S #[bg=colour252,fg=colour243,nobold,noitalics,nounderscore]"
_status_left_current=$(tmux show-option -gqv status-left)
if [[ "$_status_left_current" != "$_status_left_expected" ]]; then
helper_print_fail "status-left did not match" "$_status_left_current" "$_status_left_expected"
helper_teardown
exit 1
fi
# check if status is not transparent
_status_style_expected="bg=colour252,fg=colour239"
_status_style_current=$(tmux show-option -gqv status-style)
if [[ "$_status_style_current" != "$_status_style_expected" ]]; then
helper_print_fail "status-style did not match" "$_status_style_current" "$_status_style_expected"
helper_teardown
exit 1
fi

helper_print_success "status-left match"
helper_teardown
exit 0

}

main "$@"
57 changes: 57 additions & 0 deletions tests/linux/test_check_gruvbox_light_transparent_enabled.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/bin/bash

CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# shellcheck disable=SC1091
source "${CURRENT_DIR}/../tmux_helpers.sh"

main() {
helper_tearup_linux

cat <<EOF >~/.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other plugins
set -g @plugin 'egel/tmux-gruvbox'
set -g @tmux-gruvbox 'light-transparent'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
EOF

cat ~/.tmux.conf

# it's essential to link current repo to the plugins' directory
ln -sfv "$CURRENT_DIR/../../../tmux-gruvbox" "${HOME}/.tmux/plugins/tmux-gruvbox"

helper_install_tpm_plugins

# start new detached session
tmux new -d

# check if left side match
_status_left_expected="#[bg=colour243,fg=colour255] #S #[bg=colour252,fg=colour243,nobold,noitalics,nounderscore]"
_status_left_current=$(tmux show-option -gqv status-left)
if [[ "$_status_left_current" != "$_status_left_expected" ]]; then
helper_print_fail "status-left did not match" "$_status_left_current" "$_status_left_expected"
helper_teardown
exit 1
fi
# check if status is not transparent
_status_style_expected="bg=default,fg=colour239"
_status_style_current=$(tmux show-option -gqv status-style)
if [[ "$_status_style_current" != "$_status_style_expected" ]]; then
helper_print_fail "status-style did not match" "$_status_style_current" "$_status_style_expected"
helper_teardown
exit 1
fi

helper_print_success "status-left match"
helper_teardown
exit 0

}

main "$@"
59 changes: 59 additions & 0 deletions tests/linux/test_without_theme_fallback_to_gruvbox_dark256.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/bin/bash

CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# shellcheck disable=SC1091
source "${CURRENT_DIR}/../tmux_helpers.sh"

####
# Test: when the theme is not defined in config it should fallback to 'dark256'
#
main() {
helper_tearup_linux

# set config without theme defined
cat <<EOF >~/.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other plugins
set -g @plugin 'egel/tmux-gruvbox'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
EOF

cat ~/.tmux.conf

# it's essential to link current repo to the plugins' directory
ln -sfv "$CURRENT_DIR/../../../tmux-gruvbox" "${HOME}/.tmux/plugins/tmux-gruvbox"

helper_install_tpm_plugins

# start new detached session
tmux new -d

# check if left side match
_status_left_expected="#[bg=colour241,fg=colour248] #S #[bg=colour237,fg=colour241,nobold,noitalics,nounderscore]"
_status_left_current=$(tmux show-option -gqv status-left)
if [[ "$_status_left_current" != "$_status_left_expected" ]]; then
helper_print_fail "status-left did not match" "$_status_left_current" "$_status_left_expected"
helper_teardown
exit 1
fi
# check if status is not transparent
_status_style_expected="bg=colour237,fg=colour223"
_status_style_current=$(tmux show-option -gqv status-style)
if [[ "$_status_style_current" != "$_status_style_expected" ]]; then
helper_print_fail "status-style did not match" "$_status_style_current" "$_status_style_expected"
helper_teardown
exit 1
fi

helper_print_success "status-left match"
helper_teardown
exit 0
}

main "$@"
Loading