From 3934d2854d1b8ac73b47b3bf6e73988cd96fa81d Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Sat, 4 Mar 2023 21:08:11 +0100 Subject: [PATCH] Add scripts for smoke test --- .gitattributes | 2 ++ .gitignore | 1 + examples/generate.sh | 21 --------------- scripts/clean_svg.sh | 24 +++++++++++++++++ scripts/gen_compare.sh | 56 +++++++++++++++++++++++++++++++++++++++ scripts/gen_data.sh | 37 ++++++++++++++++++++++++++ scripts/gen_examples.sh | 18 +++++++++++++ scripts/run_smoke_test.sh | 27 +++++++++++++++++++ 8 files changed, 165 insertions(+), 21 deletions(-) delete mode 100755 examples/generate.sh create mode 100644 scripts/clean_svg.sh create mode 100644 scripts/gen_compare.sh create mode 100644 scripts/gen_data.sh create mode 100644 scripts/gen_examples.sh create mode 100644 scripts/run_smoke_test.sh diff --git a/.gitattributes b/.gitattributes index d9bd16b..f45a817 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,3 @@ *.py text eol=lf +*.sh text eol=lf +*.svg text eol=lf diff --git a/.gitignore b/.gitignore index 9e7f631..7b1e9a9 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ documentation/src/generators.inc *.ipynb_checkpoints venv/ .vscode/ +test_data/ diff --git a/examples/generate.sh b/examples/generate.sh deleted file mode 100755 index 73e7110..0000000 --- a/examples/generate.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -BOXES=../scripts/boxes - -set -x -$BOXES closedbox --x=50 --y=50 --h=70 --output=closedbox.svg -$BOXES hingebox --x=50 --y=50 --h=70 --output=hingebox.svg -$BOXES castle --output=castle.svg -$BOXES drillbox --output=drillbox.svg -$BOXES flexbox --x=70 --y=100 --h=50 --radius=20 --output=flexbox.svg -$BOXES flexbox2 --x=70 --y=100 --h=50 --radius=20 --output=flexbox2.svg -$BOXES flexbox3 --x=70 --y=100 --z=50 --h=8 --radius=30 --output=flexbox3.svg -$BOXES folder --x=165 --y=240 --h=20 --r=10 --output=folder.svg -#$BOXES lamp --x=50 --y=50 --r=10 --output=lamp.svg -$BOXES magazinefile --output=magazinefile.svg -#$BOXES printer --output=printer.svg -#$BOXES Silverwaree --output=silverwarebox.svg -#$BOXES traylayout --x=4 --y=4 --output=traylayout.txt -$BOXES traylayout2 --input=traylayout.txt --h=50 --hi=40 --output=traylayout.svg -$BOXES trayinsert --sx=70:100:70 --sy=100*3 --h=50 --output=trayinsert.svg -$BOXES typetray --sx=70:100:70 --sy=100*3 --h=60 --hi=50 --output=typetray.svg diff --git a/scripts/clean_svg.sh b/scripts/clean_svg.sh new file mode 100644 index 0000000..5719699 --- /dev/null +++ b/scripts/clean_svg.sh @@ -0,0 +1,24 @@ +#!/bin/bash +echo "Clean data by removing metadata." + +if [[ $# -ne 1 ]]; then + echo "Usage: {folder}" + exit 1 +fi + +if [[ -n $1 ]]; then + FILES=$1 +fi +if ! [[ -d $FILES ]]; then + echo "This folder does not exists: $FILES" + exit 1 +fi + +echo "Start cleaning folder: $FILES" +for f in "$FILES"/* +do + echo "Clean: $f" + ## Remove changing lines. + grep -v -E "(||Creation date|Command line)" "$f" > "$f.tmp" && mv -f "$f.tmp" "$f" +done +echo "Finished cleaning folder." diff --git a/scripts/gen_compare.sh b/scripts/gen_compare.sh new file mode 100644 index 0000000..aa680b2 --- /dev/null +++ b/scripts/gen_compare.sh @@ -0,0 +1,56 @@ +#!/bin/bash +echo "Compares files in two folders." + +if [[ $# -ne 2 ]]; then + echo "Usage: {folder_reference} {folder_comparison}" + exit 1 +fi + +if [[ -n $1 ]]; then + FILES1=$1 +fi +if [[ -n $2 ]]; then + FILES2=$2 +fi + +if ! [[ -d $FILES1 ]]; then + echo "This folder does not exists: $FILES1" + exit 1 +fi +if ! [[ -d $FILES2 ]]; then + echo "This folder does not exists: $FILES2" + exit 1 +fi + +echo "Start comparing folders." +echo "Reference: $FILES1" +echo "Comparison: $FILES2" + +ERROR=false + +for f in "$FILES1"/*; do + FILENAME="$(basename -- "$f")" + echo "Compare: $FILENAME" + f2="$FILES2"/"$FILENAME" + if ! [[ -f $f ]]; then + echo "This file does not exists: $f" + exit 1 + fi + if ! [[ -f $f2 ]]; then + echo "This file does not exists: $f2" + exit 1 + fi + # if cmp --silent -- "$f" "$f2"; then # Problems with line endings. + if diff -q --strip-trailing-cr -- "$f" "$f2"; then + echo "[OK] files equal." + else + echo "[ERROR] files differ." + diff --strip-trailing-cr -- "$f" "$f2" + ERROR=true + fi +done + +if [ "$ERROR" == true ]; then + echo "[ERROR] At least one error has occurred." + exit 1 +fi diff --git a/scripts/gen_data.sh b/scripts/gen_data.sh new file mode 100644 index 0000000..3771fed --- /dev/null +++ b/scripts/gen_data.sh @@ -0,0 +1,37 @@ +#!/bin/bash +echo "Generate data." + +if [[ $# -ne 1 ]]; then + echo "Usage: {folder}" + exit 1 +fi + +if [[ -n $1 ]]; then + OUT=$1 +fi + +echo "Target folder: ${OUT}" +if ! [[ -d $OUT ]]; then + echo "This folder does not exists! Create folder." + mkdir "$OUT" +fi + +DIR=$(dirname -- "$0") +BOXES="$DIR"/boxes + +set -x +$BOXES castle --output="${OUT}"/castle.svg +$BOXES closedbox --x=50 --y=50 --h=70 --output="${OUT}"/closedbox.svg +$BOXES drillbox --output="${OUT}"/drillbox.svg +$BOXES flexbox --x=70 --y=100 --h=50 --radius=20 --output="${OUT}"/flexbox.svg +$BOXES flexbox2 --x=70 --y=100 --h=50 --radius=20 --output="${OUT}"/flexbox2.svg +$BOXES flexbox3 --x=70 --y=100 --z=50 --h=8 --radius=30 --output="${OUT}"/flexbox3.svg +$BOXES folder --x=165 --y=240 --h=20 --output="${OUT}"/folder.svg +$BOXES hingebox --x=50 --y=50 --h=70 --output="${OUT}"/hingebox.svg +$BOXES lamp --x=50 --y=50 --radius=10 --output="${OUT}"/lamp.svg +$BOXES magazinefile --output="${OUT}"/magazinefile.svg +$BOXES silverware --output="${OUT}"/silverware.svg +$BOXES trayinsert --sx=70:100:70 --sy=100*3 --h=50 --output="${OUT}"/trayinsert.svg +$BOXES traylayout --sx=10*5 --sy=10*5 --output="${OUT}"/traylayout.txt +$BOXES traylayout2 --input="${OUT}"/traylayout.txt --h=50 --hi=40 --output="${OUT}"/traylayout2.svg +$BOXES typetray --sx=70:100:70 --sy=100*3 --h=60 --hi=50 --output="${OUT}"/typetray.svg diff --git a/scripts/gen_examples.sh b/scripts/gen_examples.sh new file mode 100644 index 0000000..ac56e46 --- /dev/null +++ b/scripts/gen_examples.sh @@ -0,0 +1,18 @@ +#!/bin/bash +echo "Generate cleaned example data." + +if [[ $# -ne 1 ]]; then + echo "Usage: {folder}" + exit 1 +fi + +if [[ -n $1 ]]; then + OUT=$1 +fi + +DIR=$(dirname -- "$0") + +# Generate data. +bash "$DIR"/gen_data.sh "$OUT" +# Clean meta data. +bash "$DIR"/clean_svg.sh "$OUT" diff --git a/scripts/run_smoke_test.sh b/scripts/run_smoke_test.sh new file mode 100644 index 0000000..c9a534f --- /dev/null +++ b/scripts/run_smoke_test.sh @@ -0,0 +1,27 @@ +#!/bin/bash +echo "Generate current data and compare against reference data." + +if [[ $# -ne 2 ]]; then + echo "Usage: {folder_reference} {folder_comparison}" + exit 1 +fi + +if [[ -n $1 ]]; then + FILES1=$1 +fi +if [[ -n $2 ]]; then + FILES2=$2 +fi +if ! [[ -d $FILES1 ]]; then + echo "This folder does not exists: $FILES1" + exit 1 +fi + +DIR=$(dirname -- "$0") + +# Generate current data. +bash "$DIR"/gen_examples.sh "$FILES2" +# For sanity clean reference data. +bash "$DIR"/clean_svg.sh "$FILES1" +# Do the test. +bash "$DIR"/gen_compare.sh "$FILES1" "$FILES2"