aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormerakor <cem@ckyln.com>2021-01-06 12:01:50 +0000
committermerakor <cem@ckyln.com>2021-01-06 12:01:50 +0000
commite4520245639f46fd02efbc9af2457de9cd1099e2 (patch)
treef1459f35123abcb573051f2a87990668b3cd6b45
parente31f8c482bacb62014fa0f1a35d9044bb6823147 (diff)
parentae42d4a74240d452864cdf16ce2ac2cbbdb5fc68 (diff)
downloadcpt-e4520245639f46fd02efbc9af2457de9cd1099e2.tar.gz
Merge branch 'shellspec' into experiment/lazyload
FossilOrigin-Name: 5ba55e426ac6b4ca55ac87abacdd7cff99f8c96ee24e53018734295c199db585
-rw-r--r--.shellspec2
-rw-r--r--spec/02_src_spec.sh11
-rw-r--r--spec/spec_helper.sh20
3 files changed, 26 insertions, 7 deletions
diff --git a/.shellspec b/.shellspec
index 77d79cf..85e0590 100644
--- a/.shellspec
+++ b/.shellspec
@@ -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
+}