diff --git a/.travis.yml b/.travis.yml index b681c61..cece68e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,6 +32,7 @@ script: - python tlfp/tools/update_procedure.py - python tlfp/tools/sort_articles.py - python tests/test_parse_texte.py + - # python tests/test_complete_articles.py # not yet passing - python tests/test_steps.py - git clone https://github.com/regardscitoyens/the-law-factory-parser-test-cases.git tests_cases - python tests/test_regressions.py tests_cases diff --git a/tests/ressources/complete_me.json b/tests/ressources/complete_me.json new file mode 100644 index 0000000..89231af --- /dev/null +++ b/tests/ressources/complete_me.json @@ -0,0 +1,55 @@ +{ + "current": [ + { + "definitif": false, + "depot": false, + "expose": "", + "id": "S11-ta064", + "nossenateurs_id": "20112012-064", + "source": "https://www.senat.fr/leg/tas11-064.html", + "titre": "proposition de loi portant diverses dispositions d'ordre cynégétique", + "type": "texte" + }, + { + "alineas": { + "001": "L'article L. 424-3 du code de l'environnement est ainsi modifié :", + "002": "1° et 1° bis (Non modifié)", + "003": "2° Le second alinéa du II est ainsi rédigé :", + "004": "\"Dans ces établissements, les dates d'ouverture et de fermeture de la chasse des perdrix grises, perdrix rouges et faisans de chasse, issus d'élevage sont les dates d'ouverture générale et de clôture générale de la chasse dans le département.\"" + }, + "order": 9, + "statut": "none", + "titre": "6", + "type": "article" + } + ], + "previous": [ + { + "definitif": false, + "depot": false, + "expose": "", + "id": "S11-l298", + "source": "https://www.senat.fr/leg/ppl11-298.html", + "titre": "proposition de loi portant diverses dispositions d'ordre cynégétique", + "type": "texte" + }, + { + "alineas": { + "001": "L'article L. 424-3 du même code est ainsi modifié :", + "002": "1° Au second alinéa du I, la référence : \"L. 425-14\" est remplacée par la référence : \"L. 425-15\" et, après le mot : \"applicables\", sont insérés les mots : \"au gibier à poil\" ;", + "003": "1° bis Le premier alinéa du II est complété par une phrase ainsi rédigée :", + "004": "\"L'article L. 425-15 ne s'applique pas à la pratique de la chasse d'oiseaux issus de lâchers dans les établissements de chasse à caractère commercial.\" ;", + "005": "2° Le second alinéa du II est ainsi rédigé :", + "006": "\"Dans ces établissements, les dates d'ouverture et de fermeture de la chasse des oiseaux d'élevage sont les dates d'ouverture générale et de clôture générale de la chasse dans le département.\"" + }, + "order": 8, + "statut": "none", + "titre": "6", + "type": "article" + } + ], + "previous_step_metas": { + }, + "step": { + } +} diff --git a/tests/test_complete_articles.py b/tests/test_complete_articles.py new file mode 100644 index 0000000..91136d4 --- /dev/null +++ b/tests/test_complete_articles.py @@ -0,0 +1,14 @@ +import sys, os, json +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from tlfp.tools.common import log_print +from tlfp.tools import complete_articles + + +TESTS_DIR = os.path.dirname(os.path.abspath(__file__)) + +with log_print() as log: + case = json.load(open(os.path.join(TESTS_DIR, 'ressources/complete_me.json'))) + result = complete_articles.complete(**case) + assert len(result[1]['alineas']) == 6 + assert log.getvalue() == '' diff --git a/tests/test_regressions.py b/tests/test_regressions.py index 7e176dc..2804cc7 100644 --- a/tests/test_regressions.py +++ b/tests/test_regressions.py @@ -101,17 +101,16 @@ def _is_same_helper(dircmp): senat_id = directory.split('/')[-1] print(' - test regressions for', senat_id) - with log_print(only_log=True) as log: - parse_one.process(OUTPUT_DIR, senat_id) - comp = filecmp.dircmp(directory, OUTPUT_DIR + '/' + senat_id) - if _is_same_helper(comp): - print(' > OK') - else: - print(log.getvalue().replace('\n', '\nlog: ')) - print(' > Output different to the verified output: ' - 'https://github.com/regardscitoyens/' - 'the-law-factory-parser-test-cases/tree/master/%s' % senat_id) - sys.exit(1) + parse_one.process(OUTPUT_DIR, senat_id) + comp = filecmp.dircmp(directory, OUTPUT_DIR + '/' + senat_id) + if _is_same_helper(comp): + print(' > OK') + else: + print() + print(' > Output different to the verified output: ' + 'https://github.com/regardscitoyens/' + 'the-law-factory-parser-test-cases/tree/master/%s' % senat_id) + sys.exit(1) if not REGEN_TESTS: shutil.rmtree(OUTPUT_DIR) diff --git a/tlfp/tools/complete_articles.py b/tlfp/tools/complete_articles.py index bfbbcba..44ea8a1 100755 --- a/tlfp/tools/complete_articles.py +++ b/tlfp/tools/complete_articles.py @@ -9,10 +9,10 @@ from tlfp.tools.common import clean_text_for_diff, compute_similarity, open_json, print_json -def complete(current, previous, step, previous_step_metas, table_concordance, anteprevious=None, debug=False): +def complete(current, previous, step, previous_step_metas, table_concordance=None, anteprevious=None, debug=False): current = copy.deepcopy(current) previous = copy.deepcopy(previous) - table_concordance = CaseInsensitiveDict(table_concordance) + table_concordance = CaseInsensitiveDict(table_concordance or dict()) DEBUG = debug or '--debug' in sys.argv def log(text): @@ -121,7 +121,7 @@ def get_mark_from_last(text, s, l="", sep="", enable_copyall=False, copyall=Fals if n == 0: i = "%s%s %s" % (s, ". -" if re_mat_simple.match(s) else sep, i) if record: - log(" copy alinea") + log(" copy alinea: " + i[:10]) res.append(i) # retry and get everything as I before II added if not found if not res: