gelinive

Créer des profils du manteau neigeux - retour accueil

git clone git://bebou.netlib.re/gelinive
Log | Files | Refs | README |

commit 417ef5a02b32e6c43e3c9c22d9316b449e2fa996
parent 44edc1772dd4b5ade4e32fc6047dfa2abb01a872
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Mon, 11 Mar 2024 21:26:15 +0100

Correction du système de test et de l'installation

Avant :

Le script gelinive appelé dans le dossier de dev appellait geliniveplot,
la commande installée dans le path (geliniveplot au lieu de
./geliniveplot).
Il était donc impossible de tester sans avoir fait une installation
avant. Je ne m'en suis pas rendu compte parce qu'au cours du dev j'avais
fait plusieurs make install. C'est en implémentant le uninstall que j'ai
réalisé que make test allait toujours être en échec parce qu'impossible
de trouver la commande geliniveplot.

Il faut donc un moyen pour le gelinive testée dans le dossier de dev
d'appeler le geliniveplot du dossier de dev et que le gelinive à
l'installation d'appeler le geliniveplot installé.

Après :

Le gelinive de dev est renommé et lorsque l'on fait make le gelinive
d'install est créé en modifiant l'appel à geliniveplot (./geliniveplot
-> geliniveplot).

Je sais pas si c'est satisfaisant. Après c'est une sorte de
transpilation/compilation donc c'est pas plus choquant que ça non ?

Diffstat:
M.gitignore | 2+-
MREADME.md | 6++++--
Dgelinive | 57---------------------------------------------------------
Agelinivetest | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mmakefile | 5++++-
Mtests/test | 2+-
6 files changed, 67 insertions(+), 62 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,6 +1,6 @@ * !*/ -!gelinive +!gelinivetest !mail !makefile !.gitignore diff --git a/README.md b/README.md @@ -25,8 +25,9 @@ Pour tester le logiciel faire make test -Si les tests passent alors on peut installer : +Si les tests passent alors on peut construire et installer : + make make install Gelinive a été développé et testé sur debian 12. @@ -56,7 +57,8 @@ de la commande et le manuel du format : ## Les fichiers - * gelinive : le script que calcule R, e, éventuellement les sauve puis génère l'image + * gelinivetest : le script depuis lequel le script final est généré. Il calculera R, e, + éventuellement les sauvera puis génèrera l'image * geliniveplot : le script gnuplot qui génère l'image * mail : le mail initiant la demande * makefile : le makefile pour générer le manuel, lancer les tests et diff --git a/gelinive b/gelinive @@ -1,57 +0,0 @@ -#! /bin/sh - -if [ "$1" = "-h" -o "$1" = "--help" ] -then -<<. cat -Utilisation : [< fichier_entrée] gelinive [fichier_intermédiaire] - -Si `< fichier` est omis alors gelinive lira dans stdin. Autrement dit dans la -majorité des cas vous pourrez entrer les données au clavier. - -`fichier_intermédiaire` est le chemin du fichier à créer contenant les données -d'entrée complétées de l'enfoncement après n coups et de la résistance au -battage . Cet argument est optionel, s'il n'existe pas aucun fichier ne sera -créé. -. -exit 0 -fi - -calc_Re() { -awk -F'\t' '{ if($7=="0"){ print "print \"/\n\"" } else { printf "(%s*%s)/%s+%s+%s\n", $3, $4, $7, $1, $2 } }' | -bc -l | -cut -d'.' -f1 -} - -diffcol() { -awk -v col=${1:-1} ' -BEGIN { getline; prevcol=$col; print prevcol } -{print $col-prevcol;prevcol=$col} -' -} - -makehistodata() { -sed '$ a\ -0 0 0 0 0 0 0 0 -2,$ p' | -awk '{ - hcur=$6;dcur=$8 - getline - hnext=$6;dnext=$8 - for(i=hcur;i>hnext;i--) {print i" "dcur} -}' | -tr '/' '1' -} - -tempdir=$(mktemp -d);trap "rm -rf $tempdir" EXIT - -cat > $tempdir/in -< $tempdir/in diffcol 5 | - paste $tempdir/in - > $tempdir/temp -< $tempdir/temp calc_Re | - paste $tempdir/temp - | - tee "$1" 2> /dev/null | - makehistodata | - tac | - geliniveplot | - convert - -rotate -90 - - diff --git a/gelinivetest b/gelinivetest @@ -0,0 +1,57 @@ +#! /bin/sh + +if [ "$1" = "-h" -o "$1" = "--help" ] +then +<<. cat +Utilisation : [< fichier_entrée] gelinive [fichier_intermédiaire] + +Si `< fichier` est omis alors gelinive lira dans stdin. Autrement dit dans la +majorité des cas vous pourrez entrer les données au clavier. + +`fichier_intermédiaire` est le chemin du fichier à créer contenant les données +d'entrée complétées de l'enfoncement après n coups et de la résistance au +battage . Cet argument est optionel, s'il n'existe pas aucun fichier ne sera +créé. +. +exit 0 +fi + +calc_Re() { +awk -F'\t' '{ if($7=="0"){ print "print \"/\n\"" } else { printf "(%s*%s)/%s+%s+%s\n", $3, $4, $7, $1, $2 } }' | +bc -l | +cut -d'.' -f1 +} + +diffcol() { +awk -v col=${1:-1} ' +BEGIN { getline; prevcol=$col; print prevcol } +{print $col-prevcol;prevcol=$col} +' +} + +makehistodata() { +sed '$ a\ +0 0 0 0 0 0 0 0 +2,$ p' | +awk '{ + hcur=$6;dcur=$8 + getline + hnext=$6;dnext=$8 + for(i=hcur;i>hnext;i--) {print i" "dcur} +}' | +tr '/' '1' +} + +tempdir=$(mktemp -d);trap "rm -rf $tempdir" EXIT + +cat > $tempdir/in +< $tempdir/in diffcol 5 | + paste $tempdir/in - > $tempdir/temp +< $tempdir/temp calc_Re | + paste $tempdir/temp - | + tee "$1" 2> /dev/null | + makehistodata | + tac | + ./geliniveplot | + convert - -rotate -90 - + diff --git a/makefile b/makefile @@ -1,9 +1,12 @@ PREFIX = /usr/local -all: +all: gelinive test:;tests/test +gelinive: gelinivetest + sed 's,./geliniveplot,geliniveplot,' $< > $@ + install: mkdir -p ${PREFIX}/bin cp gelinive ${PREFIX}/bin diff --git a/tests/test b/tests/test @@ -13,7 +13,7 @@ echo "Launching test" for file in data do printf "Testing file $file | " -< tests/$file ./gelinive $tempdir/intermediaire$file > $tempdir/$file.png +< tests/$file ./gelinivetest $tempdir/intermediaire$file > $tempdir/$file.png printf "inter " cmp --silent tests/intermediaire$file $tempdir/intermediaire$file && pass || fail printf " image "