While running a command from the integration tests, invoke `.result` to
trigger a save of the result set, but don't call `.format!` to avoid
(re)generating the HTML output with every run. The final output will
still be written once the main unit test run completes.
This significantly speeds up the integration tests, that take about 1/3
less time to complete when not generating the intermediate output.
ClosesHomebrew/homebrew#48280.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
Commands executed during integration testing are executed in a separate
process and thus generate a new result set for each command. To avoid
that these results override each other, they need to have a unique
`command_name`. Derive this name from the test class/name and the index
of the command inside that test, resulting in identifiers like
`IntegrationCommandTests#test_prefix.1 brew --prefix`.
Also replaces `TEST_TMPDIR` in the arguments with `"@TMPDIR@"` to get a
cleaner command identifier that is independent of the temporary
directory that changes with every run.
Simplify running a single test (or even a single method from a single
test), which is useful when developing or debugging a test. Instead of
`brew test TEST=test_diagnostic.rb TESTOPTS=--name=test_check_DYLD_vars`
it is now possible to run `brew tests --only=diagnostic/check_DYLD_vars`
to get the same effect. Similarly, `brew tests --only=diagnostic` maps
to `brew test TEST=test_diagnostic.rb`.
ClosesHomebrew/homebrew#48279.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
This parameter is printed by every `brew tests` run and feeding it back
into the test suite allows to get an identical run. Make it easier to
do that by accepting the argument as it is printed during `brew tests`.
This requires a slight adjustment to named-argument passing as the
number that follows `--seed` is also seen as a named argument, but we
usually only want to pass `TEST=<something>` and `TESTOPTS=<something>`.
The filter for `vendor/bundle/` is useless because this directory is
located in `Homebrew/test/` and that one is already filtered. Moreover,
SimpleCov already loads the `bundler_filter` profile (that installs
basically the same filter) in its default configuration.
This came up in https://github.com/Homebrew/homebrew-emacs/pull/158#issuecomment-172031003; `install_metafiles` is passed the current directory, which can be changed during installation by `Dir.chdir`.
There may be cases where the metafiles are in a subdirectory, but my
guess is those are rare and this is brittle and undocumented behavior
anyway.
Xcode can only provide autotools if it is installed, thus check that
first. Skipping this check will try to compare a `nil` Xcode version to
4.3, the first version of Xcode to not provide autotools.
FixesHomebrew/homebrew#48208.
ClosesHomebrew/homebrew#48278.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
By doing this, make the GitHub directory listing for the documentation
directory more useful and less cluttered.
ClosesHomebrew/homebrew#48219.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
This check is not really relevant anymore; old-style, pre-opt installs
date from 2012 at the very latest, so it is very unlikely that any
packages remain which still link against these.
Refs Homebrew/homebrew#48139.
Otherwise when `bin/brew` is updated in-place Bash will carry on from
the offset and this can cause issues.
Thanks to `@UniqMartin` for pointing this out.
FixesHomebrew/homebrew#47914 by distinguishing between required, optional, and
recommended dependencies when using `brew info --json=v1`. This is done
by adding the `optional_dependencies` and `recommended_dependencies`
fields to the JSON output.
A good example of this fix is `brew info --json=v1 dtrx`.
ClosesHomebrew/homebrew#48196.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Check for non-prefixed findutils in path via gnubin symlinks or directly
ClosesHomebrew/homebrew#46987.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
On all of the machines I have upgraded to OS X El Capitan, my /usr/local
directory has changed ownership. Since this message shows up as an error
during `brew update`, I figured it would be good to beef up the
explanation.
ClosesHomebrew/homebrew#44670.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
If we have a dependency cycle ensure that infinite recursion does not
result by storing state in a stack which we push/pop from for each
level of recursion and verify that we haven’t been through this
dependency already.
ClosesHomebrew/homebrew#47933.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Previously we got all the options based on the build, any inherited
options, any passed options and the tab. We want to make sure that these
then exclude any options that don't exist as, otherwise, passing an
option that doesn't exist (or has been deleted) is enough to stop a
bottle being poured. This was particularly nasty on upgrades where we
deleted options and one left in the tab would stop the bottle being
poured.
ClosesHomebrew/homebrew#47891.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>