Merge diffs from master

This commit is contained in:
Neil Lalonde 2020-08-20 16:37:57 -04:00
parent d5b9540449
commit 07d398e2e7
No known key found for this signature in database
GPG Key ID: FF871CA9037D0A91
3 changed files with 1 additions and 96 deletions

View File

@ -74,7 +74,7 @@ class CategoryFeaturedTopic < ActiveRecord::Base
results.each_with_index do |topic_id, idx|
begin
c.category_featured_topics.create(topic_id: topic_id, rank: idx)
rescue PG::UniqueViolation, ActiveRecord::RecordNotUnique
rescue PG::UniqueViolation
# If another process features this topic, just ignore it
end
end

View File

@ -4,8 +4,6 @@ module Discourse
VERSION_REGEXP ||= /\A\d+\.\d+\.\d+(\.beta\d+)?\z/
VERSION_COMPATIBILITY_FILENAME ||= ".discourse-compatibility"
VERSION_COMPATIBILITY_FILENAME = ".discourse-compatibility"
# work around reloader
unless defined? ::Discourse::VERSION
module VERSION #:nodoc:
@ -57,40 +55,4 @@ module Discourse
compat_resource, std_error, s = Open3.capture3("git -C '#{path}' show HEAD@{upstream}:#{Discourse::VERSION_COMPATIBILITY_FILENAME}")
Discourse.find_compatible_resource(compat_resource) if s.success?
end
# lookup an external resource (theme/plugin)'s best compatible version
# compatible resource files are YAML, in the format:
# `discourse_version: plugin/theme git reference.` For example:
# 2.5.0.beta6: c4a6c17
# 2.5.0.beta4: d1d2d3f
# 2.5.0.beta2: bbffee
# 2.4.4.beta6: some-other-branch-ref
# 2.4.2.beta1: v1-tag
def self.find_compatible_resource(version_list)
return unless version_list
version_list = YAML.load(version_list).sort_by { |version, pin| Gem::Version.new(version) }.reverse
# If plugin compat version is listed as less than current Discourse version, take the version/hash listed before.
checkout_version = nil
version_list.each do |core_compat, target|
if Gem::Version.new(core_compat) == Gem::Version.new(::Discourse::VERSION::STRING) # Exact version match - return it
checkout_version = target
break
elsif Gem::Version.new(core_compat) < Gem::Version.new(::Discourse::VERSION::STRING) # Core is on a higher version than listed, use a later version
break
end
checkout_version = target
end
checkout_version
end
# Find a compatible resource from a git repo
def self.find_compatible_git_resource(path)
return unless File.directory?("#{path}/.git")
compat_resource, std_error, s = Open3.capture3("git -C '#{path}' show HEAD@{upstream}:#{Discourse::VERSION_COMPATIBILITY_FILENAME}")
Discourse.find_compatible_resource(compat_resource) if s.success?
end
end

View File

@ -94,61 +94,4 @@ describe Discourse::VERSION do
include_examples "test compatible resource"
end
end
context "compatible_resource" do
after do
# Cleanup versions
::Discourse::VERSION::STRING = [::Discourse::VERSION::MAJOR, ::Discourse::VERSION::MINOR, ::Discourse::VERSION::TINY, ::Discourse::VERSION::PRE].compact.join('.')
end
shared_examples "test compatible resource" do
it "returns nil when the current version is above all pinned versions" do
::Discourse::VERSION::STRING = "2.6.0"
expect(Discourse.find_compatible_resource(version_list)).to be_nil
end
it "returns the correct version if matches exactly" do
::Discourse::VERSION::STRING = "2.5.0.beta4"
expect(Discourse.find_compatible_resource(version_list)).to eq("twofivebetafour")
end
it "returns the closest matching version" do
::Discourse::VERSION::STRING = "2.4.6.beta12"
expect(Discourse.find_compatible_resource(version_list)).to eq("twofivebetatwo")
end
it "returns the lowest version possible when using an older version" do
::Discourse::VERSION::STRING = "1.4.6.beta12"
expect(Discourse.find_compatible_resource(version_list)).to eq("twofourtwobetaone")
end
end
it "returns nil when nil" do
expect(Discourse.find_compatible_resource(nil)).to be_nil
end
context "with a regular compatible list" do
let(:version_list) { <<~VERSION_LIST
2.5.0.beta6: twofivebetasix
2.5.0.beta4: twofivebetafour
2.5.0.beta2: twofivebetatwo
2.4.4.beta6: twofourfourbetasix
2.4.2.beta1: twofourtwobetaone
VERSION_LIST
}
include_examples "test compatible resource"
end
context "handle a compatible resource out of order" do
let(:version_list) { <<~VERSION_LIST
2.4.2.beta1: twofourtwobetaone
2.5.0.beta4: twofivebetafour
2.5.0.beta6: twofivebetasix
2.5.0.beta2: twofivebetatwo
2.4.4.beta6: twofourfourbetasix
VERSION_LIST
}
include_examples "test compatible resource"
end
end
end