lundi 26 mars 2012

Sortie de Jenkins 1.457

Logo jenkins

Jenkins, outil d'intégration continue et fork de Hudson sort très régulièrement de nouvelles versions. La nouvelle est la 1.457, sortie le 26 mars 2012. Principalement des corrections d'affichage liées au nouveau fil d'Ariane.

Voici le détail de ce qui change:

  • correction d'une fuite de processus dans le conteneur de servlet embarqué (bug 9882)
  • correction d'une fuite de gestionnaire de fichier dans l'envoi de contenu statique (bug 13097)
  • le menu contextuel du fil d'Ariane provoque une erreur javascript sur Internet Explorer 8 (bug 13082)
  • Ajax dans le centre de mise à jour ne fonctionne pas avec prototype 1.7
  • "voir en format texte" dans la sortie console est cachée par la nouvelle barre du fil d'Ariane
  • La date de dernière modification des fichiers dans un zip ne correspond pas à l'horodotage originel (bug 13122)
  • "Recharger la configuration depuis le disque" perd son éiquette pour les clients en grappe (bug 8043)
  • Jenkins utilise le bon port dans les annonces mDNS et apparaît dans les marque-pages de Bonjour Safari.

jeudi 22 mars 2012

JUnit 4 en 60 secondes

junit-logo.png

Comme l'actualité est calme, voici la traduction un peu enrichie d'un article d'introduction à JUnit 4 à consulter ici.

JUnit 4 apporte à JUnit la gestion des annotations pour les tests Java. Voyons-en quelques unes....

@Test

Permet de marquer vos tests. Vous n'avez alors plus besoin de préfixer vos cas de tests avec "test". De plus, votre classe n'a plus besoin d'hériter de la classe “TestCase”.

  @Test
  public void addition() {
     assertEquals(12, simpleMath.add(7, 5));
  }
  
  @Test
  public void subtraction() {
     assertEquals(9, simpleMath.substract(12, 3));
  }

@Before et @After

Utilisez respectivement les annotations @Before et @After pour les méthodes “setup” et “tearDown”. Ces méthodes sont exécutées respectivement avant et après chaque cas de test.

  @Before
  public void executerAvantChaqueTest() {
     simpleMath = new SimpleMath();
  }

Ici, on vient de préparer le "monde" du test.

  @After
  public void executerApresChaqueTest() {
     simpleMath = null;
  }

Et là, on nettoie une fois le test exécuté.



@BeforeClass et @AfterClass

Utiliser respectivement les annotations @BeforeClass et @AfterClass pour les méthodes “setup” et “tearDown” s'appliquant à la classe toute entière. Pnsez à ces méthodes comme étant à usage unique. Elles s'exécutent respectivement et une seule fois avant le premier cas de test et après le dernier cas de test.

  @BeforeClass
  public static void executeBeforeClass() {
     // s'exécute une unique fois 
     //avant le premier cas de tests
  }
  @AfterClass
  public static void executeAfterClass() {
     // s'exécute une unique fois pour toute
     //  après le dernier cas de tests
  }

Gestion des exceptions



Utilisez le paramètre “expected” avec l'annotation @Test pour indiquer que le cas de test s'attend à une exception. Donnez le nom de l'exception qui va être lancée.

  @Test(expected = ArithmeticException.class)
  public void divisionAvecException() {
     // division par zero
     simpleMath.divide(1, 0);
  }

@Ignore



Ajouter l'annotation @Ignore pour les cas de tests que vous voulez ignorer. Vous pouvez ajouter comme paramètre une chaîne de caractères qui indique la raison pour laquelle vous ignorez le test.

  @Ignore(“Pas prêt à fonctionner”)
  @Test
  public void multiplication() {
     assertEquals(15, simpleMath.multiply(3, 5));
  }

Timeout



Définit un délai d'expiration en millisecondes avec le paramètre “timeout”. Le test échouera si le délai est atteint.

  @Test(timeout = 1000)
  public void infinity() {
     while (true)
     ;
  }

Nouvelles affirmations

Ces nouvelles affirmations permettent de comparer des tableaux. Deux tableaux sont égaux seulement s'ils ont la même longueur et si chaque élément de l'un est égal à l'élément correspondant de l'autre.

  public static void assertEquals(Object expected, Object actual);
  public static void assertEquals(String message, Object expected, Object actual);
  @Test
  public void listEquality() {
     List expected = new ArrayList();
     expected.add(5);
     
     List actual = new ArrayList();
     actual.add(5);
     
     assertEquals(expected, actual);
  }

JUnit4Adapter

Permet d'exécuter vos tests JUnit 4 dans les lanceurs de tests JUnit 3 avec le JUnit4Adapter

  public static junit.framework.Test suite() {
     return new JUnit4TestAdapter(SimpleMathTest.class);
  }

lundi 19 mars 2012

Sortie de Sonar 2.14

Sonar

Sortie de la version 2.14 de Sonar, l'outil qualimétrique multi-langages, dont Java et PHP, appelable via Maven et s'appuyant sur un SGBD dont Postgresql. Au menu, détection des copier/coller entre projets pour tous les langages, ajout de notes aux règles, capacité de récupérer des informations concernant les utilisateurs depuis des systèmes tiers, notification par mail pour les nouvelles violations et amélioration de la carte des projets.

Sonar est sous licence GNU Lesser GPL version 3, lois suisses.

Pour le voir en action sur le site nemo et pour le télécharger.

Lire la suite...

Sortie de Jenkins 1.456

Logo jenkins

Jenkins, outil d'intégration continue et fork de Hudson sort très régulièrement de nouvelles versions. La nouvelle est la 1.456, sortie le 19 mars 2012. Principalement des corrections de bug, notamment concernant le nouveau menu contextuel ainsi que des améliorations de performance.

Voici le détail de ce qui change:

  • après le renommage d'un job, la redirection va vers une mauvaise vue (pull 401)
  • BUILD_TAG n'était pas unique pour un projet hiérarchique (pull 402)
  • l'archivage de l'espace de travail ne gérait pas correctement les liens symboliques (bug 9118)
  • correction d'un bug dans l'auto écriture des plugins empaquetés sur Windows (bug 12514)
  • correction d'une pointe de mémoire pour gérer des sorties consoles importantes croissant rapidement et supervision interactive.
  • correction d'une fuite de gestion de fichier lors de l'envoi de fichiers statiques (bug 12674)
  • correction d'un bug dans le filtrage d'exécuteur/file pour les projets matriciels (pull 394)
  • Certains des éléments du menu contextuel ont des liens erronés (bug 12945)
  • suppression des entrées qui n'avaient pas de sens dans le menu contextuel
  • activation de génération automatique d'hyperliens sur le résumé des tests en échec (pull 392)
  • amélioration des performances en Javascript sur les navigateurs modernes (pull 276)
  • l'exécution des projets matriciels est rendu plugables (bug 12778)

samedi 17 mars 2012

Manuel Thucydides en français

Thucydides

Pour faire suite à ce billet et en réponse aux 42 questions que vous vous posez sûrement sur les tests fonctionnels avec Thucydides, la vie, l'univers et tout le reste, je vous propose la traduction de mon crû du manuel utilisateur de cet excellent outil qui ne nécessite même pas d'ordinateur de la taille de la terre ...

A lire ici, et là en version originale et enfin là pour les sources....

N'hésitez pas à signaler les coquilles & erreurs !

Allez, salut et encore merci pour le poisson !

PS: devinez-donc le numéro de ce billet ....

jeudi 15 mars 2012

LibrePlan version 1.2.2 est sortie

LibrePlan

Sortie d'une version mineure de LibrePlan aujourd'hui... mineure peut-être mais elle parle français ! Des améliorations ont été apportées au diagramme de Gantt et à la gestion des comptes LDAP.

LibrePlan (anciennement NavalPlan) est un outil collaboratif pour planifier, surveiller et contrôler des projets qui a une interface web client riche. Tous les membres de l'équipe peuvent prendre part à la planification ce qui permet d'avoir une planification en temps réel. Il permet aussi de gérer plus d'un projet à la fois avec des ressources qui contribuent à plusieurs projets ce qui le rend adapté au travail dans une compagnie.

LibrePlan dispose d'une large série de web services pour importer et exporter des données depuis et vers d'autres systèmes d'information, ce qui permet d'économiser du temps (et le temps, c'est de l'argent). LibrePlan est une application libre sous licence GNU Affero General Public (AGPL) et dispose d'une communauté. Il y a même des paquets deb et rpm.

Côté technique, LibrePlan est en Java, s'appuie sur Tomcat et utilise une base de données Postgres.

Voir le site, la documentation et la démonstration en ligne.

mardi 13 mars 2012

Sortie de Jenkins 1.455

Logo jenkins

Jenkins, outil d'intégration continue et fork de Hudson sort très régulièrement de nouvelles versions. La nouvelle est la 1.455, sortie le 12 mars 2012. Le changement le plus visible est l'apparition d'un fil d’Ariane et d'un menu contextuel destinés à faciliter la navigation.

Voici le détail de ce qui change:

  • correction d'une régression avec IE9 de la 1.453 (pull 397)
  • correction d'une exception de pointeur nul Groovy via la ligne de commandes (bug 12302)
  • correction d'un bug faisant qu'un build en file d'attente pouvait démarrer alors que le build précédent était encore dans la phase de post-production
  • amélioration de la logique d'erreur de nouvelle tentative de joindre le centre de mise à jour
  • mise à jour de JavaMail en 1.4.4 (bug 1152 et 3983)
  • intégration de prototype.js version 1.7 (discussion)
  • gestion de la programmation des mises à jour et des récupération des fichiers config.xml des esclaves
  • le fil d'Ariane gère maintenant les menus déroulant pour une navigation plus rapide (discussion)
  • les pages de configuration affichent un menu déroulant dans le fil d'Ariane permettant d'aller directement aux sections
  • les hyperliens vers les objets modèles gèrent également le menu déroulant pour une navigation plus rapide (discussion)
  • Nouvel ExtensionPoint pour renforcer les conventions de nommage pour les projets et les jobs avec deux implémentations:
    • Défaut (pas de restriction),
    • Motif (regex). (bug 12928)
  • java -jar jenkins.war utilise désormais le cookie de session limité au HTTP, ce qui offre une meilleure protection contre les failles de sécurité XSS.

lundi 12 mars 2012

Sortie de Subversion 1.7.4

Logo subversion

Subversion version 1.7.4 vient de sortir et est à récupérer ici. On y trouve essentiellement des corrections de bugs ou des améliorations de messages.

On notera notamment la correction de deux bugs sous Windows ayant trait à la gestion des 'externals', l'occasion d'en dire un mot.

Un external est une référence à un autre projet, par exemple à une bibliothèque utilisée par le projet courant (ou par plusieurs). Plutôt que de dupliquer cette bibliothèque dans chaque dépôt de source de projets l'utilisant, on y fait simplement référence. Cela évite de dupliquer l'information et d'avoir à propager manuellement les modifications de code source de la bibliothèque.

Pour créer un external, il faut:

  • se positionner à la racine du projet
  • exécuter 'svn propedit svn:externals .'
  • ajouter les références dans l'éditeur de texte selon le format:
  <repertoire_destination> <url projet>
  ...
  • sauvegarder puis faire un 'update' à la racine du projet: la référence doit apparaître
  • commiter pour enregistrer les modifications

Lire la suite...

Sortie de Selenium 2.20.0

selenium-logo.png

Selenium version 2.20.0 est sorti.

Lire la suite...

mardi 6 mars 2012

Sortie de Jenkins 1.454

Logo jenkins

Jenkins, outil d'intégration continue et fork de Hudson sort très régulièrement de nouvelles versions. La nouvelle est la 1.454, sortie le 3 mars 2012, le même jour que la 1.453. La 1.452 contenait deux failles de sécurité. Voici le changelog:

Version 1.454

  • ajustement des règles de nettoyage HTML qui étaient trop strictes

Version 1.453

  • correction d'une vulnérabilité XSS (SECURITY-26, voir plus bas)
  • correction d'une fuite d'un descripteur de fichier sur Windows (SECURITY-23, voir plus bas)
  • La colonne 'Age' de l'onglet 'Résultats de tests' pouvait contenir une valeur incorrecte quand une série de tests était réparties en plusieurs fichiers JUnit (bug 12457)
  • Message système - n'apparait pas ailleurs que sur la vue par défaut (bug 7733)
  • Ajout d'un composant d'interface pour afficher la barre de notification en haut de la page
  • Les utilisateurs peuvent configurer la recherche pour la rendre insensible à la casse (bug 850)
  • L'aide en ligne signale maintenant le plugin qui contribue à la fonctionnalité signalée
  • Plusieurs pages de configuration ont le bouton "Appliquer"
  • Eviter le goal deploy dans le dépôt Maven après le build dans les builds de release (bug 12397)
  • Jenkins arrive maintenant à démarrer si des plugins ont des dépendances cycliques: ces plugins sont désactivés
  • Ajout du type MIME video/webm pour les fichiers dotés de l'extension .webm
  • Mise à jour vers guava 11.0.1

Vulnérabilités

La première faille est une vulnérabilité permettant de passer d'un répertoire à un autre. Elle permet à un attaquant anonyme de lire des fichiers dans un système de fichiers qui ne devrait pas pouvoir être accédé. Cette faille affecte Jenkins quand il est exécuté sous Windows, que le contrôle d'accès de Jenkins soit activé ou non. Ces fichiers lus sont toujours soumis au contrôle d'accès de l'OS, c'est pourquoi l'attaquant ne pourra avoir accès qu'aux fichiers lisibles par l'utilisateur sous lequel Jenkins est exécuté. Il s'agit d'une vulnérabilité dans le conteneur de servlet embarqué (appelé Winstone), c'est pourquoi le problème ne touche que les utilisateurs qui exécutent Jenkins via java -jar jenkins.war (dont les utilisateurs du l'installateur Windows). Cette vulnérabilité touche toutes les versions de Jenkins jusqu'à et y compris les versions 1.452, ainsi que les versions LTS jusqu'à la 1.424.3 inclus.

La seconde vulnérabilité est une vulnérabilité cross-site scripting (XSS), qui permet à un attaquant d'injecter du HTML malveillant aux pages servies par Jenkins. Ceci lui permet d'usurper des privilèges en volant les sessions des autres utilisateurs. Cette vulnérabilité affecte toutes les versions de which allows an attacker to inject malicious HTMLs to pages served by Jenkins. This allows an attacker to escalate his privileges by hijacking sessions of other users. Cette vulnérabilité touche toutes les versions de Jenkins jusqu'à et y compris les versions 1.452, ainsi que les versions LTS jusqu'à la 1.424.3 inclus, quels que soient les réglages de sécurité.

samedi 3 mars 2012

Sortie de IceScrum version R4#4

IceScrum

Icescrum version R4#4 (release 4 de la version 4) vient de sortir. Icescrum est un outil libre web (licence GNU Affero GPL V3 et en partie sous licence LGPL V3) permettant de gérer de multiples projets agiles (Scrum, Kanban) y compris pour des équipes distribuées, via un interface web conviviale offrant des affichages proches de ceux qu'on peut obtenir avec des tableaux blancs et des post-it pour faciliter le management visuel. IceScrum supporte les principaux navigateurs (IE 7+, Firefox 3+, Safari 3+, Chrome).

On retrouve:

Différents type d'import et d'export (odf, word 2007, pdf et RTF) sont également disponibles, ainsi qu'une interface REST. L'interface est en français (entre autres) et un système de plugins est en cours, permettant d'espérer un support de LDAP prochainement. Une connexion avec Eclipse est également possible via le connecteur Mylyn.

Pour le côté technique, l'outil est réalisé avec Grails et fait appel à une base de données via Hibernate (dont Postgres, MySQL, Oracle, SQL Server) ou pas (HSQLDB, un gestionnaire de base de données Java, sur fichiers), s'appuie sur liquibase pour la gestion de la création ou de la montée en version du schéma de bases de données.

On peut le télécharger en bundle (avec un tomcat) ou sous forme de war. Voir le site de suivi de projet pour vous faire une idée tout de suite.

J'ajoute enfin qu'il y a de la documentation et une équipe très réactive en cas de problème à contacter via le forum.

Lire la suite...

vendredi 2 mars 2012

La version 5.4.0 de PHP est sortie

PHP

Aujourd'hui sort la version 5.4.0 de PHP est sortie. Elle constitue une avancée majeure dans la série 5.x et inclut un grand nombre de nouvelles fonctionnalités et de corrections de bugs.

Certaines des nouvelles fonctionnalités clefs comprennent:

  • ajout de la gestion des traits, équivalent des macros du C pour gérer un pseudo héritage multiple
  • une syntaxe abrégée pour les tableau à la Javascript a été ajoutée, par exemple: $a=[1, 2, 3, 4]; ou $a=['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];.
  • le déréférencement des tableaux retournés par les fonctions a été ajouté, par exemple; foo()[0].
  • les fermetures gèrent maintenant $this.
  • <?= est maintenant toujours disponible, quelle que soit la valeur donnée à l'option short_open_tag ini.
  • l'accès aux membres de Class à l'instanciation a été ajouté, ex: (new Foo)->bar().
  • la syntaxe Class::{expr}() est maintenant gérée.
  • le format des nombres binaires a été ajouté, par exemple: 0b001001101.
  • amélioration des messages d'erreur d'analyse syntaxique et des avertissements d'arguments incompatibles.
  • l'extension de session peut maintenant suivre l'avancement de l'envoi des fichiers.
  • serveur Web embarqué en ligne de commande.
  • gestion des langages multi octets dans toutes distributions binaires de PHP en utilisant un flag à l'exécution.

Les performances ont également été significativement améliorées, l'empreinte mémoire a été réduite et plus de 100 bugs ont été corrigés. Le code de base est plus propre, grâce à la suppression de nombreuses fonctionnalités du langage obsolètes.

Modifications qui ont un impact sur la compatibilité

  • les registres globaux, les guillemets magiques et le mode sûr ont été supprimés
  • la syntaxe break/continue $var a été supprimée
  • l'option ini allow_call_time_pass_reference a été supprimée
  • l'encodage par défaut default_charset est maintenant "UTF-8" dans le fichier php.ini distribué, mais reste par défaut à ""

Extensions déplacés dans PECL

  • ext/sqlite (ext/sqlite3 et ext/pdo_sqlite ne sont pas affectés)

PHP 5.4 est la dernière série à supporter Windows XP et Windows 2003. Aucun paquet binaire ne sera fournit pour Windows pour les versions ultérieures de PHP.

Pour la liste complète des changements dans PHP 5.4.0, voir le changelog. Voir également la news sur Linuxfr bien plus complète.