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))
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")
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)
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)
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))
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
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)
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)
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))
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)
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)
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)
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)
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)
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
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"
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))
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
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)
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")