|  |  | @ -22,6 +22,7 @@ import unittest | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | from tests.common import build_temp_workspace |  |  |  | from tests.common import build_temp_workspace | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | from yamllint.config import YamlLintConfigError | 
			
		
	
		
		
			
				
					
					|  |  |  | from yamllint import cli |  |  |  | from yamllint import cli | 
			
		
	
		
		
			
				
					
					|  |  |  | from yamllint import config |  |  |  | from yamllint import config | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -429,10 +430,10 @@ class ExtendedLibraryConfigTestCase(unittest.TestCase): | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.assertEqual(new.rules['empty-lines']['max-end'], 0) |  |  |  |         self.assertEqual(new.rules['empty-lines']['max-end'], 0) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | class IgnorePathConfigTestCase(unittest.TestCase): |  |  |  | class IgnoreConfigTestCase(unittest.TestCase): | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @classmethod |  |  |  |     @classmethod | 
			
		
	
		
		
			
				
					
					|  |  |  |     def setUpClass(cls): |  |  |  |     def setUpClass(cls): | 
			
		
	
		
		
			
				
					
					|  |  |  |         super(IgnorePathConfigTestCase, cls).setUpClass() |  |  |  |         super().setUpClass() | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         bad_yaml = ('---\n' |  |  |  |         bad_yaml = ('---\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |                     '- key: val1\n' |  |  |  |                     '- key: val1\n' | 
			
		
	
	
		
		
			
				
					|  |  | @ -452,22 +453,6 @@ class IgnorePathConfigTestCase(unittest.TestCase): | 
			
		
	
		
		
			
				
					
					|  |  |  |             's/s/ign-trail/file.yaml': bad_yaml, |  |  |  |             's/s/ign-trail/file.yaml': bad_yaml, | 
			
		
	
		
		
			
				
					
					|  |  |  |             's/s/ign-trail/s/s/file.yaml': bad_yaml, |  |  |  |             's/s/ign-trail/s/s/file.yaml': bad_yaml, | 
			
		
	
		
		
			
				
					
					|  |  |  |             's/s/ign-trail/s/s/file2.lint-me-anyway.yaml': bad_yaml, |  |  |  |             's/s/ign-trail/s/s/file2.lint-me-anyway.yaml': bad_yaml, | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             '.yamllint': 'ignore: |\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '  *.dont-lint-me.yaml\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '  /bin/\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '  !/bin/*.lint-me-anyway.yaml\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          'extends: default\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          'rules:\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '  key-duplicates:\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '    ignore: |\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '      /ign-dup\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '  trailing-spaces:\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '    ignore: |\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '      ign-trail\n' |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                          '      !*.lint-me-anyway.yaml\n', |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         }) |  |  |  |         }) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         cls.backup_wd = os.getcwd() |  |  |  |         cls.backup_wd = os.getcwd() | 
			
		
	
	
		
		
			
				
					|  |  | @ -475,13 +460,201 @@ class IgnorePathConfigTestCase(unittest.TestCase): | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @classmethod |  |  |  |     @classmethod | 
			
		
	
		
		
			
				
					
					|  |  |  |     def tearDownClass(cls): |  |  |  |     def tearDownClass(cls): | 
			
		
	
		
		
			
				
					
					|  |  |  |         super(IgnorePathConfigTestCase, cls).tearDownClass() |  |  |  |         super().tearDownClass() | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         os.chdir(cls.backup_wd) |  |  |  |         os.chdir(cls.backup_wd) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         shutil.rmtree(cls.wd) |  |  |  |         shutil.rmtree(cls.wd) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def test_run_with_ignored_path(self): |  |  |  |     def test_mutually_exclusive_ignore_keys(self): | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertRaises( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             YamlLintConfigError, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             config.YamlLintConfig, 'extends: default\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                    'ignore-from-file: .gitignore\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                    'ignore: |\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                    '  *.dont-lint-me.yaml\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                    '  /bin/\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def test_ignore_from_file_not_exist(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertRaises( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             FileNotFoundError, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             config.YamlLintConfig, 'extends: default\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                    'ignore-from-file: not_found_file\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def test_ignore_from_file_incorrect_type(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertRaises( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             YamlLintConfigError, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             config.YamlLintConfig, 'extends: default\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                    'ignore-from-file: 0\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertRaises( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             YamlLintConfigError, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             config.YamlLintConfig, 'extends: default\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                    'ignore-from-file: [0]\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def test_no_ignore(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         sys.stdout = StringIO() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with self.assertRaises(SystemExit): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             cli.run(('-f', 'parsable', '.')) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         out = sys.stdout.getvalue() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         out = '\n'.join(sorted(out.splitlines())) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         keydup = '[error] duplication of key "key" in mapping (key-duplicates)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         trailing = '[error] trailing spaces (trailing-spaces)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         hyphen = '[error] too many spaces after hyphen (hyphens)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertEqual(out, '\n'.join(( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file.dont-lint-me.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file.dont-lint-me.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file.dont-lint-me.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ))) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def test_run_with_ignore(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with open(os.path.join(self.wd, '.yamllint'), 'w') as f: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.write('extends: default\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     'ignore: |\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '  *.dont-lint-me.yaml\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '  /bin/\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '  !/bin/*.lint-me-anyway.yaml\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     'rules:\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '  key-duplicates:\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '    ignore: |\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '      /ign-dup\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '  trailing-spaces:\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '    ignore: |\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '      ign-trail\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '      !*.lint-me-anyway.yaml\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         sys.stdout = StringIO() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with self.assertRaises(SystemExit): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             cli.run(('-f', 'parsable', '.')) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         out = sys.stdout.getvalue() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         out = '\n'.join(sorted(out.splitlines())) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         docstart = '[warning] missing document start "---" (document-start)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         keydup = '[error] duplication of key "key" in mapping (key-duplicates)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         trailing = '[error] trailing spaces (trailing-spaces)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         hyphen = '[error] too many spaces after hyphen (hyphens)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertEqual(out, '\n'.join(( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './.yamllint:1:1: ' + docstart, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ))) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def test_run_with_ignore_from_file(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with open(os.path.join(self.wd, '.yamllint'), 'w') as f: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.write('extends: default\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     'ignore-from-file: .gitignore\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with open(os.path.join(self.wd, '.gitignore'), 'w') as f: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.write('*.dont-lint-me.yaml\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '/bin/\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '!/bin/*.lint-me-anyway.yaml\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         sys.stdout = StringIO() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with self.assertRaises(SystemExit): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             cli.run(('-f', 'parsable', '.')) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         out = sys.stdout.getvalue() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         out = '\n'.join(sorted(out.splitlines())) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         docstart = '[warning] missing document start "---" (document-start)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         keydup = '[error] duplication of key "key" in mapping (key-duplicates)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         trailing = '[error] trailing spaces (trailing-spaces)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         hyphen = '[error] too many spaces after hyphen (hyphens)' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.assertEqual(out, '\n'.join(( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './.yamllint:1:1: ' + docstart, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './bin/file.lint-me-anyway.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './file-at-root.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './include/ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ))) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def test_run_with_ignored_from_file(self): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with open(os.path.join(self.wd, '.yamllint'), 'w') as f: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.write('ignore-from-file: [.gitignore, .yamlignore]\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     'extends: default\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with open(os.path.join(self.wd, '.gitignore'), 'w') as f: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.write('*.dont-lint-me.yaml\n' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     '/bin/\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with open(os.path.join(self.wd, '.yamlignore'), 'w') as f: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.write('!/bin/*.lint-me-anyway.yaml\n') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         sys.stdout = StringIO() |  |  |  |         sys.stdout = StringIO() | 
			
		
	
		
		
			
				
					
					|  |  |  |         with self.assertRaises(SystemExit): |  |  |  |         with self.assertRaises(SystemExit): | 
			
		
	
		
		
			
				
					
					|  |  |  |             cli.run(('-f', 'parsable', '.')) |  |  |  |             cli.run(('-f', 'parsable', '.')) | 
			
		
	
	
		
		
			
				
					|  |  | @ -502,18 +675,23 @@ class IgnorePathConfigTestCase(unittest.TestCase): | 
			
		
	
		
		
			
				
					
					|  |  |  |             './file-at-root.yaml:3:3: ' + keydup, |  |  |  |             './file-at-root.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './file-at-root.yaml:4:17: ' + trailing, |  |  |  |             './file-at-root.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './file-at-root.yaml:5:5: ' + hyphen, |  |  |  |             './file-at-root.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './ign-dup/file.yaml:4:17: ' + trailing, |  |  |  |             './ign-dup/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './ign-dup/file.yaml:5:5: ' + hyphen, |  |  |  |             './ign-dup/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-dup/sub/dir/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './ign-dup/sub/dir/file.yaml:4:17: ' + trailing, |  |  |  |             './ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, |  |  |  |             './ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './ign-trail/file.yaml:3:3: ' + keydup, |  |  |  |             './ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './ign-trail/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './ign-trail/file.yaml:5:5: ' + hyphen, |  |  |  |             './ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './include/ign-dup/sub/dir/file.yaml:3:3: ' + keydup, |  |  |  |             './include/ign-dup/sub/dir/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './include/ign-dup/sub/dir/file.yaml:4:17: ' + trailing, |  |  |  |             './include/ign-dup/sub/dir/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './include/ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, |  |  |  |             './include/ign-dup/sub/dir/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './s/s/ign-trail/file.yaml:3:3: ' + keydup, |  |  |  |             './s/s/ign-trail/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './s/s/ign-trail/file.yaml:5:5: ' + hyphen, |  |  |  |             './s/s/ign-trail/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './s/s/ign-trail/s/s/file.yaml:3:3: ' + keydup, |  |  |  |             './s/s/ign-trail/s/s/file.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             './s/s/ign-trail/s/s/file.yaml:4:17: ' + trailing, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './s/s/ign-trail/s/s/file.yaml:5:5: ' + hyphen, |  |  |  |             './s/s/ign-trail/s/s/file.yaml:5:5: ' + hyphen, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:3:3: ' + keydup, |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:3:3: ' + keydup, | 
			
		
	
		
		
			
				
					
					|  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:4:17: ' + trailing, |  |  |  |             './s/s/ign-trail/s/s/file2.lint-me-anyway.yaml:4:17: ' + trailing, | 
			
		
	
	
		
		
			
				
					|  |  | 
 |