Skip to content

rebased #2102: add bashcov tests #2309

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

Closed
wants to merge 10 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,39 @@ jobs:
- name: Test code
run: test/run

code-coverage:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v2
- uses: ruby/[email protected]
with:
ruby-version: '2.7'
- name: Install Ruby dependencies
run: bundle update --bundler && bundle install
- name: Run tests
run: bashcov test/run
- name: Upload reports to Codecov
run: |
curl -Os https://uploader.codecov.io/latest/linux/codecov
chmod +x codecov
./codecov -f coverage/codecov-result.json -Z

build-docs:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.8
python-version: 3.11
- name: Install docs dependencies
run: python3 -m pip install -r docs/requirements.txt
- name: Build the docs
run: sphinx-build -W -b html docs docs/_build/html

lint:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4
Expand All @@ -48,7 +65,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.8
python-version: 3.11
- name: Install shfmt
run: go install mvdan.cc/sh/v3/cmd/shfmt@latest
- name: Install shellcheck
Expand All @@ -64,7 +81,7 @@ jobs:
run: ./lint_clean_files.sh

lint-differential:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

permissions:
security-events: write
Expand Down
7 changes: 4 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
[submodule "test_lib/bats-core"]
path = test_lib/bats-core
url = https://github.com/bats-core/bats-core
branch = tags/v1.9.0
branch = tags/v1.11.1
[submodule "test_lib/bats-support"]
path = test_lib/bats-support
url = https://github.com/bats-core/bats-support
branch = tags/v0.3.0
branch = master
#branch = tags/v0.3.0
[submodule "test_lib/bats-assert"]
path = test_lib/bats-assert
url = https://github.com/bats-core/bats-assert
branch = tags/v2.1.0
[submodule "test_lib/bats-file"]
path = test_lib/bats-file
url = https://github.com/bats-core/bats-file
branch = tags/v0.4.0
branch = master
6 changes: 6 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'bashcov'
gem 'codecov'
24 changes: 24 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
GEM
remote: https://rubygems.org/
specs:
bashcov (1.8.1)
simplecov (~> 0.15)
codecov (0.4.2)
simplecov (>= 0.15, < 0.22)
docile (1.3.5)
simplecov (0.21.2)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.2)

PLATFORMS
ruby

DEPENDENCIES
bashcov
codecov

BUNDLED WITH
1.17.3
8 changes: 4 additions & 4 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
sphinx==4.5.0
sphinx-rtd-theme==0.5.0
sphinxemoji==0.1.8
docutils==0.17.1
sphinx<6
sphinx-rtd-theme
sphinxemoji
docutils
20 changes: 10 additions & 10 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ function _bash-it_check_for_backup() {
fi
echo -e "\033[0;33mBackup file already exists. Make sure to backup your .bashrc before running this installation.\033[0m" >&2

if [[ -z "${overwrite_backup}" ]]; then
while [[ -z "${silent}" ]]; do
if [[ -z "${overwrite_backup:-}" ]]; then
while [[ -z "${silent:-}" ]]; do
read -e -n 1 -r -p "Would you like to overwrite the existing backup? This will delete your existing backup file ($HOME/$BACKUP_FILE) [y/N] " RESP
case $RESP in
[yY])
Expand All @@ -99,9 +99,9 @@ function _bash-it_check_for_backup() {
esac
done
fi
if [[ -z "${overwrite_backup}" ]]; then
if [[ -z "${overwrite_backup:-}" ]]; then
echo -e "\033[91mInstallation aborted. Please come back soon!\033[m"
if [[ -n "${silent}" ]]; then
if [[ -n "${silent:-}" ]]; then
echo -e "\033[91mUse \"-f\" flag to force overwrite of backup.\033[m"
fi
exit 1
Expand All @@ -113,8 +113,8 @@ function _bash-it_check_for_backup() {
function _bash-it_modify_config_files() {
_bash-it_check_for_backup

if [[ -z "${silent}" ]]; then
while [[ -z "${append_to_config}" ]]; do
if [[ -z "${silent:-}" ]]; then
while [[ -z "${append_to_config:-}" ]]; do
read -e -n 1 -r -p "Would you like to keep your $CONFIG_FILE and append bash-it templates at the end? [y/N] " choice
case $choice in
[yY])
Expand All @@ -130,7 +130,7 @@ function _bash-it_modify_config_files() {
esac
done
fi
if [[ -n "${append_to_config}" ]]; then
if [[ -n "${append_to_config:-}" ]]; then
# backup/append
_bash-it_backup_append
else
Expand Down Expand Up @@ -173,12 +173,12 @@ done

shift $((OPTIND - 1))

if [[ -n "${silent}" && -n "${interactive}" ]]; then
if [[ -n "${silent:-}" && -n "${interactive:-}" ]]; then
echo -e "\033[91mOptions --silent and --interactive are mutually exclusive. Please choose one or the other.\033[m"
exit 1
fi

if [[ -n "${no_modify_config}" && -n "${append_to_config}" ]]; then
if [[ -n "${no_modify_config:-}" && -n "${append_to_config:-}" ]]; then
echo -e "\033[91mOptions --no-modify-config and --append-to-config are mutually exclusive. Please choose one or the other.\033[m"
exit 1
fi
Expand Down Expand Up @@ -220,7 +220,7 @@ cite _about _param _example _group _author _version
# shellcheck source=./lib/helpers.bash
source "$BASH_IT/lib/helpers.bash"

if [[ -n $interactive && -z "${silent}" ]]; then
if [[ -n ${interactive:-} && -z "${silent:-}" ]]; then
for type in "aliases" "plugins" "completion"; do
echo -e "\033[0;32mEnabling ${type}\033[0m"
_bash-it_load_some "$type"
Expand Down
56 changes: 28 additions & 28 deletions test/lib/helpers.bats
Original file line number Diff line number Diff line change
Expand Up @@ -40,39 +40,39 @@ function local_setup() {
}

@test "helpers: bash-it help list aliases with ag aliases enabled" {
ln -s "${BASH_IT?}/aliases/available/ag.aliases.bash" "${BASH_IT?}/aliases/enabled/150---ag.aliases.bash"
run ln -s "${BASH_IT?}/aliases/available/ag.aliases.bash" "${BASH_IT?}/aliases/enabled/150---ag.aliases.bash"
assert_link_exist "${BASH_IT?}/aliases/enabled/150---ag.aliases.bash"

run _help-list-aliases "${BASH_IT?}/aliases/enabled/150---ag.aliases.bash"
assert_line -n 0 "ag:"
}

@test "helpers: bash-it help list aliases with todo.txt-cli aliases enabled" {
ln -s "${BASH_IT?}/aliases/available/todo.txt-cli.aliases.bash" "${BASH_IT?}/aliases/enabled/150---todo.txt-cli.aliases.bash"
run ln -s "${BASH_IT?}/aliases/available/todo.txt-cli.aliases.bash" "${BASH_IT?}/aliases/enabled/150---todo.txt-cli.aliases.bash"
assert_link_exist "${BASH_IT?}/aliases/enabled/150---todo.txt-cli.aliases.bash"

run _help-list-aliases "${BASH_IT?}/aliases/enabled/150---todo.txt-cli.aliases.bash"
assert_line -n 0 "todo.txt-cli:"
}

@test "helpers: bash-it help list aliases with docker-compose aliases enabled" {
ln -s "${BASH_IT?}/aliases/available/docker-compose.aliases.bash" "${BASH_IT?}/aliases/enabled/150---docker-compose.aliases.bash"
run ln -s "${BASH_IT?}/aliases/available/docker-compose.aliases.bash" "${BASH_IT?}/aliases/enabled/150---docker-compose.aliases.bash"
assert_link_exist "${BASH_IT?}/aliases/enabled/150---docker-compose.aliases.bash"

run _help-list-aliases "${BASH_IT?}/aliases/enabled/150---docker-compose.aliases.bash"
assert_line -n 0 "docker-compose:"
}

@test "helpers: bash-it help list aliases with ag aliases enabled in global directory" {
ln -s "${BASH_IT?}/aliases/available/ag.aliases.bash" "${BASH_IT?}/enabled/150---ag.aliases.bash"
run ln -s "${BASH_IT?}/aliases/available/ag.aliases.bash" "${BASH_IT?}/enabled/150---ag.aliases.bash"
assert_link_exist "${BASH_IT?}/enabled/150---ag.aliases.bash"

run _help-list-aliases "${BASH_IT?}/enabled/150---ag.aliases.bash"
assert_line -n 0 "ag:"
}

@test "helpers: bash-it help aliases one alias enabled in the old directory" {
ln -s "${BASH_IT?}/aliases/available/ag.aliases.bash" "${BASH_IT?}/aliases/enabled/150---ag.aliases.bash"
run ln -s "${BASH_IT?}/aliases/available/ag.aliases.bash" "${BASH_IT?}/aliases/enabled/150---ag.aliases.bash"
assert_link_exist "${BASH_IT?}/aliases/enabled/150---ag.aliases.bash"

run bash-it help aliases
Expand Down Expand Up @@ -192,7 +192,7 @@ function local_setup() {
}

@test "helpers: disable the nvm plugin if it was enabled with a priority, but in the component-specific directory" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
assert [ ! -L "${BASH_IT?}/enabled/225---nvm.plugin.bash" ]

Expand All @@ -203,7 +203,7 @@ function local_setup() {
}

@test "helpers: disable the nvm plugin if it was enabled without a priority" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"

run _disable-plugin "nvm"
Expand All @@ -212,7 +212,7 @@ function local_setup() {
}

@test "helpers: enable the nvm plugin if it was enabled without a priority" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"

run _enable-plugin "nvm"
Expand All @@ -223,7 +223,7 @@ function local_setup() {
}

@test "helpers: enable the nvm plugin if it was enabled with a priority, but in the component-specific directory" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"

run _enable-plugin "nvm"
Expand Down Expand Up @@ -404,10 +404,10 @@ function local_setup() {
}

@test "helpers: migrate plugins and completions that share the same name" {
ln -s "${BASH_IT?}/completion/available/dirs.completion.bash" "${BASH_IT?}/completion/enabled/350---dirs.completion.bash"
run ln -s "${BASH_IT?}/completion/available/dirs.completion.bash" "${BASH_IT?}/completion/enabled/350---dirs.completion.bash"
assert_link_exist "${BASH_IT?}/completion/enabled/350---dirs.completion.bash"

ln -s "${BASH_IT?}/plugins/available/dirs.plugin.bash" "${BASH_IT?}/plugins/enabled/250---dirs.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/dirs.plugin.bash" "${BASH_IT?}/plugins/enabled/250---dirs.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/250---dirs.plugin.bash"

run _bash-it-migrate
Expand All @@ -426,13 +426,13 @@ function local_setup() {
}

@test "helpers: migrate enabled plugins that don't use the new priority-based configuration" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"

ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/node.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/node.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/node.plugin.bash"

ln -s "${BASH_IT?}/aliases/available/todo.txt-cli.aliases.bash" "${BASH_IT?}/aliases/enabled/todo.txt-cli.aliases.bash"
run ln -s "${BASH_IT?}/aliases/available/todo.txt-cli.aliases.bash" "${BASH_IT?}/aliases/enabled/todo.txt-cli.aliases.bash"
assert_link_exist "${BASH_IT?}/aliases/enabled/todo.txt-cli.aliases.bash"

run _enable-plugin "ssh"
Expand All @@ -453,13 +453,13 @@ function local_setup() {
}

@test "helpers: migrate enabled plugins that use the new priority-based configuration in the individual directories" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"

ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"

ln -s "${BASH_IT?}/aliases/available/todo.txt-cli.aliases.bash" "${BASH_IT?}/aliases/enabled/250---todo.txt-cli.aliases.bash"
run ln -s "${BASH_IT?}/aliases/available/todo.txt-cli.aliases.bash" "${BASH_IT?}/aliases/enabled/250---todo.txt-cli.aliases.bash"
assert_link_exist "${BASH_IT?}/aliases/enabled/250---todo.txt-cli.aliases.bash"

run _enable-plugin "ssh"
Expand Down Expand Up @@ -495,9 +495,9 @@ function __migrate_all_components() {
for f in "${BASH_IT}/$subdirectory/available/"*.bash; do
to_enable=$(basename "$f")
if [[ -z "$priority" ]]; then
ln -s "../available/$to_enable" "${BASH_IT}/${subdirectory}/enabled/$to_enable"
run ln -s "../available/$to_enable" "${BASH_IT}/${subdirectory}/enabled/$to_enable"
else
ln -s "../available/$to_enable" "${BASH_IT}/${subdirectory}/enabled/$priority---$to_enable"
run ln -s "../available/$to_enable" "${BASH_IT}/${subdirectory}/enabled/$priority---$to_enable"
fi
done

Expand Down Expand Up @@ -566,7 +566,7 @@ function __migrate_all_components() {
}

@test "helpers: verify that existing components are automatically migrated when something is enabled" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"

run bash-it enable plugin "node"
Expand All @@ -581,9 +581,9 @@ function __migrate_all_components() {
}

@test "helpers: verify that existing components are automatically migrated when something is disabled" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"

run bash-it disable plugin "node"
Expand Down Expand Up @@ -627,10 +627,10 @@ function __migrate_all_components() {

@test "helpers: disable all plugins in the old directory structure" {
local enabled enabled2
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"

ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/node.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/node.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/node.plugin.bash"

enabled=$(find "${BASH_IT?}/plugins/enabled" -name '*.plugin.bash' | wc -l | xargs)
Expand All @@ -647,10 +647,10 @@ function __migrate_all_components() {

@test "helpers: disable all plugins in the old directory structure with priority" {
local enabled enabled2
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/250---nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/250---nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/250---nvm.plugin.bash"

ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/node.plugin.bash" "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/250---node.plugin.bash"

enabled=$(find "${BASH_IT?}/plugins/enabled" -name '*.plugin.bash' | wc -l | xargs)
Expand Down Expand Up @@ -698,14 +698,14 @@ function __migrate_all_components() {
}

@test "helpers: describe the nvm plugin after enabling it in the old directory" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/nvm.plugin.bash"

_bash-it-plugins | grep "nvm" | grep "\[x\]"
}

@test "helpers: describe the nvm plugin after enabling it in the old directory with priority" {
ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
run ln -s "${BASH_IT?}/plugins/available/nvm.plugin.bash" "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"
assert_link_exist "${BASH_IT?}/plugins/enabled/225---nvm.plugin.bash"

_bash-it-plugins | grep "nvm" | grep "\[x\]"
Expand Down
Loading
Loading