diff --git a/Library/Homebrew/test/bundle/brew_services_spec.rb b/Library/Homebrew/test/bundle/brew_services_spec.rb index cdc2897414..27a088edc1 100644 --- a/Library/Homebrew/test/bundle/brew_services_spec.rb +++ b/Library/Homebrew/test/bundle/brew_services_spec.rb @@ -46,6 +46,14 @@ RSpec.describe Homebrew::Bundle::BrewServices do expect(described_class.started_services).to include("nginx") end + it "runs the service" do + allow(described_class).to receive(:started_services).and_return([]) + expect(Homebrew::Bundle).to receive(:system).with(HOMEBREW_BREW_FILE, "services", "run", "nginx", + verbose: false).and_return(true) + expect(described_class.run("nginx")).to be(true) + expect(described_class.started_services).to include("nginx") + end + it "restarts the service" do allow(described_class).to receive(:started_services).and_return([]) expect(Homebrew::Bundle).to receive(:system).with(HOMEBREW_BREW_FILE, "services", "restart", "nginx", @@ -54,4 +62,32 @@ RSpec.describe Homebrew::Bundle::BrewServices do expect(described_class.started_services).to include("nginx") end end + + describe ".versioned_service_file" do + let(:foo) do + instance_double( + Formula, + name: "fooformula", + version: "1.0", + rack: HOMEBREW_CELLAR/"fooformula", + plist_name: "homebrew.mxcl.fooformula", + ) + end + + it "returns the versioned service file" do + expect(Formula).to receive(:[]).with(foo.name).and_return(foo) + expect(Homebrew::Bundle).to receive(:formula_versions_from_env).and_return(foo.name => foo.version) + + prefix = foo.rack/"1.0" + allow(FileTest).to receive(:directory?).and_call_original + expect(FileTest).to receive(:directory?).with(prefix.to_s).and_return(true) + + service_file = prefix/"#{foo.plist_name}.plist" + expect(Homebrew::Services::System).to receive(:launchctl?).and_return(true) + allow(FileTest).to receive(:file?).and_call_original + expect(FileTest).to receive(:file?).with(service_file.to_s).and_return(true) + + expect(described_class.versioned_service_file(foo.name)).to eq(service_file) + end + end end