Don’t check packages when check platform version

This commit is contained in:
Ivan Kravets
2017-01-30 22:36:25 +02:00
parent 1143012216
commit 916f4b071c
4 changed files with 46 additions and 25 deletions

View File

@ -137,10 +137,7 @@ def platform_update(platforms, only_packages, only_check, json_output):
continue
manifest = pm.load_manifest(
pm.get_package_dir(name, requirements, url))
if latest is True:
manifest['versionLatest'] = "Out-of-date"
else:
manifest['versionLatest'] = latest or "Unknown"
manifest['versionLatest'] = latest or "Unknown"
result.append(manifest)
return click.echo(json.dumps(result))
else:

View File

@ -635,9 +635,7 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
click.echo("[%s]" % (click.style("Off-line", fg="yellow")))
return
latest = self.outdated(name, requirements, url)
if latest is True:
click.echo("[%s]" % (click.style("Out-of-date", fg="red")))
elif latest:
if latest:
click.echo("[%s]" % (click.style(latest, fg="red")))
elif latest is False:
click.echo("[%s]" % (click.style("Up-to-date", fg="green")))
@ -659,11 +657,11 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
with open(manifest_path, "w") as fp:
manifest['version'] = vcs.get_current_revision()
json.dump(manifest, fp)
self.reset_cache()
else:
self.uninstall(name, manifest['version'], trigger_event=False)
self.install(name, latest, trigger_event=False)
self.reset_cache()
telemetry.on_event(
category=self.__class__.__name__,
action="Update",

View File

@ -60,9 +60,16 @@ class PlatformManager(BasePkgManager):
with_packages=None,
without_packages=None,
skip_default_package=False,
trigger_event=True,
**_): # pylint: disable=too-many-arguments
platform_dir = BasePkgManager.install(self, name, requirements)
p = PlatformFactory.newPlatform(self.get_manifest_path(platform_dir))
# @Hook: when 'update' operation (trigger_event is False),
# don't cleanup packages or install them
if not trigger_event:
return True
p.install_packages(with_packages, without_packages,
skip_default_package)
self.cleanup_packages(p.packages.keys())
@ -72,10 +79,13 @@ class PlatformManager(BasePkgManager):
name, requirements, _ = self.parse_pkg_name(name, requirements)
p = PlatformFactory.newPlatform(name, requirements)
BasePkgManager.uninstall(self, name, requirements)
# trigger event is disabled when upgrading operation
# don't cleanup packages, "install" will do that
if trigger_event:
self.cleanup_packages(p.packages.keys())
# @Hook: when 'update' operation (trigger_event is False),
# don't cleanup packages or install them
if not trigger_event:
return True
self.cleanup_packages(p.packages.keys())
return True
def update( # pylint: disable=arguments-differ
@ -85,19 +95,24 @@ class PlatformManager(BasePkgManager):
only_packages=False,
only_check=False):
name, requirements, _ = self.parse_pkg_name(name, requirements)
p = PlatformFactory.newPlatform(name, requirements)
pkgs_before = pkgs_after = p.get_installed_packages().keys()
if not only_packages:
BasePkgManager.update(self, name, requirements, only_check)
p = PlatformFactory.newPlatform(name, requirements)
p = PlatformFactory.newPlatform(name, requirements)
pkgs_after = p.get_installed_packages().keys()
p.update_packages(only_check)
self.cleanup_packages(p.packages.keys())
return True
def outdated(self, name, requirements=None, url=None):
latest = BasePkgManager.outdated(self, name, requirements, url)
if latest:
return latest
p = PlatformFactory.newPlatform(name, requirements)
return p.are_outdated_packages()
pkgs_missed = set(pkgs_before) - set(pkgs_after)
if pkgs_missed:
p.install_packages(
with_packages=pkgs_missed, skip_default_package=True)
return True
def cleanup_packages(self, names):
self.reset_cache()

View File

@ -53,10 +53,14 @@ def test_install_unknown_from_registry(clirunner, validate_cliresult,
def test_install_known_version(clirunner, validate_cliresult,
isolated_pio_home):
result = clirunner.invoke(cli_platform.platform_install,
["atmelavr@1.1.0", "--skip-default-package"])
result = clirunner.invoke(cli_platform.platform_install, [
"atmelavr@1.1.0", "--skip-default-package", "--with-package",
"tool-avrdude"
])
validate_cliresult(result)
assert "atmelavr @ 1.1.0" in result.output
assert "Installing tool-avrdude @" in result.output
assert len(isolated_pio_home.join("packages").listdir()) == 1
def test_install_from_vcs(clirunner, validate_cliresult, isolated_pio_home):
@ -92,12 +96,19 @@ def test_update_check(clirunner, validate_cliresult, isolated_pio_home):
output = json.loads(result.output)
assert len(output) == 1
assert output[0]['name'] == "atmelavr"
assert len(isolated_pio_home.join("packages").listdir()) == 1
def test_update_raw(clirunner, validate_cliresult, isolated_pio_home):
result = clirunner.invoke(cli_platform.platform_update)
validate_cliresult(result)
assert "Uninstalling atmelavr @ 1.1.0:" in result.output
assert "PlatformManager: Installing atmelavr @" in result.output
assert len(isolated_pio_home.join("packages").listdir()) == 1
def test_uninstall(clirunner, validate_cliresult, isolated_pio_home):
result = clirunner.invoke(cli_platform.platform_uninstall,
["atmelavr", "espressif8266_stage"])
validate_cliresult(result)
assert len(
[d.basename
for d in isolated_pio_home.join("platforms").listdir()]) == 0
assert len(isolated_pio_home.join("platforms").listdir()) == 0