2992 Commits

Author SHA1 Message Date
Xu Cheng
d3fce64efb
cleanup: fix removing lock files on NFS
If the underneath file system is a Network File System,
`brew cleanup` will fail to remove the lock files with following error
message:

Error: Bad file descriptor @ rb_file_flock - /path/to/the/lock_file

This commit fixes such issue and adds the corresponding test case.
2018-03-14 21:50:53 +08:00
Claudia
ba830df4e6 Add tests for CurlDownloadStrategy#tarball_path
Sometimes, `brew cask fetch`/`install` fails with an error message
similar to this:

```
==> Downloading https://w3g3a5v6.ssl.hwcdn.net/upload2/game/214692/735
Error: Download failed on Cask 'steamed-hams' with message: Operation
not supported @ rb_sysopen -
/Users/claudia/Documents/dev/brew/var/homebrew/locks/steamed-hams--1.0
.com&Expires=1520937180&Signature=CGmDulxL8pmutKTlCleNTUY%2FyO9Xyl5u9y
VZUE0uWrjadjuz67Jp7zx3H7NEOhSyOhu8nzicEHRBjr3uSoOJzwkLC8LBLKnz%2B2X%2B
iq5m6IdwSVFcLp2Q1Hr2kR7ETn3rF1DIq5o0lHCyzMmyNe5giEKJNW8WF0KXriULhzLTWL
SA3ZTLCIofAdRiiGje1kNYY3C0SBqymQB8CG3ONn5kj7CIGbxrDOq5xI2ZSJdIyPysSX7S
LvEDBw2KdR24q9t1wfjS9LUzelf5TWk6ojj8p9%2FHjl%2Fi%2FVCXNN4o1mW%2FMayy2t
TY1qcC%2FTmqI1ulZS8SNuaSgr9Iys9oDF1%2BPK%2B4Sg==&hwexp=1520937440&hwsi
g=55bc66884b925ef22f8673c33bfcc33b.incomplete.lock
```

To reproduce the issue, check out this branch and run the
`cask/download_strategy` test suite:

```
brew tests --only=cask/download_strategy
```

Or take a real-life example, which would be a Cask whose URL has
**1.** no `.` character anywhere in the URL path itself (outside of
the domain name), **and 2.** at least one query parameter with a `.`
character in it; **and 3.** other query parameters following that
with a combined length of more than 255 characters.

This combination may be uncommon but it exists, especially in
[URLs that change on every visit](1002d41242/doc/cask_language_reference/stanzas/url.md (urls-that-change-on-every-visit)),
for example
[`steamed-hams`](9d7df499cd/Casks/steamed-hams.rb)
from my `claui/cask-games` tap:

    $ brew tap claui/cask-games

    $ brew cask fetch steamed-hams

In a nutshell, **URL query strings sometimes look like a very long
file extension to Homebrew,** which it then proceeds to use as a file
name.

In `CurlDownloadStrategy`, Homebrew seems to apply a heuristic to the
cask URL in order to figure out a possibly meaningful file extension.
Sometimes this heuristic produces immensely long file extensions,
especially when there’s a query parameter with a `.` character in it
but not in the URL path itself (outside of the domain name).

Homebrew then believes that everything after the `.` is a file
extension. In one of the later steps, it tries to create a lock file
containing that extension, which fails because HFS+ cannot handle
files whose base file name has more than 255 characters.

One solution would be to improve Homebrew’s extension detector a bit
so that it won’t cross individual URL query param boundaries any
longer. This is done by adding `&` as a stop character:

```
def ext
  Pathname.new(@url).extname[/[^?&]+/]
end
```

This appears to fix the issue for most (if not all) practical
purposes.
2018-03-13 16:58:52 +01:00
Alyssa Ross
6cd195723f
Merge branch 'master' into undeclared_runtime_dependencies 2018-03-12 09:22:39 +00:00
Gautham Goli
5743f22209 cli : Implement Parser and use it for parsing audit command args 2018-03-09 02:44:50 +05:30
Mike McQuaid
83cca40fc9 RuboCop 0.53.0 manual fixes. 2018-03-08 14:10:02 +00:00
Mike McQuaid
e03f07f302 Rubocop 0.53.0 automatic fixes. 2018-03-08 14:10:02 +00:00
Mike McQuaid
b165f5427f RuboCop 0.53.0 2018-03-08 14:10:02 +00:00
Mike McQuaid
36dadbee47 caveats: remove python caveats.
These instructions are currently incorrect and need to be ported to
`python` 3.x and `python@2` formulae. Until then it's better to not have
them than have them be incorrect.

Closes #3890.
2018-03-08 08:34:20 +00:00
Mike McQuaid
067b9c9e88
Merge pull request #3833 from GauthamGoli/depends_on_order_master
rubocop: Add cop to check `depends_on` order and tests
2018-03-06 08:35:10 +00:00
Shaun Jackman
5500c3b25e unzip_dep_if_needed: Needs unzip not zip [Linux] (#632) 2018-03-05 11:51:08 -08:00
Mike McQuaid
1a51d7fb44 migrator: tweak more messaging.
- Make it clearer what the migrator is doing and why
- Recommend an unconditional brew upgrade
2018-03-05 10:14:39 +00:00
Mike McQuaid
bc3389bdae
Merge pull request #3863 from MikeMcQuaid/python3-changes
Adjust docs and more internal code for Python 3.
2018-03-03 18:17:04 +00:00
Mike McQuaid
83fae62b4f Gemfile.lock: update testing gems. 2018-03-03 10:22:37 +00:00
Mike McQuaid
70253f0009 Adjust docs and more internal code for Python 3.
Now we have `python` for Python 3 and `python@2` for Python 2 some more
adjustments need to be made.
2018-03-03 09:42:25 +00:00
Alyssa Ross
84dda31e82
Add tests for ENV#clear_sensitive_environment! 2018-03-01 17:48:08 +00:00
Alyssa Ross
af682d2d63
Merge branch 'master' into undeclared_runtime_dependencies 2018-03-01 17:39:49 +00:00
Alyssa Ross
51b27039be
Revert "Only check undeclared dependencies on macOS"
This reverts commit fa5245f7adf38833b03e92e42aa5217ac5157773.
2018-03-01 17:30:42 +00:00
Alyssa Ross
fa5245f7ad
Only check undeclared dependencies on macOS
We don't currently have a LinkageChecker on Linux, so can't do this.
2018-03-01 17:30:37 +00:00
Gautham Goli
09f343d496 rubocop: Add cop to check depends_on order and tests 2018-03-01 12:32:25 +05:30
Steven Peters
db615a419a dev-cmd/ruby: fix path to dev-cmd/irb and add test 2018-02-28 09:31:29 -08:00
Mike McQuaid
1811c77ec6
Merge pull request #3813 from maxim-belkin/brew-unix-2
bzip2 and zip dependencies_if_needed
2018-02-21 14:31:24 +00:00
Maxim Belkin
c83dd0d04b brew style: replace tabs with spaces 2018-02-21 13:44:51 +00:00
commitay
bab4bb68ee
Merge pull request #3715 from commitay/moved
cask move_back: copy / delete
2018-02-21 07:47:43 +10:00
Maxim Belkin
14d7a7a08c Code refactoring 4.0 2018-02-20 21:33:38 +00:00
Maxim Belkin
c6dac68d8b Code refactoring v3.0 2018-02-19 10:21:01 +00:00
Maxim Belkin
d25fc5ce50 Code refactoring 2018-02-19 09:54:36 +00:00
Maxim Belkin
73a3592981 Renaming linux-specifix file with tests
Files are globbed based on their name. Therefore, we have to rename
them so tests for Linux are not executed on a Mac.
2018-02-19 08:54:30 +00:00
Maxim Belkin
5cfcd2ae9f
Fixing test 2018-02-16 15:04:43 -06:00
Maxim Belkin
a53171d9fe
Adding tests for dependency_collector on Linux 2018-02-16 14:58:07 -06:00
Shaun Jackman
d70d91cf2a test/utils/svn: Requires svn to succeed 2018-02-15 13:50:09 -08:00
commitay
b864ae7b40 backing up 2018-02-14 07:57:04 +10:00
commitay
e078becf4f cask move_back: copy / delete 2018-02-14 07:39:44 +10:00
Mike McQuaid
b609e406bc
Merge pull request #3795 from MikeMcQuaid/rspec-retry
Use rspec-retry in brew tests
2018-02-13 10:04:24 +00:00
Mike McQuaid
c57ab279ba Use rspec-retry in flaky brew tests.
We have a few tests that are intermittently flaky. Let's try this to see
if we can get them a bit more reliable.
2018-02-13 09:34:25 +00:00
Mike McQuaid
2a9660fb2b
Merge pull request #3657 from kabel/php-cache-ext
Fix cached download file extension for certain URLs
2018-02-13 09:09:11 +00:00
joshua stein
7388acb86e Tty: if HOMEBREW_NO_COLOR env var is present, disable color
bin/brew will recognize NO_COLOR variable and copy it to
HOMEBREW_NO_COLOR
2018-02-12 14:19:25 -06:00
Alyssa Ross
8386e6a8c1
Undeclared dependencies in runtime_dependencies
Fixes https://github.com/Homebrew/brew/issues/2173.
2018-02-11 13:44:20 +00:00
William Woodruff
3f43f60a2a
audit: Warn on new formulae containing binary URLs 2018-02-06 08:44:56 -05:00
Markus Reiter
9f4b4a1699
Merge pull request #3740 from reitermarkus/cask-style
Fix `brew cask style` on Travis.
2018-01-28 17:53:49 +01:00
Markus Reiter
884c57f9f4 Fix brew cask style on Travis. 2018-01-28 07:00:20 +01:00
Markus Reiter
6760d26319 Create Hbc::Config class. 2018-01-27 21:47:18 +01:00
ilovezfs
7c07ec5fc1 resource: allow patches to be applied 2018-01-22 01:10:14 -08:00
ilovezfs
da77f23bc7 rubocop: don't always display cop names. 2018-01-21 07:23:53 -08:00
Mike McQuaid
b96ec879dc (un)linkapps: hide from manpage, use odeprecated. 2018-01-21 13:38:44 +00:00
Alyssa Ross
8874d1fb13
prepend instead of alias hacks for deprecations 2018-01-18 21:08:41 +00:00
Mike McQuaid
8a45467ad9
Merge pull request #3661 from MikeMcQuaid/deprecate-default-formula
Deprecate default_formula Requirement DSL
2018-01-18 15:30:56 +00:00
Mike McQuaid
e67b745b2f
Merge pull request #3659 from MikeMcQuaid/deprecated-requirements-harder
Deprecate requirements harder
2018-01-18 15:27:02 +00:00
Mike McQuaid
e5c82dd3d9 Deprecate requirements harder
Remove more Requirement logic to enable future removal of default
formula logic. Also, output deprecations, convert symbol requirement
usage to deps and simplify the compatibility code for the direct
Requirement usage.
2018-01-18 08:31:20 +00:00
Mike McQuaid
1f48e17f1b rubocop: fix brew style warnings. 2018-01-17 10:42:43 +00:00
Mike McQuaid
8cd0d85afb rubocop 0.52.1 2018-01-15 16:17:32 +00:00