diff --git a/index.php b/index.php
index ca68e8879f91308496fb50bf3a98d72727dfdb07..a98033efca7cb2e7aed0e486fb3708988c04b845 100644
--- a/index.php
+++ b/index.php
@@ -11,7 +11,7 @@
 	spip_unlink(_DIR_TMP."testrunner.log");
 
 	// chercher les bases de tests
-	$bases = array('tests');
+	$bases = array('tests/unit');
 	foreach (creer_chemin() as $d) {
 		if ($d && @is_dir("${d}tests"))
 			$bases[] = "${d}tests";
@@ -53,8 +53,7 @@
 		    //ignorer le contenu du jeu de squelettes dédié aux tests
 		    if (stristr($test,'squelettes/'))
 		        continue;
-				if (stristr($test,'simpletest/'))
-		        continue;
+
 		    //ignorer le contenu des donnees de test
 		    if (stristr($test,'data/'))
 		        continue;
diff --git a/balises/autoriser.html b/unit/balises/autoriser.html
similarity index 100%
rename from balises/autoriser.html
rename to unit/balises/autoriser.html
diff --git a/balises/balise_dyn_langue.html b/unit/balises/balise_dyn_langue.html
similarity index 100%
rename from balises/balise_dyn_langue.html
rename to unit/balises/balise_dyn_langue.html
diff --git a/balises/balise_dyn_langue_fonctions.php b/unit/balises/balise_dyn_langue_fonctions.php
similarity index 100%
rename from balises/balise_dyn_langue_fonctions.php
rename to unit/balises/balise_dyn_langue_fonctions.php
diff --git a/balises/balise_dyn_langue_modele.html b/unit/balises/balise_dyn_langue_modele.html
similarity index 100%
rename from balises/balise_dyn_langue_modele.html
rename to unit/balises/balise_dyn_langue_modele.html
diff --git a/balises/balise_dyn_langue_modele_fonctions.php b/unit/balises/balise_dyn_langue_modele_fonctions.php
similarity index 100%
rename from balises/balise_dyn_langue_modele_fonctions.php
rename to unit/balises/balise_dyn_langue_modele_fonctions.php
diff --git a/balises/config.html b/unit/balises/config.html
similarity index 100%
rename from balises/config.html
rename to unit/balises/config.html
diff --git a/balises/config_fonctions.php b/unit/balises/config_fonctions.php
similarity index 100%
rename from balises/config_fonctions.php
rename to unit/balises/config_fonctions.php
diff --git a/balises/doublons.html b/unit/balises/doublons.html
similarity index 100%
rename from balises/doublons.html
rename to unit/balises/doublons.html
diff --git a/balises/expose.html b/unit/balises/expose.html
similarity index 100%
rename from balises/expose.html
rename to unit/balises/expose.html
diff --git a/balises/filtre.html b/unit/balises/filtre.html
similarity index 100%
rename from balises/filtre.html
rename to unit/balises/filtre.html
diff --git a/balises/filtre_fonctions.php b/unit/balises/filtre_fonctions.php
similarity index 100%
rename from balises/filtre_fonctions.php
rename to unit/balises/filtre_fonctions.php
diff --git a/balises/formulaire_.html b/unit/balises/formulaire_.html
similarity index 100%
rename from balises/formulaire_.html
rename to unit/balises/formulaire_.html
diff --git a/balises/formulaire__fonctions.php b/unit/balises/formulaire__fonctions.php
similarity index 100%
rename from balises/formulaire__fonctions.php
rename to unit/balises/formulaire__fonctions.php
diff --git a/balises/inclure_array.html b/unit/balises/inclure_array.html
similarity index 100%
rename from balises/inclure_array.html
rename to unit/balises/inclure_array.html
diff --git a/balises/inclure_manquant.html b/unit/balises/inclure_manquant.html
similarity index 100%
rename from balises/inclure_manquant.html
rename to unit/balises/inclure_manquant.html
diff --git a/balises/inclure_manquant_fonctions.php b/unit/balises/inclure_manquant_fonctions.php
similarity index 100%
rename from balises/inclure_manquant_fonctions.php
rename to unit/balises/inclure_manquant_fonctions.php
diff --git a/balises/inclus_article.html b/unit/balises/inclus_article.html
similarity index 100%
rename from balises/inclus_article.html
rename to unit/balises/inclus_article.html
diff --git a/balises/inclus_expose.html b/unit/balises/inclus_expose.html
similarity index 100%
rename from balises/inclus_expose.html
rename to unit/balises/inclus_expose.html
diff --git a/balises/inclus_rien.html b/unit/balises/inclus_rien.html
similarity index 100%
rename from balises/inclus_rien.html
rename to unit/balises/inclus_rien.html
diff --git a/balises/introduction.html b/unit/balises/introduction.html
similarity index 100%
rename from balises/introduction.html
rename to unit/balises/introduction.html
diff --git a/balises/introduction_fonctions.php b/unit/balises/introduction_fonctions.php
similarity index 100%
rename from balises/introduction_fonctions.php
rename to unit/balises/introduction_fonctions.php
diff --git a/balises/lesauteurs.html b/unit/balises/lesauteurs.html
similarity index 100%
rename from balises/lesauteurs.html
rename to unit/balises/lesauteurs.html
diff --git a/balises/mime_type.html b/unit/balises/mime_type.html
similarity index 100%
rename from balises/mime_type.html
rename to unit/balises/mime_type.html
diff --git a/balises/notes.html b/unit/balises/notes.html
similarity index 100%
rename from balises/notes.html
rename to unit/balises/notes.html
diff --git a/balises/phraseur_balise_dyn.html b/unit/balises/phraseur_balise_dyn.html
similarity index 100%
rename from balises/phraseur_balise_dyn.html
rename to unit/balises/phraseur_balise_dyn.html
diff --git a/balises/session.html b/unit/balises/session.html
similarity index 100%
rename from balises/session.html
rename to unit/balises/session.html
diff --git a/boucles/balise_detachee.html b/unit/boucles/balise_detachee.html
similarity index 100%
rename from boucles/balise_detachee.html
rename to unit/boucles/balise_detachee.html
diff --git a/boucles/boucle_vide.html b/unit/boucles/boucle_vide.html
similarity index 100%
rename from boucles/boucle_vide.html
rename to unit/boucles/boucle_vide.html
diff --git a/boucles/bug764.html b/unit/boucles/bug764.html
similarity index 100%
rename from boucles/bug764.html
rename to unit/boucles/bug764.html
diff --git a/boucles/doublons.html b/unit/boucles/doublons.html
similarity index 100%
rename from boucles/doublons.html
rename to unit/boucles/doublons.html
diff --git a/boucles/hierarchie.html b/unit/boucles/hierarchie.html
similarity index 100%
rename from boucles/hierarchie.html
rename to unit/boucles/hierarchie.html
diff --git a/config/depot_meta.php b/unit/config/depot_meta.php
similarity index 100%
rename from config/depot_meta.php
rename to unit/config/depot_meta.php
diff --git a/config/depot_meta_perso.php b/unit/config/depot_meta_perso.php
similarity index 100%
rename from config/depot_meta_perso.php
rename to unit/config/depot_meta_perso.php
diff --git a/config/depot_metapack.php b/unit/config/depot_metapack.php
similarity index 100%
rename from config/depot_metapack.php
rename to unit/config/depot_metapack.php
diff --git a/config/expliquer_config.php b/unit/config/expliquer_config.php
similarity index 100%
rename from config/expliquer_config.php
rename to unit/config/expliquer_config.php
diff --git a/connect_sql/id_table_objet.php b/unit/connect_sql/id_table_objet.php
similarity index 96%
rename from connect_sql/id_table_objet.php
rename to unit/connect_sql/id_table_objet.php
index 638f064b6d93be592d63bf4c7990e75117e103c7..49c13c866edad83caa07fcb7ef964d57ddd3f240 100644
--- a/connect_sql/id_table_objet.php
+++ b/unit/connect_sql/id_table_objet.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'id_table_objet';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("base/connect_sql.php",'',true);
 
 	//
diff --git a/connect_sql/objet_type.php b/unit/connect_sql/objet_type.php
similarity index 96%
rename from connect_sql/objet_type.php
rename to unit/connect_sql/objet_type.php
index 4f39891459730600e7a38ec1981034dc795a2aee..d03832fe92a71ba686aefb0408f293ce03664de0 100644
--- a/connect_sql/objet_type.php
+++ b/unit/connect_sql/objet_type.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'objet_type';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("base/connect_sql.php",'',true);
 
 	//
diff --git a/connect_sql/query_echappe_textes.php b/unit/connect_sql/query_echappe_textes.php
similarity index 94%
rename from connect_sql/query_echappe_textes.php
rename to unit/connect_sql/query_echappe_textes.php
index e07e81620da047eb5697f44ca483a3b1fb21f1ec..973b222cff962d1a89fd06da6d758b017465c7dc 100644
--- a/connect_sql/query_echappe_textes.php
+++ b/unit/connect_sql/query_echappe_textes.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'query_echappe_textes';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("base/connect_sql.php",'',true);
 
 	//
diff --git a/connect_sql/table_objet.php b/unit/connect_sql/table_objet.php
similarity index 96%
rename from connect_sql/table_objet.php
rename to unit/connect_sql/table_objet.php
index b1bd6947a8334432ebbb0387d7482931bab92c0f..eaa08082424eb7823506967f0888b3dbcf3495b6 100644
--- a/connect_sql/table_objet.php
+++ b/unit/connect_sql/table_objet.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'table_objet';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("base/connect_sql.php",'',true);
 
 	//
diff --git a/connect_sql/table_objet_sql.php b/unit/connect_sql/table_objet_sql.php
similarity index 96%
rename from connect_sql/table_objet_sql.php
rename to unit/connect_sql/table_objet_sql.php
index 86c20bedcb313b85f75abf59f87f83042e2ac5d9..726f951d304e64acfea241774f5c86d550f16127 100644
--- a/connect_sql/table_objet_sql.php
+++ b/unit/connect_sql/table_objet_sql.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'table_objet_sql';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("base/connect_sql.php",'',true);
 
 	//
diff --git a/criteres/branche.html b/unit/criteres/branche.html
similarity index 100%
rename from criteres/branche.html
rename to unit/criteres/branche.html
diff --git a/criteres/origine_traduction.html b/unit/criteres/origine_traduction.html
similarity index 100%
rename from criteres/origine_traduction.html
rename to unit/criteres/origine_traduction.html
diff --git a/criteres/regexp-like.html b/unit/criteres/regexp-like.html
similarity index 100%
rename from criteres/regexp-like.html
rename to unit/criteres/regexp-like.html
diff --git a/criteres/traduction.html b/unit/criteres/traduction.html
similarity index 100%
rename from criteres/traduction.html
rename to unit/criteres/traduction.html
diff --git a/documents/affichage_documents.html b/unit/documents/affichage_documents.html
similarity index 100%
rename from documents/affichage_documents.html
rename to unit/documents/affichage_documents.html
diff --git a/editer_liens/objet_associable.php b/unit/editer_liens/objet_associable.php
similarity index 88%
rename from editer_liens/objet_associable.php
rename to unit/editer_liens/objet_associable.php
index e1e6dac0337b3e06ad6ae43bd5f88c51f7c18a0a..b21e99954d062721159286bd4af8999e0d404fa3 100644
--- a/editer_liens/objet_associable.php
+++ b/unit/editer_liens/objet_associable.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'objet_associable';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("action/editer_liens.php",'',true);
 
 	//
diff --git a/editer_liens/objet_associer.php b/unit/editer_liens/objet_associer.php
similarity index 89%
rename from editer_liens/objet_associer.php
rename to unit/editer_liens/objet_associer.php
index d77fa00defa1499a666dc59dfcb12d0b05cf2ba5..244ce298a86a8e832ca6155f1ab1c8ad05f5b86f 100644
--- a/editer_liens/objet_associer.php
+++ b/unit/editer_liens/objet_associer.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'objet_associer';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("action/editer_liens.php",'',true);
 
 	//
diff --git a/editer_liens/objet_dissocier.php b/unit/editer_liens/objet_dissocier.php
similarity index 92%
rename from editer_liens/objet_dissocier.php
rename to unit/editer_liens/objet_dissocier.php
index 17e126d456b46dc2ff034b5e60a5f4be9a6c4bb9..882c7165d291fc3fe79c34b5db990f6c34bdb314 100644
--- a/editer_liens/objet_dissocier.php
+++ b/unit/editer_liens/objet_dissocier.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'objet_dissocier';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("action/editer_liens.php",'',true);
 
 	// creer les donnees de depart
diff --git a/editer_liens/objet_qualifier_liens.php b/unit/editer_liens/objet_qualifier_liens.php
similarity index 91%
rename from editer_liens/objet_qualifier_liens.php
rename to unit/editer_liens/objet_qualifier_liens.php
index c705935ed0e0e7d7a16ece692b69d9a866e228da..c1d6c1f87bbdd724f2df10841db5a37ac4bef7f0 100644
--- a/editer_liens/objet_qualifier_liens.php
+++ b/unit/editer_liens/objet_qualifier_liens.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'objet_qualifier_liens';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("action/editer_liens.php",'',true);
 
 	// creer les donnees de depart
diff --git a/entrees_sorties/spip_nfslock.php b/unit/entrees_sorties/spip_nfslock.php
similarity index 87%
rename from entrees_sorties/spip_nfslock.php
rename to unit/entrees_sorties/spip_nfslock.php
index 1895511500a0e849d93eb0c761c849f21ea997b0..8af3d83ae3fef40ff14c277774a990699800e232 100644
--- a/entrees_sorties/spip_nfslock.php
+++ b/unit/entrees_sorties/spip_nfslock.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'spip_nfslock';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip("inc/nfslock");
 
 	$verrou = spip_nfslock('monfichier');
diff --git a/filtres/abs_url.html b/unit/filtres/abs_url.html
similarity index 100%
rename from filtres/abs_url.html
rename to unit/filtres/abs_url.html
diff --git a/filtres/affdate.php b/unit/filtres/affdate.php
similarity index 95%
rename from filtres/affdate.php
rename to unit/filtres/affdate.php
index df45e60b9842b5ecbf42a32ed7dd41248bf80383..073dd1870160bb064f7ad2a49f3e9798c9aaa1d9 100644
--- a/filtres/affdate.php
+++ b/unit/filtres/affdate.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'affdate';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/filtres');
 	include_spip('inc/lang');
diff --git a/filtres/affdate_court.php b/unit/filtres/affdate_court.php
similarity index 98%
rename from filtres/affdate_court.php
rename to unit/filtres/affdate_court.php
index 9436c89b5ecac43fea339a10bea204c5e2e52eeb..317d6eeabc548c0a47a8c182264b0567e7234442 100644
--- a/filtres/affdate_court.php
+++ b/unit/filtres/affdate_court.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'affdate_court';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/affdate_debut_fin.php b/unit/filtres/affdate_debut_fin.php
similarity index 100%
rename from filtres/affdate_debut_fin.php
rename to unit/filtres/affdate_debut_fin.php
diff --git a/filtres/affdate_heure.php b/unit/filtres/affdate_heure.php
similarity index 98%
rename from filtres/affdate_heure.php
rename to unit/filtres/affdate_heure.php
index 531f5f12552f0c58f4d87ea7efd36d776d5b5dea..5473826cd9e8389a1860ed8e14754c9881a671ad 100644
--- a/filtres/affdate_heure.php
+++ b/unit/filtres/affdate_heure.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'affdate_heure';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/affdate_jourcourt.php b/unit/filtres/affdate_jourcourt.php
similarity index 98%
rename from filtres/affdate_jourcourt.php
rename to unit/filtres/affdate_jourcourt.php
index 994e94057a890f7f99ea6e07b11d8943b5dabeef..b05db2951bd257d6f43b41ff17f815cbb44d288c 100644
--- a/filtres/affdate_jourcourt.php
+++ b/unit/filtres/affdate_jourcourt.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'affdate_jourcourt';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/affdate_mois_annee.php b/unit/filtres/affdate_mois_annee.php
similarity index 98%
rename from filtres/affdate_mois_annee.php
rename to unit/filtres/affdate_mois_annee.php
index 36b83aa6ab832a28506b34b693851152a8f7db98..d731498161363503793dc742b279840f6fb1c958 100644
--- a/filtres/affdate_mois_annee.php
+++ b/unit/filtres/affdate_mois_annee.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'affdate_mois_annee';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/annee.php b/unit/filtres/annee.php
similarity index 97%
rename from filtres/annee.php
rename to unit/filtres/annee.php
index c3ceb82f953bf175bcb2a7edae0f69b7dfef9db5..64153877588b2657565f11fbf7c5bea02d3cff04 100644
--- a/filtres/annee.php
+++ b/unit/filtres/annee.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'annee';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/antispam.php b/unit/filtres/antispam.php
similarity index 100%
rename from filtres/antispam.php
rename to unit/filtres/antispam.php
diff --git a/filtres/appliquer_filtre.php b/unit/filtres/appliquer_filtre.php
similarity index 85%
rename from filtres/appliquer_filtre.php
rename to unit/filtres/appliquer_filtre.php
index 84256e0871c22b7278db0600a2844f2291968bd9..962094f17b2d3c6f0b17ff53c3ddf64e6a9458ef 100644
--- a/filtres/appliquer_filtre.php
+++ b/unit/filtres/appliquer_filtre.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'appliquer_filtre';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/attribut_html.php b/unit/filtres/attribut_html.php
similarity index 87%
rename from filtres/attribut_html.php
rename to unit/filtres/attribut_html.php
index 01a473ecbf3d6113593a0b2bdba704e174fa316c..776fde5795a8f38a4d159ea7f3750e5a3829294c 100644
--- a/filtres/attribut_html.php
+++ b/unit/filtres/attribut_html.php
@@ -2,7 +2,10 @@
 
 
 	$test = 'attribut_html';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip("inc/filtres");
 
 	$url = "/ecrire/?exec=exec&id_obj=id_obj&no_val";
diff --git a/filtres/balise_img.php b/unit/filtres/balise_img.php
similarity index 100%
rename from filtres/balise_img.php
rename to unit/filtres/balise_img.php
diff --git a/filtres/chercher_filtre.php b/unit/filtres/chercher_filtre.php
similarity index 98%
rename from filtres/chercher_filtre.php
rename to unit/filtres/chercher_filtre.php
index b77c04440429364eaeb459a13644a067f9ccfd35..558c8afe5a237b04d85ec3d5eec3d29a5510d36d 100644
--- a/filtres/chercher_filtre.php
+++ b/unit/filtres/chercher_filtre.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'chercher_filtre';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/code.php b/unit/filtres/code.php
similarity index 87%
rename from filtres/code.php
rename to unit/filtres/code.php
index f38967045f80db846b5a6d80c681ebcd516a512f..41201a6532777358d1e6aa3d2732862f058a9eb4 100644
--- a/filtres/code.php
+++ b/unit/filtres/code.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'extraire_attribut';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/texte');
 	lang_select('fr');
diff --git a/filtres/corriger_entites_html.php b/unit/filtres/corriger_entites_html.php
similarity index 100%
rename from filtres/corriger_entites_html.php
rename to unit/filtres/corriger_entites_html.php
diff --git a/filtres/date_ical.php b/unit/filtres/date_ical.php
similarity index 98%
rename from filtres/date_ical.php
rename to unit/filtres/date_ical.php
index f686016ab6c8729a996b363442c653513f6a989a..fe719c72a051ab6444c11a20bbe7d0418631f86b 100644
--- a/filtres/date_ical.php
+++ b/unit/filtres/date_ical.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'date_ical';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/date_interface.php b/unit/filtres/date_interface.php
similarity index 98%
rename from filtres/date_interface.php
rename to unit/filtres/date_interface.php
index f80414e18ccf4672fc42eee17036cb4038ab51fe..ffcda0f2e19771420afa55758727bbd5c255d9a2 100644
--- a/filtres/date_interface.php
+++ b/unit/filtres/date_interface.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'date_interface';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/date_iso.php b/unit/filtres/date_iso.php
similarity index 83%
rename from filtres/date_iso.php
rename to unit/filtres/date_iso.php
index 5d564ec37eb85229a2d99297f78e30ad053cffa7..d8680aad520d75ee87b5cc893b2396209e30381c 100644
--- a/filtres/date_iso.php
+++ b/unit/filtres/date_iso.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'date_iso';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/filtres');
 
diff --git a/filtres/date_relative.php b/unit/filtres/date_relative.php
similarity index 100%
rename from filtres/date_relative.php
rename to unit/filtres/date_relative.php
diff --git a/filtres/div.php b/unit/filtres/div.php
similarity index 100%
rename from filtres/div.php
rename to unit/filtres/div.php
diff --git a/filtres/echapper_tags.php b/unit/filtres/echapper_tags.php
similarity index 92%
rename from filtres/echapper_tags.php
rename to unit/filtres/echapper_tags.php
index 831128289326cd386396455998e0f6b5ad67c97e..2acb06ef91f193e85f9c5d4c3c7e409c68bb69e0 100644
--- a/filtres/echapper_tags.php
+++ b/unit/filtres/echapper_tags.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'echapper_tags';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/entites_html.php b/unit/filtres/entites_html.php
similarity index 95%
rename from filtres/entites_html.php
rename to unit/filtres/entites_html.php
index 2910d3a856571dad6b783b42fb723d848003699e..bb2d6ce0b02abb5284ff6a093c1a7e8f0f49b9cd 100644
--- a/filtres/entites_html.php
+++ b/unit/filtres/entites_html.php
@@ -2,7 +2,10 @@
 
 
 	$test = 'entites_html';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip("inc/filtres");
 	
 
diff --git a/filtres/extraire_attribut.php b/unit/filtres/extraire_attribut.php
similarity index 99%
rename from filtres/extraire_attribut.php
rename to unit/filtres/extraire_attribut.php
index 4dbd553cbd060f37db78737d8d35a58aedd881ca..639d653cb65adbdcdc4f5cf2945b611ebec7c7b8 100644
--- a/filtres/extraire_attribut.php
+++ b/unit/filtres/extraire_attribut.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'extraire_attribut';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/filtres');
 
diff --git a/filtres/extraire_balise.php b/unit/filtres/extraire_balise.php
similarity index 91%
rename from filtres/extraire_balise.php
rename to unit/filtres/extraire_balise.php
index 5d9ff169836a85f856fc3a7930a9151c3b5afe2c..55d89700a26729fa8e30c26da865df4e71748208 100644
--- a/filtres/extraire_balise.php
+++ b/unit/filtres/extraire_balise.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'extraire_balise';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/filtres');
 
@@ -73,7 +76,7 @@
 	// un exemple d'utilisation sympa du mode "array" de ces fonctions:
 	// aller chercher toutes les images d'un texte (img/src) ou encore
 	// tous les url des balises media:content :
-	lire_fichier('tests/syndication/data/dailymotion.rss', $rss);
+	lire_fichier('tests/unit/syndication/data/dailymotion.rss', $rss);
 	$flux = extraire_attribut(extraire_balises($rss, 'media:content'), 'url');
 	# var_dump($flux);
 	if (!is_array($flux) OR !count($flux)==39)
diff --git a/filtres/extraire_date.php b/unit/filtres/extraire_date.php
similarity index 74%
rename from filtres/extraire_date.php
rename to unit/filtres/extraire_date.php
index 7c5e0423724fb748f4f742e0798700d7598ee749..010f6505c6175c00eae58336243c8dd5c5e6a50f 100644
--- a/filtres/extraire_date.php
+++ b/unit/filtres/extraire_date.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'extraire_date';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/filtres');
 
diff --git a/filtres/extraire_multi.php b/unit/filtres/extraire_multi.php
similarity index 100%
rename from filtres/extraire_multi.php
rename to unit/filtres/extraire_multi.php
diff --git a/filtres/filtrer_entites.php b/unit/filtres/filtrer_entites.php
similarity index 92%
rename from filtres/filtrer_entites.php
rename to unit/filtres/filtrer_entites.php
index 4c88e624dd6570c11db901c6fbb552c53942e325..cfbbf2a26463c7376df028a1a3a707c62ec17707 100644
--- a/filtres/filtrer_entites.php
+++ b/unit/filtres/filtrer_entites.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'filtrer_entites';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/form_hidden.html b/unit/filtres/form_hidden.html
similarity index 100%
rename from filtres/form_hidden.html
rename to unit/filtres/form_hidden.html
diff --git a/filtres/form_hidden_arbo.php b/unit/filtres/form_hidden_arbo.php
similarity index 100%
rename from filtres/form_hidden_arbo.php
rename to unit/filtres/form_hidden_arbo.php
diff --git a/filtres/form_hidden_html.php b/unit/filtres/form_hidden_html.php
similarity index 100%
rename from filtres/form_hidden_html.php
rename to unit/filtres/form_hidden_html.php
diff --git a/filtres/form_hidden_libres.php b/unit/filtres/form_hidden_libres.php
similarity index 100%
rename from filtres/form_hidden_libres.php
rename to unit/filtres/form_hidden_libres.php
diff --git a/filtres/form_hidden_page.php b/unit/filtres/form_hidden_page.php
similarity index 100%
rename from filtres/form_hidden_page.php
rename to unit/filtres/form_hidden_page.php
diff --git a/filtres/form_hidden_propres.php b/unit/filtres/form_hidden_propres.php
similarity index 100%
rename from filtres/form_hidden_propres.php
rename to unit/filtres/form_hidden_propres.php
diff --git a/filtres/form_hidden_propres_qs.php b/unit/filtres/form_hidden_propres_qs.php
similarity index 100%
rename from filtres/form_hidden_propres_qs.php
rename to unit/filtres/form_hidden_propres_qs.php
diff --git a/filtres/form_hidden_standard.php b/unit/filtres/form_hidden_standard.php
similarity index 100%
rename from filtres/form_hidden_standard.php
rename to unit/filtres/form_hidden_standard.php
diff --git a/filtres/hauteur.php b/unit/filtres/hauteur.php
similarity index 87%
rename from filtres/hauteur.php
rename to unit/filtres/hauteur.php
index cb2e5fea1d5059d0a1a39659ab455e92295f7570..806bea0610c4ca41580740ab2010e97068da1f87 100644
--- a/filtres/hauteur.php
+++ b/unit/filtres/hauteur.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'hauteur';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/heures.php b/unit/filtres/heures.php
similarity index 97%
rename from filtres/heures.php
rename to unit/filtres/heures.php
index 99d49b2461aa27b6ee0ee9c744256c3c4c20589c..eaf40202b589fbe0135180794667dfef547ae1db 100644
--- a/filtres/heures.php
+++ b/unit/filtres/heures.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'heures';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/heures_minutes.php b/unit/filtres/heures_minutes.php
similarity index 97%
rename from filtres/heures_minutes.php
rename to unit/filtres/heures_minutes.php
index b79b7fd79c976f6dc925f9ac93a5fbeb038625bf..aed8ce5aea8d4ccfbd56a95535f87492198b6f32 100644
--- a/filtres/heures_minutes.php
+++ b/unit/filtres/heures_minutes.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'heures_minutes';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/inserer_attribut.php b/unit/filtres/inserer_attribut.php
similarity index 100%
rename from filtres/inserer_attribut.php
rename to unit/filtres/inserer_attribut.php
diff --git a/filtres/jour.php b/unit/filtres/jour.php
similarity index 97%
rename from filtres/jour.php
rename to unit/filtres/jour.php
index f47e8ebcd6f7cd8bcfe369cb054586897df80f82..f84dfebf01a5ee88936b5bbd20da30d411fbe9b3 100644
--- a/filtres/jour.php
+++ b/unit/filtres/jour.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'jour';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/journum.php b/unit/filtres/journum.php
similarity index 97%
rename from filtres/journum.php
rename to unit/filtres/journum.php
index 7defc642194ac76db60d40044c97fdf2542c926a..4c94fc1a7c12a7dd6d8d1390c6e296c380ddf402 100644
--- a/filtres/journum.php
+++ b/unit/filtres/journum.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'journum';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/largeur.php b/unit/filtres/largeur.php
similarity index 87%
rename from filtres/largeur.php
rename to unit/filtres/largeur.php
index d49ec237d19f15115e5170af58ea8fd0c9c5c0fa..1a0ffd804809c06b7ea8c6694e2b97bcdb8a8149 100644
--- a/filtres/largeur.php
+++ b/unit/filtres/largeur.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'largeur';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/lien_ou_expose.php b/unit/filtres/lien_ou_expose.php
similarity index 100%
rename from filtres/lien_ou_expose.php
rename to unit/filtres/lien_ou_expose.php
diff --git a/filtres/liens_absolus.php b/unit/filtres/liens_absolus.php
similarity index 90%
rename from filtres/liens_absolus.php
rename to unit/filtres/liens_absolus.php
index bcc3745a5fc8a586eaa4e18343f1e74aa1673108..0f608c0418d8202f42f987c0b609bcea4b808771 100644
--- a/filtres/liens_absolus.php
+++ b/unit/filtres/liens_absolus.php
@@ -1,7 +1,10 @@
 <?php
 
 	(isset($test) && $test) || ($test = 'liens_absolus');
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip('inc/filtres');
 
 	$essais["lien prive"] =
diff --git a/filtres/liens_absolus_prive.php b/unit/filtres/liens_absolus_prive.php
similarity index 83%
rename from filtres/liens_absolus_prive.php
rename to unit/filtres/liens_absolus_prive.php
index 6a23995ef2d077e4eec443d86ba94c051ac9cbd2..294f3e9af0ad87930bc383b0ed5bcd42982292e7 100644
--- a/filtres/liens_absolus_prive.php
+++ b/unit/filtres/liens_absolus_prive.php
@@ -5,7 +5,7 @@
  * ceci avant que inc_version.php soit inclus ...
  */
 // let's go ecrire/
-define('_SPIP_TEST_CHDIR', dirname(dirname(dirname(__FILE__))) . '/ecrire');
+define('_SPIP_TEST_CHDIR', dirname(dirname(dirname(dirname(__FILE__)))) . '/ecrire');
 $test = 'liens_absolus_prive';
 
 // si on rajoute ça ...
diff --git a/filtres/liens_ouvrants.html b/unit/filtres/liens_ouvrants.html
similarity index 100%
rename from filtres/liens_ouvrants.html
rename to unit/filtres/liens_ouvrants.html
diff --git a/filtres/logique.html b/unit/filtres/logique.html
similarity index 100%
rename from filtres/logique.html
rename to unit/filtres/logique.html
diff --git a/filtres/minutes.php b/unit/filtres/minutes.php
similarity index 97%
rename from filtres/minutes.php
rename to unit/filtres/minutes.php
index 4a9391df3b80b721eded39b35e3ba2826ed91579..648b05cf055c5f9c1c15214dbbf1f70af8eb37ca 100644
--- a/filtres/minutes.php
+++ b/unit/filtres/minutes.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'minutes';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/modulo.php b/unit/filtres/modulo.php
similarity index 100%
rename from filtres/modulo.php
rename to unit/filtres/modulo.php
diff --git a/filtres/moins.php b/unit/filtres/moins.php
similarity index 100%
rename from filtres/moins.php
rename to unit/filtres/moins.php
diff --git a/filtres/mois.php b/unit/filtres/mois.php
similarity index 97%
rename from filtres/mois.php
rename to unit/filtres/mois.php
index 43111f61edeb28e44d1cb677a9c575244564fbdc..a171d6f8e7879f88aed4c83baf47c6be1631ef79 100644
--- a/filtres/mois.php
+++ b/unit/filtres/mois.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'mois';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/mult.php b/unit/filtres/mult.php
similarity index 100%
rename from filtres/mult.php
rename to unit/filtres/mult.php
diff --git a/filtres/nom_jour.php b/unit/filtres/nom_jour.php
similarity index 97%
rename from filtres/nom_jour.php
rename to unit/filtres/nom_jour.php
index 01e4f81166b5a947ea2c548bc49fbeaf58c2ee2d..247e7f83d67d992e84ca75b3b59b415b2033bf48 100644
--- a/filtres/nom_jour.php
+++ b/unit/filtres/nom_jour.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'nom_jour';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/nom_mois.php b/unit/filtres/nom_mois.php
similarity index 97%
rename from filtres/nom_mois.php
rename to unit/filtres/nom_mois.php
index d27bfd3f459861674ef3e49e99db13400080c841..7752d9e79e20f1feb9fbd93df86999b2350d393a 100644
--- a/filtres/nom_mois.php
+++ b/unit/filtres/nom_mois.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'nom_mois';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/normaliser_date.php b/unit/filtres/normaliser_date.php
similarity index 99%
rename from filtres/normaliser_date.php
rename to unit/filtres/normaliser_date.php
index 54552e01ac53f9ce9d20fedc835796c6f172e4f1..9274478a5c86efbf4debb56386e1d73eb252fbaa 100644
--- a/filtres/normaliser_date.php
+++ b/unit/filtres/normaliser_date.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'normaliser_date';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/plus.php b/unit/filtres/plus.php
similarity index 100%
rename from filtres/plus.php
rename to unit/filtres/plus.php
diff --git a/filtres/post_autobr.php b/unit/filtres/post_autobr.php
similarity index 100%
rename from filtres/post_autobr.php
rename to unit/filtres/post_autobr.php
diff --git a/filtres/proteger_amp.php b/unit/filtres/proteger_amp.php
similarity index 92%
rename from filtres/proteger_amp.php
rename to unit/filtres/proteger_amp.php
index 9c8e7033661e8cf67a20d38f61db4b85f6851371..620144ee96af958a73a837b45dd15944638d6122 100644
--- a/filtres/proteger_amp.php
+++ b/unit/filtres/proteger_amp.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'proteger_amp';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/recup_date.php b/unit/filtres/recup_date.php
similarity index 99%
rename from filtres/recup_date.php
rename to unit/filtres/recup_date.php
index 1159edc58661426ff7f46f3bd5d21a53baae9ae7..443ec2d0fc50b705ad3defb1f6a8b45a7de1802a 100644
--- a/filtres/recup_date.php
+++ b/unit/filtres/recup_date.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'recup_date';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/recup_heure.php b/unit/filtres/recup_heure.php
similarity index 98%
rename from filtres/recup_heure.php
rename to unit/filtres/recup_heure.php
index 9b5c90e4de6e743ba05646e83cfb69bdee5c07d1..5c640795d735d19fadda4385bfc05bf5f3761f75 100644
--- a/filtres/recup_heure.php
+++ b/unit/filtres/recup_heure.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'recup_heure';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/recuperer_numero.php b/unit/filtres/recuperer_numero.php
similarity index 88%
rename from filtres/recuperer_numero.php
rename to unit/filtres/recuperer_numero.php
index 08bc4c3c08a56d558c983ba26f6902e9fcac44c7..8020b57ae1958ba0db4d15580b1a96f1162e1add 100644
--- a/filtres/recuperer_numero.php
+++ b/unit/filtres/recuperer_numero.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'recuperer_numero';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/saison.php b/unit/filtres/saison.php
similarity index 97%
rename from filtres/saison.php
rename to unit/filtres/saison.php
index d1a9ec7e8cd29b9f974c8b153bfa8628684eae09..76fc200264d3fe2db9776b395f9ca0f71c44b888 100644
--- a/filtres/saison.php
+++ b/unit/filtres/saison.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'saison';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/secondes.php b/unit/filtres/secondes.php
similarity index 97%
rename from filtres/secondes.php
rename to unit/filtres/secondes.php
index 0fb901dc94b1945802525b873755f4653631ffcc..3548345b029e53c698e83dbeb586098bfb9cd924 100644
--- a/filtres/secondes.php
+++ b/unit/filtres/secondes.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'secondes';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/sinon.php b/unit/filtres/sinon.php
similarity index 99%
rename from filtres/sinon.php
rename to unit/filtres/sinon.php
index 417ad6a69d84f9ccff077de61867d1a7848409ad..3bf29462aa53c40cc5a3e6de99460767d07fcf81 100644
--- a/filtres/sinon.php
+++ b/unit/filtres/sinon.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'sinon';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/spip_htmlentities.php b/unit/filtres/spip_htmlentities.php
similarity index 100%
rename from filtres/spip_htmlentities.php
rename to unit/filtres/spip_htmlentities.php
diff --git a/filtres/spip_htmlspecialchars.php b/unit/filtres/spip_htmlspecialchars.php
similarity index 100%
rename from filtres/spip_htmlspecialchars.php
rename to unit/filtres/spip_htmlspecialchars.php
diff --git a/filtres/sql_in.php b/unit/filtres/sql_in.php
similarity index 86%
rename from filtres/sql_in.php
rename to unit/filtres/sql_in.php
index f43415e9d6a2ab9915e86cb0a4713e90580f643a..7b05b726163e762cce669b824cee6c1284ea771f 100644
--- a/filtres/sql_in.php
+++ b/unit/filtres/sql_in.php
@@ -1,6 +1,9 @@
 <?php
 
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	
 	include_spip('base/abstract_sql');
 	if (function_exists('sql_in'))
diff --git a/filtres/suivre_liens.php b/unit/filtres/suivre_liens.php
similarity index 98%
rename from filtres/suivre_liens.php
rename to unit/filtres/suivre_liens.php
index 53066cd793fc804eff9353ca1f91bc245de789aa..b0dc747b2e81de5e4d67ef2f007d0c5fbd439473 100644
--- a/filtres/suivre_liens.php
+++ b/unit/filtres/suivre_liens.php
@@ -1,7 +1,10 @@
 <?php
 
 	(isset($test) && $test) || ($test = 'suivre_liens');
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip('inc/filtres');
 
 		# source   # lien    # resultat
diff --git a/filtres/supprimer_numero.php b/unit/filtres/supprimer_numero.php
similarity index 89%
rename from filtres/supprimer_numero.php
rename to unit/filtres/supprimer_numero.php
index 5bc0d20b33e93b61989685a9785a79605ece19cc..e862ca906f7d79b0511ab5fdb7bc5afcb6a201c5 100644
--- a/filtres/supprimer_numero.php
+++ b/unit/filtres/supprimer_numero.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'supprimer_numero';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/supprimer_tags.php b/unit/filtres/supprimer_tags.php
similarity index 92%
rename from filtres/supprimer_tags.php
rename to unit/filtres/supprimer_tags.php
index 2288a1e32d22a5773bb9d0da33c17f9bbabbf274..597ddfe7476568a46a696243b3e12a3894827d59 100644
--- a/filtres/supprimer_tags.php
+++ b/unit/filtres/supprimer_tags.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'supprimer_tags';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/taille_en_octets.php b/unit/filtres/taille_en_octets.php
similarity index 93%
rename from filtres/taille_en_octets.php
rename to unit/filtres/taille_en_octets.php
index 32c376dd83d9b7cd1bdffb0082528eb36e2ea6b1..512802f77e979aad1fc87aeff3ee6c4d44def918 100644
--- a/filtres/taille_en_octets.php
+++ b/unit/filtres/taille_en_octets.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'taille_en_octets';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/taille_image.php b/unit/filtres/taille_image.php
similarity index 90%
rename from filtres/taille_image.php
rename to unit/filtres/taille_image.php
index c1c7548c7be7b92ccbd6ce69d16749357fb6bfb4..cd938ffc66e1e83053627581c1456dac47a55817 100644
--- a/filtres/taille_image.php
+++ b/unit/filtres/taille_image.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'taille_image';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/texte_backend.php b/unit/filtres/texte_backend.php
similarity index 92%
rename from filtres/texte_backend.php
rename to unit/filtres/texte_backend.php
index e323206fa04dd1754fec64df3da83a99697aebcb..d71b01e8ed72fb818d7ab1f43e4291c6fbd671b1 100644
--- a/filtres/texte_backend.php
+++ b/unit/filtres/texte_backend.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'texte_backend';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/texte_backendq.php b/unit/filtres/texte_backendq.php
similarity index 92%
rename from filtres/texte_backendq.php
rename to unit/filtres/texte_backendq.php
index 513d3649489a6942405cf9e1ea69c8a2deeeeb94..dcb5cef29794847f403b29e3e1939f95e27f3610 100644
--- a/filtres/texte_backendq.php
+++ b/unit/filtres/texte_backendq.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'texte_backendq';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/textebrut.php b/unit/filtres/textebrut.php
similarity index 80%
rename from filtres/textebrut.php
rename to unit/filtres/textebrut.php
index 135e9ef2c432d54623a4ac57cb177e963484de00..550379815a249c437a734154e358fa7f572ff308 100644
--- a/filtres/textebrut.php
+++ b/unit/filtres/textebrut.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'textebrut';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/typo.php b/unit/filtres/typo.php
similarity index 96%
rename from filtres/typo.php
rename to unit/filtres/typo.php
index 27a536fe0df0500bb1b0c4c15999fd9ca17e6ea0..44c2995a59a213131a579941c14ab2e13434d4c5 100644
--- a/filtres/typo.php
+++ b/unit/filtres/typo.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'typo';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/texte');
 
diff --git a/filtres/vider_date.php b/unit/filtres/vider_date.php
similarity index 98%
rename from filtres/vider_date.php
rename to unit/filtres/vider_date.php
index 17d8123c44953d87948b095d9f240a347bd15f40..4f6970c2e33ef51d094d9e3233dddabb2c38caae 100644
--- a/filtres/vider_date.php
+++ b/unit/filtres/vider_date.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'vider_date';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres/wrap.php b/unit/filtres/wrap.php
similarity index 86%
rename from filtres/wrap.php
rename to unit/filtres/wrap.php
index b6d8aa4bc08e8ad713ac39a6beb4d2273b58b7a5..8a7f240ad8e785484b073fb352d8fb0fdd01899d 100644
--- a/filtres/wrap.php
+++ b/unit/filtres/wrap.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'wrap';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres.php",'',true);
 
 	//
diff --git a/filtres_mime/filtre_text_csv_dist.php b/unit/filtres_mime/filtre_text_csv_dist.php
similarity index 97%
rename from filtres_mime/filtre_text_csv_dist.php
rename to unit/filtres_mime/filtre_text_csv_dist.php
index 3dbede3b6369f52ea3ad0d30fa4df142e42d411b..b7d77ce5c4ce4bac9e60b9a37531c2fc8cb59a75 100644
--- a/filtres_mime/filtre_text_csv_dist.php
+++ b/unit/filtres_mime/filtre_text_csv_dist.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'filtre_text_csv_dist';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres_mime.php",'',true);
 
 	//
diff --git a/filtres_mime/filtre_text_dist.php b/unit/filtres_mime/filtre_text_dist.php
similarity index 95%
rename from filtres_mime/filtre_text_dist.php
rename to unit/filtres_mime/filtre_text_dist.php
index 375a2321a71f856818c27fda7e956878c9f596af..982215b9cbd1674045479549055e27d34f670eaa 100644
--- a/filtres_mime/filtre_text_dist.php
+++ b/unit/filtres_mime/filtre_text_dist.php
@@ -8,7 +8,10 @@
  */
 
 	$test = 'filtre_text_txt_dist';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	find_in_path("inc/filtres_mime.php",'',true);
 
 	//
diff --git a/formulaire_/protege_champ.php b/unit/formulaire_/protege_champ.php
similarity index 100%
rename from formulaire_/protege_champ.php
rename to unit/formulaire_/protege_champ.php
diff --git a/json/var2js.php b/unit/json/var2js.php
similarity index 100%
rename from json/var2js.php
rename to unit/json/var2js.php
diff --git a/path/creer_chemin.php b/unit/path/creer_chemin.php
similarity index 84%
rename from path/creer_chemin.php
rename to unit/path/creer_chemin.php
index 2604dbd823638a24962acaf289b11fe60f3cc96a..929172cda9755dccd166bef828f90fc250e40e54 100644
--- a/path/creer_chemin.php
+++ b/unit/path/creer_chemin.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'chemin';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	$n = count(explode(":",$GLOBALS['dossier_squelettes']));
 	
diff --git a/plugin/dir_plugins_suppl.php b/unit/plugin/dir_plugins_suppl.php
similarity index 100%
rename from plugin/dir_plugins_suppl.php
rename to unit/plugin/dir_plugins_suppl.php
diff --git a/plugin/plugin_version_compatible.php b/unit/plugin/plugin_version_compatible.php
similarity index 100%
rename from plugin/plugin_version_compatible.php
rename to unit/plugin/plugin_version_compatible.php
diff --git a/plugin/spip_version_compare.php b/unit/plugin/spip_version_compare.php
similarity index 100%
rename from plugin/spip_version_compare.php
rename to unit/plugin/spip_version_compare.php
diff --git a/propre/code-imbrique.php b/unit/propre/code-imbrique.php
similarity index 99%
rename from propre/code-imbrique.php
rename to unit/propre/code-imbrique.php
index 9472f6c15c42c22a01d0d00baf0eed18bc706197..3f477f58167d91b61059c30ee5eb04fc4d89eda2 100644
--- a/propre/code-imbrique.php
+++ b/unit/propre/code-imbrique.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'Ne pas crasher sur les <code><code></code> imbriqués';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/texte');
 
diff --git a/propre/doublons_notes.html b/unit/propre/doublons_notes.html
similarity index 100%
rename from propre/doublons_notes.html
rename to unit/propre/doublons_notes.html
diff --git a/propre/doublons_notes_fonctions.php b/unit/propre/doublons_notes_fonctions.php
similarity index 100%
rename from propre/doublons_notes_fonctions.php
rename to unit/propre/doublons_notes_fonctions.php
diff --git a/propre/echappe_html.php b/unit/propre/echappe_html.php
similarity index 98%
rename from propre/echappe_html.php
rename to unit/propre/echappe_html.php
index b73cd81e5f5623ace14ca9f51d8c250b2081e249..e9ffeab1d3f8c96367a8702fe3cda0dde0348150 100644
--- a/propre/echappe_html.php
+++ b/unit/propre/echappe_html.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'echappe_html';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/texte');
 
diff --git a/propre/liens.php b/unit/propre/liens.php
similarity index 97%
rename from propre/liens.php
rename to unit/propre/liens.php
index 80f5cea37c59f25fc1551da9c2ebda9002029e9e..9cc0fc43ced656e4fe3bda9a9d3626afeffdb821 100644
--- a/propre/liens.php
+++ b/unit/propre/liens.php
@@ -2,7 +2,10 @@
 
 	define('_ESPACE_PRIVE',1); // pour tester le modele inexistant, qui sera sinon ignore
 	$test = 'liens';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip('inc/texte');
 	include_spip('inc/lang');
 
diff --git a/propre/liens_classes.php b/unit/propre/liens_classes.php
similarity index 93%
rename from propre/liens_classes.php
rename to unit/propre/liens_classes.php
index 8df6e0b5006c59b4c332a0637a34ef64ce06397c..ae8bac7e4bc7283810a2c75574a5f4acddbe9ef3 100644
--- a/propre/liens_classes.php
+++ b/unit/propre/liens_classes.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'liens_classes';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip('inc/texte');
 	include_spip('inc/lang');
 
diff --git a/propre/notes.html b/unit/propre/notes.html
similarity index 100%
rename from propre/notes.html
rename to unit/propre/notes.html
diff --git a/propre/traiter_raccourcis.php b/unit/propre/traiter_raccourcis.php
similarity index 93%
rename from propre/traiter_raccourcis.php
rename to unit/propre/traiter_raccourcis.php
index d8d9bf5b911198f88ab03003289878209565f28a..784e5beef2dac97782405bd8ddd6689480d9e71c 100644
--- a/propre/traiter_raccourcis.php
+++ b/unit/propre/traiter_raccourcis.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'traiter_raccourcis';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	// ces tests sont prevus pour la variable de personnalisation :
 	$GLOBALS['toujours_paragrapher'] = false;
diff --git a/propre/traiter_tableau.php b/unit/propre/traiter_tableau.php
similarity index 97%
rename from propre/traiter_tableau.php
rename to unit/propre/traiter_tableau.php
index 36be3acc303030432a1924d7355074ae3d3a4fb4..7fdc3d621117c7003697462c56bae821b6bd8d8e 100644
--- a/propre/traiter_tableau.php
+++ b/unit/propre/traiter_tableau.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'traiter_tableau';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/texte');
 
diff --git a/rubriques/creer_rubrique_nommee.html b/unit/rubriques/creer_rubrique_nommee.html
similarity index 100%
rename from rubriques/creer_rubrique_nommee.html
rename to unit/rubriques/creer_rubrique_nommee.html
diff --git a/sql/00_sql_create_drop_view.php b/unit/sql/00_sql_create_drop_view.php
similarity index 91%
rename from sql/00_sql_create_drop_view.php
rename to unit/sql/00_sql_create_drop_view.php
index 8d5866780f427570e298f0bc7cdf3decf9a219b7..fd9cf1ba6624b7947ff0d4ba7696c4f5fc279e57 100644
--- a/sql/00_sql_create_drop_view.php
+++ b/unit/sql/00_sql_create_drop_view.php
@@ -1,6 +1,9 @@
 <?php
 
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include 'inc-sql_datas.inc';
 	
 	include_spip('base/abstract_sql');
diff --git a/sql/10_sql_insert_select.php b/unit/sql/10_sql_insert_select.php
similarity index 98%
rename from sql/10_sql_insert_select.php
rename to unit/sql/10_sql_insert_select.php
index 62760f59ebe7bf3f917528066d280bfae8c86012..85f7cd0530f0fdd055bc9f82e12f31a3cb47fb1a 100644
--- a/sql/10_sql_insert_select.php
+++ b/unit/sql/10_sql_insert_select.php
@@ -1,6 +1,9 @@
 <?php
 
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include 'inc-sql_datas.inc';
 	
 	include_spip('base/abstract_sql');
diff --git a/sql/20_sql_update_delete.php b/unit/sql/20_sql_update_delete.php
similarity index 93%
rename from sql/20_sql_update_delete.php
rename to unit/sql/20_sql_update_delete.php
index 01cee74eb5e9cdb1872c20c2da0f29b9ced51bbd..4943efa07293e3651c67170a346891616d56ff60 100644
--- a/sql/20_sql_update_delete.php
+++ b/unit/sql/20_sql_update_delete.php
@@ -1,6 +1,9 @@
 <?php
 
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include 'inc-sql_datas.inc';
 	
 	include_spip('base/abstract_sql');
diff --git a/sql/30_sql_alter.php b/unit/sql/30_sql_alter.php
similarity index 98%
rename from sql/30_sql_alter.php
rename to unit/sql/30_sql_alter.php
index 61cca83592e13ff0dedba50b2dc756695b5f5406..9052f98961295eb6bf68f95a348c7107b5afcb2a 100644
--- a/sql/30_sql_alter.php
+++ b/unit/sql/30_sql_alter.php
@@ -1,6 +1,9 @@
 <?php
 
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include 'inc-sql_datas.inc';
 	
 	include_spip('base/abstract_sql');
diff --git a/sql/40_sql_divers.php b/unit/sql/40_sql_divers.php
similarity index 96%
rename from sql/40_sql_divers.php
rename to unit/sql/40_sql_divers.php
index befa7a6c2da940824485ce2d327f6e655b68d236..4b60499af9c127b750b4c6b720484408380ca103 100644
--- a/sql/40_sql_divers.php
+++ b/unit/sql/40_sql_divers.php
@@ -1,6 +1,9 @@
 <?php
 
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include 'inc-sql_datas.inc';
 
 	include_spip('base/abstract_sql');
diff --git a/sql/99_sql_types_tables_id.php b/unit/sql/99_sql_types_tables_id.php
similarity index 96%
rename from sql/99_sql_types_tables_id.php
rename to unit/sql/99_sql_types_tables_id.php
index 1d9605df1e7b78dcb99ef118c1e7012a060ad093..f4bafbb96c16e10b85305ed5749f35f9103062dd 100644
--- a/sql/99_sql_types_tables_id.php
+++ b/unit/sql/99_sql_types_tables_id.php
@@ -1,7 +1,9 @@
 <?php
 
-	$test = 'table_objet';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('base/connect_sql');
 
diff --git a/sql/inc-sql_datas.inc b/unit/sql/inc-sql_datas.inc
similarity index 100%
rename from sql/inc-sql_datas.inc
rename to unit/sql/inc-sql_datas.inc
diff --git a/syndication/analyse_atom.php b/unit/syndication/analyse_atom.php
similarity index 96%
rename from syndication/analyse_atom.php
rename to unit/syndication/analyse_atom.php
index dab912486546db09cf1d140287eecb3a84f935a7..f9a226982b06b781c13b2c7f91729ed9eed4f32d 100644
--- a/syndication/analyse_atom.php
+++ b/unit/syndication/analyse_atom.php
@@ -29,7 +29,10 @@ dans les items
 
 
 	$test = 'analyse_atom';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/syndic');
 	$GLOBALS['controler_dates_rss'] = false;
diff --git a/syndication/analyse_backend.php b/unit/syndication/analyse_backend.php
similarity index 76%
rename from syndication/analyse_backend.php
rename to unit/syndication/analyse_backend.php
index 891af1fe7b829ec5453e7f1e72c9d6e4cdd60c48..bb2e0a63f362bb82424f85fab018ca7a79c5a6d2 100644
--- a/syndication/analyse_backend.php
+++ b/unit/syndication/analyse_backend.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'flux';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/syndic');
 	$GLOBALS['controler_dates_rss'] = false;
diff --git a/syndication/analyse_rss.php b/unit/syndication/analyse_rss.php
similarity index 94%
rename from syndication/analyse_rss.php
rename to unit/syndication/analyse_rss.php
index 0da5ed3a086adb3260f5e5db25b90a9ecfb0697f..e6d99eb33185ec6c0e73baca50067067e67775a9 100644
--- a/syndication/analyse_rss.php
+++ b/unit/syndication/analyse_rss.php
@@ -29,7 +29,10 @@ dans les items
 
 
 	$test = 'flux';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/syndic');
 	$GLOBALS['controler_dates_rss'] = false;
diff --git a/syndication/dailymotion.php b/unit/syndication/dailymotion.php
similarity index 81%
rename from syndication/dailymotion.php
rename to unit/syndication/dailymotion.php
index 36e2f5fbd6adf1d7025274556bcf27e5a2ebadce..126b1ad21429a9071875b41f4cf7b9b6dd0a42b7 100644
--- a/syndication/dailymotion.php
+++ b/unit/syndication/dailymotion.php
@@ -5,7 +5,10 @@
  */
 
 	$test = 'dailymotion.rss';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/syndic');
 	$GLOBALS['controler_dates_rss'] = false;
diff --git a/syndication/data/dailymotion.rss b/unit/syndication/data/dailymotion.rss
similarity index 100%
rename from syndication/data/dailymotion.rss
rename to unit/syndication/data/dailymotion.rss
diff --git a/syndication/data/libre-en-fete.rdf b/unit/syndication/data/libre-en-fete.rdf
similarity index 100%
rename from syndication/data/libre-en-fete.rdf
rename to unit/syndication/data/libre-en-fete.rdf
diff --git a/syndication/data/test-atom1-1.xml b/unit/syndication/data/test-atom1-1.xml
similarity index 100%
rename from syndication/data/test-atom1-1.xml
rename to unit/syndication/data/test-atom1-1.xml
diff --git a/syndication/data/test-rss2-1.xml b/unit/syndication/data/test-rss2-1.xml
similarity index 100%
rename from syndication/data/test-rss2-1.xml
rename to unit/syndication/data/test-rss2-1.xml
diff --git a/syndication/flux.php b/unit/syndication/flux.php
similarity index 80%
rename from syndication/flux.php
rename to unit/syndication/flux.php
index b57daf01a8a0bbe2b88e907f5d1e5d186446fb3b..e4b7e844b3c35e0314ceb4d1ae37567615d1a0a8 100644
--- a/syndication/flux.php
+++ b/unit/syndication/flux.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'flux';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/syndic');
 
diff --git a/texte/interdire_script.php b/unit/texte/interdire_script.php
similarity index 95%
rename from texte/interdire_script.php
rename to unit/texte/interdire_script.php
index 848dd7156cbd785c711d2e4f8234f1d43ff3a34b..9d1d91713eb5d4c9e52181fc93bee9a2ca949c4d 100644
--- a/texte/interdire_script.php
+++ b/unit/texte/interdire_script.php
@@ -2,7 +2,10 @@
 
 
 	$test = 'attribut_html';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip("inc/texte");
 	
 	$GLOBALS['filtrer_javascript'] = 1;
diff --git a/texte/propre.php b/unit/texte/propre.php
similarity index 100%
rename from texte/propre.php
rename to unit/texte/propre.php
diff --git a/utils/parametre_url.php b/unit/utils/parametre_url.php
similarity index 100%
rename from utils/parametre_url.php
rename to unit/utils/parametre_url.php
diff --git a/utils/tester_url_absolue.php b/unit/utils/tester_url_absolue.php
similarity index 100%
rename from utils/tester_url_absolue.php
rename to unit/utils/tester_url_absolue.php
diff --git a/utils/url_de_.php b/unit/utils/url_de_.php
similarity index 100%
rename from utils/url_de_.php
rename to unit/utils/url_de_.php
diff --git a/xml/spip_xml_parse.php b/unit/xml/spip_xml_parse.php
similarity index 98%
rename from xml/spip_xml_parse.php
rename to unit/xml/spip_xml_parse.php
index 333f1078f9f1a4ea1dda6ea31269f36dbc87c3a8..34129c66a1d13bfb4b95f799d914e11552c8134e 100644
--- a/xml/spip_xml_parse.php
+++ b/unit/xml/spip_xml_parse.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'spip_xml_parse';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip("inc/xml");
 	function seralize_parse($texte){
 		return serialize(spip_xml_parse($texte));
diff --git a/xml/xmlhack.html b/unit/xml/xmlhack.html
similarity index 100%
rename from xml/xmlhack.html
rename to unit/xml/xmlhack.html
diff --git a/xml/xmlhack_fonctions.php b/unit/xml/xmlhack_fonctions.php
similarity index 100%
rename from xml/xmlhack_fonctions.php
rename to unit/xml/xmlhack_fonctions.php
diff --git a/xml/xmlhack_inclure.html b/unit/xml/xmlhack_inclure.html
similarity index 100%
rename from xml/xmlhack_inclure.html
rename to unit/xml/xmlhack_inclure.html
diff --git a/xml/xmlhack_inclure_dyn.html b/unit/xml/xmlhack_inclure_dyn.html
similarity index 100%
rename from xml/xmlhack_inclure_dyn.html
rename to unit/xml/xmlhack_inclure_dyn.html
diff --git a/xml/xmlhack_inclure_dyn_php.html b/unit/xml/xmlhack_inclure_dyn_php.html
similarity index 100%
rename from xml/xmlhack_inclure_dyn_php.html
rename to unit/xml/xmlhack_inclure_dyn_php.html
diff --git a/xml/xmlhack_inclure_php.html b/unit/xml/xmlhack_inclure_php.html
similarity index 100%
rename from xml/xmlhack_inclure_php.html
rename to unit/xml/xmlhack_inclure_php.html
diff --git a/xml/xmlhack_php.html b/unit/xml/xmlhack_php.html
similarity index 100%
rename from xml/xmlhack_php.html
rename to unit/xml/xmlhack_php.html
diff --git a/xml/xmlhack_php_fonctions.php b/unit/xml/xmlhack_php_fonctions.php
similarity index 100%
rename from xml/xmlhack_php_fonctions.php
rename to unit/xml/xmlhack_php_fonctions.php
diff --git a/xml/xmlhack_recuperer_fond.php b/unit/xml/xmlhack_recuperer_fond.php
similarity index 69%
rename from xml/xmlhack_recuperer_fond.php
rename to unit/xml/xmlhack_recuperer_fond.php
index 61b0a712b15797ed600deba70eb064573d467aa6..7dbf88ee15b415cdcc8ac866427f9236be6be6ea 100644
--- a/xml/xmlhack_recuperer_fond.php
+++ b/unit/xml/xmlhack_recuperer_fond.php
@@ -1,10 +1,13 @@
 <?php
 
 	$test = 'xmlhack_recuperer_fond';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	
 	include_spip('public/assembler');
-	$out = recuperer_fond(basename(_SPIP_TEST_INC).'/xml/xmlhack');
+	$out = recuperer_fond(basename(_SPIP_TEST_INC).'/unit/xml/xmlhack');
 	// regarder si le hack a marche
 	include_spip('inc/xml');
 	$tree = spip_xml_parse($out);
@@ -13,7 +16,7 @@
 	if ($ok!=='OK') {
 		echo ('<dl> Erreur sur le xml produit (xmlhack) : ' . serialize($tree) . '</dl>');
 	}
-	$out = recuperer_fond(basename(_SPIP_TEST_INC).'/xml/xmlhack_php');
+	$out = recuperer_fond(basename(_SPIP_TEST_INC).'/unit/xml/xmlhack_php');
 	// regarder si le hack a marche
 	include_spip('inc/xml');
 	$tree = spip_xml_parse($out);
diff --git a/z_todo/NA_echappements.php b/unit/z_todo/NA_echappements.php
similarity index 96%
rename from z_todo/NA_echappements.php
rename to unit/z_todo/NA_echappements.php
index 0a7e90a37492e694df5c2ce989b03e6de28398f6..c0cc41b86c708a75e2af9d8e954984bcf6257520 100644
--- a/z_todo/NA_echappements.php
+++ b/unit/z_todo/NA_echappements.php
@@ -1,7 +1,10 @@
 <?php
 
 	$test = 'echapper';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip('inc/texte');
 
 // liste de codes qui doivent etre preserves par des allers-retours d'echappement
diff --git a/z_todo/NA_email_valide.php b/unit/z_todo/NA_email_valide.php
similarity index 98%
rename from z_todo/NA_email_valide.php
rename to unit/z_todo/NA_email_valide.php
index 65527cfa3e83526f222699eff6c40c25ca6d60b8..5b9972a6a37e6af856701e376425f415250f3a8d 100644
--- a/z_todo/NA_email_valide.php
+++ b/unit/z_todo/NA_email_valide.php
@@ -1,7 +1,10 @@
 <?php
 	
 	$test = 'email_valide';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 	include_spip('inc/filtres');
 ?>
 		
diff --git a/z_todo/NA_email_valide_5322.php b/unit/z_todo/NA_email_valide_5322.php
similarity index 93%
rename from z_todo/NA_email_valide_5322.php
rename to unit/z_todo/NA_email_valide_5322.php
index 9f7a0c55bffb2f385367b82f20202a4fcbd7a6d3..75ab6d969b5c547143121c78920eeb6d20182988 100644
--- a/z_todo/NA_email_valide_5322.php
+++ b/unit/z_todo/NA_email_valide_5322.php
@@ -8,7 +8,10 @@
 	 */
 	
 	$test = 'email_valider_5322';
-	require '../test.inc';
+	$remonte = "../";
+	while (!is_dir($remonte."ecrire"))
+		$remonte = "../$remonte";
+	require $remonte.'tests/test.inc';
 
 	include_spip('inc/filtres');
 
diff --git a/z_todo/email_valide_5322.xml b/unit/z_todo/email_valide_5322.xml
similarity index 100%
rename from z_todo/email_valide_5322.xml
rename to unit/z_todo/email_valide_5322.xml