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=$(sed -n '/VERSION/s/.* //gp' config.mk) It 'outputs cpt version' When run script src/cpt --version The line 1 of stdout should eq "Carbs Packaging Tools, version $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