check_code works now as check_file

#34 Merged
  1. Sébastien CHAZALLET

Avec un exemple tel que celui-là / With a such example

>>> code = """
... a=42
... if a:
...     print  'OK'
... """

dans un fichier, check_file donne / in a file, check_file print :

stdin:2:2: E225 missing whitespace around operator
stdin:5:1: W191 indentation contains tabs
stdin:5:7: E271 multiple spaces after keyword
stdin:6:1: W391 blank line at end of file

Mais, en console Python, ceci ne donne rien (boucle infinie) / But in a Python console, the folowing do not work (infinite loop) :

>>> from flake8.main import check_code
>>> check_code(code)

Dans flake8.main, remplacer la valeur de l'argument filename qui est '-' par None permet de ne plus avoir de boucle infinie, mais le résultat n'est pas celui attendu :

In flake8.main, replacing '-' by None for filename allow to break infinite loop, but the result is not correct :

stdin:1:16: W292 no newline at end of file

En comparant check_file et check_code, j'ai vu une différence qui est que pep8.Checker.lines finissaient par des \n dans check_file et non dans check_code. J'ai donc modifier la ligne d'appel en conséquence et mainteanant, check_code fonctionne comme check_file.

checking how check_file actually works and the differences with how check_code works, i found that pep8.Checker wants each lines ended by \n, so i made the change in checker call in ordre that check_file and check_code generate same lines into the checker.

Comments (2)