def test_max_length_version(collection_info): collection_info['version'] = '1.1.' + '1' * (schema.MAX_LENGTH_VERSION - 4) CollectionInfo(**collection_info) collection_info['version'] += '1' with pytest.raises(ValueError, match=r"'version' must not be greater than"): CollectionInfo(**collection_info)
def test_max_length_namespace(collection_info, field_max): collection_info[field_max[0]] = 'x' * field_max[1] CollectionInfo(**collection_info) collection_info[field_max[0]] += 'x' with pytest.raises(ValueError, match=rf"'{field_max[0]}' must not be greater than"): CollectionInfo(**collection_info)
def test_max_length_author(collection_info, field_max): collection_info[field_max[0]].append('x' * field_max[1]) CollectionInfo(**collection_info) collection_info[field_max[0]][-1] += 'x' with pytest.raises(ValueError, match=rf"in '{field_max[0]}' list must not be greater"): CollectionInfo(**collection_info)
def test_max_tags(collection_info): collection_info['tags'] = [str(f'tag_{i}') for i in range(90, 110)] res = CollectionInfo(**collection_info) assert [str(f'tag_{i}') for i in range(90, 110)] == res.tags collection_info['tags'] = [str(f'tag_{i}') for i in range(90, 111)] with pytest.raises(ValueError, match=r'Expecting no more than '): CollectionInfo(**collection_info)
def test_license_file(collection_info): collection_info['license'] = [] collection_info['license_file'] = 'my_very_own_license.txt' res = CollectionInfo(**collection_info) assert len(res.license) == 0 assert res.license_file == 'my_very_own_license.txt' collection_info['license_file'] = ['my_very_own_license.txt'] with pytest.raises(ValueError, match=r"'license_file' must be a string"): CollectionInfo(**collection_info)
def test_non_null_str_fields(collection_info): collection_info['description'] = None res = CollectionInfo(**collection_info) assert res.description is None collection_info['description'] = 'description of the collection' res = CollectionInfo(**collection_info) assert res.description == 'description of the collection' collection_info['description'] = ['should be a string not list'] with pytest.raises(ValueError, match=r"'description' must be a string"): CollectionInfo(**collection_info)
def test_license(collection_info): collection_info['license'] = ['MIT', 'GPL-2.0-only', 'Apache-2.0'] res = CollectionInfo(**collection_info) assert res.license == ['MIT', 'GPL-2.0-only', 'Apache-2.0'] assert res.license_file is None collection_info['license'] = ['MIT', 'not-a-real-license', 'n00p'] with pytest.raises( ValueError, match=r"Expecting 'license' to be a list of valid SPDX"): CollectionInfo(**collection_info) collection_info['license'] = 'MIT' with pytest.raises(ValueError, match=r"'license' to be a list of strings"): CollectionInfo(**collection_info)
def test_self_dependency(collection_info): namespace = collection_info['namespace'] name = collection_info['name'] collection_info['dependencies'] = { '{}.{}'.format(namespace, name): '1.0.0' } with pytest.raises(ValueError, match=r'Cannot have self dependency'): CollectionInfo(**collection_info)
def test_required_tag_enabled(collection_info, temp_config_file): with open(temp_config_file, 'w') as f: f.write('[galaxy-importer]\nCHECK_REQUIRED_TAGS = True') f.flush() config_data = config.ConfigFile.load() config.Config(config_data=config_data) collection_info['tags'] = ['application'] res = CollectionInfo(**collection_info) assert ['application'] == res.tags
def test_collection_info(collection_info): res = CollectionInfo(**collection_info) assert type(res) == CollectionInfo assert res.namespace == 'acme' assert res.name == 'jenkins' assert res.version == '3.5.0' assert res.license == ['MIT'] assert res.readme == 'README.md' assert res.authors == ['Bob Smith <*****@*****.**>'] assert res.tags == ['testcases']
def test_required_tag_enabled_exception(collection_info, temp_config_file): with open(temp_config_file, 'w') as f: f.write('[galaxy-importer]\nCHECK_REQUIRED_TAGS = True') f.flush() config_data = config.ConfigFile.load() config.Config(config_data=config_data) collection_info['tags'] = ['fail'] with pytest.raises(ValueError, match=r'At least one tag required from tag list: '): CollectionInfo(**collection_info)
def test_invalid_dep_format(collection_info, dependent_collection): collection_info['dependencies'] = {dependent_collection: '1.0.0'} with pytest.raises(ValueError, match=r'Invalid dependency format'): CollectionInfo(**collection_info)
def test_max_length_url(collection_info, url): collection_info[url] = 'x' * (schema.MAX_LENGTH_URL + 1) with pytest.raises(ValueError, match=rf"'{url}' must not be greater than"): CollectionInfo(**collection_info)
def test_invalid_dep_version(collection_info): collection_info['dependencies'] = {'joe.role1': 3} with pytest.raises(ValueError, match=r'Expecting depencency version to be string'): CollectionInfo(**collection_info)
def test_invalid_dep_name(collection_info): collection_info['dependencies'] = {3.3: '1.0.0'} with pytest.raises(ValueError, match=r'Expecting depencency to be string'): CollectionInfo(**collection_info)
def test_invalid_dep_type(collection_info): collection_info['dependencies'] = 'joe.role1: 3' with pytest.raises(TypeError, match=r"'dependencies' must be <class 'dict'>"): CollectionInfo(**collection_info)
def test_invalid_license(collection_info, invalid_license_list): collection_info['license'] = invalid_license_list with pytest.raises(ValueError, match=r'invalid license identifiers'): CollectionInfo(**collection_info)
def test_invalid_tags(collection_info, invalid_tags): collection_info['tags'] = invalid_tags with pytest.raises(ValueError, match="'tag' has invalid format"): CollectionInfo(**collection_info)
def test_license_not_list_of_str(collection_info): collection_info['license'] = 'MIT' with pytest.raises(ValueError, match=r"'license' to be a list of strings"): CollectionInfo(**collection_info)
def test_valid_names(collection_info, valid_name): collection_info['name'] = valid_name res = CollectionInfo(**collection_info) assert res.name == valid_name
def test_valid_semver(collection_info, valid_semver): collection_info['version'] = valid_semver res = CollectionInfo(**collection_info) assert res.version == valid_semver
def test_max_length_license(collection_info): collection_info['license'].append('x' * (schema.MAX_LENGTH_LICENSE + 1)) with pytest.raises( ValueError, match=r"license in 'licenses' list must not be greater"): CollectionInfo(**collection_info)
def test_invalid_version_spec(collection_info, depencency): collection_info['dependencies'] = depencency with pytest.raises(ValueError, match='version spec range invalid'): CollectionInfo(**collection_info)
def test_valid_license(collection_info, valid_license_list): collection_info['license'] = valid_license_list res = CollectionInfo(**collection_info) assert res.license == valid_license_list
def test_invalid_semver(collection_info, invalid_semver): collection_info['version'] = invalid_semver with pytest.raises(ValueError, match=r"'version' to be in semantic version"): CollectionInfo(**collection_info)
def test_valid_tags(collection_info, valid_tags): collection_info['tags'] = valid_tags res = CollectionInfo(**collection_info) assert res.tags == valid_tags
def test_readme_req(collection_info): collection_info['readme'] = '' with pytest.raises(ValueError, match=r"'readme' is required"): CollectionInfo(**collection_info)
def test_license_file(collection_info): collection_info['license'] = [] collection_info['license_file'] = 'my_very_own_license.txt' res = CollectionInfo(**collection_info) assert len(res.license) == 0 assert res.license_file == 'my_very_own_license.txt'
def test_invalid_names(collection_info, invalid_name): collection_info['name'] = invalid_name with pytest.raises(ValueError, match=r"'name' has invalid format"): CollectionInfo(**collection_info)
def test_empty_lic_and_lic_file(collection_info): collection_info['license'] = [] with pytest.raises(ValueError, match=r"'license' or 'license_file' are required"): CollectionInfo(**collection_info)