Ejemplo n.º 1
0
    def test_index_record_timestamp(self):
        # regression test for #6096
        ts_secs = 1507565728
        ts_millis = ts_secs * 1000
        rec = PackageRecord(
            name='test-package',
            version='1.2.3',
            build='2',
            build_number=2,
            timestamp=ts_secs
        )
        assert rec.timestamp == ts_secs
        assert rec.dump()['timestamp'] == ts_millis

        ts_millis = 1507565728999
        ts_secs = ts_millis / 1000
        rec = PackageRecord(
            name='test-package',
            version='1.2.3',
            build='2',
            build_number=2,
            timestamp=ts_secs
        )
        assert rec.timestamp == ts_secs
        assert rec.dump()['timestamp'] == ts_millis
Ejemplo n.º 2
0
def test_general_graph_bfs_version():
    a = PackageRecord(name="a",
                      version="1",
                      build="0",
                      build_number=0,
                      depends=["b", "c", "d"])
    b = PackageRecord(name="b",
                      version="1",
                      build="0",
                      build_number=0,
                      depends=["e"])
    c = PackageRecord(name="c",
                      version="1",
                      build="0",
                      build_number=0,
                      depends=["g=1"])
    d = PackageRecord(name="d",
                      version="1",
                      build="0",
                      build_number=0,
                      depends=["f", "g=2"])
    e = PackageRecord(name="e", version="1", build="0", build_number=0)
    f = PackageRecord(name="f", version="1", build="0", build_number=0)
    g1 = PackageRecord(name="g", version="1", build="0", build_number=0)
    g2 = PackageRecord(name="g", version="2", build="0", build_number=0)
    records = [a, b, c, d, e, f, g1, g2]
    graph = GeneralGraph(records)

    a_to_g1 = graph.breadth_first_search_by_name(MatchSpec("a"),
                                                 MatchSpec("g=1"))
    assert a_to_g1 == [MatchSpec("a"), MatchSpec("c"), MatchSpec("g=1")]

    a_to_g2 = graph.breadth_first_search_by_name(MatchSpec("a"),
                                                 MatchSpec("g=2"))
    assert a_to_g2 == [MatchSpec("a"), MatchSpec("d"), MatchSpec("g=2")]
Ejemplo n.º 3
0
    def test_tarball_match_specs(self):
        url = "https://conda.anaconda.org/conda-canary/linux-64/conda-4.3.21.post699+1dab973-py36h4a561cd_0.tar.bz2"
        assert m(
            url
        ) == "conda-canary/linux-64::conda==4.3.21.post699+1dab973=py36h4a561cd_0"
        assert m(
            "conda-canary/linux-64::conda==4.3.21.post699+1dab973=py36h4a561cd_0"
        ) == "conda-canary/linux-64::conda==4.3.21.post699+1dab973=py36h4a561cd_0"

        url = "https://conda.anaconda.org/conda-canary/conda-4.3.21.post699+1dab973-py36h4a561cd_0.tar.bz2"
        assert m(url) == "*[url=%s]" % url

        pref1 = PackageRecord(
            channel=Channel(None),
            name="conda",
            version="4.3.21.post699+1dab973",
            build="py36h4a561cd_0",
            build_number=0,
            fn="conda-4.3.21.post699+1dab973-py36h4a561cd_0.tar.bz2",
            url=url,
        )
        pref2 = PackageRecord.from_objects(pref1, md5="1234")
        assert MatchSpec(url=url).match(pref1)
        assert MatchSpec(m(url)).match(pref1)
        assert MatchSpec(m(url)).match(pref1.dump())
        assert not MatchSpec(url=url, md5="1234").match(pref1)
        assert not MatchSpec(url=url, md5="1234").match(pref1.dump())
        assert MatchSpec(url=url, md5="1234").match(pref2)
        assert MatchSpec(url=url, md5="1234").get('md5') == "1234"

        url = "file:///var/folders/cp/7r2s_s593j7_cpdtxxsmct880000gp/T/edfc ñçêáôß/flask-0.10.1-py35_2.tar.bz2"
        assert m(url) == "*[url='%s']" % url
Ejemplo n.º 4
0
    def test_package_info(self):
        index_json_record = PackageRecord(build=0, build_number=0, name="test_foo", version=0,
                                          channel='defaults', subdir=context.subdir, fn='doesnt-matter',
                                          md5='0123456789')
        icondata = "icondata"
        package_metadata = PackageMetadata(
            package_metadata_version=1,
            noarch=Noarch(type="python", entry_points=["test:foo"]),
        )

        paths = [PathData(_path="test/path/1", file_mode=FileMode.text, path_type=PathType.hardlink,
                          prefix_placeholder="/opt/anaconda1anaconda2anaconda3", ),
                 PathData(_path="test/path/2", no_link=True, path_type=PathType.hardlink),
                 PathData(_path="test/path/3", path_type=PathType.softlink),
                 PathData(_path="menu/test.json", path_type=PathType.hardlink)]
        paths_data = PathsData(paths_version=0, paths=paths)

        package_info = PackageInfo(
            extracted_package_dir='/some/path',
            channel=Channel('defaults'),
            repodata_record=index_json_record,
            url='https://some.com/place/file.tar.bz2',

            index_json_record=index_json_record,
            icondata=icondata,
            package_metadata=package_metadata,
            paths_data=paths_data,
        )

        self.assertIsInstance(package_info.paths_data.paths[0], PathData)
        self.assertIsInstance(package_info.index_json_record, PackageRecord)
        self.assertIsInstance(package_info.package_metadata.noarch, Noarch)
        assert package_info.paths_data.paths[0].path == "test/path/1"
Ejemplo n.º 5
0
def to_package_record_from_subjson(entry, pkg, jsn_string):
    channel_url = entry["url"]
    info = json.loads(jsn_string)
    info["fn"] = pkg
    info["channel"] = to_conda_channel(entry["channel"], entry["platform"])
    info["url"] = join_url(channel_url, pkg)
    package_record = PackageRecord(**info)
    return package_record
Ejemplo n.º 6
0
def test_general_graph_bfs_simple():
    a = PackageRecord(name="a", version="1", build="0", build_number=0, depends=["b", "c", "d"])
    b = PackageRecord(name="b", version="1", build="0", build_number=0, depends=["e"])
    c = PackageRecord(name="c", version="1", build="0", build_number=0)
    d = PackageRecord(name="d", version="1", build="0", build_number=0, depends=["f", "g"])
    e = PackageRecord(name="e", version="1", build="0", build_number=0)
    f = PackageRecord(name="f", version="1", build="0", build_number=0)
    g = PackageRecord(name="g", version="1", build="0", build_number=0)
    records = [a, b, c, d, e, f, g]
    graph = GeneralGraph(records)

    a_to_c = graph.breadth_first_search_by_name(MatchSpec("a"), MatchSpec("c"))
    assert a_to_c == [MatchSpec("a"), MatchSpec("c")]

    a_to_f = graph.breadth_first_search_by_name(MatchSpec("a"), MatchSpec("f"))
    assert a_to_f == [MatchSpec("a"), MatchSpec("d"), MatchSpec("f")]

    a_to_a = graph.breadth_first_search_by_name(MatchSpec("a"), MatchSpec("a"))
    assert a_to_a == [MatchSpec("a")]

    a_to_not_exist = graph.breadth_first_search_by_name(MatchSpec("a"), MatchSpec("z"))
    assert a_to_not_exist is None

    backwards = graph.breadth_first_search_by_name(MatchSpec("d"), MatchSpec("a"))
    assert backwards is None
Ejemplo n.º 7
0
Archivo: mamba.py Proyecto: minrk/mamba
def to_package_record_from_subjson(subdir, pkg, jsn_string):
    channel = subdir.channel
    channel_url = subdir.url_w_credentials
    info = json.loads(jsn_string)
    info['fn'] = pkg
    info['channel'] = channel
    info['url'] = join_url(channel_url, pkg)
    package_record = PackageRecord(**info)
    return package_record
Ejemplo n.º 8
0
def to_package_record_from_subjson(channel, pkg, jsn_string):
    channel = channel
    channel_url = channel.url(with_credentials=True)
    info = json.loads(jsn_string)
    info["fn"] = pkg
    info["channel"] = channel
    info["url"] = join_url(channel_url, pkg)
    package_record = PackageRecord(**info)
    return package_record
Ejemplo n.º 9
0
def DPkg(s, **kwargs):
    d = Dist(s)
    return PackageRecord(fn=d.to_filename(),
                         name=d.name,
                         version=d.version,
                         build=d.build_string,
                         build_number=int(d.build_string.rsplit('_', 1)[-1]),
                         channel=d.channel,
                         subdir=context.subdir,
                         md5="012345789",
                         **kwargs)
Ejemplo n.º 10
0
def make_temp_channel(packages):
    package_reqs = [pkg.replace("-", "=") for pkg in packages]
    package_names = [pkg.split("-")[0] for pkg in packages]

    with make_temp_env(*package_reqs) as prefix:
        for package in packages:
            assert package_is_installed(prefix, package.replace("-", "="))
        data = [
            p for p in PrefixData(prefix).iter_records()
            if p["name"] in package_names
        ]
        run_command(Commands.REMOVE, prefix, *package_names)
        for package in packages:
            assert not package_is_installed(prefix, package.replace("-", "="))

    repodata = {"info": {}, "packages": {}}
    tarfiles = {}
    for package_data in data:
        pkg_data = package_data
        fname = pkg_data["fn"]
        tarfiles[fname] = join(PackageCacheData.first_writable().pkgs_dir,
                               fname)

        pkg_data = pkg_data.dump()
        for field in ("url", "channel", "schannel"):
            pkg_data.pop(field, None)
        repodata["packages"][fname] = PackageRecord(**pkg_data)

    with make_temp_env() as channel:
        subchan = join(channel, context.subdir)
        noarch_dir = join(channel, "noarch")
        channel = path_to_url(channel)
        os.makedirs(subchan)
        os.makedirs(noarch_dir)
        for fname, tar_old_path in tarfiles.items():
            tar_new_path = join(subchan, fname)
            copyfile(tar_old_path, tar_new_path)

        with open(join(subchan, "repodata.json"), "w") as f:
            f.write(json.dumps(repodata, cls=EntityEncoder))
        with open(join(noarch_dir, "repodata.json"), "w") as f:
            f.write(json.dumps({}, cls=EntityEncoder))

        yield channel
Ejemplo n.º 11
0
    def test_dist(self):
        with env_unmodified(conda_tests_ctxt_mgmt_def_pol):
            dst = Dist('defaults::foo-1.2.3-4.tar.bz2')
            a = MatchSpec(dst)
            b = MatchSpec(a)
            c = MatchSpec(dst, optional=True, target='burg')
            d = MatchSpec(a, build='5')

            assert a == b
            assert hash(a) == hash(b)
            assert a is b

            assert a != c
            assert hash(a) != hash(c)

            assert a != d
            assert hash(a) != hash(d)

            p = MatchSpec(channel='defaults',name='python',version=VersionSpec('3.5*'))
            assert p.match(Dist(channel='defaults', dist_name='python-3.5.3-1', name='python',
                                version='3.5.3', build_string='1', build_number=1, base_url=None,
                                platform=None))

            assert not p.match(Dist(channel='defaults', dist_name='python-3.6.0-0', name='python',
                                    version='3.6.0', build_string='0', build_number=0, base_url=None,
                                    platform=None))

            assert p.match(Dist(channel='defaults', dist_name='python-3.5.1-0', name='python',
                                version='3.5.1', build_string='0', build_number=0, base_url=None,
                                platform=None))
            assert p.match(PackageRecord(name='python', version='3.5.1', build='0', build_number=0,
                                         depends=('openssl 1.0.2*', 'readline 6.2*', 'sqlite',
                                                   'tk 8.5*', 'xz 5.0.5', 'zlib 1.2*', 'pip'),
                                         channel=Channel(scheme='https', auth=None,
                                                          location='repo.anaconda.com', token=None,
                                                          name='pkgs/main', platform='osx-64',
                                                          package_filename=None),
                                         subdir='osx-64', fn='python-3.5.1-0.tar.bz2',
                                         md5='a813bc0a32691ab3331ac9f37125164c', size=14678857,
                                         priority=0,
                                         url='https://repo.anaconda.com/pkgs/main/osx-64/python-3.5.1-0.tar.bz2'))
Ejemplo n.º 12
0
def solved_urllib3():
    fake = [
        PackageRecord(
            **{
                "arch":
                None,
                "build":
                "py36_0",
                "build_number":
                0,
                "channel":
                "https://conda.anaconda.org/conda-forge/linux-64",
                "constrains": [],
                "depends": [
                    "certifi",
                    "cryptography >=1.3.4",
                    "idna >=2.0.0",
                    "pyopenssl >=0.14",
                    "pysocks >=1.5.6,<2.0,!=1.5.7",
                    "python >=3.6,<3.7.0a0",
                ],
                "fn":
                "urllib3-1.25.3-py36_0.tar.bz2",
                "license":
                "MIT",
                "license_family":
                "MIT",
                "md5":
                "98696f9f012d04bd7795a6a2febf66a0",
                "name":
                "urllib3",
                "platform":
                None,
                "sha256":
                "d94eb3db911a6806f45a9fba50e49961c189d9fb32c44f8fd19902334616335e",
                "size":
                191254,
                "subdir":
                "linux-64",
                "timestamp":
                1558705030958,
                "url":
                "https://conda.anaconda.org/conda-forge/linux-64/urllib3-1.25.3-py36_0.tar.bz2",
                "version":
                "1.25.3",
            }),
        PackageRecord(
            **{
                "arch":
                None,
                "build":
                "py36_0",
                "build_number":
                0,
                "channel":
                "https://conda.anaconda.org/conda-forge/linux-64",
                "constrains": [],
                "depends": [
                    "certifi",
                    "cryptography >=1.3.4",
                    "idna >=2.0.0",
                    "pyopenssl >=0.14",
                    "pysocks >=1.5.6,<2.0,!=1.5.7",
                    "python >=3.6,<3.7.0a0",
                ],
                "fn":
                "urllib3-1.25.3-py36_0.tar.bz2",
                "license":
                "MIT",
                "license_family":
                "MIT",
                "md5":
                "98696f9f012d04bd7795a6a2febf66a0",
                "name":
                "not-urllib3",
                "platform":
                None,
                "sha256":
                "d94eb3db911a6806f45a9fba50e49961c189d9fb32c44f8fd19902334616335e",
                "size":
                191254,
                "subdir":
                "linux-64",
                "timestamp":
                1558705030958,
                "url":
                "https://conda.anaconda.org/conda-forge/linux-64/urllib3-1.25.3-py36_0.tar.bz2",
                "version":
                "1.25.3",
            }),
    ]
    return lambda: fake