mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Directly save artifacts in DSL.
This commit is contained in:
parent
2c7ef064e4
commit
51a0de6368
@ -59,10 +59,5 @@ module Hbc
|
||||
PostflightBlock,
|
||||
Zap,
|
||||
].freeze
|
||||
|
||||
def self.for_cask(cask)
|
||||
odebug "Determining which artifacts are present in Cask #{cask}"
|
||||
CLASSES.flat_map { |klass| klass.for_cask(cask) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,7 @@
|
||||
module Hbc
|
||||
module Artifact
|
||||
class AbstractArtifact
|
||||
include Comparable
|
||||
extend Predicable
|
||||
|
||||
def self.english_name
|
||||
@ -19,8 +20,35 @@ module Hbc
|
||||
@dirmethod ||= "#{dsl_key}dir".to_sym
|
||||
end
|
||||
|
||||
def self.for_cask(cask)
|
||||
cask.artifacts[self].to_a
|
||||
def <=>(other)
|
||||
@@sort_order ||= [ # rubocop:disable Style/ClassVars
|
||||
PreflightBlock,
|
||||
Uninstall,
|
||||
NestedContainer,
|
||||
Installer,
|
||||
App,
|
||||
Suite,
|
||||
Artifact, # generic 'artifact' stanza
|
||||
Colorpicker,
|
||||
Pkg,
|
||||
Prefpane,
|
||||
Qlplugin,
|
||||
Dictionary,
|
||||
Font,
|
||||
Service,
|
||||
StageOnly,
|
||||
Binary,
|
||||
InputMethod,
|
||||
InternetPlugin,
|
||||
AudioUnitPlugin,
|
||||
VstPlugin,
|
||||
Vst3Plugin,
|
||||
ScreenSaver,
|
||||
PostflightBlock,
|
||||
Zap,
|
||||
]
|
||||
|
||||
(@@sort_order.index(self.class) <=> @@sort_order.index(other.class)).to_i
|
||||
end
|
||||
|
||||
# TODO: this sort of logic would make more sense in dsl.rb, or a
|
||||
|
@ -218,7 +218,7 @@ module Hbc
|
||||
end
|
||||
|
||||
def check_generic_artifacts
|
||||
cask.artifacts[Hbc::Artifact::Artifact].each do |artifact|
|
||||
cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Artifact) }.each do |artifact|
|
||||
unless artifact.target.absolute?
|
||||
add_error "target must be absolute path for #{artifact.class.english_name} #{artifact.source}"
|
||||
end
|
||||
|
@ -77,11 +77,11 @@ module Hbc
|
||||
|
||||
def self.artifact_info(cask)
|
||||
ohai "Artifacts"
|
||||
DSL::ORDINARY_ARTIFACT_CLASSES.flat_map { |klass| klass.for_cask(cask) }
|
||||
.select { |artifact| artifact.respond_to?(:install_phase) }
|
||||
.each do |artifact|
|
||||
puts artifact.to_s
|
||||
end
|
||||
cask.artifacts.each do |artifact|
|
||||
next unless artifact.respond_to?(:install_phase)
|
||||
next unless DSL::ORDINARY_ARTIFACT_CLASSES.include?(artifact.class)
|
||||
puts artifact.to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -30,7 +30,7 @@ module Hbc
|
||||
end
|
||||
|
||||
def self.list_artifacts(cask)
|
||||
Artifact.for_cask(cask).group_by(&:class).each do |klass, artifacts|
|
||||
cask.artifacts.group_by(&:class).each do |klass, artifacts|
|
||||
next unless klass.respond_to?(:english_description)
|
||||
ohai klass.english_description, artifacts.map(&:summarize_installed)
|
||||
end
|
||||
|
@ -20,7 +20,7 @@ module Hbc
|
||||
|
||||
unless children.count == 1 &&
|
||||
!nested_container.directory? &&
|
||||
Artifact::NestedContainer.for_cask(@cask).none? &&
|
||||
@cask.artifacts.none? { |a| a.is_a?(Artifact::NestedContainer) } &&
|
||||
extract_nested_container(nested_container)
|
||||
|
||||
children.each do |src|
|
||||
|
@ -176,7 +176,7 @@ module Hbc
|
||||
DSL::Container.new(*args).tap do |container|
|
||||
# TODO: remove this backward-compatibility section after removing nested_container
|
||||
if container&.nested
|
||||
artifacts[Artifact::NestedContainer] << Artifact::NestedContainer.new(cask, container.nested)
|
||||
artifacts.add(Artifact::NestedContainer.new(cask, container.nested))
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -219,7 +219,7 @@ module Hbc
|
||||
end
|
||||
|
||||
def artifacts
|
||||
@artifacts ||= Hash.new { |hash, key| hash[key] = Set.new }
|
||||
@artifacts ||= SortedSet.new
|
||||
end
|
||||
|
||||
def caskroom_path
|
||||
@ -253,11 +253,11 @@ module Hbc
|
||||
ORDINARY_ARTIFACT_CLASSES.each do |klass|
|
||||
define_method(klass.dsl_key) do |*args|
|
||||
begin
|
||||
if [*artifacts.keys, klass].include?(Artifact::StageOnly) && (artifacts.keys & ACTIVATABLE_ARTIFACT_CLASSES).any?
|
||||
if [*artifacts.map(&:class), klass].include?(Artifact::StageOnly) && (artifacts.map(&:class) & ACTIVATABLE_ARTIFACT_CLASSES).any?
|
||||
raise CaskInvalidError.new(cask, "'stage_only' must be the only activatable artifact.")
|
||||
end
|
||||
|
||||
artifacts[klass].add(klass.from_args(cask, *args))
|
||||
artifacts.add(klass.from_args(cask, *args))
|
||||
rescue CaskInvalidError
|
||||
raise
|
||||
rescue StandardError => e
|
||||
@ -269,7 +269,7 @@ module Hbc
|
||||
ARTIFACT_BLOCK_CLASSES.each do |klass|
|
||||
[klass.dsl_key, klass.uninstall_dsl_key].each do |dsl_key|
|
||||
define_method(dsl_key) do |&block|
|
||||
artifacts[klass] << klass.new(cask, dsl_key => block)
|
||||
artifacts.add(klass.new(cask, dsl_key => block))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -177,7 +177,7 @@ module Hbc
|
||||
already_installed_artifacts = []
|
||||
|
||||
odebug "Installing artifacts"
|
||||
artifacts = Artifact.for_cask(@cask)
|
||||
artifacts = @cask.artifacts
|
||||
odebug "#{artifacts.length} artifact/s defined", artifacts
|
||||
|
||||
artifacts.each do |artifact|
|
||||
@ -374,7 +374,7 @@ module Hbc
|
||||
|
||||
def uninstall_artifacts
|
||||
odebug "Un-installing artifacts"
|
||||
artifacts = Artifact.for_cask(@cask)
|
||||
artifacts = @cask.artifacts
|
||||
|
||||
odebug "#{artifacts.length} artifact/s defined", artifacts
|
||||
|
||||
@ -388,7 +388,7 @@ module Hbc
|
||||
def zap
|
||||
ohai %Q(Implied "brew cask uninstall #{@cask}")
|
||||
uninstall_artifacts
|
||||
if (zap_stanzas = Artifact::Zap.for_cask(@cask)).empty?
|
||||
if (zap_stanzas = @cask.artifacts.select { |a| a.is_a?(Artifact::Zap) }).empty?
|
||||
opoo "No zap stanza present for Cask '#{@cask}'"
|
||||
else
|
||||
ohai "Dispatching zap stanza"
|
||||
|
@ -4,7 +4,7 @@ module Hbc
|
||||
index = 0 if index == :first
|
||||
index = 1 if index == :second
|
||||
index = -1 if index == :last
|
||||
@cask.artifacts[Artifact::App].to_a.at(index).target.join("Contents", "Info.plist")
|
||||
@cask.artifacts.select { |a| a.is_a?(Artifact::App) }.at(index).target.join("Contents", "Info.plist")
|
||||
end
|
||||
|
||||
def plist_exec(cmd)
|
||||
|
@ -3,7 +3,7 @@ describe Hbc::Artifact::App, :cask do
|
||||
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-alt-target.rb") }
|
||||
|
||||
let(:install_phase) {
|
||||
-> { described_class.for_cask(cask).each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
-> { cask.artifacts.select { |a| a.is_a?(described_class) }.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
}
|
||||
|
||||
let(:source_path) { cask.staged_path.join("Caffeine.app") }
|
||||
|
@ -2,7 +2,7 @@ describe Hbc::Artifact::App, :cask do
|
||||
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/local-caffeine.rb") }
|
||||
let(:command) { Hbc::SystemCommand }
|
||||
let(:force) { false }
|
||||
let(:app) { described_class.for_cask(cask).first }
|
||||
let(:app) { cask.artifacts.select { |a| a.is_a?(described_class) }.first }
|
||||
|
||||
let(:source_path) { cask.staged_path.join("Caffeine.app") }
|
||||
let(:target_path) { Hbc.appdir.join("Caffeine.app") }
|
||||
|
@ -26,7 +26,7 @@ describe Hbc::Artifact::Binary, :cask do
|
||||
end
|
||||
|
||||
it "links the binary to the proper directory" do
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(expected_path).to be_a_symlink
|
||||
@ -46,7 +46,7 @@ describe Hbc::Artifact::Binary, :cask do
|
||||
expect(FileUtils).to receive(:chmod)
|
||||
.with("+x", cask.staged_path.join("naked_non_executable")).and_call_original
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(expected_path).to be_a_symlink
|
||||
@ -58,7 +58,7 @@ describe Hbc::Artifact::Binary, :cask do
|
||||
FileUtils.touch expected_path
|
||||
|
||||
expect {
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
}.to raise_error(Hbc::CaskError)
|
||||
|
||||
@ -68,7 +68,7 @@ describe Hbc::Artifact::Binary, :cask do
|
||||
it "clobbers an existing symlink" do
|
||||
expected_path.make_symlink("/tmp")
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(File.readlink(expected_path)).not_to eq("/tmp")
|
||||
@ -77,7 +77,7 @@ describe Hbc::Artifact::Binary, :cask do
|
||||
it "creates parent directory if it doesn't exist" do
|
||||
FileUtils.rmdir Hbc.binarydir
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(expected_path.exist?).to be true
|
||||
@ -91,9 +91,9 @@ describe Hbc::Artifact::Binary, :cask do
|
||||
}
|
||||
|
||||
it "links the binary to the proper directory" do
|
||||
Hbc::Artifact::App.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::App) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(expected_path).to be_a_symlink
|
||||
|
@ -2,7 +2,7 @@ describe Hbc::Artifact::Artifact, :cask do
|
||||
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-generic-artifact.rb") }
|
||||
|
||||
let(:install_phase) {
|
||||
-> { described_class.for_cask(cask).each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
-> { cask.artifacts.select { |a| a.is_a?(described_class) }.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
}
|
||||
|
||||
let(:source_path) { cask.staged_path.join("Caffeine.app") }
|
||||
|
@ -5,7 +5,7 @@ describe Hbc::Artifact::NestedContainer, :cask do
|
||||
InstallHelper.install_without_artifacts(c)
|
||||
end
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(cask.staged_path.join("MyNestedApp.app")).to be_a_directory
|
||||
|
@ -8,7 +8,7 @@ describe Hbc::Artifact::Pkg, :cask do
|
||||
|
||||
describe "install_phase" do
|
||||
it "runs the system installer on the specified pkgs" do
|
||||
pkg = described_class.for_cask(cask).first
|
||||
pkg = cask.artifacts.select { |a| a.is_a?(described_class) }.first
|
||||
|
||||
expect(fake_system_command).to receive(:run!).with(
|
||||
"/usr/sbin/installer",
|
||||
@ -25,7 +25,7 @@ describe Hbc::Artifact::Pkg, :cask do
|
||||
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-choices.rb") }
|
||||
|
||||
it "passes the choice changes xml to the system installer" do
|
||||
pkg = described_class.for_cask(cask).first
|
||||
pkg = cask.artifacts.select { |a| a.is_a?(described_class) }.first
|
||||
|
||||
file = double(path: Pathname.new("/tmp/choices.xml"))
|
||||
|
||||
|
@ -11,7 +11,7 @@ describe Hbc::Artifact::PostflightBlock, :cask do
|
||||
end
|
||||
end
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(called).to be true
|
||||
@ -31,7 +31,7 @@ describe Hbc::Artifact::PostflightBlock, :cask do
|
||||
end
|
||||
end
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.uninstall_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(called).to be true
|
||||
|
@ -11,7 +11,7 @@ describe Hbc::Artifact::PreflightBlock, :cask do
|
||||
end
|
||||
end
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(called).to be true
|
||||
@ -31,7 +31,7 @@ describe Hbc::Artifact::PreflightBlock, :cask do
|
||||
end
|
||||
end
|
||||
|
||||
described_class.for_cask(cask)
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }
|
||||
.each { |artifact| artifact.uninstall_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect(called).to be true
|
||||
|
@ -2,7 +2,7 @@ describe Hbc::Artifact::Suite, :cask do
|
||||
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-suite.rb") }
|
||||
|
||||
let(:install_phase) {
|
||||
-> { described_class.for_cask(cask).each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
-> { cask.artifacts.select { |a| a.is_a?(described_class) }.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
}
|
||||
|
||||
let(:target_path) { Hbc.appdir.join("Caffeine") }
|
||||
|
@ -3,7 +3,7 @@ describe Hbc::Artifact::App, :cask do
|
||||
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-two-apps-correct.rb") }
|
||||
|
||||
let(:install_phase) {
|
||||
-> { described_class.for_cask(cask).each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
-> { cask.artifacts.select { |a| a.is_a?(described_class) }.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) } }
|
||||
}
|
||||
|
||||
let(:source_path_mini) { cask.staged_path.join("Caffeine Mini.app") }
|
||||
|
@ -2,7 +2,7 @@ describe Hbc::Artifact::Zap, :cask do
|
||||
let(:cask) { Hbc::CaskLoader.load_from_file(TEST_FIXTURE_DIR/"cask/Casks/with-installable.rb") }
|
||||
|
||||
let(:zap_artifact) {
|
||||
described_class.for_cask(cask).first
|
||||
cask.artifacts.select { |a| a.is_a?(described_class) }.first
|
||||
}
|
||||
|
||||
before(:each) do
|
||||
|
@ -1,6 +1,6 @@
|
||||
shared_examples "#uninstall_phase or #zap_phase" do
|
||||
let(:artifact_dsl_key) { described_class.dsl_key }
|
||||
let(:artifact) { described_class.for_cask(cask).first }
|
||||
let(:artifact) { cask.artifacts.select { |a| a.is_a?(described_class) }.first }
|
||||
let(:fake_system_command) { Hbc::FakeSystemCommand }
|
||||
|
||||
subject { artifact.public_send(:"#{artifact_dsl_key}_phase", command: fake_system_command) }
|
||||
|
@ -72,7 +72,7 @@ describe Hbc::CLI::List, :cask do
|
||||
it "lists the installed files for those Casks" do
|
||||
casks.each(&InstallHelper.method(:install_without_artifacts_with_caskfile))
|
||||
|
||||
Hbc::Artifact::App.for_cask(transmission)
|
||||
transmission.artifacts.select { |a| a.is_a?(Hbc::Artifact::App) }
|
||||
.each { |artifact| artifact.install_phase(command: Hbc::NeverSudoSystemCommand, force: false) }
|
||||
|
||||
expect {
|
||||
|
@ -216,12 +216,12 @@ describe Hbc::DSL, :cask do
|
||||
app "Bar.app"
|
||||
end
|
||||
|
||||
expect(cask.artifacts[Hbc::Artifact::App].map(&:to_s)).to eq(["Foo.app (App)", "Bar.app (App)"])
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::App) }.map(&:to_s)).to eq(["Foo.app (App)", "Bar.app (App)"])
|
||||
end
|
||||
|
||||
it "allow app stanzas to be empty" do
|
||||
cask = Hbc::Cask.new("cask-with-no-apps")
|
||||
expect(cask.artifacts[Hbc::Artifact::App]).to be_empty
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::App) }).to be_empty
|
||||
end
|
||||
end
|
||||
|
||||
@ -249,7 +249,7 @@ describe Hbc::DSL, :cask do
|
||||
pkg "Bar.pkg"
|
||||
end
|
||||
|
||||
expect(cask.artifacts[Hbc::Artifact::Pkg].map(&:to_s)).to eq(["Foo.pkg (Pkg)", "Bar.pkg (Pkg)"])
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Pkg) }.map(&:to_s)).to eq(["Foo.pkg (Pkg)", "Bar.pkg (Pkg)"])
|
||||
end
|
||||
end
|
||||
|
||||
@ -501,10 +501,10 @@ describe Hbc::DSL, :cask do
|
||||
let(:token) { "with-installer-script" }
|
||||
|
||||
it "allows installer script to be specified" do
|
||||
expect(cask.artifacts[Hbc::Artifact::Installer].first.path).to eq(Pathname("/usr/bin/true"))
|
||||
expect(cask.artifacts[Hbc::Artifact::Installer].first.args[:args]).to eq(["--flag"])
|
||||
expect(cask.artifacts[Hbc::Artifact::Installer].to_a[1].path).to eq(Pathname("/usr/bin/false"))
|
||||
expect(cask.artifacts[Hbc::Artifact::Installer].to_a[1].args[:args]).to eq(["--flag"])
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Installer) }.first.path).to eq(Pathname("/usr/bin/true"))
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Installer) }.first.args[:args]).to eq(["--flag"])
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Installer) }.to_a[1].path).to eq(Pathname("/usr/bin/false"))
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Installer) }.to_a[1].args[:args]).to eq(["--flag"])
|
||||
end
|
||||
end
|
||||
|
||||
@ -512,7 +512,7 @@ describe Hbc::DSL, :cask do
|
||||
let(:token) { "with-installer-manual" }
|
||||
|
||||
it "allows installer manual to be specified" do
|
||||
installer = cask.artifacts[Hbc::Artifact::Installer].first
|
||||
installer = cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Installer) }.first
|
||||
expect(installer).to be_a(Hbc::Artifact::Installer::ManualInstaller)
|
||||
expect(installer.path).to eq(cask.staged_path.join("Caffeine.app"))
|
||||
end
|
||||
@ -524,7 +524,7 @@ describe Hbc::DSL, :cask do
|
||||
let(:token) { "stage-only" }
|
||||
|
||||
it "allows stage_only stanza to be specified" do
|
||||
expect(cask.artifacts[Hbc::Artifact::StageOnly]).not_to be_empty
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::StageOnly) }).not_to be_empty
|
||||
end
|
||||
end
|
||||
|
||||
@ -545,12 +545,12 @@ describe Hbc::DSL, :cask do
|
||||
end
|
||||
end
|
||||
|
||||
describe "appdir" do
|
||||
describe "#appdir" do
|
||||
context "interpolation of the appdir in stanzas" do
|
||||
let(:token) { "appdir-interpolation" }
|
||||
|
||||
it "is allowed" do
|
||||
expect(cask.artifacts[Hbc::Artifact::Binary].first.source).to eq(Hbc.appdir/"some/path")
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Binary) }.first.source).to eq(Hbc.appdir/"some/path")
|
||||
end
|
||||
end
|
||||
|
||||
@ -563,10 +563,35 @@ describe Hbc::DSL, :cask do
|
||||
binary "#{appdir}/some/path"
|
||||
end
|
||||
|
||||
expect(cask.artifacts[Hbc::Artifact::Binary].first.source).to eq(original_appdir/"some/path")
|
||||
expect(cask.artifacts.select { |a| a.is_a?(Hbc::Artifact::Binary) }.first.source).to eq(original_appdir/"some/path")
|
||||
ensure
|
||||
Hbc.appdir = original_appdir
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#artifacts" do
|
||||
it "sorts artifacts according to the preferable installation order" do
|
||||
cask = Hbc::Cask.new("appdir-trailing-slash") do
|
||||
postflight do
|
||||
next
|
||||
end
|
||||
|
||||
preflight do
|
||||
next
|
||||
end
|
||||
|
||||
binary "binary"
|
||||
|
||||
app "App.app"
|
||||
end
|
||||
|
||||
expect(cask.artifacts.map(&:class).map(&:dsl_key)).to eq [
|
||||
:preflight,
|
||||
:app,
|
||||
:binary,
|
||||
:postflight,
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user