wip a test for ordering of both on_* blocks and their contents

- This is very broken, "detected clobbering" errors.
This commit is contained in:
Issy Long 2023-04-16 23:46:37 +01:00 committed by Markus Reiter
parent 40bc235cb6
commit 704482d815
No known key found for this signature in database
GPG Key ID: 245293B51702655B
2 changed files with 24 additions and 95 deletions

View File

@ -37,12 +37,13 @@ module RuboCop
def add_offenses(stanzas, inner: false)
sorted_stanzas = inner ? sorted_inner_stanzas(stanzas) : sorted_toplevel_stanzas
offending_stanzas(stanzas, sorted_stanzas).each do |stanza|
puts "offending stanza: #{stanza.stanza_name}"
message = format(MESSAGE, stanza: stanza.stanza_name)
add_offense(stanza.source_range_with_comments, message: message) do |corrector|
correct_stanza_index = stanzas.index(stanza)
correct_stanza = sorted_stanzas[correct_stanza_index]
corrector.replace(stanza.source_range_with_comments,
correct_stanza.source_with_comments)
puts "correct stanza: #{correct_stanza.stanza_name}"
corrector.replace(stanza.source_range_with_comments, correct_stanza.source_with_comments)
end
end
end

View File

@ -458,15 +458,15 @@ describe RuboCop::Cop::Cask::StanzaOrder do
include_examples "autocorrects source"
end
context "when `on_arch` blocks are out of order" do
context "when `on_arch` blocks and their contents are out of order" do
let(:source) do
<<~CASK
cask 'foo' do
on_intel do
url "https://foo.brew.sh/foo-intel.zip"
version :latest
sha256 :no_check
url "https://foo.brew.sh/foo-intel.zip"
end
on_arm do
version :latest
@ -478,22 +478,6 @@ describe RuboCop::Cop::Cask::StanzaOrder do
CASK
end
let(:expected_offenses) do
[{
message: "Cask/StanzaOrder: `on_intel` stanza out of order",
severity: :convention,
line: 2,
column: 2,
source: "on_intel do\n version :latest\n sha256 :no_check\n\n url \"https://foo.brew.sh/foo-intel.zip\"\n end", # rubocop:disable Layout/LineLength
}, {
message: "Cask/StanzaOrder: `on_arm` stanza out of order",
severity: :convention,
line: 8,
column: 2,
source: "on_arm do\n version :latest\n sha256 :no_check\n\n url \"https://foo.brew.sh/foo-arm.zip\"\n end", # rubocop:disable Layout/LineLength
}]
end
let(:correct_source) do
<<~CASK
cask 'foo' do
@ -513,122 +497,66 @@ describe RuboCop::Cop::Cask::StanzaOrder do
CASK
end
include_examples "reports offenses"
include_examples "autocorrects source"
end
context "when the `on_arch` blocks contents are out of order" do
let(:source) do
<<~CASK
cask 'foo' do
on_arm do
url "https://foo.brew.sh/foo-arm.zip"
sha256 "123abc"
version "1.0"
end
on_intel do
url "https://foo.brew.sh/foo-intel.zip"
sha256 "abc123"
version "0.9" # comment here
end
end
CASK
end
let(:correct_source) do
<<~CASK
cask 'foo' do
on_arm do
version "1.0"
sha256 "123abc"
url "https://foo.brew.sh/foo-arm.zip"
end
on_intel do
version "0.9" # comment here
sha256 "abc123"
url "https://foo.brew.sh/foo-intel.zip"
end
end
CASK
end
include_examples "autocorrects source"
end
context "when the on_os stanzas are out of order" do
context "when the `on_os` stanzas and their contents are out of order" do
let(:source) do
<<~CASK
cask "foo" do
on_ventura do
sha256 :no_check
sha256 "abc123"
version :latest
url "https://foo.brew.sh/foo-ventura.zip"
end
on_catalina do
sha256 :no_check
sha256 "def456"
version "0.7"
url "https://foo.brew.sh/foo-catalina.zip"
end
on_mojave do
sha256 :no_check
version :latest
sha256 "ghi789"
url "https://foo.brew.sh/foo-mojave.zip"
end
on_big_sur do
sha256 :no_check
sha256 "jkl012"
version :latest
url "https://foo.brew.sh/foo-big-sur.zip"
end
name "Foo"
end
CASK
end
let(:expected_offenses) do
[{
message: "Cask/StanzaOrder: `on_ventura` stanza out of order",
severity: :convention,
line: 2,
column: 2,
source: "on_ventura do\n sha256 :no_check\n url \"https://foo.brew.sh/foo-ventura.zip\"\n end",
}, {
message: "Cask/StanzaOrder: `on_mojave` stanza out of order",
severity: :convention,
line: 10,
column: 2,
source: "on_mojave do\n sha256 :no_check\n url \"https://foo.brew.sh/foo-mojave.zip\"\n end",
}, {
message: "Cask/StanzaOrder: `on_big_sur` stanza out of order",
severity: :convention,
line: 14,
column: 2,
source: "on_big_sur do\n sha256 :no_check\n url \"https://foo.brew.sh/foo-big-sur.zip\"\n end",
}]
end
let(:correct_source) do
<<~CASK
cask "foo" do
on_mojave do
sha256 :no_check
version "0.6"
sha256 "ghi789"
url "https://foo.brew.sh/foo-mojave.zip"
end
on_catalina do
sha256 :no_check
sha256 "def456"
version "0.7"
url "https://foo.brew.sh/foo-catalina.zip"
end
on_big_sur do
sha256 :no_check
version "0.8"
sha256 "jkl012"
url "https://foo.brew.sh/foo-big-sur.zip"
end
on_ventura do
version :latest
sha256 :no_check
url "https://foo.brew.sh/foo-ventura.zip"
end
name "Foo"
end
CASK
end
include_examples "reports offenses"
include_examples "autocorrects source"
end
end