Commit Graph

170 Commits

Author SHA1 Message Date
Markus Reiter 11eedac599 Core Code Cleanup 2016-07-05 02:29:10 -04:00
Claudia d10d2c8f7e Fix deadlock in `Hbc::SystemCommand` (#21665)
* Write failing tests for issue #18638

* Fix `Hbc::SystemCommand` to avoid deadlocks; ref #18638

The current implementation of `Hbc::SystemCommand` uses the `Open3` library in a way that causes a deadlock in cases where `STDERR` grows beyond a certain size.

This commit fixes the issue by following the practice suggested in the Ruby documentation, i. e. choosing a stream selection method that avoids deadlocks.
2016-06-03 21:01:34 -04:00
Matt Wean 47383169de [WIP] Change artifact behavior to moving instead of symlinking (#13966)
* Change app artifact to move instead of link

First step towards change in installation behavior mentioned in [13201]

* Fix handling of binaries linked from inside of app bundles

Also adds `appdir` method for interpolation in stanzas

* Change appdir to root Applications directory

* Update 2-app tests

* Refactor: add options, ivars to `Installer`, `Download`

In preparation for upcoming changes, this commit cleans up some code. The commit includes:

- In order to reduce unnecessary object passing, make both the `force` and `skip_cask_deps` option into instance variables of the `Installer` class

- Introduce options hashes to initializers of both the `Installer` and `Download` class

- When the `install --force` command enters the fetch phase, make it explicit in the code that fetching is never enforced in that case.

- Update tests

* Force overwrite artifacts on `--force` reinstall

This commit changes the behavior of a `Moved` artifact such that if the target already exists, `brew cask install --force` will remove the existing target before moving the staged artifact.

In that case, the warning message will say *overwriting* instead of *not moving*.

The behavior of plain `brew cask install` remains unchanged; the same goes for the warning message for that case.

* Change remaining artifacts to move instead of symlink

* Update casks to use appdir in binary paths

* Forcibly overwrite artifacts, modifying flags and using `sudo` if needed

- This commit implements [the proposed behavior for `install --force`](https://github.com/caskroom/homebrew-cask/pull/13966#issuecomment-220830387) when a target already exists and has either permission problems or is not owned by the user.

- The changes apply only when the `force` option is given.

- Reused the existing safeguard from the `.pkg` artifact to prevent deleting important directories by bug or mistake

- The two existing blacklists `SYSTEM_DIRS` and `UNDELETABLE_DIRS` have been consolidated into the `Hbc::MacOS` module.

- `UNDELETABLE_DIRS` now also contains all the entries from `SYSTEM_DIRS` which was a to-do anyway.

- The two blacklists are now also frozen for good measure.

- The utility method `permissions_rmtree` was moved to `Hbc::Utils`.

- The `tried_permissions` part in `Utils` now falls back correctly when there are also ownership issues at the same time.

- Introduced a separate `current_user` method for mocking.

- Added an optional feature to `FakeSystemCommand` so it can now act as a proxy to `SystemCommand`.

- Added tests for various `permissions_rmtree` cases.
2016-05-31 15:23:21 -04:00
Josh Hagins 6e24680086 Require target for generic artifact (#21549)
* Require target for generic artifact

* Add audit check for generic artifacts
2016-05-31 07:30:08 -04:00
Tom Janson 56279abb27 fix whitespace in caveats test cask
as mentioned in #1876
2016-04-02 15:13:42 -04:00
Josh Hagins b307a87b4e Use Ruby 1.9 hash syntax in test casks 2016-01-17 22:27:13 -05:00
Josh Hagins dfe5cc2a04 Symlink to base Casks .rubocop.yml in test cask directories 2016-01-16 18:19:30 -05:00
Josh Hagins 5ade99688c Ensure all casks with 'license :unknown' have TODO comments 2016-01-05 01:22:41 -05:00
Josh Hagins 2f95d5717c Disable LiteralInCondition cop for with-conditional-caveats test cask 2016-01-04 05:26:12 -05:00
Josh Hagins 36e915b826 Apply RuboCop to test casks 2016-01-04 05:26:11 -05:00
Josh Hagins e1e13497c3 Implement uninstall_test refactorings in zap_test 2016-01-03 16:29:09 -05:00
Josh Hagins 0e9660d67c Add tests for uninstall :signal 2016-01-03 16:29:09 -05:00
Josh Hagins f186f86082 Remove redundant tests 2016-01-03 16:29:09 -05:00
Josh Hagins fd717965e5 Extract tests specific to uninstall :login_item 2016-01-03 16:29:09 -05:00
Josh Hagins b4774934a8 Add tests for uninstall :trash 2016-01-03 16:29:09 -05:00
Josh Hagins b63baa8e1f Extract tests specific to uninstall :script and :early_script 2016-01-03 16:29:09 -05:00
Josh Hagins 8bd88ecec8 Extract tests specific to uninstall :rmdir 2016-01-03 16:29:09 -05:00
Josh Hagins 096a2fbc0f Extract tests specific to uninstall :delete 2016-01-03 16:29:09 -05:00
Josh Hagins c1bb87e2ac Extract tests specific to uninstall :quit 2016-01-03 16:29:09 -05:00
Josh Hagins fd9650d875 Extract tests specific to uninstall :kext 2016-01-03 16:29:09 -05:00
Josh Hagins b1fccc4ee7 Extract tests specific to uninstall :pkgutil 2016-01-03 16:29:09 -05:00
Josh Hagins 6f115757ed Extract tests specific to uninstall :launchctl 2016-01-03 16:29:09 -05:00
Josh Hagins 77377bda2c Fix with-suite test cask header 2015-12-28 18:16:14 -05:00
Josh Hagins 8c0d54a71a Add name to test cask with-suite 2015-12-27 19:06:58 -05:00
Vítor Galvão c72356b613 fixed conflicts in adding auto_updates 2015-12-24 20:47:40 +00:00
Vítor Galvão 0d4e59c4aa removed tags from tests 2015-12-24 17:01:28 +00:00
Vítor Galvão 13600116c1 staged.rb: check if paths exists in set_permissions set_ownership 2015-12-21 19:39:23 -05:00
Josh Hagins fbfa795683 Use shared examples to DRY up *flight tests 2015-12-21 19:39:23 -05:00
Josh Hagins 7b486a827f Add support for RSpec-style shared examples in MiniTest 2015-12-21 19:39:21 -05:00
adityadalal924 47261a4b1d remove appcast :format stanza 2015-12-20 11:15:27 -05:00
Josh Hagins feba4ec740 Remove DSL versions from all casks 2015-12-17 20:15:28 -05:00
Josh Hagins 852275c8d5 Remove DSL versions in test casks 2015-12-17 20:08:25 -05:00
Josh Hagins 81b91434dc Do not require a DSL version in cask header
Following up on #15782. Casks can now be created with no DSL version in
the header. For example:

  cask 'no-dsl-version' do
    version :latest
    ...
  end

Casks with a DSL version in the header are still valid, but the DSL
version will be ignored.
2015-12-17 14:56:08 -05:00
Josh Hagins 64d142af6e Add test for zap :login_item 2015-12-11 23:55:04 -05:00
Josh Hagins 5fa16a51a0 Uninstall login items with uninstall :login_item 2015-12-11 23:47:46 -05:00
Nick Pellant b0d339e246 Add :auto_updates stanza for Casks 2015-11-30 12:34:30 +00:00
Josh Hagins c0ed120631 Expand tilde in uninstall :delete 2015-08-02 20:25:15 -04:00
Radek Simko 6b3146aed6 binary_test (minitest) -> binary_spec (rspec) 2015-01-24 20:01:54 +00:00
Roland Walker b40b0c99e1 strip constants from homebrew-fork global.rb
and corresponding testing_env.rb.
* recast HOMEBREW_BREW_FILE as Hbc.homebrew_executable,
  defined in Hbc::Locations
* recast HOMEBREW_REPOSITORY as Hbc.homebrew_repository
* recast HOMEBREW_PREFIX as Hbc.homebrew_prefix
* remove HOMEBREW_LIBRARY
* recast existing Hbc.tapspath as Hbc.homebrew_tapspath
  to match new methods

fixes #8705
2015-01-07 09:09:53 -05:00
Roland Walker 202d6019f8 Move all code under an Hbc:: namespace
* convert existing Cask:: namespace to Hbc::
* move Homebrew-fork code under Hbc::
* move freestanding classes such as Tty and TopologicalHash under Hbc::
* recast HOMEBREW_CASK_ constants as HBC_
* modify our Homebrew Formula for backward compatibility
* devscripts and dev docs
2015-01-02 07:27:03 -05:00
ndr 68d7901e44 Add tests for depends_on :cask 2014-12-29 17:47:55 +00:00
Roland Walker cc84f6ecd5 don't monkeypatch MacOS#release
* complete transition from MacOS#version to MacOS#release
  throughout backend code
* recast related constants and comments as "release" instead
  of "version", and "point release" instead of "full version"
2014-12-27 09:19:38 -05:00
Roland Walker 05d6afa2ac remove homebrew-fork Pathname#/ monkeypatch
in favor of ordinary Pathname#join.  This was already the rule
for our codebase except for some areas of the test suite.
2014-12-26 11:06:34 -05:00
Roland Walker 22dc95872c add license stanza to test Cask
to make tests pass after requiring `license`
2014-12-20 11:34:20 -05:00
Roland Walker 82826b2687 DSL: add `accessibility_access` stanza
* accepts a Boolean value
* replaces the never-documented `postflight` methods `enable_accessibility_access` /
 `disable_accessibility_access` (`remove_accessibility_access`)
* declarative: unlike the `postflight` approach, does not have to be
  invoked in two places
* de-document obsolete form `caveats` / `assistive_devices`
* bump Travis seed to avoid false test failures
2014-12-08 19:17:19 -05:00
Roland Walker 5348260520 DSL: add depends_on :x11 2014-12-06 11:20:15 -05:00
Roland Walker e581347939 allow multiple depends_on stanzas + refactor
also:
* disallow combining depends_on :macos comparison expressions
* ohai message when depends_on is present
* explicit accessors for :cask and :formula
* simplify some logic and flatten nested conditionals
* reflow incidental doc
2014-12-06 11:06:30 -05:00
Roland Walker 037ece852b followups on `depends_on` `:macos`/`:arch`
* always coerce `:macos` value to array; simplify code
 * remove warning comments about unset values
 * doc explicitly that requirements are covered as well as dependencies
 * doc that `depends_on` is not consulted until `install` time
 * in docs and code, say "release" instead of "version" for the :macos release
   * todo: provide our own variable styled "release" to use in Casks, instead of Homebrew's `MacOS.Version`
 * doc that symbols are preferred for `:macos` over strings in Casks (interally, all are converted to idential `Gem::Version` objects)
 * doc: remove `os_version_only` from `cask_language_deltas.md`
 * doc: improve internal links
 * doc: recast OS X release symbol list as table
 * doc: (incidental) regularize orthography of Formula and Cask
2014-12-05 09:55:47 -05:00
Roland Walker 7f5e5124f6 DSL: `depends_on :arch` functionality/tests/doc
* fill in functionality for the `depends_on :arch` stub
* de-document `caveats` method `arch_only`
2014-12-04 14:29:27 -05:00
Roland Walker c59a5fcb80 DSL: `depends_on :macos` functionality/tests/doc
* Fill in the functionality for the `depends_on :macos` stub
* de-document `caveats` method `os_version_only`
* clean up some related docs re: version strings
* add `depends_on_test.rb`
* clarify some related `depends_on :formula` doc, tests, and code
* formatting in test Casks
2014-12-02 12:04:27 -05:00