diff options
Diffstat (limited to 'Library/Homebrew/test/rubocops/urls_cop_spec.rb')
| -rw-r--r-- | Library/Homebrew/test/rubocops/urls_cop_spec.rb | 121 |
1 files changed, 41 insertions, 80 deletions
diff --git a/Library/Homebrew/test/rubocops/urls_cop_spec.rb b/Library/Homebrew/test/rubocops/urls_cop_spec.rb index 0bda7f110..494028bd5 100644 --- a/Library/Homebrew/test/rubocops/urls_cop_spec.rb +++ b/Library/Homebrew/test/rubocops/urls_cop_spec.rb @@ -1,6 +1,3 @@ -require "rubocop" -require "rubocop/rspec/support" -require_relative "../../extend/string" require_relative "../../rubocops/urls_cop" describe RuboCop::Cop::FormulaAudit::Urls do @@ -129,65 +126,40 @@ describe RuboCop::Cop::FormulaAudit::Urls do inspect_source(source) expected_offenses.zip(cop.offenses.reverse).each do |expected, actual| - expect_offense(expected, actual) + expect(actual.message).to eq(expected[:message]) + expect(actual.severity).to eq(expected[:severity]) + expect(actual.line).to eq(expected[:line]) + expect(actual.column).to eq(expected[:column]) end end end it "with offenses in stable/devel/head block" do - formulas = [{ - "url" => "git://github.com/foo.git", - "msg" => "Please use https:// for git://github.com/foo.git", - "col" => 4, - }] - formulas.each do |formula| - source = <<~EOS - class Foo < Formula - desc "foo" - url "https://foo.com" + expect_offense(<<~RUBY) + class Foo < Formula + desc "foo" + url "https://foo.com" - devel do - url "#{formula["url"]}", - :tag => "v1.0.0-alpha.1", - :revision => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - version "1.0.0-alpha.1" - end + devel do + url "git://github.com/foo.git", + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Please use https:// for git://github.com/foo.git + :tag => "v1.0.0-alpha.1", + :revision => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + version "1.0.0-alpha.1" end - EOS - expected_offenses = [{ message: formula["msg"], - severity: :convention, - line: 6, - column: formula["col"], - source: source }] - - inspect_source(source) - - expected_offenses.zip(cop.offenses.reverse).each do |expected, actual| - expect_offense(expected, actual) end - end + RUBY end it "with duplicate mirror" do - source = <<~EOS + expect_offense(<<~RUBY) class Foo < Formula desc "foo" url "https://ftpmirror.fnu.org/foo/foo-1.0.tar.gz" mirror "https://ftpmirror.fnu.org/foo/foo-1.0.tar.gz" + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ URL should not be duplicated as a mirror: https://ftpmirror.fnu.org/foo/foo-1.0.tar.gz end - EOS - - expected_offenses = [{ message: "URL should not be duplicated as a mirror: https://ftpmirror.fnu.org/foo/foo-1.0.tar.gz", - severity: :convention, - line: 4, - column: 2, - source: source }] - - inspect_source(source) - - expected_offenses.zip(cop.offenses.reverse).each do |expected, actual| - expect_offense(expected, actual) - end + RUBY end end end @@ -195,42 +167,31 @@ end describe RuboCop::Cop::FormulaAuditStrict::PyPiUrls do subject(:cop) { described_class.new } - context "When auditing urls" do - it "with pypi offenses" do - formulas = [{ - "url" => "https://pypi.python.org/packages/source/foo/foo-0.1.tar.gz", - "msg" => "https://pypi.python.org/packages/source/foo/foo-0.1.tar.gz should be `https://files.pythonhosted.org/packages/source/foo/foo-0.1.tar.gz`", - "col" => 2, - "corrected_url" =>"https://files.pythonhosted.org/packages/source/foo/foo-0.1.tar.gz", - }] - formulas.each do |formula| - source = <<~EOS - class Foo < Formula - desc "foo" - url "#{formula["url"]}" - end - EOS - corrected_source = <<~EOS - class Foo < Formula - desc "foo" - url "#{formula["corrected_url"]}" - end - EOS - expected_offenses = [{ message: formula["msg"], - severity: :convention, - line: 3, - column: formula["col"], - source: source }] + context "when a pypi.python.org URL is used" do + it "reports an offense" do + expect_offense(<<~RUBY) + class Foo < Formula + desc "foo" + url "https://pypi.python.org/packages/source/foo/foo-0.1.tar.gz" + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ https://pypi.python.org/packages/source/foo/foo-0.1.tar.gz should be `https://files.pythonhosted.org/packages/source/foo/foo-0.1.tar.gz` + end + RUBY + end - inspect_source(source) - # Check for expected offenses - expected_offenses.zip(cop.offenses.reverse).each do |expected, actual| - expect_offense(expected, actual) + it "support auto-correction" do + corrected = autocorrect_source(<<~RUBY) + class Foo < Formula + desc "foo" + url "https://pypi.python.org/packages/source/foo/foo-0.1.tar.gz" end - # Check for expected auto corrected source - new_source = autocorrect_source(source) - expect(new_source).to eq(corrected_source) - end + RUBY + + expect(corrected).to eq <<~RUBY + class Foo < Formula + desc "foo" + url "https://files.pythonhosted.org/packages/source/foo/foo-0.1.tar.gz" + end + RUBY end end end |
