From f44173b57852775c671c9db866e398e758a524a8 Mon Sep 17 00:00:00 2001 From: Eric F Date: Mon, 23 Nov 2020 09:51:24 +0100 Subject: [PATCH] =?utf8?q?Mise=20=C3=A0=20jour=20des=20Makefiles=20de=20te?= =?utf8?q?st=20/=20Makefike=20Vimmp=20:=20Meilleur=20gestion=20des=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Tests/MappingAccasXsd/Ambiguite/GNUmakefile | 65 +++++++++++------- Tests/MappingAccasXsd/GNUmakefile | 63 ++++++++++------- .../MappingAccasXsd/MultipleCata/GNUmakefile | 67 ++++++++++++------- 3 files changed, 118 insertions(+), 77 deletions(-) diff --git a/Tests/MappingAccasXsd/Ambiguite/GNUmakefile b/Tests/MappingAccasXsd/Ambiguite/GNUmakefile index 36f646ef..56707baf 100644 --- a/Tests/MappingAccasXsd/Ambiguite/GNUmakefile +++ b/Tests/MappingAccasXsd/Ambiguite/GNUmakefile @@ -68,10 +68,8 @@ xsdAll: $(xsd_files) driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) # qtEficasSlm.sh -#driverAll: cata_blocs_En_Cascade_driver.py cata_Ambigu_1_Commun_genere.py cata_Ambigu_2_Commun_genere.py cataSimpMemeNomTypesDifferents_genere.py - -#$(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \ +# Exemple PyxB : $(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \ # L'utilisation de $? ne fonctionne pas si l'on ne modifie qu'un seul catalogue car il liste uniquement les fichiers modifiés et pyxb détecte # que l'autre fichier en dépend et qu'il n'a pas été regénéré en même temps: $^ .py.xsd: @@ -81,9 +79,36 @@ driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) $(PYXB) -m $(basename $@) -u $^ --write-for-customization xmllint --path $(confdir) --schema XMLSchema11_local.xsd --noout $^ -#Les Tools ont besoins d'un chemin absolu -.comm.xml: - $(tooldir)/generateXML.py -c $(realpath $(<:%.comm=%.py)) $< +#Les Tools eficas ont besoins d'un chemin absolu +#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare) +#_test_driver_$1.comm_test_driver_$1.xml: +# il faut les définir à part +define test_xml_rule = +%_test_driver_$1.xml : %_test_driver_$1.comm $$(realpath $$(*).py) + @echo -e "\n\n------ Generate xml test file $$(@) ------\n" + @[[ -f $$(*).py ]] || (echo "Le fichier catalogue $$(*).py est introuvable" && false) + $(tooldir)/generateXML.py -c $$(realpath $$(*).py) $$< +endef + + +#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare) +#_test_driver_$1.comm_test_driver_$1.py: +# il faut les définir à part +define test_driver_rule = +%_test_driver_$1.py : %_test_driver_$1.comm + @echo -e "\n\n------ Generate xml test driver $$(@) ------\n" + sed -e "s,@module@,$$(*)_driver,g" -e "s,@file@,$$(<:%.comm=%.xml),g" $$(confdir)/test_driver_subst.py > $$(@) && \ + chmod +x $$(<:%.comm=%.py); +endef + +#Définition des règles de construction pour les tests +#$(eval $(call test_driver_rule,0)) +#$(eval $(call test_driver_rule,1)) +$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_xml_rule,$(it))) ) +$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_driver_rule,$(it))) ) + +test_driver_xml:= $(patsubst %.comm,%.xml,$(wildcard *_test_driver_?.comm)) +test_driver_py:= $(patsubst %.comm,%.py,$(wildcard *_test_driver_?.comm)) # xml: # @echo "Reminder: a .comm file is needed for this step" @@ -91,25 +116,15 @@ driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) check test: testAll -#Génération d'un .py de test par .xml de référence -#TODO : Améliorer la génération pour ne pas regénérer inutilement les drivers, utilser plus les règles Makefiles... -#TODO : Gestion ds un build séparé du srcdir -testGen: $(confdir)/test_driver_subst.py - for i in `ls *_test_driver_?.comm`; \ - do \ - $(tooldir)/generateXML.py -c $$PWD/$${i/_test_driver_?.comm/.py} $${i} && \ - sed -e "s,@module@,$${i/_test_driver_?.comm/}_driver,g" -e "s,@file@,$${i/.comm/.xml},g" $(confdir)/test_driver_subst.py > $${i/comm/py} && \ - chmod +x $${i/comm/py};\ - done - -#Lancement de chaque test ds l'environement minimal -testAll: testGen exec.sh driverAll - for i in `ls *_test_driver*.py` ; do ./exec.sh python $$i ; done - -#multiple target avec règle non possible. -#Ecrire une génération avec un define -# $(wildcard *_test_driver_?.xml) : test_driver.py -# do sed -e "s,@module@,${@:%_test_driver=%_driver},g" -e 's,@file@,$@,g' test_driver.py > ${@:%.xml=%.py}; done +################# REGLES DE TESTS ######################## + +testAll: exec.sh driverAll $(test_driver_py) $(test_driver_xml) + echo $(test_driver_xml) + echo $(test_driver_py) + for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i ; done +# for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i || break ; done + +################# REGLES DE NETTOYAGE ######################## clean: rm -f *.pyc *~ qtEficasSlm.sh exec.sh environ.sh diff --git a/Tests/MappingAccasXsd/GNUmakefile b/Tests/MappingAccasXsd/GNUmakefile index 38a5e7b3..340aa09b 100644 --- a/Tests/MappingAccasXsd/GNUmakefile +++ b/Tests/MappingAccasXsd/GNUmakefile @@ -18,7 +18,7 @@ tooldir=$(srcdir)/Tools # Règle en tête de Makefile all: driverAll -############# ENVIRONEMENT DE CONSTRUCTION VIMMP Traning ################ +######### ENVIRONEMENT DE CONSTRUCTION VIMMP Traning / Local ############ ifeq ($(findstring vimmp,$dir($(realpath GNUmakefile))),vimmp) include $(confdir)/GNUmakefile.mdm @@ -51,10 +51,8 @@ xsdAll: $(xsd_files) driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) # qtEficasSlm.sh -#driverAll: cata_blocs_En_Cascade_driver.py cata_Ambigu_1_Commun_genere.py cata_Ambigu_2_Commun_genere.py cataSimpMemeNomTypesDifferents_genere.py - -#$(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \ +# Exemple PyxB : $(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \ # L'utilisation de $? ne fonctionne pas si l'on ne modifie qu'un seul catalogue car il liste uniquement les fichiers modifiés et pyxb détecte # que l'autre fichier en dépend et qu'il n'a pas été regénéré en même temps: $^ .py.xsd: @@ -64,9 +62,36 @@ driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) $(PYXB) -m $(basename $@) -u $^ --write-for-customization xmllint --path $(confdir) --schema XMLSchema11_local.xsd --noout $^ -#Les Tools ont besoins d'un chemin absolu -.comm.xml: - $(tooldir)/generateXML.py -c $(realpath $(<:%.comm=%.py)) $< +#Les Tools eficas ont besoins d'un chemin absolu +#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare) +#_test_driver_$1.comm_test_driver_$1.xml: +# il faut les définir à part +define test_xml_rule = +%_test_driver_$1.xml : %_test_driver_$1.comm $$(realpath $$(*).py) + @echo -e "\n\n------ Generate xml test file $$(@) ------\n" + @[[ -f $$(*).py ]] || (echo "Le fichier catalogue $$(*).py est introuvable" && false) + $(tooldir)/generateXML.py -c $$(realpath $$(*).py) $$< +endef + + +#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare) +#_test_driver_$1.comm_test_driver_$1.py: +# il faut les définir à part +define test_driver_rule = +%_test_driver_$1.py : %_test_driver_$1.comm + @echo -e "\n\n------ Generate xml test driver $$(@) ------\n" + sed -e "s,@module@,$$(*)_driver,g" -e "s,@file@,$$(<:%.comm=%.xml),g" $$(confdir)/test_driver_subst.py > $$(@) && \ + chmod +x $$(<:%.comm=%.py); +endef + +#Définition des règles de construction pour les tests +#$(eval $(call test_driver_rule,0)) +#$(eval $(call test_driver_rule,1)) +$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_xml_rule,$(it))) ) +$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_driver_rule,$(it))) ) + +test_driver_xml:= $(patsubst %.comm,%.xml,$(wildcard *_test_driver_?.comm)) +test_driver_py:= $(patsubst %.comm,%.py,$(wildcard *_test_driver_?.comm)) # xml: # @echo "Reminder: a .comm file is needed for this step" @@ -76,25 +101,11 @@ check test: testAll ################# REGLES DE TESTS ######################## -#Génération d'un .py de test par .xml de référence -#TODO : Améliorer la génération pour ne pas regénérer inutilement les drivers, utilser plus les règles Makefiles... -#TODO : Gestion ds un build séparé du srcdir -testGen: $(confdir)/test_driver_subst.py - for i in `ls *_test_driver_?.comm`; \ - do \ - $(tooldir)/generateXML.py -c $$PWD/$${i/_test_driver_?.comm/.py} $${i} && \ - sed -e "s,@module@,$${i/_test_driver_?.comm/}_driver,g" -e "s,@file@,$${i/.comm/.xml},g" $(confdir)/test_driver_subst.py > $${i/comm/py} && \ - chmod +x $${i/comm/py};\ - done - -#Lancement de chaque test ds l'environement minimal -testAll: testGen exec.sh driverAll - for i in `ls *_test_driver*.py` ; do echo "------ Launching $$i ------" && ./exec.sh python $$i ; done - -#multiple target avec règle non possible. -#Ecrire une génération avec un define -# $(wildcard *_test_driver_?.xml) : test_driver.py -# do sed -e "s,@module@,${@:%_test_driver=%_driver},g" -e 's,@file@,$@,g' test_driver.py > ${@:%.xml=%.py}; done +testAll: exec.sh driverAll $(test_driver_py) $(test_driver_xml) + echo $(test_driver_xml) + echo $(test_driver_py) + for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i ; done +# for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i || break ; done ################# REGLES DE NETTOYAGE ######################## diff --git a/Tests/MappingAccasXsd/MultipleCata/GNUmakefile b/Tests/MappingAccasXsd/MultipleCata/GNUmakefile index e757db5d..05ffcc5f 100644 --- a/Tests/MappingAccasXsd/MultipleCata/GNUmakefile +++ b/Tests/MappingAccasXsd/MultipleCata/GNUmakefile @@ -18,7 +18,7 @@ tooldir=$(srcdir)/Tools # Règle en tête de Makefile all: driverAll -############# ENVIRONEMENT DE CONSTRUCTION VIMMP Traning ################ +######### ENVIRONEMENT DE CONSTRUCTION VIMMP Traning / Local ############ ifeq ($(findstring vimmp,$dir($(realpath GNUmakefile))),vimmp) include $(confdir)/GNUmakefile.mdm @@ -60,10 +60,8 @@ xsdAll: $(xsd_files) driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) # qtEficasSlm.sh -#driverAll: cata_blocs_En_Cascade_driver.py cata_Ambigu_1_Commun_genere.py cata_Ambigu_2_Commun_genere.py cataSimpMemeNomTypesDifferents_genere.py - -#$(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \ +# Exemple PyxB : $(PYXB) -m $(basename $@) -u $< --location-prefix-rewrite http://chercheurs.edf.com/logiciels/vimmp= --write-for-customization \ # L'utilisation de $? ne fonctionne pas si l'on ne modifie qu'un seul catalogue car il liste uniquement les fichiers modifiés et pyxb détecte # que l'autre fichier en dépend et qu'il n'a pas été regénéré en même temps: $^ .py.xsd: @@ -73,9 +71,36 @@ driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) $(PYXB) -m $(basename $@) -u $^ --write-for-customization xmllint --path $(confdir) --schema XMLSchema11_local.xsd --noout $^ -#Les Tools ont besoins d'un chemin absolu -.comm.xml: - $(tooldir)/generateXML.py -c $(realpath $(<:%.comm=%.py)) $< +#Les Tools eficas ont besoins d'un chemin absolu +#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare) +#_test_driver_$1.comm_test_driver_$1.xml: +# il faut les définir à part +define test_xml_rule = +%_test_driver_$1.xml : %_test_driver_$1.comm $$(realpath $$(*).py) + @echo -e "\n\n------ Generate xml test file $$(@) ------\n" + @[[ -f $$(*).py ]] || (echo "Le fichier catalogue $$(*).py est introuvable" && false) + $(tooldir)/generateXML.py -c $$(realpath $$(*).py) $$< +endef + + +#ATTENTION : La .sufix rule n'autorise pas les dépendances après le : (sinon la ligne entière est un nom de fichier bizzare) +#_test_driver_$1.comm_test_driver_$1.py: +# il faut les définir à part +define test_driver_rule = +%_test_driver_$1.py : %_test_driver_$1.comm + @echo -e "\n\n------ Generate xml test driver $$(@) ------\n" + sed -e "s,@module@,$$(*)_driver,g" -e "s,@file@,$$(<:%.comm=%.xml),g" $$(confdir)/test_driver_subst.py > $$(@) && \ + chmod +x $$(<:%.comm=%.py); +endef + +#Définition des règles de construction pour les tests +#$(eval $(call test_driver_rule,0)) +#$(eval $(call test_driver_rule,1)) +$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_xml_rule,$(it))) ) +$(foreach it,0 1 2 3 4 5 6 7 8 9, $(eval $(call test_driver_rule,$(it))) ) + +test_driver_xml:= $(patsubst %.comm,%.xml,$(wildcard *_test_driver_?.comm)) +test_driver_py:= $(patsubst %.comm,%.py,$(wildcard *_test_driver_?.comm)) # xml: # @echo "Reminder: a .comm file is needed for this step" @@ -83,25 +108,15 @@ driverAll: exec.sh environ.sh qtEficas.sh $(driver_files) check test: testAll -#Génération d'un .py de test par .xml de référence -#TODO : Améliorer la génération pour ne pas regénérer inutilement les drivers, utilser plus les règles Makefiles... -#TODO : Gestion ds un build séparé du srcdir -testGen: $(confdir)/test_driver_subst.py - for i in `ls *_test_driver_?.comm`; \ - do \ - $(tooldir)/generateXML.py -c $$PWD/$${i/_test_driver_?.comm/.py} $${i} && \ - sed -e "s,@module@,$${i/_test_driver_?.comm/}_driver,g" -e "s,@file@,$${i/.comm/.xml},g" $(confdir)/test_driver_subst.py > $${i/comm/py} && \ - chmod +x $${i/comm/py};\ - done - -#Lancement de chaque test ds l'environement minimal -testAll: testGen exec.sh driverAll - for i in `ls *_test_driver*.py` ; do ./exec.sh python $$i ; done - -#multiple target avec règle non possible. -#Ecrire une génération avec un define -# $(wildcard *_test_driver_?.xml) : test_driver.py -# do sed -e "s,@module@,${@:%_test_driver=%_driver},g" -e 's,@file@,$@,g' test_driver.py > ${@:%.xml=%.py}; done +################# REGLES DE TESTS ######################## + +testAll: exec.sh driverAll $(test_driver_py) $(test_driver_xml) + echo $(test_driver_xml) + echo $(test_driver_py) + for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i ; done +# for i in `ls *_test_driver*.py` ; do echo -e "\n\n------ Launching $$i ------" && ./exec.sh python $$i || break ; done + +################# REGLES DE NETTOYAGE ######################## clean: rm -f *.pyc *~ qtEficasSlm.sh exec.sh environ.sh -- 2.39.2