summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWarren Volz <warren@warrenvolz.com>2015-07-16 18:29:11 -0600
committerWarren Volz <warren@warrenvolz.com>2015-07-17 16:16:25 -0600
commit5f717e2f5c4abe9ff957e92b27f8f8ecf1c55727 (patch)
treeae863e524d947b9f559cd5d88e4e4ebec2ea38b6
parent90f5c4d0a3c9d5e43e9a58ab0aa79c8b085c62d4 (diff)
downloadgitlab-ci-5f717e2f5c4abe9ff957e92b27f8f8ecf1c55727.tar.gz
port version matching code in upgrader lib from gitlab
- fixes upgrader script not working with v7.1x versions - rspec test cases from gitlab for upgrader lib - rename gitlab to gitlabci - use real data for gitlabci3 version check
-rw-r--r--lib/upgrader.rb9
-rw-r--r--spec/lib/upgrader_spec.rb23
2 files changed, 24 insertions, 8 deletions
diff --git a/lib/upgrader.rb b/lib/upgrader.rb
index 3969fa2..b1599e2 100644
--- a/lib/upgrader.rb
+++ b/lib/upgrader.rb
@@ -41,7 +41,10 @@ class Upgrader
end
def latest_version_raw
- last_tag = git_tags.last.match(/v\d\.\d\.\d/).to_s
+ git_tags = fetch_git_tags
+ git_tags = git_tags.select { |version| version =~ /v\d+\.\d+\.\d+\Z/ }
+ git_versions = git_tags.map { |tag| VersionInfo.parse(tag.match(/v\d+\.\d+\.\d+/).to_s) }
+ "v#{git_versions.sort.last.to_s}"
end
def update_commands
@@ -90,8 +93,8 @@ class Upgrader
answer
end
- def git_tags
+ def fetch_git_tags
tags = `git ls-remote --tags origin | grep tags\/v#{current_version.major}`
- tags.lines.to_a.select { |version| version =~ /v\d\.\d\.\d\Z/ }
+ tags.lines.to_a.select { |version| version =~ /v\d+\.\d+\.\d+\Z/ }
end
end
diff --git a/spec/lib/upgrader_spec.rb b/spec/lib/upgrader_spec.rb
index b37d0e4..40a9830 100644
--- a/spec/lib/upgrader_spec.rb
+++ b/spec/lib/upgrader_spec.rb
@@ -16,11 +16,24 @@ describe Upgrader do
end
describe 'latest_version_raw' do
- it 'should be latest version for GitLab' do
- upgrader.stub(current_version_raw: '3.0.0')
- upgrader.stub(git_tags: [
- '1b5bee25b51724214c7a3307ef94027ab93ec982 refs/tags/v7.8.1'])
- upgrader.latest_version_raw.should == 'v7.8.1'
+ it 'should be latest version for GitlabCI 3' do
+ allow(upgrader).to receive(:current_version_raw).and_return('3.0.0')
+ expect(upgrader.latest_version_raw).to eq('v3.2.0')
+ end
+
+ it 'should get the latest version from tags' do
+ allow(upgrader).to receive(:fetch_git_tags).and_return([
+ '1b5bee25b51724214c7a3307ef94027ab93ec982 refs/tags/v7.8.1',
+ '424cb42e35947fa304ef83eb211ffc657e31aef3 refs/tags/v7.8.1^{}',
+ '498e5ba63be1bb99e30c6e720902d864aac4413c refs/tags/v7.9.0.rc1',
+ '96aaf45ae93bd43e8b3f5d4d353d64d3cbe1e63b refs/tags/v7.9.0.rc1^{}',
+ '94aaf45ae93bd43e8b3fad4a353d64d3cbe1e62b refs/tags/v7.1.0',
+ '96aaf45ae93ba13e8b3f5d4d353d64d3cbe1e251 refs/tags/v7.1.0^{}',
+ '29359d64442bf54b4ca1d8b439fd9e5f9cd83252 refs/tags/v7.10.0',
+ '4d9213a6378bff43a69ae099702fb81e29335e7a refs/tags/v7.10.0^{}',
+ '1d93e1626bda93622ca7a2ae2825e2e94dabf3c6 refs/tags/v7.12.0',
+ '0188a9d1c2efdc52bfad36ad303686be997de713 refs/tags/v7.12.0^{}'])
+ expect(upgrader.latest_version_raw).to eq("v7.12.0")
end
end
end