示例#1
0
def test_metadata_as_dict():
    metadata = PackageMetaData(PackageType.LIBRARY, "foo", "1.2.3")
    # test setter
    metadata.version = "0.1.2+12345"
    assert metadata.version == semantic_version.Version("0.1.2+12345")
    assert not jsondiff.diff(
        metadata.as_dict(),
        {
            "type": PackageType.LIBRARY,
            "name": "foo",
            "version": "0.1.2+12345",
            "spec": None,
        },
    )

    assert not jsondiff.diff(
        PackageMetaData(
            PackageType.TOOL,
            "toolchain",
            "2.0.5",
            PackageSpec("platformio/toolchain@~2.0.0"),
        ).as_dict(),
        {
            "type": PackageType.TOOL,
            "name": "toolchain",
            "version": "2.0.5",
            "spec": {
                "owner": "platformio",
                "id": None,
                "name": "toolchain",
                "requirements": "~2.0.0",
                "url": None,
            },
        },
    )
示例#2
0
def test_metadata_dump(tmpdir_factory):
    pkg_dir = tmpdir_factory.mktemp("package")
    metadata = PackageMetaData(
        PackageType.TOOL,
        "toolchain",
        "2.0.5",
        PackageSpec("platformio/toolchain@~2.0.0"),
    )

    dst = pkg_dir.join(".piopm")
    metadata.dump(str(dst))
    assert os.path.isfile(str(dst))
    contents = dst.read()
    assert all(s in contents for s in ("null", '"~2.0.0"'))
示例#3
0
def test_metadata_load(tmpdir_factory):
    contents = """
{
  "name": "foo",
  "spec": {
    "name": "foo",
    "owner": "username",
    "requirements": "!=3.4.5"
  },
  "type": "platform",
  "version": "0.1.3"
}
"""
    pkg_dir = tmpdir_factory.mktemp("package")
    dst = pkg_dir.join(".piopm")
    dst.write(contents)
    metadata = PackageMetaData.load(str(dst))
    assert metadata.version == semantic_version.Version("0.1.3")
    assert metadata == PackageMetaData(
        PackageType.PLATFORM,
        "foo",
        "0.1.3",
        spec=PackageSpec(owner="username", name="foo", requirements="!=3.4.5"),
    )

    piopm_path = pkg_dir.join(".piopm")
    metadata = PackageMetaData(PackageType.LIBRARY,
                               "mylib",
                               version="1.2.3",
                               spec=PackageSpec("mylib"))
    metadata.dump(str(piopm_path))
    restored_metadata = PackageMetaData.load(str(piopm_path))
    assert metadata == restored_metadata
示例#4
0
 def build_metadata(self, pkg_dir, spec, vcs_revision=None):
     manifest = self.load_manifest(pkg_dir)
     metadata = PackageMetaData(
         type=self.pkg_type,
         name=manifest.get("name"),
         version=manifest.get("version"),
         spec=spec,
     )
     if not metadata.name or spec.has_custom_name():
         metadata.name = spec.name
     if vcs_revision:
         metadata.version = "%s+sha.%s" % (
             metadata.version if metadata.version else "0.0.0",
             vcs_revision,
         )
     if not metadata.version:
         metadata.version = self.generate_rand_version()
     return metadata