aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.shellspec2
-rw-r--r--spec/02_src_spec.sh9
-rw-r--r--spec/spec_helper.sh20
3 files changed, 25 insertions, 6 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 57c248f..b4a5c48 100644
--- a/spec/02_src_spec.sh
+++ b/spec/02_src_spec.sh
@@ -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
+}