wip a test for ordering of both on_* blocks and their contents
- This is very broken, "detected clobbering" errors.
This commit is contained in:
parent
40bc235cb6
commit
704482d815
@ -37,12 +37,13 @@ module RuboCop
|
|||||||
def add_offenses(stanzas, inner: false)
|
def add_offenses(stanzas, inner: false)
|
||||||
sorted_stanzas = inner ? sorted_inner_stanzas(stanzas) : sorted_toplevel_stanzas
|
sorted_stanzas = inner ? sorted_inner_stanzas(stanzas) : sorted_toplevel_stanzas
|
||||||
offending_stanzas(stanzas, sorted_stanzas).each do |stanza|
|
offending_stanzas(stanzas, sorted_stanzas).each do |stanza|
|
||||||
|
puts "offending stanza: #{stanza.stanza_name}"
|
||||||
message = format(MESSAGE, stanza: stanza.stanza_name)
|
message = format(MESSAGE, stanza: stanza.stanza_name)
|
||||||
add_offense(stanza.source_range_with_comments, message: message) do |corrector|
|
add_offense(stanza.source_range_with_comments, message: message) do |corrector|
|
||||||
correct_stanza_index = stanzas.index(stanza)
|
correct_stanza_index = stanzas.index(stanza)
|
||||||
correct_stanza = sorted_stanzas[correct_stanza_index]
|
correct_stanza = sorted_stanzas[correct_stanza_index]
|
||||||
corrector.replace(stanza.source_range_with_comments,
|
puts "correct stanza: #{correct_stanza.stanza_name}"
|
||||||
correct_stanza.source_with_comments)
|
corrector.replace(stanza.source_range_with_comments, correct_stanza.source_with_comments)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -458,15 +458,15 @@ describe RuboCop::Cop::Cask::StanzaOrder do
|
|||||||
include_examples "autocorrects source"
|
include_examples "autocorrects source"
|
||||||
end
|
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
|
let(:source) do
|
||||||
<<~CASK
|
<<~CASK
|
||||||
cask 'foo' do
|
cask 'foo' do
|
||||||
on_intel do
|
on_intel do
|
||||||
|
url "https://foo.brew.sh/foo-intel.zip"
|
||||||
|
|
||||||
version :latest
|
version :latest
|
||||||
sha256 :no_check
|
sha256 :no_check
|
||||||
|
|
||||||
url "https://foo.brew.sh/foo-intel.zip"
|
|
||||||
end
|
end
|
||||||
on_arm do
|
on_arm do
|
||||||
version :latest
|
version :latest
|
||||||
@ -478,22 +478,6 @@ describe RuboCop::Cop::Cask::StanzaOrder do
|
|||||||
CASK
|
CASK
|
||||||
end
|
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
|
let(:correct_source) do
|
||||||
<<~CASK
|
<<~CASK
|
||||||
cask 'foo' do
|
cask 'foo' do
|
||||||
@ -513,122 +497,66 @@ describe RuboCop::Cop::Cask::StanzaOrder do
|
|||||||
CASK
|
CASK
|
||||||
end
|
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"
|
include_examples "autocorrects source"
|
||||||
end
|
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
|
let(:source) do
|
||||||
<<~CASK
|
<<~CASK
|
||||||
cask "foo" do
|
cask "foo" do
|
||||||
on_ventura do
|
on_ventura do
|
||||||
sha256 :no_check
|
sha256 "abc123"
|
||||||
|
version :latest
|
||||||
url "https://foo.brew.sh/foo-ventura.zip"
|
url "https://foo.brew.sh/foo-ventura.zip"
|
||||||
end
|
end
|
||||||
on_catalina do
|
on_catalina do
|
||||||
sha256 :no_check
|
sha256 "def456"
|
||||||
|
version "0.7"
|
||||||
url "https://foo.brew.sh/foo-catalina.zip"
|
url "https://foo.brew.sh/foo-catalina.zip"
|
||||||
end
|
end
|
||||||
on_mojave do
|
on_mojave do
|
||||||
sha256 :no_check
|
version :latest
|
||||||
|
sha256 "ghi789"
|
||||||
url "https://foo.brew.sh/foo-mojave.zip"
|
url "https://foo.brew.sh/foo-mojave.zip"
|
||||||
end
|
end
|
||||||
on_big_sur do
|
on_big_sur do
|
||||||
sha256 :no_check
|
sha256 "jkl012"
|
||||||
|
version :latest
|
||||||
|
|
||||||
url "https://foo.brew.sh/foo-big-sur.zip"
|
url "https://foo.brew.sh/foo-big-sur.zip"
|
||||||
end
|
end
|
||||||
|
|
||||||
name "Foo"
|
|
||||||
end
|
end
|
||||||
CASK
|
CASK
|
||||||
end
|
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
|
let(:correct_source) do
|
||||||
<<~CASK
|
<<~CASK
|
||||||
cask "foo" do
|
cask "foo" do
|
||||||
on_mojave do
|
on_mojave do
|
||||||
sha256 :no_check
|
version "0.6"
|
||||||
|
sha256 "ghi789"
|
||||||
url "https://foo.brew.sh/foo-mojave.zip"
|
url "https://foo.brew.sh/foo-mojave.zip"
|
||||||
end
|
end
|
||||||
on_catalina do
|
on_catalina do
|
||||||
sha256 :no_check
|
sha256 "def456"
|
||||||
|
version "0.7"
|
||||||
url "https://foo.brew.sh/foo-catalina.zip"
|
url "https://foo.brew.sh/foo-catalina.zip"
|
||||||
end
|
end
|
||||||
on_big_sur do
|
on_big_sur do
|
||||||
sha256 :no_check
|
version "0.8"
|
||||||
|
sha256 "jkl012"
|
||||||
|
|
||||||
url "https://foo.brew.sh/foo-big-sur.zip"
|
url "https://foo.brew.sh/foo-big-sur.zip"
|
||||||
end
|
end
|
||||||
on_ventura do
|
on_ventura do
|
||||||
|
version :latest
|
||||||
sha256 :no_check
|
sha256 :no_check
|
||||||
url "https://foo.brew.sh/foo-ventura.zip"
|
url "https://foo.brew.sh/foo-ventura.zip"
|
||||||
end
|
end
|
||||||
|
|
||||||
name "Foo"
|
|
||||||
end
|
end
|
||||||
CASK
|
CASK
|
||||||
end
|
end
|
||||||
|
|
||||||
include_examples "reports offenses"
|
|
||||||
include_examples "autocorrects source"
|
include_examples "autocorrects source"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user