You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
catcli/tests-ng/compare.sh

137 lines
3.9 KiB
Bash

1 year ago
#!/usr/bin/env bash
# author: deadc0de6 (https://github.com/deadc0de6)
# Copyright (c) 2023, deadc0de6
set -e
1 year ago
cur=$(cd "$(dirname "${0}")" && pwd)
1 year ago
prev="${cur}/.."
cd "${prev}"
# coverage
bin="python3 -m catcli.catcli"
if command -v coverage 2>/dev/null; then
5 months ago
mkdir -p coverages/
bin="coverage run -p --data-file coverages/coverage --source=catcli -m catcli.catcli"
1 year ago
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 -c --catalog="${catalog}" github .github
clean_catalog "${catalog}"
1 year ago
ls -laR .github
cat "${catalog}"
1 year ago
1 year ago
#cat "${catalog}"
1 year ago
echo ""
# compare keys
1 year ago
echo "[+] compare keys"
1 year ago
src="tests-ng/assets/github.catalog.json"
src_keys="${tmpd}/src-keys"
dst_keys="${tmpd}/dst-keys"
1 year ago
cat "${src}" | jq '.. | keys?' | jq '.[]' | sort > "${src_keys}"
cat "${catalog}" | jq '.. | keys?' | jq '.[]' | sort > "${dst_keys}"
1 year ago
echo "src:"
cat "${src_keys}"
echo "dst:"
cat "${dst_keys}"
1 year ago
diff "${src_keys}" "${dst_keys}"
1 year ago
echo "ok!"
1 year ago
1 year ago
# compare children 1
1 year ago
echo "[+] compare children 1"
1 year ago
src_keys="${tmpd}/src-child1"
dst_keys="${tmpd}/dst-child1"
1 year ago
cat "${src}" | jq '. | select(.type=="top") | .children | .[].name' | sort > "${src_keys}"
cat "${catalog}" | jq '. | select(.type=="top") | .children | .[].name' | sort > "${dst_keys}"
1 year ago
echo "src:"
cat "${src_keys}"
echo "dst:"
cat "${dst_keys}"
1 year ago
diff "${src_keys}" "${dst_keys}"
1 year ago
echo "ok!"
1 year ago
# compare children 2
1 year ago
echo "[+] compare children 2"
1 year ago
src_keys="${tmpd}/src-child2"
dst_keys="${tmpd}/dst-child2"
1 year ago
cat "${src}" | jq '. | select(.type=="top") | .children | .[] | select(.name=="github") | .children | .[].name' | sort > "${src_keys}"
cat "${catalog}" | jq '. | select(.type=="top") | .children | .[] | select(.name=="github") | .children | .[].name' | sort > "${dst_keys}"
1 year ago
echo "src:"
cat "${src_keys}"
echo "dst:"
cat "${dst_keys}"
1 year ago
diff "${src_keys}" "${dst_keys}"
1 year ago
echo "ok!"
1 year ago
# compare children 3
1 year ago
echo "[+] compare children 3"
1 year ago
src_keys="${tmpd}/src-child3"
dst_keys="${tmpd}/dst-child3"
1 year ago
cat "${src}" | jq '. | select(.type=="top") | .children | .[] | select(.name=="github") | .children | .[] | select(.name=="workflows") | .children | .[].name' | sort > "${src_keys}"
cat "${catalog}" | jq '. | select(.type=="top") | .children | .[] | select(.name=="github") | .children | .[] | select(.name=="workflows") | .children | .[].name' | sort > "${dst_keys}"
1 year ago
echo "src:"
cat "${src_keys}"
echo "dst:"
cat "${dst_keys}"
1 year ago
diff "${src_keys}" "${dst_keys}"
1 year ago
echo "ok!"
1 year ago
1 year ago
# native
1 year ago
echo "[+] compare native output"
1 year ago
native="${tmpd}/native.txt"
${bin} -B ls -s -r --format=native --catalog="${catalog}" > "${native}"
1 year ago
mod="${tmpd}/native.mod.txt"
cat "${native}" | sed -e 's/free:.*%/free:0.0%/g' \
4 months ago
-e 's/....-..-.. ..:..:../2023-03-09 16:20:59/g' \
1 year ago
-e 's#du:[^|]* |#du:0/0 |#g' > "${mod}"
1 year ago
if command -v delta >/dev/null; then
1 year ago
delta -s "tests-ng/assets/github.catalog.native.txt" "${mod}"
fi
1 year ago
diff --color=always "tests-ng/assets/github.catalog.native.txt" "${mod}"
1 year ago
echo "ok!"
1 year ago
# csv
1 year ago
echo "[+] compare csv output"
1 year ago
csv="${tmpd}/csv.txt"
${bin} -B ls -s -r --format=csv --catalog="${catalog}" > "${csv}"
1 year ago
# modify created csv
1 year ago
mod="${tmpd}/csv.mod.txt"
5 months ago
cat "${csv}" | \
sed -e 's/"3","[^"]*","[^"]*",""/"3","0","0",""/g' | \
1 year ago
sed 's/20..-..-.. ..:..:..//g' > "${mod}"
1 year ago
# modify original
1 year ago
ori="${tmpd}/ori.mod.txt"
cat "tests-ng/assets/github.catalog.csv.txt" | \
1 year ago
sed 's/....-..-.. ..:..:..//g' | \
5 months ago
sed 's/"3","[^"]*","[^"]*",""/"3","0","0",""/g' > "${ori}"
1 year ago
if command -v delta >/dev/null; then
1 year ago
delta -s "${ori}" "${mod}"
fi
diff "${ori}" "${mod}"
1 year ago
echo "ok!"
1 year ago
# the end
echo "test \"$(basename "$0")\" success"
cd "${cur}"
exit 0