diff options
author | merakor <cem@ckyln.com> | 2021-01-06 12:01:50 +0000 |
---|---|---|
committer | merakor <cem@ckyln.com> | 2021-01-06 12:01:50 +0000 |
commit | e4520245639f46fd02efbc9af2457de9cd1099e2 (patch) | |
tree | f1459f35123abcb573051f2a87990668b3cd6b45 | |
parent | e31f8c482bacb62014fa0f1a35d9044bb6823147 (diff) | |
parent | ae42d4a74240d452864cdf16ce2ac2cbbdb5fc68 (diff) | |
download | cpt-e4520245639f46fd02efbc9af2457de9cd1099e2.tar.gz |
Merge branch 'shellspec' into experiment/lazyload
FossilOrigin-Name: 5ba55e426ac6b4ca55ac87abacdd7cff99f8c96ee24e53018734295c199db585
-rw-r--r-- | .shellspec | 2 | ||||
-rw-r--r-- | spec/02_src_spec.sh | 11 | ||||
-rw-r--r-- | spec/spec_helper.sh | 20 |
3 files changed, 26 insertions, 7 deletions
@@ -1,3 +1,5 @@ +--require spec_helper + --kcov-options "--include-pattern=cpt-lib" --kcov-options "--include-pattern=/src/cpt,/contrib/cpt-" --kcov-options "--exclude-pattern=.in" diff --git a/spec/02_src_spec.sh b/spec/02_src_spec.sh index b97fe3c..b4a5c48 100644 --- a/spec/02_src_spec.sh +++ b/spec/02_src_spec.sh @@ -2,7 +2,7 @@ Describe 'Main toolchain' export PATH=$PWD/src:$PATH export CPT_ROOT=$PWD/tests export CPT_PATH=$PWD/tests/repository - install_dummy() { CPT_HOOK='' ./src/cpt bi dummy-pkg ;} + install_dummy() { CPT_HOOK='' ./src/cpt bi dummy-pkg >/dev/null 2>&1 ;} remove_dummy() { rm -rf "${CPT_ROOT:?}/var" ;} BeforeAll install_dummy AfterAll remove_dummy @@ -67,17 +67,14 @@ Describe 'Main toolchain' Describe 'cpt-list' no_db_dir() { - # Return 0 if database directory is empty (or doesn't exist) - # shellcheck disable=2012 - count=$(ls -1 "$CPT_ROOT/var/db/cpt/installed" 2>/dev/null | wc -l) - [ "$count" -eq 0 ] + [ "$(pkgnum)" -eq 0 ] } Skip if "there are no installed packages" no_db_dir It 'lists all packages when called without arguments' When run script src/cpt-list - The lines of output should eq "$(ls -1 "$CPT_ROOT/var/db/cpt/installed" 2>/dev/null | wc -l)" + The lines of output should eq "$(pkgnum)" End - for firstpkg in "$CPT_ROOT/var/db/cpt/installed/"*; do firstpkg=${firstpkg##*/}; break; done + firstpkg=$(getfirstpkg) It 'only lists the packages given in the arguments' When run script src/cpt-list "$firstpkg" The word 1 of stdout should eq "$firstpkg" diff --git a/spec/spec_helper.sh b/spec/spec_helper.sh new file mode 100644 index 0000000..f62d9f6 --- /dev/null +++ b/spec/spec_helper.sh @@ -0,0 +1,20 @@ +# shellcheck shell=sh + +pkgnum() { + i=0 + cd "$CPT_ROOT/var/db/cpt/installed" || { printf '%s\n' 0; return 1 ;} + for pkg in ./*; do + [ -d "$pkg" ] || break + i=$(( i + 1 )) + done + printf '%s\n' "$i" +} + +getfirstpkg() { + cd "$CPT_ROOT/var/db/cpt/installed" || return 1 + for pkg in ./*; do + [ -d "$pkg" ] || return 1 + printf '%s\n' "${pkg##*/}" + break + done +} |