diff options
author | Achilleas Pipinellis <axil@gitlab.com> | 2023-01-20 23:07:35 +0300 |
---|---|---|
committer | Achilleas Pipinellis <axil@gitlab.com> | 2023-03-17 15:02:34 +0300 |
commit | fdd2e492b29fb03a3881787343e71edfea9fbba7 (patch) | |
tree | b4be4541684e9a731b9bf862d66faef5e9f4db04 | |
parent | ebddab084ac175fa59b69a4172a8e1057feb46c3 (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-- | Rules | 8 | ||||
-rw-r--r-- | lib/helpers/versions.rb | 22 | ||||
-rw-r--r-- | spec/lib/helpers/versions_spec.rb | 41 |
3 files changed, 59 insertions, 12 deletions
@@ -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 |