Beispiel #1
0
    def check_installed_software() -> None:

        log.debug(
            "python version: {}.{}.{}",
            sys.version_info.major,
            sys.version_info.minor,
            sys.version_info.micro,
        )

        # 17.05 added support for multi-stage builds
        # https://docs.docker.com/compose/compose-file/compose-file-v3/#compose-and-docker-compatibility-matrix
        # 18.09.2 fixed the CVE-2019-5736 vulnerability
        # 20.10.0 introduced copy --chmod and improved logging
        Packages.check_program("docker",
                               min_version="20.10.0",
                               min_recommended_version="20.10.0")

        if docker.compose.is_installed():
            # too slow to verify the version on every commands... near half a seconds
            # Sometimes a couple of seconds!
            # v = docker.compose.version()
            # log.debug("docker compose is installed: {}", v)
            log.debug("docker compose is installed")
        else:  # pragma: no cover
            print_and_exit(
                "A mandatory dependency is missing: docker compose not found"
                "\nInstallation guide: "
                "https://docs.docker.com/compose/cli-command/#installing-compose-v2"
                "\nor try the automated installation with {command}",
                command=RED("rapydo install compose"),
            )
Beispiel #2
0
def test_packages(faker: Faker) -> None:
    assert Packages.get_bin_version("invalid") is None

    v = Packages.get_bin_version("git")
    assert v is not None
    # Something like 2.25.1
    assert len(str(Version(v)).split(".")) == 3

    # Check docker client version
    v = Packages.get_bin_version("docker")
    assert v is not None
    # Something like 19.03.8 or 18.06.0-ce
    assert len(str(Version(v)).split(".")) >= 3

    # Check docker engine version
    v = Packages.get_bin_version(
        "docker", option=["version", "--format", "'{{.Server.Version}}'"]
    )
    assert v is not None
    assert len(str(Version(v)).split(".")) >= 3

    with pytest.raises(SystemExit):
        Packages.check_program("invalid")

    v = Packages.check_program("docker")
    assert v is not None

    with pytest.raises(SystemExit):
        Packages.check_program("docker", min_version="99999.99")

    with pytest.raises(SystemExit):
        Packages.check_program("docker", max_version="0.0")

    v = Packages.check_program("docker", min_version="0.0")
    assert v is not None

    v = Packages.check_program("docker", max_version="99999.99")
    assert v is not None

    v = Packages.check_program("docker", min_version="0.0", max_version="99999.99")
    assert v is not None

    v = Packages.check_program(
        "docker",
        min_version="0.0",
        max_version="99999.99",
        min_recommended_version="99999.99",
    )
    assert v is not None

    assert Packages.get_installation_path("invalid") is None
    assert Packages.get_installation_path("rapydo") is not None
    assert Packages.get_installation_path("pip") is None

    assert Packages.convert_bin_to_win32("test") == "test"
    assert Packages.convert_bin_to_win32("compose") == "compose"
    assert Packages.convert_bin_to_win32("buildx") == "buildx"
    assert Packages.convert_bin_to_win32("git") == "git"
    rand_str = faker.pystr()
    assert Packages.convert_bin_to_win32(rand_str) == rand_str
    assert Packages.convert_bin_to_win32("docker") == "docker.exe"