From 704482d8153498f4714076fa5ae31397d034a5ce Mon Sep 17 00:00:00 2001 From: Issy Long Date: Sun, 16 Apr 2023 23:46:37 +0100 Subject: [PATCH] wip a test for ordering of both on_* blocks and their contents - This is very broken, "detected clobbering" errors. --- .../Homebrew/rubocops/cask/stanza_order.rb | 5 +- .../test/rubocops/cask/stanza_order_spec.rb | 114 ++++-------------- 2 files changed, 24 insertions(+), 95 deletions(-) diff --git a/Library/Homebrew/rubocops/cask/stanza_order.rb b/Library/Homebrew/rubocops/cask/stanza_order.rb index fb56e9572b..efb15a7977 100644 --- a/Library/Homebrew/rubocops/cask/stanza_order.rb +++ b/Library/Homebrew/rubocops/cask/stanza_order.rb @@ -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 diff --git a/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb b/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb index b1da650dfe..bbf7582ee1 100644 --- a/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb +++ b/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb @@ -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