From ca1ef05d56e6dff9bd6b5aad964db368ca0ae271 Mon Sep 17 00:00:00 2001
From: David Smadja <david.smadja@assemblee-nationale.fr>
Date: Thu, 20 Mar 2025 14:59:09 +0100
Subject: [PATCH] update generate yaml script and readme

---
 README.md                                    |  9 ++++++---
 src/scripts/generate_openfisca_tests_yaml.ts | 15 ++++++++-------
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/README.md b/README.md
index 8a26e674b..4734c0fe5 100644
--- a/README.md
+++ b/README.md
@@ -233,11 +233,12 @@ $: console.log(parameterSmicMensuel, smicValue)
 ### Générer les YAML de test OpenFisca à partir des cas-type LexImpact
 
 ```bash
-npx tsx src/scripts/generate_openfisca_tests_yaml.ts -y 2025 ../../openfisca-france/tests/leximpact/
+npx tsx src/scripts/generate_openfisca_tests_yaml.ts -y 2025 --openfisca_venv /home/cafe/apps/openfisca-france/.venv ../../openfisca-france/tests/leximpact/
 ```
 
-- Le paramètre `year` générera les variables d'output pour l'année `year`
-- L'argument par défaut `outdir` est le chemin où l'on veut exporter les YAML générés. Ceux-ci ont vocation à être pushés dans openfisca_france/tests/leximpact
+- Le paramètre `year` (-y) générera les variables d'output pour l'année `year`
+- Le paramètre `openfisca_venv` (-e) doit correspondre au chemin d'un venv dans lequel openfisca-france est installé. Il doit être possible d'y exécuter `openfisca test`.
+- L'argument par défaut `outdir` est le chemin où l'on veut exporter les YAML générés.
 
 Les YAML générés contiennent, pour chaque cas-type, toutes les variables d'entrées du cas-type dans le fichier `test_cases.json`.
 Les valeurs sont mensualisées pour toutes les variables mensuelles.
@@ -245,3 +246,5 @@ Les valeurs sont mensualisées pour toutes les variables mensuelles.
 La section `output:` du YAML contient toutes les variables calculées, présentes à la fois dans les décompositions LexImpact **et** dans les variables du country-package Openfisca-France.
 
 Les valeurs des variables de type Enum, sont remplacées par leur index dans les valeurs possibles de l'Enum.
+
+Les valeurs générées en sortie sont celles que retourne l'API d'openFisca-France **corrigées par les valeurs que retournent `openfisca test`** dans le cas où elles diffèrent.
diff --git a/src/scripts/generate_openfisca_tests_yaml.ts b/src/scripts/generate_openfisca_tests_yaml.ts
index 4e7da3087..b0e6adedd 100644
--- a/src/scripts/generate_openfisca_tests_yaml.ts
+++ b/src/scripts/generate_openfisca_tests_yaml.ts
@@ -35,6 +35,12 @@ const optionsDefinitions = [
     name: "year",
     type: Number,
   },
+  {
+    alias: "e",
+    help: "Path to a venv with openfisca-france installed. You must be able to launch `openfisca test` within it.",
+    name: "openfisca_venv",
+    type: String,
+  },
   {
     alias: "t",
     help: "Single Test-Case to run",
@@ -495,13 +501,10 @@ async function runOpenFiscaTest(
 async function main() {
   console.info("Initializing...")
 
-  const personsEntityKey = Object.entries(entityByKey)
-    .filter(([, entity]) => entity.is_person)
-    .map(([key]) => key)[0]
-
   const year = options.year
   const outdir = options.outdir
   const singleTestCase = options.testcase
+  const openFiscaVenvPath = options.openfisca_venv
 
   const variablesFromDecompositions = [
     ...summaryCalculatedVariablesName,
@@ -686,11 +689,9 @@ async function main() {
 
       await fs.writeFile(path.join(outdir, testCase.id + ".yml"), cleanedYaml)
 
-      const venvPath = "/home/cafe/apps/openfisca-france/.venv"
-
       try {
         const openFiscaTestResult = await runOpenFiscaTest(
-          venvPath,
+          openFiscaVenvPath,
           path.join(outdir, testCase.id + ".yml"),
         )
         if (!openFiscaTestResult.passed) {
-- 
GitLab