def test_should_check(self): with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() assert patch_fct.call_count == 1 assert result is True CliConfigManager.reset( current_version="0.0.5", server_versions={"cli": {"min_version": "0.0.4"}} ) with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() assert patch_fct.call_count == 1 assert result is False CliConfigManager.reset( check_count=4, current_version="0.0.5", server_versions={"cli": {"min_version": "0.0.4"}}, ) with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() assert patch_fct.call_count == 1 assert result is True CliConfigManager.reset( current_version="0.0.2", server_versions={"cli": {"min_version": "0.0.4"}} ) with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() assert patch_fct.call_count == 1 assert result is True
def test_should_check(self): with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() assert patch_fct.call_count == 1 assert result is True CliConfigManager.reset( last_check=now(), current_version="0.0.5", installation={"key": "uuid", "version": "1.1.4-rc11", "dist": "foo"}, compatibility={"cli": {"min": "0.0.4", "latest": "1.1.4"}}, ) with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() assert patch_fct.call_count == 0 assert result is False CliConfigManager.reset( last_check=now() - timedelta(1000), current_version="0.0.5", installation={"key": "uuid", "version": "1.1.4-rc11", "dist": "foo"}, compatibility={"cli": {"min": "0.0.4", "latest": "1.1.4"}}, ) with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() assert patch_fct.call_count == 1 assert result is True CliConfigManager.reset( last_check=now(), current_version="0.0.2", installation={"key": "uuid", "version": "1.1.4-rc11", "dist": "foo"}, compatibility={"cli": {"min": "0.0.4", "latest": "1.1.4"}}, ) with patch.object(CliConfigManager, "reset") as patch_fct: result = CliConfigManager.should_check() # Although condition for showing a message, do not reset assert patch_fct.call_count == 0 assert result is False
def check_cli_version(server_versions=None, current_version=None): """Check if the current cli version satisfies the server requirements""" if not CliConfigManager.should_check(): return from distutils.version import LooseVersion # pylint:disable=import-error server_versions = server_versions or get_server_versions() current_version = current_version or get_current_version() cli_config = CliConfigManager.reset( current_version=current_version, server_versions=server_versions.to_dict() ) if LooseVersion(current_version) < LooseVersion(cli_config.min_version): click.echo( """Your version of CLI ({}) is no longer compatible with server.""".format( current_version ) ) if click.confirm( "Do you want to upgrade to " "version {} now?".format(cli_config.latest_version) ): pip_upgrade() sys.exit(0) else: indentation.puts("Your can manually run:") with indentation.indent(4): indentation.puts("pip install -U polyaxon-cli") indentation.puts( "to upgrade to the latest version `{}`".format( cli_config.latest_version ) ) sys.exit(0) elif LooseVersion(current_version) < LooseVersion(cli_config.latest_version): indentation.puts( "New version of CLI ({}) is now available. To upgrade run:".format( cli_config.latest_version ) ) with indentation.indent(4): indentation.puts("pip install -U polyaxon-cli") elif LooseVersion(current_version) > LooseVersion(cli_config.latest_version): indentation.puts( "Your version of CLI ({}) is ahead of the latest version " "supported by Polyaxon Platform ({}) on your cluster, " "and might be incompatible.".format( current_version, cli_config.latest_version ) )