Skip to content
Snippets Groups Projects
Commit ca1ef05d authored by David Smadja's avatar David Smadja
Browse files

update generate yaml script and readme

parent fff632ac
No related branches found
No related tags found
No related merge requests found
Pipeline #19776 passed
...@@ -233,11 +233,12 @@ $: console.log(parameterSmicMensuel, smicValue) ...@@ -233,11 +233,12 @@ $: console.log(parameterSmicMensuel, smicValue)
### Générer les YAML de test OpenFisca à partir des cas-type LexImpact ### Générer les YAML de test OpenFisca à partir des cas-type LexImpact
```bash ```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` - Le paramètre `year` (-y) 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 `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 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. Les valeurs sont mensualisées pour toutes les variables mensuelles.
...@@ -245,3 +246,5 @@ 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. 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 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.
...@@ -35,6 +35,12 @@ const optionsDefinitions = [ ...@@ -35,6 +35,12 @@ const optionsDefinitions = [
name: "year", name: "year",
type: Number, 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", alias: "t",
help: "Single Test-Case to run", help: "Single Test-Case to run",
...@@ -495,13 +501,10 @@ async function runOpenFiscaTest( ...@@ -495,13 +501,10 @@ async function runOpenFiscaTest(
async function main() { async function main() {
console.info("Initializing...") console.info("Initializing...")
const personsEntityKey = Object.entries(entityByKey)
.filter(([, entity]) => entity.is_person)
.map(([key]) => key)[0]
const year = options.year const year = options.year
const outdir = options.outdir const outdir = options.outdir
const singleTestCase = options.testcase const singleTestCase = options.testcase
const openFiscaVenvPath = options.openfisca_venv
const variablesFromDecompositions = [ const variablesFromDecompositions = [
...summaryCalculatedVariablesName, ...summaryCalculatedVariablesName,
...@@ -686,11 +689,9 @@ async function main() { ...@@ -686,11 +689,9 @@ async function main() {
await fs.writeFile(path.join(outdir, testCase.id + ".yml"), cleanedYaml) await fs.writeFile(path.join(outdir, testCase.id + ".yml"), cleanedYaml)
const venvPath = "/home/cafe/apps/openfisca-france/.venv"
try { try {
const openFiscaTestResult = await runOpenFiscaTest( const openFiscaTestResult = await runOpenFiscaTest(
venvPath, openFiscaVenvPath,
path.join(outdir, testCase.id + ".yml"), path.join(outdir, testCase.id + ".yml"),
) )
if (!openFiscaTestResult.passed) { if (!openFiscaTestResult.passed) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment