Question [Astuce] Pester: valider du code avec différentes cultures

Plus d'informations
il y a 2 ans 9 mois #31100 par Laurent Dardenne
Ayant rencontré un problème lié au formatage de date sur un projet j'ai dû y ajouter une rustine puis la tester avec différentes cultures.
Du coup comment tester ces cas avec Pester (un même code pour différentes cultures) ?
A noter que d'autres rencontrent ce besoin .

On utilisera Pester version 5.2.2.

La première approche est de modifier la culture avec Set-Culture, cela ne fonctionne pas car ce cmdlet modifie la culture au niveau système mais pas pour la session en cours , seulement la prochaine :
Set-Culture 'en-US'
Get-Culture

#LCID             Name             DisplayName
#----             ----             -----------
#1036             fr-FR            Français (France)

Le seconde est d' utiliser une fonction qui modifie la culture dans le thread actuel , par exemple. .
Cette approche fonctionne sous réserve que votre code n'utilise pas Set/Get-Culture mais recherche les informations de culture sur le thread.

Si ce n'est pas notre code et que l'on ne souhaite pas tout recoder car on ne connait pas les impacts des modifications ou que leurs prix en dissuadent qq uns/unes, on doit trouver une autre solution.
On peut également considérer du code qui soit pour la v5.1 et le v7. A partir de ps v7.0 $PSCulture suit la valeur de CurrentThread.CurrentCulture .

Dans mon cas j'ai utilisé des jobs pour configurer chaque culture à tester, les jobs étant exécutés via Pester dans lequel on teste le résultat d'exécution du job.

 

Fichier attaché :

Nom du fichier : TestCultur...cjob.zip
Taille du ficher :8 ko

Note:
Mon problème d'origine est que le code à maintenir a été conçu pour des postes ayant la culture Fr par défaut*, si un poste avait une culture US ou une culture ayant un format de date différent de 'Jour/mois/Année' certaines appels échouaient à cause d'un format de date inadapté.
La solution citée ici est dans l'usage du job pas dans la résolution d'une conversion à partir de n'importe quel format de date.
Par exemple l'ajout de la culture Japonaise ('ja-JP') ou Chinoise ('zh-CN') provoquera des erreurs, car ces cultures utilisent le format de date YYYY/MM/DD :
([System.Globalization.CultureInfo]'ja-JP').DateTimeFormat.ShortDatePattern

* tout en sachant que les dates sont enregistrées dans une base de données au format Français dans le type String et pas Datetime...


 

Tutoriels PowerShell
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 8 mois #31216 par Arnaud Petitjean
Merci Laurent pour ce partage super intéressant !

De plus on voit comment utiliser Pester avec des TestCases; et ça c'est cool 

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.094 secondes
Propulsé par Kunena