While it may suffice to merge string and non-reserved tags by forming a
union of all tags of dependencies of the same name, this approach fails
to work for the reserved tags. These are now merged such that the most
restrictive tag (meaning sometimes an empty tag) is preserved.
The previous behavior caused essential dependencies to be omitted and
builds to fail in response. E.g., multiple `:fortran` dependencies with
tags `[]`, `[:recommended]`, and `[:optional]` would have been expanded
and merged to `"gcc"` with tags `[:recommended, :optional]`, causing it
to be no longer seen as a required dependency.
ClosesHomebrew/homebrew#47040.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
The general idea is that merging multiple dependencies of the same name
should produce the strictest tag instead of a (meaningless) union of the
reserved tags. For example, if a dependency is both a `:recommended` and
an `:optional` dependency at different points in the dependency tree,
the resulting merged dependency should be tagged as `:recommended`.
Handle all other reserved tags in the same spirit.
These tests were using too much semi-global state (instance variables)
and relied unnecessarily on the exact number of calls to `optional?` and
`recommended?` in the `Depedable` module.
This means that dependencies can be merged but still maintain all
their option names.
ClosesHomebrew/homebrew#46916.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Without this the returned string is not as accurate if the method is
called with an int larger than 120.
ClosesHomebrew/homebrew#47002.
Signed-off-by: Baptiste Fontaine <batifon@yahoo.fr>
Do a reset to `origin/master` and then stash but don't pop the stash
after running update (unless you were on a branch). This may be mildly
more annoying for Homebrew developers but means it's easier for our
users who don't understand Git (and particularly when they don't
understand that every tap is a separate Git repository).
ClosesHomebrew/homebrew#45825.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
A formula should be built from source by default if the --cc option is
passed to specify a particular compiler.
Added a test to test_formula_installer: test_not_poured_from_bottle_when_compiler_specified
Modified test_formula_installer to assert that the formula was not poured
from a bottle. Similarly modified test_formula_installer_bottle to assert
that the formula *was* installed from a bottle.
Added an install method to the TestballBottle formula (the same as the
Testball formula's install method) so that the TestballBottle formula can
be "built from source".
FixesHomebrew/homebrew#46046 - Build from source should be the default behavior if --cc
option is passed
ClosesHomebrew/homebrew#46162.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Commit a71d4a9b (PR Homebrew/homebrew#44058) brought support for updating repositories
with a default branch different from master. This fixes the tests broken
by that commit.
ClosesHomebrew/homebrew#44135.
Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>
If the user's working copy is *not* on the 'master' branch, the revision
recorded after the update to the 'master' branch is not the one of the
updated 'master' branch but that of whatever the user's current branch
is. This tends to be not very helpful.
This change records the revision *after* the update to the 'master'
branch, but *before* switching back to the user's current branch prior
to the update, effectively causing the report to show changes to the
'master' branch.
ClosesHomebrew/homebrew#42074.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>