From 54b800360a52f9f8729cc8c3ad015e417cdbf54f Mon Sep 17 00:00:00 2001 From: Julien Portalier Date: Thu, 24 Nov 2016 16:46:58 +0100 Subject: [PATCH] Fix: always install locked versions fixes #141 #107 --- src/commands/install.cr | 3 +-- src/commands/update.cr | 2 +- src/package.cr | 13 +++---------- test/integration/install_test.cr | 20 ++++++++++++++++++++ 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/commands/install.cr b/src/commands/install.cr index d2d64eb1..6b6bde5b 100644 --- a/src/commands/install.cr +++ b/src/commands/install.cr @@ -18,7 +18,6 @@ module Shards end end - # TODO: add locks as additional version requirements private def install(packages : Set, locks : Array(Dependency)) packages.each do |package| version = nil @@ -50,7 +49,7 @@ module Shards private def install(package : Package, version = nil) version ||= package.version - if package.installed?(version, loose: true) + if package.installed?(version) Shards.logger.info "Using #{package.name} (#{version})" else Shards.logger.info "Installing #{package.name} (#{version})" diff --git a/src/commands/update.cr b/src/commands/update.cr index cdcb460b..c9aff7cc 100644 --- a/src/commands/update.cr +++ b/src/commands/update.cr @@ -8,7 +8,7 @@ module Shards manager.resolve manager.packages.each do |package| - if package.installed?(loose: false) + if package.installed? Shards.logger.info "Using #{package.name} (#{package.version})" else Shards.logger.info "Installing #{package.name} (#{package.version})" diff --git a/src/package.cr b/src/package.cr index 5a875d1a..473c2bcb 100644 --- a/src/package.cr +++ b/src/package.cr @@ -43,17 +43,10 @@ module Shards end end - def installed?(version = nil, loose = false) + def installed?(version = self.version) if spec = resolver.installed_spec - version ||= spec.version - - if resolver.installed_commit_hash == version - true - elsif loose - matching_versions.includes?(version) - else - self.version == version - end + resolver.installed_commit_hash == version || + spec.version == version else false end diff --git a/test/integration/install_test.cr b/test/integration/install_test.cr index b7ea9dae..58492a61 100644 --- a/test/integration/install_test.cr +++ b/test/integration/install_test.cr @@ -77,6 +77,26 @@ class InstallCommandTest < Minitest::Test end end + def test_always_installs_locked_versions + metadata = { dependencies: { minitest: "0.1.0" }, } + lock = { minitest: "0.1.0" } + + with_shard(metadata, lock) do + run "shards install" + assert_installed "minitest", "0.1.0" + assert_locked "minitest", "0.1.0" + end + + metadata = { dependencies: { minitest: "0.1.2" }, } + lock = { minitest: "0.1.2" } + + with_shard(metadata, lock) do + run "shards install" + assert_installed "minitest", "0.1.2" + assert_locked "minitest", "0.1.2" + end + end + def test_installs_dependency_at_locked_commit_when_refs_is_a_branch metadata = { dependencies: { web: { git: git_url(:web), branch: "master" } }