Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAchilleas Pipinellis <axil@gitlab.com>2023-01-20 23:07:35 +0300
committerAchilleas Pipinellis <axil@gitlab.com>2023-03-17 15:02:34 +0300
commitfdd2e492b29fb03a3881787343e71edfea9fbba7 (patch)
treeb4be4541684e9a731b9bf862d66faef5e9f4db04
parentebddab084ac175fa59b69a4172a8e1057feb46c3 (diff)
Merge branch '1330-version-banner' into 'main'
Fix check for current stable version Closes #1330 See merge request https://gitlab.com/gitlab-org/gitlab-docs/-/merge_requests/3448 Merged-by: Achilleas Pipinellis <axil@gitlab.com> Approved-by: Achilleas Pipinellis <axil@gitlab.com> Reviewed-by: Achilleas Pipinellis <axil@gitlab.com> Co-authored-by: Sarah German <sgerman@gitlab.com> (cherry picked from commit 6d3383a8c10cb2f51d62e68f23c8f2a7a9189f98) 70a97303 Fix archives banner logic for the current stable release 72e44362 Apply 1 suggestion(s) to 1 file(s) 0965941b Apply 1 suggestion(s) to 1 file(s)
-rw-r--r--Rules8
-rw-r--r--lib/helpers/versions.rb22
-rw-r--r--spec/lib/helpers/versions_spec.rb41
3 files changed, 59 insertions, 12 deletions
diff --git a/Rules b/Rules
index a2ba5231..f42c7167 100644
--- a/Rules
+++ b/Rules
@@ -53,6 +53,14 @@ preprocess do
config[:algolia] = ENV['ALGOLIA_SEARCH'] || 'true'
+ def get_online_versions
+ uri = URI('https://docs.gitlab.com/versions.json')
+ response = Net::HTTP.get(uri)
+ parsed = JSON.parse(response, symbolize_names: true)
+ parsed[0]
+ end
+ config[:online_versions] = get_online_versions
+
end
compile '/404.*' do
diff --git a/lib/helpers/versions.rb b/lib/helpers/versions.rb
index 05e093aa..c34e38ac 100644
--- a/lib/helpers/versions.rb
+++ b/lib/helpers/versions.rb
@@ -15,15 +15,6 @@ module Nanoc::Helpers
end
#
- # Get online versions from the JSON file.
- #
- def get_versions
- file = File.read('./content/versions.json')
- parsed = JSON.parse(file)
- parsed[0]
- end
-
- #
# Returns the site version using the branch or tag from the CI build.
#
def site_version
@@ -32,7 +23,7 @@ module Nanoc::Helpers
version_tag
else
# If this wasn't built on CI, this is a local site that can default to the pre-release version.
- get_versions["next"]
+ config[:online_versions][:next]
end
end
@@ -43,7 +34,7 @@ module Nanoc::Helpers
# in the case of the pre-release site.
#
def docsearch_version
- if get_versions["next"] == site_version
+ if config[:online_versions][:next] == site_version
ENV.fetch('CI_DEFAULT_BRANCH', nil)
else
site_version
@@ -51,6 +42,13 @@ module Nanoc::Helpers
end
#
+ # Returns the current stable version.
+ #
+ def get_current_stable_version
+ config[:online_versions][:current]
+ end
+
+ #
# Check if this site version is the latest.
#
# We consider two versions to be "latest":
@@ -58,7 +56,7 @@ module Nanoc::Helpers
# 2) The most recent stable release, which is "current" in versions.json.
#
def latest?
- ENV['CI_COMMIT_REF_NAME'] == ENV['CI_DEFAULT_BRANCH'] || ENV['CI_COMMIT_REF_NAME'] == get_versions["current"]
+ ENV['CI_COMMIT_REF_NAME'] == ENV['CI_DEFAULT_BRANCH'] || ENV['CI_COMMIT_REF_NAME'] == get_current_stable_version
end
#
diff --git a/spec/lib/helpers/versions_spec.rb b/spec/lib/helpers/versions_spec.rb
new file mode 100644
index 00000000..76f31ab6
--- /dev/null
+++ b/spec/lib/helpers/versions_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require 'nanoc'
+require 'helpers/versions'
+
+RSpec.describe Nanoc::Helpers::VersionsDropdown do
+ let(:mock_class) { Class.new { extend Nanoc::Helpers::VersionsDropdown } }
+ subject { mock_class.latest? }
+
+ describe '#latest?' do
+
+ before(:each) do
+ versions_mock = {:next=>"15.8",:current=>"15.7",:last_minor=>["15.6", "15.5"],:last_major=>["14.10", "13.12"]}
+ allow(mock_class).to receive(:get_current_stable_version).and_return(versions_mock[:current])
+ stub_const('ENV', ENV.to_hash.merge('CI_DEFAULT_BRANCH' => 'main'))
+ end
+
+ it 'returns correct value for pre-release version' do
+ stub_const('ENV', ENV.to_hash.merge('CI_COMMIT_REF_NAME' => 'main'))
+ expect(subject).to eq(true)
+ end
+
+ it 'returns correct value for current stable version' do
+ stub_const('ENV', ENV.to_hash.merge('CI_COMMIT_REF_NAME' => '15.7'))
+ expect(subject).to eq(true)
+ end
+
+ it 'returns correct value for last minor version' do
+ stub_const('ENV', ENV.to_hash.merge('CI_COMMIT_REF_NAME' => '15.6'))
+ expect(subject).to eq(false)
+ end
+
+ it 'returns correct value for last major' do
+ stub_const('ENV', ENV.to_hash.merge('CI_COMMIT_REF_NAME' => '14.10'))
+ expect(subject).to eq(false)
+ end
+
+ end
+
+end