rspec/rspec-tools/tests/test_utils.py
Marco Antognini 26e3ebc7ec Refactor rspec-tools and other cleanups
The main changes are:
 * Split RuleCreator: move some of its content to RspecRepo and to
   RuleEditor in new modules.
 * Refactor tests accordingly.

Other less important changes:
 * Sort and remove unnecessary imports
 * Remove unimplemented functions and unnecessary classes
 * Make some functions private
 * Move pushd from utils to tests where it is only used
 * Reduce code duplication here and there
 * Remove unnecessary Mock in some tests
 * Improve coverage for add_language_to_rule
2022-02-28 12:08:21 +01:00

61 lines
2.2 KiB
Python

import pytest
from rspec_tools.errors import InvalidArgumentError
from rspec_tools.utils import (get_label_for_language,
get_labels_for_languages, get_mapped_languages,
load_valid_languages,
parse_and_validate_language_list, resolve_rule)
def test_fails_when_no_languages_listed():
'''Test that language validation fails on empty list.'''
with pytest.raises(InvalidArgumentError):
parse_and_validate_language_list('')
with pytest.raises(InvalidArgumentError):
parse_and_validate_language_list(' ')
def test_fails_for_non_language():
'''Test that language validation fails on unexpected langauge.'''
with pytest.raises(InvalidArgumentError):
parse_and_validate_language_list('abracadabra')
with pytest.raises(InvalidArgumentError):
parse_and_validate_language_list('java,abra,cadabra')
def test_parses_the_language_list():
lang_list = ['php', 'javascript', 'cfamily']
lang_str = ' php,javascript, cfamily'
assert parse_and_validate_language_list(lang_str) == lang_list
def test_valid_languages_contains_java():
assert 'java' in load_valid_languages()
def test_valid_and_mapped_languages_equivalent():
assert set(get_mapped_languages()) == set(load_valid_languages())
def test_labels_for_languages():
lang_list = ['java', 'apex', 'cfamily', 'ruby']
labels = ['java', 'slang', 'cfamily']
assert set(get_labels_for_languages(lang_list)) == set(labels)
def test_resolve_rule():
assert resolve_rule('S100') == 100
assert resolve_rule('S1234') == 1234
with pytest.raises(InvalidArgumentError):
resolve_rule('S12')
with pytest.raises(InvalidArgumentError):
resolve_rule('12')
with pytest.raises(InvalidArgumentError):
resolve_rule('SS13')
with pytest.raises(InvalidArgumentError):
resolve_rule('RSPEC-1343')
with pytest.raises(InvalidArgumentError):
resolve_rule(' S1343 ')
with pytest.raises(InvalidArgumentError):
resolve_rule('SXXXX')
with pytest.raises(InvalidArgumentError):
resolve_rule('S90000')
def test_label_for_language():
assert get_label_for_language('java') == 'java'
with pytest.raises(InvalidArgumentError):
get_label_for_language('russian')