This commit fixes a flaw in the Cask test helper, causing the broken `Cask::Config` test to actually fail.
The flaw occurred while patching the `Cask::Config::DEFAULT_DIRS` hash.
While the original hash uses strings as values, the patched one used
`Pathname` values, masking a broken `Cask::Config::from_json` test.
Now the broken test fails like it should.
This commit adds a broken test, which is meant to expose a flaw in the
constructor of `Cask::Config`.
That (broken) test still passes because there’s also a flaw in our
test helper code.
The helper flaw happens to neutralize the `Cask::Config` flaw.
Previously, the JSON-based cask config loader was untested.
This commit changes the interface to accept a string, making the loader
easier to test. The commit also adds a test.
This will allow `brew style` and `brew audit` to be run separately
without providing duplicates.
Additionally, run RuboCop style rules when `--strict` isn't provided and
remove a confusing reference to `style`.
- This builds on @jonchang's work that started in #6265.
- We now use `uses_from_macos` to declare dependencies that are implicit
on macOS because they ship with macOS, but they're needed on Linux. We
have to be sure that the dependencies people specify as
`uses_from_macos` are actually shipped with macOS. So, we maintain a
safelist of those dependencies and check against it.
- Also add more legitimate `uses_from_macos` dependencies to the list.
- This is runnable with `brew audit --only-cops=FormulaAudit/UsesFromMacos`.
- It produces different number of failures on macOS vs. Linux, because
apparently we've not synced Homebrew/linuxbrew-core upstream thoroughly
enough yet.
- Originally this was designed as a `--strict` audit, but we flipped it
to be a normal audit because - to quote Mike - this is "sufficiently
robust" now.
There appear to be random, seemingly impossible to debug issues with
running integration tests on portable Ruby. Instead of confusing
contributors when these will be run on CI anyway: let's just skip them
by default (like we do with `--online` for online tests anyway).