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)
示例#9
0
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']
示例#11
0
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)