commit
b431d0ee49
9 changed files with 5 additions and 420 deletions
|
@ -60,8 +60,9 @@ install-directory is in your `$PATH`), or install the `imag` binary to call `ima
|
|||
## Staying up-to-date
|
||||
|
||||
We have a [official website for imag](https://imag-pim.org), where I post
|
||||
[release notes](http://imag-pim.org/releases/) and monthly(ish) updates what's happening in the source tree.
|
||||
There is no RSS feed, though.
|
||||
[release notes](http://imag-pim.org/releases/) and monthly(ish) updates what's
|
||||
happening in the source tree ([RSS here](https://imag-pim.org/index.xml)).
|
||||
|
||||
|
||||
We also have a [mailinglist](https://imag-pim.org/mailinglist/) where I post
|
||||
updates and where discussion and questions are encouraged.
|
||||
|
|
|
@ -1,175 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
|
||||
source $(dirname ${BASH_SOURCE[0]})/utils.sh
|
||||
|
||||
test_call() {
|
||||
imag-store create -p test-call
|
||||
if [[ ! $? -eq 0 ]]; then
|
||||
err "Return value should be zero, was non-zero"
|
||||
return 1;
|
||||
fi
|
||||
}
|
||||
|
||||
test_call_id() {
|
||||
imag-store create -i test-call
|
||||
if [[ ! $? -eq 0 ]]; then
|
||||
err "Return value should be zero, was non-zero"
|
||||
return 1;
|
||||
fi
|
||||
}
|
||||
|
||||
test_call_no_id() {
|
||||
imag-store create
|
||||
if [[ ! $? -eq 1 ]]; then
|
||||
err "Return value should be zero, was non-zero"
|
||||
return 1;
|
||||
fi
|
||||
}
|
||||
|
||||
test_mkstore() {
|
||||
imag-store create -p test-mkstore || { err "Calling imag failed"; return 1; }
|
||||
if [[ -d ${STORE} ]]; then
|
||||
out "Store exists."
|
||||
else
|
||||
err "No store created"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_std_header() {
|
||||
local expected=$(cat <<EOS
|
||||
---
|
||||
[imag]
|
||||
links = []
|
||||
version = "0.4.0"
|
||||
---
|
||||
|
||||
EOS
|
||||
)
|
||||
|
||||
imag-store create -p test-std-header
|
||||
local result=$(cat ${STORE}/test-std-header)
|
||||
if [[ "$expected" == "$result" ]]; then
|
||||
out "Expected store entry == result"
|
||||
else
|
||||
err "${STORE}/test-std-header differs from expected"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_std_header_plus_custom() {
|
||||
local expected=$(cat <<EOS
|
||||
---
|
||||
[imag]
|
||||
links = []
|
||||
version = "0.4.0"
|
||||
|
||||
[zzz]
|
||||
zzz = "z"
|
||||
---
|
||||
|
||||
EOS
|
||||
)
|
||||
|
||||
imag-store create -p test-std-header-plus-custom entry -h zzz.zzz=z
|
||||
local result=$(cat ${STORE}/test-std-header-plus-custom)
|
||||
if [[ "$expected" == "$result" ]]; then
|
||||
out "Expected store entry == result"
|
||||
else
|
||||
err "${STORE}/test differs from expected"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_std_header_plus_custom_multiheader() {
|
||||
local expected=$(cat <<EOS
|
||||
---
|
||||
[foo]
|
||||
bar = "baz"
|
||||
|
||||
[imag]
|
||||
links = []
|
||||
version = "0.4.0"
|
||||
|
||||
[zzz]
|
||||
zzz = "z"
|
||||
---
|
||||
|
||||
EOS
|
||||
)
|
||||
|
||||
local filename="test-std-header-plus-custom-multiheader"
|
||||
imag-store create -p $filename entry -h zzz.zzz=z foo.bar=baz
|
||||
local result=$(cat ${STORE}/$filename)
|
||||
if [[ "$expected" == "$result" ]]; then
|
||||
out "Expected store entry == result"
|
||||
else
|
||||
err "${STORE}/$filename differs from expected"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
test_std_header_plus_custom_multiheader_same_section() {
|
||||
local expected=$(cat <<EOS
|
||||
---
|
||||
[imag]
|
||||
links = []
|
||||
version = "0.4.0"
|
||||
|
||||
[zzz]
|
||||
bar = "baz"
|
||||
zzz = "z"
|
||||
---
|
||||
|
||||
EOS
|
||||
)
|
||||
|
||||
local filename="test-std-header-plus-custom-mutliheader-same-section"
|
||||
imag-store create -p $filename entry -h zzz.zzz=z zzz.bar=baz
|
||||
local result=$(cat ${STORE}/$filename)
|
||||
if [[ "$expected" == "$result" ]]; then
|
||||
out "Expected store entry == result"
|
||||
else
|
||||
err "${STORE}/$filename differs from expected"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_std_header_plus_custom_and_content() {
|
||||
local expected=$(cat <<EOS
|
||||
---
|
||||
[imag]
|
||||
links = []
|
||||
version = "0.4.0"
|
||||
|
||||
[zzz]
|
||||
zzz = "z"
|
||||
---
|
||||
content
|
||||
EOS
|
||||
)
|
||||
|
||||
local name="test-std-header-plus-custom-and-content"
|
||||
imag-store create -p $name entry -h zzz.zzz=z -c content
|
||||
local result=$(cat ${STORE}/$name)
|
||||
if [[ "$expected" == "$result" ]]; then
|
||||
out "Expected store entry == result"
|
||||
else
|
||||
err "${STORE}/test differs from expected"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
invoke_tests \
|
||||
test_call \
|
||||
test_call_id \
|
||||
test_call_no_id \
|
||||
test_mkstore \
|
||||
test_std_header \
|
||||
test_std_header_plus_custom \
|
||||
test_std_header_plus_custom_multiheader \
|
||||
test_std_header_plus_custom_multiheader_same_section \
|
||||
test_std_header_plus_custom_and_content
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
|
||||
source $(dirname ${BASH_SOURCE[0]})/utils.sh
|
||||
|
||||
std_header() {
|
||||
cat <<EOS
|
||||
---
|
||||
[imag]
|
||||
links = []
|
||||
version = "0.4.0"
|
||||
---
|
||||
EOS
|
||||
}
|
||||
|
||||
retrieve() {
|
||||
silent imag-store retrieve $*
|
||||
}
|
||||
|
||||
test_retrieve_nothing() {
|
||||
local id="test-retrieve_nothing"
|
||||
|
||||
imag-store create -p ${id} || { err "create failed"; return 1; }
|
||||
|
||||
out "Going to test the retrieve functionality now"
|
||||
local zero_out="$(retrieve --id ${id})" || return 1
|
||||
out "Retrieving for zero_out finished"
|
||||
|
||||
if [[ ! -z "$zero_out" ]]; then
|
||||
err "Expected zero output, got '$zero_out'"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_retrieve_content() {
|
||||
local id="test-retrieve_simple"
|
||||
|
||||
imag-store create -p ${id} || { err "create failed"; return 1; }
|
||||
|
||||
out "Going to test the retrieve functionality now"
|
||||
|
||||
local content_out="$(retrieve --id ${id} --content)" || return 1
|
||||
out "Retrieving for content_out finished"
|
||||
|
||||
if [[ ! -z "$content_out" ]]; then
|
||||
err "Expected content output == zero output, got '$content_out'"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_retrieve_header() {
|
||||
local id="test-retrieve_simple"
|
||||
|
||||
imag-store create -p ${id} || { err "create failed"; return 1; }
|
||||
|
||||
out "Going to test the retrieve functionality now"
|
||||
local header_out="$(retrieve --id ${id} --header)"
|
||||
out "Retrieving for header_out finished"
|
||||
|
||||
if [[ ! "$header_out" != "$(std_header)" ]]; then
|
||||
err "Expected header as output, got '$header_out'"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_retrieve_raw() {
|
||||
local id="test-retrieve_simple"
|
||||
|
||||
imag-store create -p ${id} || { err "create failed"; return 1; }
|
||||
|
||||
out "Going to test the retrieve functionality now"
|
||||
local both_out="$(retrieve --id ${id} --raw)"
|
||||
out "Retrieving for both_out finished"
|
||||
|
||||
if [[ "$both_out" != "$(std_header)" ]]; then
|
||||
err "Expected "$(std_header)" as output, got '$both_out'"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
invoke_tests \
|
||||
test_retrieve_nothing \
|
||||
test_retrieve_content \
|
||||
test_retrieve_header \
|
||||
test_retrieve_raw
|
|
@ -1,30 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
|
||||
source $(dirname ${BASH_SOURCE[0]})/utils.sh
|
||||
|
||||
create() {
|
||||
imag-store create $*
|
||||
}
|
||||
|
||||
delete() {
|
||||
imag-store delete $*
|
||||
}
|
||||
|
||||
test_delete_simple() {
|
||||
local name="test"
|
||||
|
||||
create -p $name
|
||||
delete --id $name
|
||||
|
||||
local n=$($(find ${STORE}/ -type f | wc -l))
|
||||
if [[ $n -eq 0 ]]; then
|
||||
success "Deleting worked"
|
||||
else
|
||||
err "There are still $n files in the store"
|
||||
fi
|
||||
}
|
||||
|
||||
invoke_tests \
|
||||
test_delete_simple
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
ECHO=$(shell which echo) -e
|
||||
TARGETS=$(shell find -name "*test.sh" -type f)
|
||||
BASH=$(shell which bash)
|
||||
|
||||
all: $(TARGETS)
|
||||
@$(ECHO) $(TARGETS)
|
||||
|
||||
$(TARGETS): %: .FORCE
|
||||
@$(ECHO) "\t[BASH ]:\t$@"
|
||||
@$(BASH) $@
|
||||
|
||||
.FORCE:
|
||||
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
source $(dirname ${BASH_SOURCE[0]})/../../tests/utils.sh
|
||||
|
||||
imag-store() {
|
||||
imag-call-binary "$(dirname ${BASH_SOURCE[0]})/../../target/debug/" imag-store $*
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
../doc/src/05100-lib-interaction.md
|
||||
../../../doc/src/05100-lib-interaction.md
|
|
@ -1 +1 @@
|
|||
../doc/src/05100-lib-util.md
|
||||
../../../doc/src/05100-lib-util.md
|
106
tests/utils.sh
106
tests/utils.sh
|
@ -1,106 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
#
|
||||
# This file contains test utility functions which are used by the test scripts
|
||||
# for each binary.
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
COLOR_OFF='\e[0m' # Text Reset
|
||||
RED='\e[0;31m' # Red
|
||||
YELLOW='\e[0;33m' # Yellow
|
||||
GREEN='\e[0;32m' # Green
|
||||
|
||||
RUNTIME="/tmp"
|
||||
STORE="${RUNTIME}/store"
|
||||
|
||||
out() {
|
||||
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${YELLOW}:: $*${COLOR_OFF}"
|
||||
}
|
||||
|
||||
success() {
|
||||
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${GREEN}>> $*${COLOR_OFF}"
|
||||
}
|
||||
|
||||
err() {
|
||||
[[ -z "$DEBUG_OUTPUT_OFF" ]] && echo -e "${RED}!! $*${COLOR_OFF}"
|
||||
}
|
||||
|
||||
silent() {
|
||||
DEBUG_OUTPUT_OFF=1 $*
|
||||
}
|
||||
|
||||
imag-call-binary() {
|
||||
local searchdir=$1; shift
|
||||
local binary=$1; shift
|
||||
[[ -d $searchdir ]] || { err "FATAL: No directory $searchdir"; exit 1; }
|
||||
local bin=$(find $searchdir -iname $binary -type f -executable)
|
||||
local flags="--no-color --config ./imagrc.toml --override-config store.implicit-create=true --rtp $RUNTIME"
|
||||
out "Calling '$bin $flags $*'"
|
||||
$bin $flags $*
|
||||
}
|
||||
|
||||
cat_entry() {
|
||||
cat ${STORE}/$1
|
||||
}
|
||||
|
||||
reset_store() {
|
||||
rm -rf "${STORE}"/.git
|
||||
rm -r "${STORE}"
|
||||
}
|
||||
|
||||
call_test() {
|
||||
prepare_store_directory || {
|
||||
err "Preparing store directory failed"
|
||||
exit 1
|
||||
}
|
||||
|
||||
out "-- TESTING: '$1' --"
|
||||
$1
|
||||
result=$?
|
||||
if [[ -z "$DONT_RESET_STORE" ]]; then
|
||||
out "Reseting store"
|
||||
reset_store
|
||||
out "Store reset done"
|
||||
fi
|
||||
[[ $result -eq 0 ]] || { err "-- FAILED: '$1'. Exiting."; exit 1; }
|
||||
success "-- SUCCESS: '$1' --"
|
||||
}
|
||||
|
||||
__git() {
|
||||
out "Calling git: $*"
|
||||
git --work-tree=/tmp/store/ --git-dir=/tmp/store/.git $*
|
||||
}
|
||||
|
||||
__git_commit() {
|
||||
out "Calling git-commit: $*"
|
||||
git --work-tree=/tmp/store/ --git-dir=/tmp/store/.git commit -m "$*"
|
||||
}
|
||||
|
||||
prepare_store_directory() {
|
||||
out "Preparing /tmp/store"
|
||||
mkdir -p /tmp/store/ &&\
|
||||
touch /tmp/store/.gitkeep &&\
|
||||
__git init &&\
|
||||
__git config --local user.email "imag@imag-pim.org" &&\
|
||||
__git config --local user.name "Imag CI" &&\
|
||||
__git add .gitkeep &&\
|
||||
__git_commit 'Initial commit: .gitkeep'
|
||||
}
|
||||
|
||||
invoke_tests() {
|
||||
out "Invoking tests."
|
||||
if [[ ! -z "$INVOKE_TEST" ]]; then
|
||||
out "Invoking only $INVOKE_TEST"
|
||||
call_test "$INVOKE_TEST"
|
||||
else
|
||||
out "Invoking $*"
|
||||
for t in $*; do
|
||||
call_test "$t"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
|
Loading…
Reference in a new issue