pull/30/head
deadc0de6 1 year ago
parent 599852eb7a
commit 45c2599a95

@ -0,0 +1,61 @@
{
"children": [
{
"attr": "",
"children": [
{
"maccess": 1666206037.0786593,
"md5": null,
"name": "FUNDING.yml",
"relpath": "/FUNDING.yml",
"size": 17,
"type": "file"
},
{
"children": [
{
"maccess": 1666206037.078865,
"md5": null,
"name": "pypi-release.yml",
"relpath": "workflows/pypi-release.yml",
"size": 691,
"type": "file"
},
{
"maccess": 1677748530.6920426,
"md5": null,
"name": "testing.yml",
"relpath": "workflows/testing.yml",
"size": 595,
"type": "file"
}
],
"maccess": 1677748530.691944,
"md5": null,
"name": "workflows",
"relpath": "/workflows",
"size": 1190,
"type": "dir"
}
],
"free": 23459602432,
"name": "github",
"size": 2380,
"total": 245107195904,
"ts": 1678214993,
"type": "storage"
},
{
"attr": {
"access": 1678214993,
"access_version": "0.8.7",
"created": 1678214993,
"created_version": "0.8.7"
},
"name": "meta",
"type": "meta"
}
],
"name": "top",
"type": "top"
}

@ -0,0 +1,61 @@
#!/usr/bin/env bash
# author: deadc0de6 (https://github.com/deadc0de6)
# Copyright (c) 2023, deadc0de6
# exit on first error
set -e
# get current path
rl="readlink -f"
if ! ${rl} "${0}" >/dev/null 2>&1; then
rl="realpath"
if ! hash ${rl}; then
echo "\"${rl}\" not found !" && exit 1
fi
fi
cur=$(dirname "$(${rl} "${0}")")
# pivot
prev="${cur}/.."
cd "${prev}"
# coverage
#export PYTHONPATH=".:${PYTHONPATH}"
bin="python3 -m catcli.catcli"
if hash coverage 2>/dev/null; then
bin="coverage run -p --source=catcli -m catcli.catcli"
#bin="coverage run -p --source=${prev}/catcli -m catcli.catcli"
fi
echo "current dir: $(pwd)"
echo "pythonpath: ${PYTHONPATH}"
echo "bin: ${bin}"
${bin} --version
# get the helpers
# shellcheck source=tests-ng/helper
source "${cur}"/helper
echo -e "$(tput setaf 6)==> RUNNING $(basename "${BASH_SOURCE[0]}") <==$(tput sgr0)"
##########################################################
# the test
##########################################################
# create temp dirs
tmpd=$(mktemp -d)
clear_on_exit "${tmpd}"
catalog="${tmpd}/catalog"
# index
${bin} -B index --catalog="${catalog}" github .github
# diff
cat "${catalog}"
diff "${cur}/assets/github.catalog.json" "${catalog}"
# the end
echo "test \"$(basename "$0")\" success"
cd "${cur}"
exit 0

@ -0,0 +1,68 @@
# author: deadc0de6 (https://github.com/deadc0de6)
# Copyright (c) 2023, deadc0de6
#
# file to be sourced from test scripts
#
declare -a to_be_cleared
# add a file/directory to be cleared
# on exit
#
# $1: file path to clear
clear_on_exit()
{
local len="${#to_be_cleared[*]}"
# shellcheck disable=SC2004
to_be_cleared[${len}]="$1"
if [ "${len}" = "0" ]; then
# set trap
trap on_exit EXIT
fi
}
# clear files
on_exit()
{
for i in "${to_be_cleared[@]}"; do
rm -rf "${i}"
done
}
# osx tricks
# brew install coreutils gnu-sed
if [[ $OSTYPE == 'darwin'* ]]; then
mktemp() {
gmktemp "$@"
}
stat() {
gstat "$@"
}
sed() {
gsed "$@"
}
wc() {
gwc "$@"
}
date() {
gdate "$@"
}
chmod() {
gchmod "$@"
}
readlink() {
greadlink "$@"
}
realpath() {
grealpath "$@"
}
export -f mktemp
export -f stat
export -f sed
export -f wc
export -f date
export -f chmod
export -f readlink
export -f realpath
fi

@ -2,62 +2,85 @@
# author: deadc0de6 (https://github.com/deadc0de6) # author: deadc0de6 (https://github.com/deadc0de6)
# Copyright (c) 2021, deadc0de6 # Copyright (c) 2021, deadc0de6
cur=$(dirname "$(readlink -f "${0}")") # exit on first error
cwd=`pwd` set -e
# get current path
rl="readlink -f"
if ! ${rl} "${0}" >/dev/null 2>&1; then
rl="realpath"
if ! hash ${rl}; then
echo "\"${rl}\" not found !" && exit 1
fi
fi
cur=$(dirname "$(${rl} "${0}")")
# pivot # pivot
cd ${cur}/../ prev="${cur}/.."
python3 -m catcli.catcli --version cd "${prev}"
# coverage
#export PYTHONPATH=".:${PYTHONPATH}"
bin="python3 -m catcli.catcli"
if hash coverage 2>/dev/null; then
bin="coverage run -p --source=catcli -m catcli.catcli"
#bin="coverage run -p --source=${prev}/catcli -m catcli.catcli"
fi
echo "current dir: $(pwd)"
echo "pythonpath: ${PYTHONPATH}"
echo "bin: ${bin}"
${bin} --version
# get the helpers
# shellcheck source=tests-ng/helper
source "${cur}"/helper
echo -e "$(tput setaf 6)==> RUNNING $(basename "${BASH_SOURCE[0]}") <==$(tput sgr0)"
########################################################## ##########################################################
# the test # the test
########################################################## ##########################################################
# create temp dirs # create temp dirs
tmpd=`mktemp -d` tmpd=$(mktemp -d)
clear_on_exit "${tmpd}"
tmpu="${tmpd}/dir2" tmpu="${tmpd}/dir2"
mkdir -p ${tmpu} mkdir -p "${tmpu}"
# setup cleaning
clean() {
# clean
rm -rf ${tmpd} ${tmpu}
}
trap clean EXIT
catalog="${tmpd}/catalog" catalog="${tmpd}/catalog"
mkdir -p ${tmpd}/dir mkdir -p "${tmpd}/dir"
echo "abc" > ${tmpd}/dir/a echo "abc" > "${tmpd}/dir/a"
# index # index
python3 -m catcli.catcli -B index --catalog=${catalog} dir ${tmpd}/dir ${bin} -B index --catalog="${catalog}" dir "${tmpd}/dir"
python3 -m catcli.catcli -B ls --catalog=${catalog} dir ${bin} -B ls --catalog="${catalog}" dir
# get attributes # get attributes
freeb=`python3 -m catcli.catcli -B ls --catalog=${catalog} dir | grep free: | sed 's/^.*,free:\([^ ]*\).*$/\1/g'` freeb=$(${bin} -B ls --catalog="${catalog}" dir | grep free: | sed 's/^.*,free:\([^ ]*\).*$/\1/g')
dub=`python3 -m catcli.catcli -B ls --catalog=${catalog} dir | grep du: | sed 's/^.*,du:\([^ ]*\).*$/\1/g'` dub=$(${bin} -B ls --catalog="${catalog}" dir | grep du: | sed 's/^.*,du:\([^ ]*\).*$/\1/g')
dateb=`python3 -m catcli.catcli -B ls --catalog=${catalog} dir | grep date: | sed 's/^.*,date: \(.*\)$/\1/g'` dateb=$(${bin} -B ls --catalog="${catalog}" dir | grep date: | sed 's/^.*,date: \(.*\)$/\1/g')
echo "before: free:${freeb} | du:${dub} | date:${dateb}" echo "before: free:${freeb} | du:${dub} | date:${dateb}"
# change content # change content
echo "abc" >> ${tmpd}/dir/a echo "abc" >> "${tmpd}/dir/a"
echo "abc" > ${tmpd}/dir/b echo "abc" > "${tmpd}/dir/b"
# move dir # move dir
cp -r ${tmpd}/dir ${tmpu}/ cp -r "${tmpd}/dir" "${tmpu}/"
# sleep to force date change # sleep to force date change
sleep 1 sleep 1
# update # update
python3 -m catcli.catcli -B update -f --catalog=${catalog} dir ${tmpu}/dir ${bin} -B update -f --catalog="${catalog}" dir "${tmpu}/dir"
python3 -m catcli.catcli -B ls --catalog=${catalog} dir ${bin} -B ls --catalog="${catalog}" dir
# get new attributes # get new attributes
freea=`python3 -m catcli.catcli -B ls --catalog=${catalog} dir | grep free: | sed 's/^.*,free:\([^ ]*\).*$/\1/g'` freea=$(${bin} -B ls --catalog="${catalog}" dir | grep free: | sed 's/^.*,free:\([^ ]*\).*$/\1/g')
dua=`python3 -m catcli.catcli -B ls --catalog=${catalog} dir | grep du: | sed 's/^.*,du:\([^ ]*\).*$/\1/g'` dua=$(${bin} -B ls --catalog="${catalog}" dir | grep du: | sed 's/^.*,du:\([^ ]*\).*$/\1/g')
datea=`python3 -m catcli.catcli -B ls --catalog=${catalog} dir | grep date: | sed 's/^.*,date: \(.*\)$/\1/g'` datea=$(${bin} -B ls --catalog="${catalog}" dir | grep date: | sed 's/^.*,date: \(.*\)$/\1/g')
echo "after: free:${freea} | du:${dua} | date:${datea}" echo "after: free:${freea} | du:${dua} | date:${datea}"
# test they are all different # test they are all different
@ -65,9 +88,7 @@ echo "after: free:${freea} | du:${dua} | date:${datea}"
[ "${dub}" = "${dua}" ] && echo "WARNING du didn't change!" [ "${dub}" = "${dua}" ] && echo "WARNING du didn't change!"
[ "${dateb}" = "${datea}" ] && echo "WARNING date didn't change!" && exit 1 [ "${dateb}" = "${datea}" ] && echo "WARNING date didn't change!" && exit 1
# pivot back
cd ${cwd}
# the end # the end
echo "test \"`basename $0`\" success" echo "test \"$(basename "$0")\" success"
cd "${cur}"
exit 0 exit 0

@ -5,16 +5,24 @@
cur=$(dirname "$(readlink -f "${0}")") cur=$(dirname "$(readlink -f "${0}")")
# stop on first error # stop on first error
set -ev set -e
#set -v
# pycodestyle
echo "[+] pycodestyle"
pycodestyle --version pycodestyle --version
pycodestyle --ignore=W605 catcli/ pycodestyle --ignore=W605 catcli/
pycodestyle tests/ pycodestyle tests/
pycodestyle setup.py
# pyflakes
echo "[+] pyflakes"
pyflakes --version pyflakes --version
pyflakes catcli/ pyflakes catcli/
pyflakes tests/ pyflakes tests/
pyflakes setup.py
# pylint
# R0914: Too many local variables # R0914: Too many local variables
# R0913: Too many arguments # R0913: Too many arguments
# R0912: Too many branches # R0912: Too many branches
@ -24,8 +32,9 @@ pyflakes tests/
# R0801: Similar lines in 2 files # R0801: Similar lines in 2 files
# R0902: Too many instance attributes # R0902: Too many instance attributes
# R0201: no-self-used # R0201: no-self-used
echo "[+] pylint"
pylint --version pylint --version
pylint \ pylint -sn \
--disable=R0914 \ --disable=R0914 \
--disable=R0913 \ --disable=R0913 \
--disable=R0912 \ --disable=R0912 \
@ -37,23 +46,46 @@ pylint \
--disable=R0201 \ --disable=R0201 \
--disable=R0022 \ --disable=R0022 \
catcli/ catcli/
pylint \ pylint -sn \
--disable=W0212 \ --disable=W0212 \
--disable=R0914 \ --disable=R0914 \
--disable=R0915 \ --disable=R0915 \
--disable=R0801 \ --disable=R0801 \
tests/ tests/
pylint -sn setup.py
# mypy
echo "[+] mypy"
mypy \ mypy \
--strict \ --strict \
catcli/ catcli/
nosebin="nose2" # unittest
PYTHONPATH=catcli ${nosebin} --with-coverage --coverage=catcli echo "[+] unittests"
coverage run -p -m pytest tests
for t in ${cur}/tests-ng/*; do # tests-ng
echo "running test \"`basename ${t}`\"" echo "[+] tests-ng"
for t in "${cur}"/tests-ng/*.sh; do
echo "running test \"$(basename "${t}")\""
${t} ${t}
done done
# check shells
echo "[+] shellcheck"
if ! which shellcheck >/dev/null 2>&1; then
echo "Install shellcheck"
exit 1
fi
shellcheck --version
find . -iname '*.sh' | while read -r script; do
shellcheck -x \
"${script}"
done
# merge coverage
echo "[+] coverage merge"
coverage combine
echo "ALL TESTS DONE OK"
exit 0 exit 0

Loading…
Cancel
Save