2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2018-10-26 19:41:14 +01:00
|
|
|
require "rubocops/checksum"
|
2017-06-01 00:57:24 +05:30
|
|
|
|
2024-02-18 15:11:11 -08:00
|
|
|
RSpec.describe RuboCop::Cop::FormulaAudit::Checksum do
|
2017-06-01 00:57:24 +05:30
|
|
|
subject(:cop) { described_class.new }
|
|
|
|
|
|
2020-12-23 18:02:25 -08:00
|
|
|
context "when auditing spec checksums" do
|
|
|
|
|
it "reports an offense if a checksum is empty" do
|
2017-10-21 03:12:50 +02:00
|
|
|
expect_offense(<<~RUBY)
|
2017-06-01 00:57:24 +05:30
|
|
|
class Foo < Formula
|
2018-11-28 20:51:55 +01:00
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
2017-06-01 00:57:24 +05:30
|
|
|
stable do
|
|
|
|
|
url "https://github.com/foo-lang/foo-compiler/archive/0.18.0.tar.gz"
|
|
|
|
|
sha256 ""
|
2025-05-30 16:42:32 -04:00
|
|
|
^^ FormulaAudit/Checksum: `sha256` is empty
|
2017-06-01 00:57:24 +05:30
|
|
|
|
|
|
|
|
resource "foo-package" do
|
|
|
|
|
url "https://github.com/foo-lang/foo-package/archive/0.18.0.tar.gz"
|
|
|
|
|
sha256 ""
|
2025-05-30 16:42:32 -04:00
|
|
|
^^ FormulaAudit/Checksum: `sha256` is empty
|
2017-06-01 00:57:24 +05:30
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2017-10-21 03:12:50 +02:00
|
|
|
RUBY
|
2017-06-01 00:57:24 +05:30
|
|
|
end
|
|
|
|
|
|
2020-12-23 18:02:25 -08:00
|
|
|
it "reports an offense if a checksum is not 64 characters" do
|
2017-10-21 03:12:50 +02:00
|
|
|
expect_offense(<<~RUBY)
|
2017-06-01 00:57:24 +05:30
|
|
|
class Foo < Formula
|
2018-11-28 20:51:55 +01:00
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
2017-06-01 00:57:24 +05:30
|
|
|
stable do
|
|
|
|
|
url "https://github.com/foo-lang/foo-compiler/archive/0.18.0.tar.gz"
|
|
|
|
|
sha256 "5cf6e1ae0a645b426c0474cc7cd3f7d1605ffa1ac5756a39a8b2268ddc7ea0e9ad"
|
2025-05-30 16:42:32 -04:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/Checksum: `sha256` should be 64 characters
|
2017-06-01 00:57:24 +05:30
|
|
|
|
|
|
|
|
resource "foo-package" do
|
|
|
|
|
url "https://github.com/foo-lang/foo-package/archive/0.18.0.tar.gz"
|
|
|
|
|
sha256 "5cf6e1ae0a645b426c047aaa4cc7cd3f7d1605ffa1ac5756a39a8b2268ddc7ea0e9"
|
2025-05-30 16:42:32 -04:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/Checksum: `sha256` should be 64 characters
|
2017-06-01 00:57:24 +05:30
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2017-10-21 03:12:50 +02:00
|
|
|
RUBY
|
2017-06-01 00:57:24 +05:30
|
|
|
end
|
|
|
|
|
|
2020-12-23 18:02:25 -08:00
|
|
|
it "reports an offense if a checksum contains invalid characters" do
|
2017-10-21 03:12:50 +02:00
|
|
|
expect_offense(<<~RUBY)
|
2017-06-01 00:57:24 +05:30
|
|
|
class Foo < Formula
|
2018-11-28 20:51:55 +01:00
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
2017-06-01 00:57:24 +05:30
|
|
|
stable do
|
|
|
|
|
url "https://github.com/foo-lang/foo-compiler/archive/0.18.0.tar.gz"
|
|
|
|
|
sha256 "5cf6e1ae0a645b426c0k7cc7cd3f7d1605ffa1ac5756a39a8b2268ddc7ea0e9a"
|
2025-05-30 16:42:32 -04:00
|
|
|
^ FormulaAudit/Checksum: `sha256` contains invalid characters
|
2017-06-01 00:57:24 +05:30
|
|
|
|
|
|
|
|
resource "foo-package" do
|
|
|
|
|
url "https://github.com/foo-lang/foo-package/archive/0.18.0.tar.gz"
|
|
|
|
|
sha256 "5cf6e1ae0a645b426x047aa4cc7cd3f7d1605ffa1ac5756a39a8b2268ddc7ea9"
|
2025-05-30 16:42:32 -04:00
|
|
|
^ FormulaAudit/Checksum: `sha256` contains invalid characters
|
2017-06-01 00:57:24 +05:30
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2017-10-21 03:12:50 +02:00
|
|
|
RUBY
|
2017-06-01 00:57:24 +05:30
|
|
|
end
|
2021-01-28 19:32:23 +01:00
|
|
|
|
|
|
|
|
it "reports an offense if a checksum is not 64 characters in a bottle block without cellar" do
|
|
|
|
|
expect_offense(<<~RUBY)
|
|
|
|
|
class Foo < Formula
|
|
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
|
|
|
|
|
|
|
|
|
bottle do
|
|
|
|
|
sha256 catalina: "5cf6e1ae0a645b426c0474cc7cd3f7d1605ffa1ac5756a39a8b2268ddc7ea0e9ad"
|
2025-05-30 16:42:32 -04:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/Checksum: `sha256` should be 64 characters
|
2021-01-28 19:32:23 +01:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
RUBY
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it "reports an offense if a checksum is not 64 characters in a bottle block" do
|
|
|
|
|
expect_offense(<<~RUBY)
|
|
|
|
|
class Foo < Formula
|
|
|
|
|
url 'https://brew.sh/foo-1.0.tgz'
|
|
|
|
|
|
|
|
|
|
bottle do
|
|
|
|
|
sha256 cellar: :any, catalina: "5cf6e1ae0a645b426c0474cc7cd3f7d1605ffa1ac5756a39a8b2268ddc7ea0e9ad"
|
2025-05-30 16:42:32 -04:00
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FormulaAudit/Checksum: `sha256` should be 64 characters
|
2021-01-28 19:32:23 +01:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
RUBY
|
|
|
|
|
end
|
2017-06-16 19:44:14 +05:30
|
|
|
end
|
|
|
|
|
end
|