mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 13:21:23 +08:00
DEV: Support version operators in .discourse-compatibility (#22714)
This adds support for the `<=` and `<` version operators in `.discourse-compatibility` files. This allows for more flexibility (e.g. targeting the entire 3.1.x stable release via `< 3.2.0.beta1`), and should also make compatibility files to be more readable. If an operator is not specified we default to `<=`, which matches the old behavior.
This commit is contained in:
@ -103,6 +103,54 @@ RSpec.describe Discourse::VERSION do
|
||||
YML
|
||||
include_examples "test compatible resource"
|
||||
end
|
||||
|
||||
context "with different version operators" do
|
||||
let(:version_list) { <<~YML }
|
||||
<= 3.2.0.beta1: lteBeta1
|
||||
3.2.0.beta2: lteBeta2
|
||||
< 3.2.0.beta4: ltBeta4
|
||||
<= 3.2.0.beta4: lteBeta4
|
||||
YML
|
||||
|
||||
it "supports <= operator" do
|
||||
expect(Discourse.find_compatible_resource(version_list, "3.2.0.beta1")).to eq("lteBeta1")
|
||||
expect(Discourse.find_compatible_resource(version_list, "3.2.0.beta0")).to eq("lteBeta1")
|
||||
end
|
||||
|
||||
it "defaults to <= operator" do
|
||||
expect(Discourse.find_compatible_resource(version_list, "3.2.0.beta2")).to eq("lteBeta2")
|
||||
end
|
||||
|
||||
it "supports < operator" do
|
||||
expect(Discourse.find_compatible_resource(version_list, "3.2.0.beta3")).to eq("ltBeta4")
|
||||
expect(Discourse.find_compatible_resource(version_list, "3.2.0.beta4")).not_to eq("ltBeta4")
|
||||
end
|
||||
|
||||
it "prioritises <= over <, regardless of file order" do
|
||||
expect(Discourse.find_compatible_resource(version_list, "3.2.0.beta3")).to eq("ltBeta4")
|
||||
expect(
|
||||
Discourse.find_compatible_resource(version_list.lines.reverse.join("\n"), "3.2.0.beta3"),
|
||||
).to eq("ltBeta4")
|
||||
end
|
||||
|
||||
it "raises error for >= operator" do
|
||||
expect { Discourse.find_compatible_resource(">= 3.1.0: test", "3.1.0") }.to raise_error(
|
||||
Discourse::InvalidVersionListError,
|
||||
)
|
||||
end
|
||||
|
||||
it "raises error for ~> operator" do
|
||||
expect { Discourse.find_compatible_resource("~> 3.1.0: test", "3.1.0") }.to raise_error(
|
||||
Discourse::InvalidVersionListError,
|
||||
)
|
||||
end
|
||||
|
||||
it "raises error for invalid version" do
|
||||
expect { Discourse.find_compatible_resource("1.1.: test", "3.1.0") }.to raise_error(
|
||||
Discourse::InvalidVersionListError,
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe ".find_compatible_git_resource" do
|
||||
|
Reference in New Issue
Block a user