diff --git a/commands/core.d/bootstrap.d/arch.sh b/commands/core.d/bootstrap.d/arch.sh index 50fd028573c210f17998cabe672fce704d562d5c..54b9d0a2d18ba4392a6337fb981e99cd438c16cc 100644 --- a/commands/core.d/bootstrap.d/arch.sh +++ b/commands/core.d/bootstrap.d/arch.sh @@ -21,7 +21,7 @@ distro_packages+=( pip_packages+=( # 'python-gilt' - 'git+git://github.com/nkakouros-forks/gilt@all' + 'git+https://github.com/nkakouros-forks/gilt.git@all' ) info "checking required tools and libraries..." diff --git a/commands/devel.d/test b/commands/devel.d/test index f437e55555b5dd59b90833d2b1c8268672d649cf..f0808d86f5be15b29b7e31e275f33182b4bfe7b7 100755 --- a/commands/devel.d/test +++ b/commands/devel.d/test @@ -20,60 +20,35 @@ # you may need to include it in quotes so it isn't expanded by the shell # _before_ executing the {{cmd}} command. -# Taken from custom/vendor/go-script-bash/scripts/test +test_dir="${_HEADSTART_SCRIPT_NAME~~}_TESTS_DIR" +test_dir="${!test_dir}" -# Passes all arguments through to `@go.bats_main` from -# `scripts/vendor/go-script-bash/lib/bats-main`. -_test_main() { - declare -x TMPDIR="$_HEADSTART_TMP_DIR" - # This environment variable is read by Bats in order to set its own temp - # folder (BATS_TMPDIR variable). The BATS_TMPDIR variable is used then to set - # the variables BATS_TEST_ROOTDIR=TEST_GO_ROOTDIR='BATS_TMPDIR/test rootdir' - # which are used throughout go-script's test libraries. In the end, both Bats - # and go-script-bash's test operation use this as their temp folder. +function __completions() { - # Where to find the tests to run - local test_dir="${_HEADSTART_SCRIPT_NAME~~}_TEST_DIR" - declare -x HEADSTART_TEST_FIXTURES="${!test_dir}/unit/fixtures" - - # drive the @go.bats_main script - declare -x _GO_COVERALLS_URL='' - declare -x _GO_BATS_DIR="$_HEADSTART_VENDOR_DIR/bats-core" - declare -x _GO_BATS_GLOB_ARGS=("tests/unit" '.bats') - # The first argument is the path to search into, the second is the file - # extension to look for. The path has to not include spaces due to a bug in - # go-script-bash, in lib/bats-main. So, we declare it as relative here, - # knowing that it will not contain spaces this way. + export GLOBIGNORE="$test_dir/unit/fixtures/*" + for test_file in "$test_dir/unit"/**/*.bats; do + test_file="${test_file#"$test_dir/unit/"}" + echo "${test_file%.bats}" + done +} +__() { + bats="$_HEADSTART_CORE_DIR/vendor/bats-core/bin/bats" - declare -x _GO_KCOV_DIR="$_HEADSTART_TMP_DIR/kcov" - declare -x _GO_BATS_COVERAGE_DIR="$_HEADSTART_TMP_DIR/coverage" - declare -x _GO_COLLECT_BATS_COVERAGE='' - # TODO see if these paths actually work - declare -x _GO_BATS_COVERAGE_INCLUDE=('headstart' 'commands' 'lib') + if [[ "$list" == 'true' ]]; then + __completions + return + fi - declare -x FIVEG_TEST_COMMON_ENV="$FIVEG_TEST_DIR/unit/common/environment.bash" - # This is meant to be used by test files to load the common environment. + if [[ "${glob[*]}" == '' ]]; then + read -ar glob <<< "$(__completions)" + fi - . "$_GO_USE_MODULES" 'bats-main' - # Tab completions + read -a glob <<< "${glob[*]/%/.bats}" - trap '' ERR - # TODO add note about lib/system not being enough - # <<-CODE-NOTE: The error trap should be set to Bash Infinity's exception - # handler that print the stack trace on unexpected error. The - # next line will call Bats. If a test fails, then Bats will - # exit with code 1. This will trigger the stack trace, which is - # sth we do not want as the "error" is not sth we should be - # worried about, it is not actually an error, just a status - # code. We unset therefore the ERR trap here before calling - # Bats. + cd "$test_dir/unit" || exit 1 - # TODO this should not be needed, I install bats and libraries as git - # submodules. This is needed to override go-script stuff that our outdated. - # Use the standard bats - _GO_BATS_URL="https://github.com/bats-core/bats-core/" - _GO_BATS_VERSION="master" - @go.bats_main "$@" + set +eu + "$bats" "${glob[@]}" } -_test_main "$@" +__ "$@" diff --git a/lib/bash b/lib/bash index a5d7b4368998e023412e3fb438de42d35abdcd54..1001a4dd475aa69b02c5e254e0bc4ba20a22158d 100755 --- a/lib/bash +++ b/lib/bash @@ -569,6 +569,7 @@ function bash_string_join() { function bash_array_search() { local __array1="${1-}" local needle="${2-}" + local return_index="${3-false}" __array1="$__array1[@]" @@ -583,5 +584,6 @@ function bash_array_search() { i=i+1 done - echo "$key" + [[ "$return_index" == true ]] && echo "$key" + [[ "$key" -eq -1 ]] && return 1 || return 0 }