Ejemplo n.º 1
0
def test_requirementobj__version__func_call():
    def _return_version():
        return "This is v5.3!"

    obj = versions.RequirementObj(call=_return_version,
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())
    assert_equal(obj.version, (5, 3))
Ejemplo n.º 2
0
def test_requirementobj__version__version_str_not_found():
    call = _echo_version("A typical error\n")
    obj = versions.RequirementObj(call=call,
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    with pytest.raises(versions.VersionRequirementError):
        getattr(obj, "version")
Ejemplo n.º 3
0
def test_requirementobj__version__func_call_with_arguments():
    def _return_version(arg1, arg2):
        assert (arg1, arg2) == (2, "foo")
        return "This is v5.3!"

    obj = versions.RequirementObj(call=(_return_version, 2, "foo"),
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())
    assert obj.version == (5, 3)
Ejemplo n.º 4
0
def test_requirementobj__init__non_defaults():
    obj = versions.RequirementObj(call=("bash", "foo"),
                                  search=r"(\d+)\.(\d+)",
                                  checks=versions.Any(),
                                  name="A name",
                                  priority=17)

    assert_equal(obj.name, "A name")
    assert_equal(obj.priority, 17)
Ejemplo n.º 5
0
    def _do_test_outdated_jre(message):
        obj = versions.RequirementObj(call=lambda: message,
                                      search=r"v(\d+)\.(\d+)",
                                      checks=versions.Any())

        try:
            obj.version  # pylint: disable=pointless-statement
            assert False  # pragma: no coverage
        except versions.VersionRequirementError as error:
            assert_in(error_msg, str(error))
Ejemplo n.º 6
0
def test_requirementobj__call__result_is_cached_unless_forced():
    counter = CheckCounted()
    obj = versions.RequirementObj(call=lambda: "v1.1.3",
                                  search=r"(\d)\.(\d)",
                                  checks=counter)

    obj()
    obj(force=True)

    assert counter.count == 2
Ejemplo n.º 7
0
def test_requirementobj__call__result_is_cached():
    counter = CheckCounted()
    obj = versions.RequirementObj(call=lambda: "v1.1.3",
                                  search=r"(\d)\.(\d)",
                                  checks=counter)

    obj()
    obj()

    assert_equal(counter.count, 1)
Ejemplo n.º 8
0
def test_requirementobj__version__outdated_jre__with_or_without_version_str(
        message):
    obj = versions.RequirementObj(call=lambda: message,
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    try:
        obj.version
        assert False  # pragma: no coverage
    except versions.VersionRequirementError as error:
        assert "upgrade your version of Java" in str(error)
Ejemplo n.º 9
0
def test_requirementobj__version__command_not_executable():
    obj = versions.RequirementObj(call=("./README.rst", ),
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    try:
        obj.version  # pylint: disable=pointless-statement
        assert False  # pragma: no coverage
    except versions.VersionRequirementError as error:
        # Should include OSError message
        assert_in("OSError", str(error))
Ejemplo n.º 10
0
def test_requirementobj__version__command_not_executable():
    obj = versions.RequirementObj(call=("./README.rst", ),
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    try:
        obj.version
        assert False  # pragma: no coverage
    except versions.VersionRequirementError as error:
        # Should include OSError message
        assert "[Errno 13]" in str(error)
Ejemplo n.º 11
0
def test_requirementobj__version__command_not_found():
    obj = versions.RequirementObj(call=("xyzabcdefoo", ),
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    try:
        obj.version
        assert False  # pragma: no coverage
    except versions.VersionRequirementError as error:
        # Should include OSError message
        assert "No such file or directory" in str(error)
Ejemplo n.º 12
0
def test_requirementobj__call__check_fails__function():
    expected = \
        "Version requirements not met for test#1; please refer\n" \
        "to the PALEOMIX documentation for more information.\n" \
        "\n" \
        "    Version:       v1.0.x\n" \
        "    Required:      at least v1.1.x"

    obj = versions.RequirementObj(call=lambda: "v1.0.3",
                                  search=r"(\d)\.(\d)",
                                  checks=versions.GE(1, 1),
                                  name="test#1")
    try:
        obj()
        assert False  # pragma: no coverage
    except versions.VersionRequirementError as error:
        assert_equal(str(error), expected)
Ejemplo n.º 13
0
def test_requirementobj__call__check_fails():
    expected = \
        "Version requirements not met for test#1; please refer\n" \
        "to the PALEOMIX documentation for more information.\n" \
        "\n" \
        "Attempted to run command:\n" \
        "    $ /usr/bin/python -c import sys; " \
        "sys.stdout.write('v1.0.2'); sys.exit(0);\n" \
        "    Version:       v1.0.x\n" \
        "    Required:      at least v1.1.x"

    obj = versions.RequirementObj(call=_echo_version("v1.0.2"),
                                  search=r"(\d)\.(\d)",
                                  checks=versions.GE(1, 1),
                                  name="test#1")
    try:
        obj()
        assert False  # pragma: no coverage
    except versions.VersionRequirementError as error:
        assert_equal(str(error), expected)
Ejemplo n.º 14
0
def test_requirementobj__call__check_fails__jre_outdated():
    expected = \
        "Version could not be determined for test#1:\n" \
        "\n" \
        "Attempted to run command:\n" \
        "    $ /usr/bin/python -c import sys; " \
        "sys.stdout.write('UnsupportedClassVersionError'); sys.exit(0);\n" \
        "\n" \
        "The version of the Java Runtime Environment on this\n" \
        "system is too old; please check the the requirement\n" \
        "for the program and upgrade your version of Java.\n" \
        "\n" \
        "See the documentation for more information."

    value = "UnsupportedClassVersionError"
    obj = versions.RequirementObj(call=_echo_version(value),
                                  search=r"(\d)\.(\d)",
                                  checks=versions.GE(1, 1),
                                  name="test#1")
    try:
        obj()
        assert False  # pragma: no coverage
    except versions.VersionRequirementError as error:
        assert_equal(str(error), expected)
Ejemplo n.º 15
0
def test_requirementobj__executable__function():
    obj = versions.RequirementObj(call=lambda: "v1.1",
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    assert obj.executable is None
Ejemplo n.º 16
0
def test_requirementobj__executable__with_cli_arguments():
    obj = versions.RequirementObj(call=["samtools", "--version"],
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    assert obj.executable == "samtools"
Ejemplo n.º 17
0
def test_requirementobj__version__return_code_is_ignored():
    obj = versions.RequirementObj(_echo_version("v1.2.3", returncode=1),
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())
    assert_equal(obj.version, (1, 2))
Ejemplo n.º 18
0
def test_requirementobj__version__call(pipe, regexp, equals):
    call = _echo_version("v3.5.2\n", dst=pipe)
    obj = versions.RequirementObj(call=call,
                                  search=regexp,
                                  checks=versions.Any())
    assert obj.version == equals
Ejemplo n.º 19
0
 def _do_test_version__single_digit(pipe, regexp, equals):
     call = _echo_version("v3.5.2\n", dst=pipe)
     obj = versions.RequirementObj(call=call,
                                   search=regexp,
                                   checks=versions.Any())
     assert_equal(obj.version, equals)
Ejemplo n.º 20
0
def test_requirementobj__executable__no_cli_args():
    obj = versions.RequirementObj(call=["samtools"],
                                  search=r"v(\d+)\.(\d+)",
                                  checks=versions.Any())

    assert_equal(obj.executable, "samtools")