mirror of
https://github.com/adrienverge/yamllint.git
synced 2025-02-25 18:55:20 -06:00
Fix new-lines rule on Python 3
Use io.open() when reading files in cli which has the same behaviour in Python 2 and Python 3, and supply the newline='' parameter which handles but does not translate line endings. Add dos.yml test file with windows newlines. Also add to file finding test expected output. Add test for new-lines rule through the cli. Validates files are read with the correct universal newlines setting. Fixes adrienverge/yamllint#228
This commit is contained in:
parent
5b049e4229
commit
91763f5476
@ -88,6 +88,9 @@ class CommandLineTestCase(unittest.TestCase):
|
|||||||
u'# 19.99 €\n'
|
u'# 19.99 €\n'
|
||||||
u'- お早う御座います。\n'
|
u'- お早う御座います。\n'
|
||||||
u'# الأَبْجَدِيَّة العَرَبِيَّة\n').encode('utf-8'),
|
u'# الأَبْجَدِيَّة العَرَبِيَّة\n').encode('utf-8'),
|
||||||
|
# dos line endings yaml
|
||||||
|
'dos.yml': '---\r\n'
|
||||||
|
'dos: true',
|
||||||
})
|
})
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -101,6 +104,7 @@ class CommandLineTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
sorted(cli.find_files_recursively([self.wd], conf)),
|
sorted(cli.find_files_recursively([self.wd], conf)),
|
||||||
[os.path.join(self.wd, 'a.yaml'),
|
[os.path.join(self.wd, 'a.yaml'),
|
||||||
|
os.path.join(self.wd, 'dos.yml'),
|
||||||
os.path.join(self.wd, 'empty.yml'),
|
os.path.join(self.wd, 'empty.yml'),
|
||||||
os.path.join(self.wd, 's/s/s/s/s/s/s/s/s/s/s/s/s/s/s/file.yaml'),
|
os.path.join(self.wd, 's/s/s/s/s/s/s/s/s/s/s/s/s/s/s/file.yaml'),
|
||||||
os.path.join(self.wd, 'sub/ok.yaml'),
|
os.path.join(self.wd, 'sub/ok.yaml'),
|
||||||
@ -146,7 +150,8 @@ class CommandLineTestCase(unittest.TestCase):
|
|||||||
' - \'*.yml\'\n')
|
' - \'*.yml\'\n')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
sorted(cli.find_files_recursively([self.wd], conf)),
|
sorted(cli.find_files_recursively([self.wd], conf)),
|
||||||
[os.path.join(self.wd, 'empty.yml')]
|
[os.path.join(self.wd, 'dos.yml'),
|
||||||
|
os.path.join(self.wd, 'empty.yml')]
|
||||||
)
|
)
|
||||||
|
|
||||||
conf = config.YamlLintConfig('extends: default\n'
|
conf = config.YamlLintConfig('extends: default\n'
|
||||||
@ -163,6 +168,7 @@ class CommandLineTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
sorted(cli.find_files_recursively([self.wd], conf)),
|
sorted(cli.find_files_recursively([self.wd], conf)),
|
||||||
[os.path.join(self.wd, 'a.yaml'),
|
[os.path.join(self.wd, 'a.yaml'),
|
||||||
|
os.path.join(self.wd, 'dos.yml'),
|
||||||
os.path.join(self.wd, 'empty.yml'),
|
os.path.join(self.wd, 'empty.yml'),
|
||||||
os.path.join(self.wd, 'no-yaml.json'),
|
os.path.join(self.wd, 'no-yaml.json'),
|
||||||
os.path.join(self.wd, 'non-ascii/éçäγλνπ¥/utf-8'),
|
os.path.join(self.wd, 'non-ascii/éçäγλνπ¥/utf-8'),
|
||||||
@ -179,6 +185,7 @@ class CommandLineTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
sorted(cli.find_files_recursively([self.wd], conf)),
|
sorted(cli.find_files_recursively([self.wd], conf)),
|
||||||
[os.path.join(self.wd, 'a.yaml'),
|
[os.path.join(self.wd, 'a.yaml'),
|
||||||
|
os.path.join(self.wd, 'dos.yml'),
|
||||||
os.path.join(self.wd, 'empty.yml'),
|
os.path.join(self.wd, 'empty.yml'),
|
||||||
os.path.join(self.wd, 'no-yaml.json'),
|
os.path.join(self.wd, 'no-yaml.json'),
|
||||||
os.path.join(self.wd, 'non-ascii/éçäγλνπ¥/utf-8'),
|
os.path.join(self.wd, 'non-ascii/éçäγλνπ¥/utf-8'),
|
||||||
@ -493,3 +500,20 @@ class CommandLineTestCase(unittest.TestCase):
|
|||||||
with RunContext(self) as ctx:
|
with RunContext(self) as ctx:
|
||||||
cli.run((path, '--no-warnings', '-s'))
|
cli.run((path, '--no-warnings', '-s'))
|
||||||
self.assertEqual(ctx.returncode, 2)
|
self.assertEqual(ctx.returncode, 2)
|
||||||
|
|
||||||
|
def test_run_non_universal_newline(self):
|
||||||
|
path = os.path.join(self.wd, 'dos.yml')
|
||||||
|
|
||||||
|
with RunContext(self) as ctx:
|
||||||
|
cli.run(('-d', 'rules:\n new-lines:\n type: dos', path))
|
||||||
|
self.assertEqual((ctx.returncode, ctx.stdout, ctx.stderr), (0, '', ''))
|
||||||
|
|
||||||
|
with RunContext(self) as ctx:
|
||||||
|
cli.run(('-d', 'rules:\n new-lines:\n type: unix', path))
|
||||||
|
expected_out = (
|
||||||
|
'%s\n'
|
||||||
|
' 1:4 error wrong new line character: expected \\n'
|
||||||
|
' (new-lines)\n'
|
||||||
|
'\n' % path)
|
||||||
|
self.assertEqual(
|
||||||
|
(ctx.returncode, ctx.stdout, ctx.stderr), (1, expected_out, ''))
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import io
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
import sys
|
import sys
|
||||||
@ -176,7 +177,7 @@ def run(argv=None):
|
|||||||
for file in find_files_recursively(args.files, conf):
|
for file in find_files_recursively(args.files, conf):
|
||||||
filepath = file[2:] if file.startswith('./') else file
|
filepath = file[2:] if file.startswith('./') else file
|
||||||
try:
|
try:
|
||||||
with open(file) as f:
|
with io.open(file, newline='') as f:
|
||||||
problems = linter.run(f, conf, filepath)
|
problems = linter.run(f, conf, filepath)
|
||||||
except EnvironmentError as e:
|
except EnvironmentError as e:
|
||||||
print(e, file=sys.stderr)
|
print(e, file=sys.stderr)
|
||||||
|
Loading…
Reference in New Issue
Block a user