예제 #1
0
def test_parse_pv():
    """Validate parsing a PV."""
    pkg = package_info.parse('bar-1.2.3_rc1-r5')
    assert not pkg.category
    assert pkg.package == 'bar'
    assert pkg.version == '1.2.3_rc1'
    assert pkg.revision == 5
예제 #2
0
def test_parse_atom():
    """Validate parsing an atom."""
    pkg = package_info.parse('foo/bar')
    assert pkg.category == 'foo'
    assert pkg.package == 'bar'
    assert not pkg.version
    assert not pkg.revision
예제 #3
0
def test_parse_cpf():
    """Validate parsing a full CPF."""
    cpf = 'foo/bar-1.0.0_alpha-r2'
    pkg = package_info.parse(cpf)
    assert pkg.category == 'foo'
    assert pkg.package == 'bar'
    assert pkg.version == '1.0.0_alpha'
    assert pkg.revision == 2
    assert pkg.cpf == cpf
예제 #4
0
def _ParseArguments(argv):
    """Parse and validate arguments."""
    parser = GetParser()
    opts = parser.parse_args(argv)

    if not os.path.exists(os.path.dirname(opts.output)):
        parser.error('Path containing the output file does not exist.')

    # Manually parse the packages as CPVs.
    packages = []
    for pkg in opts.packages:
        cpv = package_info.parse(pkg)
        if not cpv.atom:
            parser.error('Invalid package atom: %s' % pkg)

        packages.append(cpv)
    opts.packages = packages

    opts.Freeze()
    return opts
예제 #5
0
def test_parse_invalid():
    """Invalid package format."""
    package_info.parse('invalid/package/format')