class SpaceConsistencyBearTest(LocalBearTestHelper): def setUp(self): self.section = Section("test section") self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section["file_naming_convention"] = "INVALID" self.uut.execute("filename", []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, "Invalid file-naming-convention provided: INVALID") self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.check_validity(self.uut, [""], filename="/Home/xyz/x_y.py") self.check_validity(self.uut, [""], filename="XYZ/__init__.py") self.section["file_naming_convention"] = "snake" self.check_validity(self.uut, [""], filename="/a/camCase", valid=False) def test_camel_case(self): self.section["file_naming_convention"] = "camel" self.check_validity(self.uut, [""], filename="/Home/xyz/x_y.py", valid=False) self.check_validity(self.uut, [""], filename="XYZ/__init__.py") self.check_validity(self.uut, [""], filename="/a/camCase") def test_pascal_case(self): self.section["file_naming_convention"] = "pascal" self.check_validity(self.uut, [""], filename="/Home/xyz/x_y.py", valid=False) self.check_validity(self.uut, [""], filename="XYZ/__Init__.py") self.check_validity(self.uut, [""], filename="/a/PascalCase") def test_space_case(self): self.section["file_naming_convention"] = "space" self.check_validity(self.uut, [""], filename="/Home/xyz/x_y.py", valid=False) self.check_validity(self.uut, [""], filename="XYZ/__Init__.py", valid=False) self.check_validity(self.uut, [""], filename="/a/camCase", valid=False) self.check_validity(self.uut, [""], filename="/a/Space Case") def test_ignore_upper(self): self.check_validity(self.uut, [""], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_validity(self.uut, [""], filename='/LICENSE', valid=False)
class SpaceConsistencyBearTest(LocalBearTestHelper): def setUp(self): self.section = Section('test section') self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section['file_naming_convention'] = 'INVALID' self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Invalid file-naming-convention provided: INVALID') self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.section['file_naming_convention'] = 'snake' self.check_validity(self.uut, [''], filename='/a/camCase', valid=False) def test_camel_case(self): self.section['file_naming_convention'] = 'camel' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/camCase') def test_pascal_case(self): self.section['file_naming_convention'] = 'pascal' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__Init__.py') self.check_validity(self.uut, [''], filename='/a/PascalCase') def test_space_case(self): self.section['file_naming_convention'] = 'space' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__Init__.py', valid=False) self.check_validity(self.uut, [''], filename='/a/camCase', valid=False) self.check_validity(self.uut, [''], filename='/a/Space Case') def test_ignore_upper(self): self.check_validity(self.uut, [''], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_validity(self.uut, [''], filename='/LICENSE', valid=False)
class SpaceConsistencyBearTest(LocalBearTestHelper): def setUp(self): self.section = Section("test section") self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section["file_naming_convention"] = "INVALID" self.uut.execute("filename", []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, "Invalid file-naming-convention provided: INVALID") self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.check_validity(self.uut, [""], filename="/Home/xyz/x_y.py") self.check_validity(self.uut, [""], filename="XYZ/__init__.py") self.section["file_naming_convention"] = "snake" self.check_validity(self.uut, [""], filename="/a/camCase", valid=False) def test_camel_case(self): self.section["file_naming_convention"] = "camel" self.check_validity(self.uut, [""], filename="/Home/xyz/x_y.py", valid=False) self.check_validity(self.uut, [""], filename="XYZ/__init__.py") self.check_validity(self.uut, [""], filename="/a/camCase") def test_pascal_case(self): self.section["file_naming_convention"] = "pascal" self.check_validity(self.uut, [""], filename="/Home/xyz/x_y.py", valid=False) self.check_validity(self.uut, [""], filename="XYZ/__Init__.py") self.check_validity(self.uut, [""], filename="/a/PascalCase") def test_ignore_upper(self): self.check_validity(self.uut, [""], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_validity(self.uut, [""], filename='/LICENSE', valid=False)
def setUp(self): self.section = Section("test section") self.uut = FilenameBear(self.section, Queue())
class FilenameBearTest(LocalBearTestHelper): def setUp(self): self.section = Section('test section') self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section['file_naming_convention'] = 'INVALID' self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Invalid file-naming-convention provided: invalid') self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.section['file_naming_convention'] = 'snake' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_invalidity(self.uut, [''], filename='/a/camCase') def test_camel_case(self): self.section['file_naming_convention'] = 'camel' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/camCase') def test_kebab_case(self): self.section['file_naming_convention'] = 'kebab' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/init.py') self.check_validity(self.uut, [''], filename='/a/kebab-case') def test_pascal_case(self): for convention in ('Pascal', 'pascal', 'PASCAL'): self.section['file_naming_convention'] = convention self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__Init__.py') self.check_validity(self.uut, [''], filename='/a/PascalCase') def test_space_case(self): self.section['file_naming_convention'] = 'space' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_invalidity(self.uut, [''], filename='XYZ/__Init__.py') self.check_invalidity(self.uut, [''], filename='/a/camCase') self.check_validity(self.uut, [''], filename='/a/Space Case') def test_ignore_upper(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_invalidity(self.uut, [''], filename='/LICENSE') def test_default_naming_java(self): self.section['file_naming_convention'] = 'auto' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.java') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x-y.java') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x y.java') self.check_validity(self.uut, [''], filename='/Home/xyz/XY.java') def test_default_naming_javascript(self): self.section['file_naming_convention'] = 'auto' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.js') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x y.js') self.check_validity(self.uut, [''], filename='/Home/xyz/XY.js') self.check_validity(self.uut, [''], filename='/Home/xyz/x-y.js') def test_default_file_naming_python(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_invalidity(self.uut, [''], filename='/a/x y.py') def test_none_file_naming_convention_warning(self): self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Please specify a file naming convention explicitly' ' or use "auto".') self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') def test_auto_file_naming_convention_warning(self): self.section['file_naming_convention'] = 'auto' self.uut.execute('filename.xyz', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'The file naming convention could not be guessed. ' 'Using the default "snake" naming convention.') def test_file_prefix(self): self.section['filename_prefix'] = 'pre' self.check_invalidity( self.uut, [''], filename='filename.xyz') self.check_validity( self.uut, [''], filename='prefilename.xyz') expected_diff = Diff(['\n'], rename='prefilename.xyz') self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "Filename does not use the prefix 'pre'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz', diffs={'filename.xyz': expected_diff})], filename='filename.xyz') def test_file_suffix(self): self.section['filename_suffix'] = 'fix' self.check_invalidity( self.uut, [''], filename='filename.xyz') self.check_validity( self.uut, [''], filename='filenamesuffix.xyz') expected_diff = Diff(['\n'], rename='filenamefix.xyz') self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "Filename does not use the suffix 'fix'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz', diffs={'filename.xyz': expected_diff})], filename='filename.xyz') def test_file_prefix_suffix(self): self.section['filename_prefix'] = 'pre' self.section['filename_suffix'] = 'fix' expected_diff = Diff(['\n'], rename='prefilenamefix.xyz') self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "- Filename does not use the prefix 'pre'.\n" "- Filename does not use the suffix 'fix'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz', diffs={'filename.xyz': expected_diff})], filename='filename.xyz') def test_file_with_too_long_filename(self): msg = 'Filename is too long ({} > {}).' filename_test1 = '_filenamewhichistoolong'*15 + '.xyz' filename_test2 = '_filenamewhichistoolong'*10 + '.xyz' filename_test3 = '_validfilenamelength'*13 max_filename_length = 260 self.check_invalidity( self.uut, [''], filename=filename_test1) self.check_validity( self.uut, [''], filename=filename_test2) self.check_validity( self.uut, [''], filename=filename_test3) self.check_results( self.uut, [''], [Result.from_values('FilenameBear', msg.format(len(filename_test1), max_filename_length), severity=RESULT_SEVERITY.NORMAL, file=filename_test1)], filename=filename_test1) def test_message_too_long_file_with_other_errors(self): self.section['filename_prefix'] = 'pre' filename_test1 = '_filenamewhichistoolong'*15 + '.xyz' max_filename_length = 260 msg = ("- Filename does not use the prefix 'pre'.\n" '- Filename is too long ({} > {}).' ) expected_diff = Diff(['\n'], rename=('pre' + filename_test1)) self.check_results( self.uut, [''], [Result.from_values('FilenameBear', msg.format(len(filename_test1), max_filename_length), severity=RESULT_SEVERITY.NORMAL, file=filename_test1, diffs={filename_test1: expected_diff})], filename=filename_test1)
class FilenameBearTest(LocalBearTestHelper): def setUp(self): self.section = Section('test section') self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section['file_naming_convention'] = 'INVALID' self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Invalid file-naming-convention provided: invalid') self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.section['file_naming_convention'] = 'snake' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/camCase', valid=False) def test_camel_case(self): self.section['file_naming_convention'] = 'camel' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/camCase') def test_kebab_case(self): self.section['file_naming_convention'] = 'kebab' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/init.py') self.check_validity(self.uut, [''], filename='/a/kebab-case') def test_pascal_case(self): for convention in ('Pascal', 'pascal', 'PASCAL'): self.section['file_naming_convention'] = convention self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__Init__.py') self.check_validity(self.uut, [''], filename='/a/PascalCase') def test_space_case(self): self.section['file_naming_convention'] = 'space' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__Init__.py', valid=False) self.check_validity(self.uut, [''], filename='/a/camCase', valid=False) self.check_validity(self.uut, [''], filename='/a/Space Case') def test_ignore_upper(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_validity(self.uut, [''], filename='/LICENSE', valid=False) def test_default_naming_java(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.java', valid=False) self.check_validity(self.uut, [''], filename='/Home/xyz/x-y.java', valid=False) self.check_validity(self.uut, [''], filename='/Home/xyz/x y.java', valid=False) self.check_validity(self.uut, [''], filename='/Home/xyz/XY.java') def test_default_naming_javascript(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.js', valid=False) self.check_validity(self.uut, [''], filename='/Home/xyz/x y.js', valid=False) self.check_validity(self.uut, [''], filename='/Home/xyz/XY.js') self.check_validity(self.uut, [''], filename='/Home/xyz/x-y.js') def test_default_file_naming_python(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/x y.py', valid=False) def test_none_file_naming_convention_warning(self): self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual( log.message, 'Please specify a file naming convention explicitly' ' or use "auto".') self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') def test_auto_file_naming_convention_warning(self): self.section['file_naming_convention'] = 'auto' self.uut.execute('filename.xyz', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual( log.message, 'The file naming convention could not be guessed. ' 'Using the default "snake" naming convention.')
class FilenameBearTest(LocalBearTestHelper): def setUp(self): self.section = Section('test section') self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section['file_naming_convention'] = 'INVALID' self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Invalid file-naming-convention provided: invalid') self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.section['file_naming_convention'] = 'snake' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_invalidity(self.uut, [''], filename='/a/camCase') def test_camel_case(self): self.section['file_naming_convention'] = 'camel' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/camCase') def test_kebab_case(self): self.section['file_naming_convention'] = 'kebab' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/init.py') self.check_validity(self.uut, [''], filename='/a/kebab-case') def test_pascal_case(self): for convention in ('Pascal', 'pascal', 'PASCAL'): self.section['file_naming_convention'] = convention self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__Init__.py') self.check_validity(self.uut, [''], filename='/a/PascalCase') def test_space_case(self): self.section['file_naming_convention'] = 'space' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_invalidity(self.uut, [''], filename='XYZ/__Init__.py') self.check_invalidity(self.uut, [''], filename='/a/camCase') self.check_validity(self.uut, [''], filename='/a/Space Case') def test_ignore_upper(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_invalidity(self.uut, [''], filename='/LICENSE') def test_default_naming_java(self): self.section['file_naming_convention'] = 'auto' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.java') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x-y.java') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x y.java') self.check_validity(self.uut, [''], filename='/Home/xyz/XY.java') def test_default_naming_javascript(self): self.section['file_naming_convention'] = 'auto' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.js') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x y.js') self.check_validity(self.uut, [''], filename='/Home/xyz/XY.js') self.check_validity(self.uut, [''], filename='/Home/xyz/x-y.js') def test_default_file_naming_python(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_invalidity(self.uut, [''], filename='/a/x y.py') def test_none_file_naming_convention_warning(self): self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Please specify a file naming convention explicitly' ' or use "auto".') self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') def test_auto_file_naming_convention_warning(self): self.section['file_naming_convention'] = 'auto' self.uut.execute('filename.xyz', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'The file naming convention could not be guessed. ' 'Using the default "snake" naming convention.') def test_file_prefix(self): self.section['filename_prefix'] = 'pre' self.check_invalidity( self.uut, [''], filename='filename.xyz') self.check_validity( self.uut, [''], filename='prefilename.xyz') self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "Filename does not use the prefix 'pre'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz')], filename='filename.xyz') def test_file_suffix(self): self.section['filename_suffix'] = 'fix' self.check_invalidity( self.uut, [''], filename='filename.xyz') self.check_validity( self.uut, [''], filename='filenamesuffix.xyz') self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "Filename does not use the suffix 'fix'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz')], filename='filename.xyz') def test_file_prefix_suffix(self): self.section['filename_prefix'] = 'pre' self.section['filename_suffix'] = 'fix' self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "- Filename does not use the prefix 'pre'.\n" "- Filename does not use the suffix 'fix'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz')], filename='filename.xyz') def test_file_with_too_long_filename(self): msg = 'Filename is too long ({} > {}).' filename_test1 = '_filenamewhichistoolong'*15 + '.xyz' filename_test2 = '_filenamewhichistoolong'*10 + '.xyz' filename_test3 = '_validfilenamelength'*13 max_filename_length = 260 self.check_invalidity( self.uut, [''], filename=filename_test1) self.check_validity( self.uut, [''], filename=filename_test2) self.check_validity( self.uut, [''], filename=filename_test3) self.check_results( self.uut, [''], [Result.from_values('FilenameBear', msg.format(len(filename_test1), max_filename_length), severity=RESULT_SEVERITY.NORMAL, file=filename_test1)], filename=filename_test1) def test_message_too_long_file_with_other_errors(self): self.section['filename_prefix'] = 'pre' filename_test1 = '_filenamewhichistoolong'*15 + '.xyz' max_filename_length = 260 msg = ("- Filename does not use the prefix 'pre'.\n" '- Filename is too long ({} > {}).' ) self.check_results( self.uut, [''], [Result.from_values('FilenameBear', msg.format(len(filename_test1), max_filename_length), severity=RESULT_SEVERITY.NORMAL, file=filename_test1)], filename=filename_test1)
class SpaceConsistencyBearTest(LocalBearTestHelper): def setUp(self): self.section = Section('test section') self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section['file_naming_convention'] = 'INVALID' self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Invalid file-naming-convention provided: INVALID') self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.section['file_naming_convention'] = 'snake' self.check_validity(self.uut, [''], filename='/a/camCase', valid=False) def test_camel_case(self): self.section['file_naming_convention'] = 'camel' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/camCase') def test_kebab_case(self): self.section['file_naming_convention'] = 'kebab' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/init.py') self.check_validity(self.uut, [''], filename='/a/kebab-case') def test_pascal_case(self): self.section['file_naming_convention'] = 'pascal' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__Init__.py') self.check_validity(self.uut, [''], filename='/a/PascalCase') def test_space_case(self): self.section['file_naming_convention'] = 'space' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py', valid=False) self.check_validity(self.uut, [''], filename='XYZ/__Init__.py', valid=False) self.check_validity(self.uut, [''], filename='/a/camCase', valid=False) self.check_validity(self.uut, [''], filename='/a/Space Case') def test_ignore_upper(self): self.check_validity(self.uut, [''], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_validity(self.uut, [''], filename='/LICENSE', valid=False)
class FilenameBearTest(LocalBearTestHelper): def setUp(self): self.section = Section('test section') self.uut = FilenameBear(self.section, Queue()) def test_invalid_naming_convention(self): self.section['file_naming_convention'] = 'INVALID' self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get(timeout=1) log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Invalid file-naming-convention provided: invalid') self.assertEqual(log.log_level, LOG_LEVEL.ERROR) def test_snake_case(self): self.section['file_naming_convention'] = 'snake' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_invalidity(self.uut, [''], filename='/a/camCase') def test_camel_case(self): self.section['file_naming_convention'] = 'camel' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_validity(self.uut, [''], filename='/a/camCase') def test_kebab_case(self): self.section['file_naming_convention'] = 'kebab' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/init.py') self.check_validity(self.uut, [''], filename='/a/kebab-case') def test_pascal_case(self): for convention in ('Pascal', 'pascal', 'PASCAL'): self.section['file_naming_convention'] = convention self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__Init__.py') self.check_validity(self.uut, [''], filename='/a/PascalCase') def test_space_case(self): self.section['file_naming_convention'] = 'space' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_invalidity(self.uut, [''], filename='XYZ/__Init__.py') self.check_invalidity(self.uut, [''], filename='/a/camCase') self.check_validity(self.uut, [''], filename='/a/Space Case') def test_ignore_upper(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/LICENSE') self.section['ignore_uppercase_filenames'] = 'nope' self.check_invalidity(self.uut, [''], filename='/LICENSE') def test_default_naming_java(self): self.section['file_naming_convention'] = 'auto' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.java') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x-y.java') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x y.java') self.check_validity(self.uut, [''], filename='/Home/xyz/XY.java') def test_default_naming_javascript(self): self.section['file_naming_convention'] = 'auto' self.check_invalidity(self.uut, [''], filename='/Home/xyz/x_y.js') self.check_invalidity(self.uut, [''], filename='/Home/xyz/x y.js') self.check_validity(self.uut, [''], filename='/Home/xyz/XY.js') self.check_validity(self.uut, [''], filename='/Home/xyz/x-y.js') def test_default_file_naming_python(self): self.section['file_naming_convention'] = 'auto' self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') self.check_validity(self.uut, [''], filename='XYZ/__init__.py') self.check_invalidity(self.uut, [''], filename='/a/x y.py') def test_none_file_naming_convention_warning(self): self.uut.execute('filename', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'Please specify a file naming convention explicitly' ' or use "auto".') self.check_validity(self.uut, [''], filename='/Home/xyz/x_y.py') def test_auto_file_naming_convention_warning(self): self.section['file_naming_convention'] = 'auto' self.uut.execute('filename.xyz', []) # Automatic bear messages we want to ignore. self.uut.message_queue.get() log = self.uut.message_queue.get(timeout=1) self.assertEqual(log.message, 'The file naming convention could not be guessed. ' 'Using the default "snake" naming convention.') def test_file_prefix(self): self.section['filename_prefix'] = 'pre' self.check_invalidity( self.uut, [''], filename='filename.xyz') self.check_validity( self.uut, [''], filename='prefilename.xyz') self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "Filename does not use the prefix 'pre'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz')], filename='filename.xyz') def test_file_suffix(self): self.section['filename_suffix'] = 'fix' self.check_invalidity( self.uut, [''], filename='filename.xyz') self.check_validity( self.uut, [''], filename='filenamesuffix.xyz') self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "Filename does not use the suffix 'fix'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz')], filename='filename.xyz') def test_file_prefix_suffix(self): self.section['filename_prefix'] = 'pre' self.section['filename_suffix'] = 'fix' self.check_results( self.uut, [''], [Result.from_values('FilenameBear', "- Filename does not use the prefix 'pre'.\n" "- Filename does not use the suffix 'fix'.", severity=RESULT_SEVERITY.NORMAL, file='filename.xyz')], filename='filename.xyz')