mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00

After some discussion, we decided to change the DSL to get rid of the `plist_name` and `service_name` methods which aren't meaningful for most users. The new DSL looks like this: ```rb service do name macos: "name", linux: "name" end ``` I also updated some specs here to reflect these changes. There was some talk about maybe deprecating `plist_name` and `service_name` but I think that's outside of the scope of this PR so I'm leaving them as is for now. One benefit of this is that everything here is backwards compatible.
87 lines
2.4 KiB
Ruby
87 lines
2.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rubocops/service"
|
|
|
|
describe RuboCop::Cop::FormulaAudit::Service do
|
|
subject(:cop) { described_class.new }
|
|
|
|
it "reports offenses when a service block is missing a required command" do
|
|
expect_offense(<<~RUBY)
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tgz"
|
|
|
|
service do
|
|
^^^^^^^^^^ FormulaAudit/Service: Service blocks require `run` or `name` to be defined.
|
|
run_type :cron
|
|
working_dir "/tmp/example"
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports no offenses when a service block only includes custom names" do
|
|
expect_no_offenses(<<~RUBY)
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tgz"
|
|
|
|
service do
|
|
name macos: "custom.mcxl.foo", linux: "custom.foo"
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports offenses when a service block includes more than custom names and no run command" do
|
|
expect_offense(<<~RUBY)
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tgz"
|
|
|
|
service do
|
|
^^^^^^^^^^ FormulaAudit/Service: `run` must be defined to use methods other than `name` like [:working_dir].
|
|
name macos: "custom.mcxl.foo", linux: "custom.foo"
|
|
working_dir "/tmp/example"
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports offenses when a formula's service block uses cellar paths" do
|
|
expect_offense(<<~RUBY)
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tgz"
|
|
|
|
service do
|
|
run [bin/"foo", "run", "-config", etc/"foo/config.json"]
|
|
^^^ FormulaAudit/Service: Use `opt_bin` instead of `bin` in service blocks.
|
|
working_dir libexec
|
|
^^^^^^^ FormulaAudit/Service: Use `opt_libexec` instead of `libexec` in service blocks.
|
|
end
|
|
end
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tgz"
|
|
|
|
service do
|
|
run [opt_bin/"foo", "run", "-config", etc/"foo/config.json"]
|
|
working_dir opt_libexec
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "reports no offenses when a service block only uses opt paths" do
|
|
expect_no_offenses(<<~RUBY)
|
|
class Bin < Formula
|
|
url "https://brew.sh/foo-1.0.tgz"
|
|
|
|
service do
|
|
run [opt_bin/"bin", "run", "-config", etc/"bin/config.json"]
|
|
working_dir opt_libexec
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
end
|