aboutsummaryrefslogtreecommitdiff
path: root/spec/02_src_spec.sh
diff options
context:
space:
mode:
Diffstat (limited to 'spec/02_src_spec.sh')
-rw-r--r--spec/02_src_spec.sh130
1 files changed, 130 insertions, 0 deletions
diff --git a/spec/02_src_spec.sh b/spec/02_src_spec.sh
new file mode 100644
index 0000000..c5584ec
--- /dev/null
+++ b/spec/02_src_spec.sh
@@ -0,0 +1,130 @@
+Describe 'Main toolchain'
+ export PATH=$PWD/src:$PATH
+ export CPT_ROOT=$PWD/tests/02
+ export CPT_PATH=$PWD/tests/repository
+ 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
+
+ Describe 'cpt'
+
+ Describe '--version'
+ VERSION=$(grep VERSION config.rc | sed 's/.* //g')
+ It 'outputs cpt version'
+ When run script src/cpt --version
+ The stderr should eq "-> Carbs Packaging Tools $VERSION"
+ End
+ End
+
+ Describe '--help'
+ It 'outputs usage information'
+ When run script src/cpt --help
+ The line 1 of stderr should eq "-> Carbs Packaging Tool "
+ End
+ End
+
+ Describe 'prefix completion'
+ Describe 'single key expansion'
+ Parameters
+ a alternatives
+ b build
+ c checksum
+ d download
+ i install
+ l list
+ r remove
+ s search
+ u update
+ End
+ It "completes '$1' single key prefix to '$2'"
+ When run script src/cpt "$1" --help
+ The status should eq 0
+ The word 1 of line 1 should eq "usage:"
+ The word 2 of line 1 should eq "cpt-$2"
+ End
+ End
+ Describe 'shortcut expansion'
+ Parameters
+ bi "build install"
+ cbi "checksum build install"
+ End
+ It "expands the '$1' shortcut to '$2'"
+ When run script src/cpt "$1" --help
+ The status should be success
+ The word 2 of line 1 should eq "cpt-${2%% *}"
+ End
+ End
+ End
+
+
+ It 'fails when a given subcommand is not valid'
+ When run script src/cpt somerandomcommand
+ The stderr should eq "!> 'cpt somerandomcommand' is not a valid command "
+ The status should be failure
+ End
+ End
+
+ Describe 'cpt-list'
+ no_db_dir() {
+ [ "$(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 "$(pkgnum)"
+ End
+ 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"
+ End
+ It 'fails when the package supplied in the arguments does not exist'
+ When run script src/cpt-list somerandompackage
+ The stderr should eq "-> somerandompackage not installed"
+ The status should be failure
+ End
+ Parameters
+ "$firstpkg" success
+ somerandompackage failure
+ End
+ It "can print a $2 message with 'cpt-list --check PKG TRUE FALSE'"
+ When run script src/cpt-list --check "$1" success failure
+ The output should eq "$2"
+ End
+ End
+ Describe 'cpt-search'
+ It "searches packages inside the \$CPT_PATH and the system database"
+ When run script src/cpt-search dummy-pkg
+ The line 1 of output should eq "$CPT_PATH/dummy-pkg"
+ The line 2 of output should eq "$CPT_ROOT/var/db/cpt/installed/dummy-pkg"
+ End
+ It "only shows the first instance of a package with the '-s' flag"
+ When run script src/cpt-search -s dummy-pkg
+ The output should eq "$CPT_PATH/dummy-pkg"
+ End
+ It "only shows the first instance of a package with the '--single' flag"
+ When run script src/cpt-search --single dummy-pkg
+ The output should eq "$CPT_PATH/dummy-pkg"
+ End
+ It "shows other locations of the package inside a package directory with the '-o' flag"
+ cd "$CPT_PATH/dummy-pkg" || return 1
+ When run script "$(command -v cpt-search)" -o
+ The output should eq "$CPT_ROOT/var/db/cpt/installed/dummy-pkg"
+ End
+ It "shows other locations of the package inside a package directory with the '--others' flag"
+ cd "$CPT_PATH/dummy-pkg" || return 1
+ When run script "$(command -v cpt-search)" --others
+ The output should eq "$CPT_ROOT/var/db/cpt/installed/dummy-pkg"
+ End
+ Parameters
+ 'd*'
+ 'd???y-?kg'
+ '[Dd][uU]*-?*g*'
+ End
+ It "accepts regular expressions"
+ When run script src/cpt-search -s "$1"
+ The output should eq "$CPT_PATH/dummy-pkg"
+ End
+ End
+End