In contrast to `ec_file:delete`, `rebar_file_utils:rm_rf` will also delete
write-protected files on Windows which is needed for git object files.
Fixes#1483.
The default license created with rebar3 templates is a BSD 3 clause
license. However the .app.src file generated do not include the license
there.
This adds the license type, fixing #1447.
This fixes the output of end_per_testcase crash notifications when the
test passes.
This also detect an issue of the kind with rebar_pkg_SUITE which is now
fixed.
This is based on issue #1517 where out of nowhere, CT has returned a
user's error code directly. This in turn caused a crashdump in rebar3
itself.
This patch handles the unexpected cases by:
a) not trying to format them
b) converting them to an error whenever they happen
The execution flow is still interrupted, but we should fail with a
clearer error than a crashdump.
The order of the files listed in "erl_files_first" option is
important and should not be sorted. By handling the merge
similarly to mib_files_first, the sort order is preserved.
It can't even fetch packages from Hex anymore because of old SSL/TLS
libraries, and so it can't bootstrap anymore either. Plus R20 comes out
soon, and 5 major versions is quite enough.
This uses the very risky '$handle_undefined_function'/2 export from the
r3 and rebar_agent modules to allow meta-calls that can support plugins
and all other rebar3 extensions.
This is nasty but very tempting. Currently we only support:
- r3:do(Command)
- r3:do(Namespace, Command)
There is currently no way to pass arguments to the function such that we
can, for example, run cover analysis or tests on a subset of suites.
With the new abuse of '$handle_undefined_function'/2, we can detect the
unused commands (since they are not exported) and re-route them:
- r3:Command()
- r3:Command("--args=as a string")
- r3:Command(Namespace, "--args=as a string")
Of course, in doing so, we make it impossible to use the 'do' provider
(as in 'rebar3 do ct -c, cover') since the 'do' function is already
required for things to work.
Since the previous function had very strict guards, we can, without
conflict, add manual overrides that simulate the meta-calls fine.
Sample run:
https://gist.github.com/ferd/2c06d59c7083c146d25e4ee301de0073
86e883b8d8 always returns the full length SHA,
therefore when using a dependency having the short SHA,
it'll always consider that the SHAs are different,
hence it'll alway return true for .
The option {spec,Specs} is allowed in ct_opts, but
rebar_prv_common_test:test_dirs did not take into account that Specs
could also be a string only, i.e. not a list of strings.