Merge pull request #9493 from reitermarkus/url-unversioned

Add audit for unversioned URLs with checksum.
This commit is contained in:
Markus Reiter 2020-12-16 10:19:48 +01:00 committed by GitHub
commit 0ae8f0edc8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 32 additions and 25 deletions

View File

@ -248,6 +248,7 @@ module Cask
return unless cask.sha256
check_sha256_no_check_if_latest
check_sha256_no_check_if_unversioned
check_sha256_actually_256
check_sha256_invalid
end
@ -260,6 +261,12 @@ module Cask
add_error "you should use sha256 :no_check when version is :latest"
end
def check_sha256_no_check_if_unversioned
return if cask.sha256 == :no_check
add_error "Use `sha256 :no_check` when URL is unversioned." if cask.url&.unversioned?
end
def check_sha256_actually_256
odebug "Verifying sha256 string is a legal SHA-256 digest"
return unless cask.sha256.is_a?(Checksum)

View File

@ -232,14 +232,14 @@ describe Cask::Audit, :cask do
let(:online) { false }
let(:cask) do
tmp_cask cask_token.to_s, <<~RUBY
cask '#{cask_token}' do
version '1.0'
sha256 '8dd95daa037ac02455435446ec7bc737b34567afe9156af7d20b2a83805c1d8a'
url "https://brew.sh/"
name 'Audit'
desc 'Cask for testing tokens'
homepage 'https://brew.sh/'
app 'Audit.app'
cask "#{cask_token}" do
version "1.0"
sha256 "8dd95daa037ac02455435446ec7bc737b34567afe9156af7d20b2a83805c1d8a"
url "https://brew.sh/v\#{version}.zip"
name "Audit"
desc "Cask for testing tokens"
homepage "https://brew.sh/"
app "Audit.app"
end
RUBY
end
@ -877,14 +877,14 @@ describe Cask::Audit, :cask do
let(:cask_token) { "with-description" }
let(:cask) do
tmp_cask cask_token.to_s, <<~RUBY
cask '#{cask_token}' do
version '1.0'
sha256 '8dd95daa037ac02455435446ec7bc737b34567afe9156af7d20b2a83805c1d8a'
url "https://brew.sh/"
name 'Audit'
desc 'Cask Auditor'
homepage 'https://brew.sh/'
app 'Audit.app'
cask "#{cask_token}" do
version "1.0"
sha256 "8dd95daa037ac02455435446ec7bc737b34567afe9156af7d20b2a83805c1d8a"
url "https://brew.sh/\#{version}.zip"
name "Audit"
desc "Cask Auditor"
homepage "https://brew.sh/"
app "Audit.app"
end
RUBY
end

View File

@ -10,12 +10,12 @@ describe Cask::Cmd::Cat, :cask do
describe "given a basic Cask" do
let(:basic_cask_content) {
<<~RUBY
<<~'RUBY'
cask "basic-cask" do
version "1.2.3"
sha256 "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
url "https://brew.sh/TestCask.dmg"
url "https://brew.sh/TestCask-#{version}.dmg"
name "Basic Cask"
desc "Cask for testing basic functionality"
homepage "https://brew.sh/"

View File

@ -7,7 +7,7 @@ describe Cask::DSL, :cask do
context "stanzas" do
it "lets you set url, homepage, and version" do
expect(cask.url.to_s).to eq("https://brew.sh/TestCask.dmg")
expect(cask.url.to_s).to eq("https://brew.sh/TestCask-1.2.3.dmg")
expect(cask.homepage).to eq("https://brew.sh/")
expect(cask.version.to_s).to eq("1.2.3")
end
@ -66,7 +66,7 @@ describe Cask::DSL, :cask do
it "does not require a DSL version in the header" do
expect(cask.token).to eq("no-dsl-version")
expect(cask.url.to_s).to eq("https://brew.sh/TestCask.dmg")
expect(cask.url.to_s).to eq("https://brew.sh/TestCask-1.2.3.dmg")
expect(cask.homepage).to eq("https://brew.sh/")
expect(cask.version.to_s).to eq("1.2.3")
end

View File

@ -2,7 +2,7 @@ cask "adobe-air" do
version "1.2.3"
sha256 "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
url "https://brew.sh/TestCask.dmg"
url "https://brew.sh/TestCask-#{version}.dmg"
name "Adobe AIR"
desc "Cross-platform application runtime"
homepage "https://brew.sh/"

View File

@ -2,7 +2,7 @@ cask "adobe-illustrator" do
version "1.2.3"
sha256 "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
url "https://brew.sh/TestCask.dmg"
url "https://brew.sh/TestCask-#{version}.dmg"
name "Adobe Illustrator"
homepage "https://brew.sh/"

View File

@ -2,7 +2,7 @@ cask "basic-cask" do
version "1.2.3"
sha256 "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
url "https://brew.sh/TestCask.dmg"
url "https://brew.sh/TestCask-#{version}.dmg"
name "Basic Cask"
desc "Cask for testing basic functionality"
homepage "https://brew.sh/"

View File

@ -2,7 +2,7 @@ cask "no-dsl-version" do
version "1.2.3"
sha256 "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
url "https://brew.sh/TestCask.dmg"
url "https://brew.sh/TestCask-#{version}.dmg"
homepage "https://brew.sh/"
app "TestCask.app"

View File

@ -2,7 +2,7 @@ cask "pharo" do
version "1.2.3"
sha256 "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
url "https://brew.sh/ThirdParty.dmg"
url "https://brew.sh/ThirdParty-#{version}.dmg"
name "Pharo"
desc "Cask from a third-party tap"
homepage "https://brew.sh/"