Merge pull request #2712 from 13k/hbc-dsl-appcast-fix
Fix curl invocation in Hbc::DSL::Appcast
This commit is contained in:
commit
0b66796540
@ -12,7 +12,7 @@ module Hbc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def calculate_checkpoint
|
def calculate_checkpoint
|
||||||
result = SystemCommand.run("/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", URL::FAKE_USER_AGENT, @uri], print_stderr: false)
|
result = SystemCommand.run("/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", URL::FAKE_USER_AGENT, "--fail", @uri], print_stderr: false)
|
||||||
|
|
||||||
checkpoint = if result.success?
|
checkpoint = if result.success?
|
||||||
processed_appcast_text = result.stdout.gsub(%r{<pubDate>[^<]*</pubDate>}m, "")
|
processed_appcast_text = result.stdout.gsub(%r{<pubDate>[^<]*</pubDate>}m, "")
|
||||||
|
|||||||
74
Library/Homebrew/test/cask/dsl/appcast_spec.rb
Normal file
74
Library/Homebrew/test/cask/dsl/appcast_spec.rb
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
require "cmd/cask"
|
||||||
|
|
||||||
|
describe Hbc::DSL::Appcast do
|
||||||
|
subject { described_class.new(url, params) }
|
||||||
|
|
||||||
|
let(:url) { "http://example.com" }
|
||||||
|
let(:uri) { Hbc::UnderscoreSupportingURI.parse(url) }
|
||||||
|
let(:params) { {} }
|
||||||
|
|
||||||
|
describe "#to_s" do
|
||||||
|
it "returns the parsed URI string" do
|
||||||
|
expect(subject.to_s).to eq("http://example.com")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#to_yaml" do
|
||||||
|
let(:yaml) { [uri, params].to_yaml }
|
||||||
|
|
||||||
|
context "with empty parameters" do
|
||||||
|
it "returns an YAML serialized array composed of the URI and parameters" do
|
||||||
|
expect(subject.to_yaml).to eq(yaml)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with checkpoint in parameters" do
|
||||||
|
let(:params) { { checkpoint: "abc123" } }
|
||||||
|
|
||||||
|
it "returns an YAML serialized array composed of the URI and parameters" do
|
||||||
|
expect(subject.to_yaml).to eq(yaml)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#calculate_checkpoint" do
|
||||||
|
before do
|
||||||
|
expect(Hbc::SystemCommand).to receive(:run).with(*cmd_args).and_return(cmd_result)
|
||||||
|
allow(cmd_result).to receive(:success?).and_return(cmd_success)
|
||||||
|
allow(cmd_result).to receive(:stdout).and_return(cmd_stdout)
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when server returns a successful HTTP status" do
|
||||||
|
let(:cmd_args) { ["/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", Hbc::URL::FAKE_USER_AGENT, "--fail", uri], print_stderr: false] }
|
||||||
|
let(:cmd_result) { double("Hbc::SystemCommand::Result") }
|
||||||
|
let(:cmd_success) { true }
|
||||||
|
let(:cmd_stdout) { "hello world" }
|
||||||
|
|
||||||
|
it "generates the content digest hash and returns a hash with the command result and the digest hash for the checkpoint" do
|
||||||
|
expected_digest = Digest::SHA2.hexdigest(cmd_stdout)
|
||||||
|
expected_result = {
|
||||||
|
checkpoint: expected_digest,
|
||||||
|
command_result: cmd_result,
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(subject.calculate_checkpoint).to eq(expected_result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when server returns a non-successful HTTP status" do
|
||||||
|
let(:cmd_args) { ["/usr/bin/curl", args: ["--compressed", "--location", "--user-agent", Hbc::URL::FAKE_USER_AGENT, "--fail", uri], print_stderr: false] }
|
||||||
|
let(:cmd_result) { double("Hbc::SystemCommand::Result") }
|
||||||
|
let(:cmd_success) { false }
|
||||||
|
let(:cmd_stdout) { "some error message from the server" }
|
||||||
|
|
||||||
|
it "returns a hash with the command result and nil for the checkpoint" do
|
||||||
|
expected_result = {
|
||||||
|
checkpoint: nil,
|
||||||
|
command_result: cmd_result,
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(subject.calculate_checkpoint).to eq(expected_result)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
x
Reference in New Issue
Block a user