aboutsummaryrefslogtreecommitdiff
path: root/spec/01_lib_spec.sh
diff options
context:
space:
mode:
Diffstat (limited to 'spec/01_lib_spec.sh')
-rw-r--r--spec/01_lib_spec.sh107
1 files changed, 79 insertions, 28 deletions
diff --git a/spec/01_lib_spec.sh b/spec/01_lib_spec.sh
index 581ba70..b7d83f3 100644
--- a/spec/01_lib_spec.sh
+++ b/spec/01_lib_spec.sh
@@ -1,4 +1,5 @@
# shellcheck disable=2091,2034
+CPT_VERBOSE=1
Describe 'CPT Library'
export CPT_COLOR=0
@@ -13,7 +14,7 @@ Describe 'CPT Library'
VERSION=$(sed -n '/VERSION/s/.* //gp' config.mk)
It 'prints version information'
When run script src/cpt-lib version
- The stderr should eq "-> Carbs Packaging Tools $VERSION"
+ The line 1 of stdout should eq "Carbs Packaging Tools, version $VERSION"
End
End
Describe 'text functions'
@@ -111,16 +112,16 @@ Describe 'CPT Library'
Describe '_readlinkf()'
mklink() { :> tests/testfile; ln -s testfile tests/testfile2 ;}
- rmlink() { rm -f tests/testfile tests/testfile2 ;}
+ rmlink() { rm tests/testfile tests/testfile2 ;}
RPWD=$(cd -P .||:; printf %s "$PWD")
- Before mklink
- After rmlink
+ BeforeEach mklink
+ AfterEach rmlink
Parameters
"#1" . "$RPWD"
- "#2" "$PWD/tests/testfile2" "$RPWD/tests/testfile"
+ "#2" "./tests/testfile2" "$RPWD/tests/testfile"
End
- It "outputs the real location of the given file ($1)"
- When call _readlinkf "$2"
+ It "outputs the real location of the given file [$1] ($2 -> $3)"
+ When run _readlinkf "$2"
The output should eq "$3"
End
End
@@ -150,6 +151,53 @@ Describe 'CPT Library'
End
End
+ Describe 'version control functions'
+ check_internet_connection() { ! curl -L git.carbslinux.org >/dev/null 2>&1 ;}
+ Skip if "no internet connection" check_internet_connection
+ Describe 'pkg_vcs_clone_git()'
+ tmpfos=$$
+ setup() { mkdir "/tmp/test_repository.$tmpfos" && cd "/tmp/test_repository.$tmpfos" || return ;}
+ cleanup() { cd /tmp && rm -rf "test_repository.$tmpfos" ;}
+ check_version() { [ "$1" = "$(sed -n '/^version=/s/.*=//p' configure)" ] ;}
+ BeforeEach setup
+ AfterEach cleanup
+ It "clones the given git repository to the current directory"
+ When call pkg_vcs_clone_git https://git.carbslinux.org/cpt
+ The output should not eq ""
+ The stderr should not eq ""
+ The status should be success
+ Assert [ ! -d test_repository ]
+ Assert [ -f README.md ]
+ Assert check_version Fossil
+ End
+ It "clones the given tag when asked for it"
+ When call pkg_vcs_clone_git https://git.carbslinux.org/cpt @6.2.4
+ The output should not eq ""
+ The stderr should not eq ""
+ The status should be success
+ Assert [ ! -d test_repository ]
+ Assert [ -f README.md ]
+ Assert check_version 6.2.4
+ End
+ End
+ Describe 'pkg_vcs_clone_fossil()'
+ tmpfos=$$
+ setup() { mkdir "/tmp/test_repository.$tmpfos" && cd "/tmp/test_repository.$tmpfos" || return ;}
+ cleanup() { cd /tmp && rm -rf "test_repository.$tmpfos" ;}
+ check_version() { [ "$1" = "$(sed -n '/^version=/s/.*=//p' configure)" ] ;}
+ BeforeEach setup
+ AfterEach cleanup
+ It "clones the given fossil repository to the current directory"
+ When call pkg_vcs_clone_fossil https://fossil.carbslinux.org/cpt
+ The output should not eq ""
+ The stderr should eq ""
+ The status should be success
+ Assert [ ! -d test_repository ]
+ Assert [ -f README.md ]
+ Assert check_version Fossil
+ End
+ End
+ End
Describe 'package functions'
Describe 'run_hook()'
CPT_HOOK=$PWD/tests/hook-file
@@ -161,15 +209,9 @@ Describe 'CPT Library'
End
It "doesn't log 'running hook' if no package is given"
When call run_hook 2 '' destination
- The stderr should eq ""
+ The stderr should eq "-> Running 2 hook"
The output should eq "$CPT_HOOK 2 null destination"
End
- It "uses the /etc/cpt-hook file of the root when called with a fourth arg"
- When call run_hook 3 cpt destdir root
- The stderr should eq "-> cpt Running 3 hook"
- The output should eq "$CPT_ROOT/etc/cpt-hook 3 cpt destdir"
- The variable CPT_HOOK should eq "$PWD/tests/hook-file"
- End
It "returns with success even when the file doesn't exist"
CPT_HOOK=$PWD/some-non-existent-file
When call run_hook 4 thiswillnotrun
@@ -177,33 +219,42 @@ Describe 'CPT Library'
The stderr should eq ""
The status should be success
End
- It "restores the \$CPT_HOOK variable when called with root"
- CPT_ROOT=$PWD/nonexistentdir
- When call run_hook 5 cpt dest root
- The variable CPT_ROOT should not be exist
- The stderr should eq ""
- The status should be success
- The variable CPT_HOOK should eq "$PWD/tests/hook-file"
- End
End
- Describe 'create_cache()'
+ Describe 'create_tmp()'
After pkg_clean
It 'creates cache directories'
- When call create_cache
+ When call create_tmp
The variable mak_dir should be a directory
End
- It "doesn't create build directories if an argument is passed"
- When call create_cache nobuild
- The variable mak_dir should be undefined
- End
End
Describe 'pkg_get_base()'
CPT_ROOT=$PWD/tests
CPT_PATH=$PWD/tests/repository
+ cpt_base=$PWD/tests/etc/cpt-base
It 'returns packages defined in base'
When call pkg_get_base nonl
The output should eq "dummy-pkg contrib-dummy-pkg "
End
End
+ Describe 'pkg_query_meta()'
+ CPT_PATH=$PWD/tests/repository
+ It 'queries package meta information'
+ When call pkg_query_meta contrib-dummy-pkg description
+ The output should eq "This is a dummy package"
+ End
+ It 'returns an error if there is no meta file'
+ When call pkg_query_meta dummy-pkg description
+ The status should be failure
+ End
+ It 'returns an error if the queried key is unavailable'
+ When call pkg_query_meta contrib-dummy-pkg license
+ The status should be failure
+ End
+ It "accepts full paths to the package location"
+ When call pkg_query_meta "$PWD/tests/repository/contrib-dummy-pkg" description
+ The output should eq "This is a dummy package"
+ The status should be success
+ End
+ End
End
End