| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is necessary in order to automatically get the testspec included
as an artifact (i.e. copied to the _build dir) in the case when it is
stored in another directory than 'test'.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Bug: option 'spec' is not specifically handled when merging options
from the command line with options from rebar.config. Due to this, if
the config specifies a 'spec', then this will take precedence over any
'dir' and/or 'suite' on the command line.
This commit takes special care of all options that can be used to
select tests - meaning that if any of the options 'spec', 'dir',
'suite', 'group' or 'case' are specified on the command line, then all
'spec', 'dir', 'suite', 'group' and 'case' options in rebar.config
will be ignored.
|
| | |
| | |
| | |
| | |
| | | |
application modules will be added to the eunit test set automatically, no
need to consider them for inclusion in the test set separately
|
| | |
| | |
| | |
| | |
| | |
| | | |
stops the eunit provider from filtering out test modules based on the
file extension. previously, it was hardcoded to expect all test files
ended in `.erl`. this change allows for endings like `.lfe` and `.beam`
|
|\ \ \
| | | |
| | | | |
shell: don't crash apps that use release version operators
|
| | | |
| | | |
| | | |
| | | | |
Like for instance: {app, "0.1.0", '='}
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Fix regex match for ignored file
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The regex mistakenly matched too many files (any character followed by
an underscore) rather than only files starting in '._'
This properly escapes the expressions to work in all cases.
|
|\ \ \ \
| |/ / /
|/| | | |
add `get-deps` provider
|
| |/ /
| | |
| | |
| | | |
a no-op provider that depends on lock that is slightly more discoverable and user friendly
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The option --single-branch was introduced in git version 1.7.10 and
thus rebar3 cannot fetch git dependencies on systems where earlier
git versions are install.
This commit will select other git clone commands if an earlier git
version is detected. If the git version cannot be determined rebar3
falls back on the previous behavior and uses --single-branch.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Ensures merged compiler options end up in the correct order to maintain profile precedence.
Moves the merge functionality from rebar_opts:merge_opts/2 to a standalone function to ease extension and debugging.
|
| | |
|
| |
| |
| |
| | |
init_config, added unit tests
|
|/
|
|
| |
Fixes #1392
|
|\
| |
| | |
Add 'recursive' option
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The option {recursive,boolean()} can now be set pr directory in
'src_dirs' and 'extra_src_dirs', and on top level in the new
'erlc_compiler' option. Example config:
{erlc_compiler,[{recursive,false}]}.
{src_dirs,[{"src",[{recursive,true}]}]}.
This will cause recursive compilation within the "src" directory, but
not in any other directoires.
|
|\ \
| | |
| | | |
Unify different styles of missing_package error
|
| |/ |
|
|\ \
| |/
|/| |
Always read REBAR_CONFIG env var when loading config
|
| | |
|
|\ \
| | |
| | | |
Allow rebar3 to edoc itself
|
| |/ |
|
|/
|
|
| |
Some tricky changes in there but should be okay
|
|\
| |
| | |
Add exclude_apps/mods, plt_extra_mods, base_plt_mods config
|
| |
| |
| |
| |
| |
| |
| | |
* exclude_apps - never use applications for PLT/analysis
* base_plt_mods - add modules to base PLT (overrules exclude_apps)
* plt_extra_mods - add modules to PLT (overrules exclude_apps)
* exclude_mods - never use modules for PLT/analysis (overrules all)
|
|/ |
|
| |
|
|
|
|
|
|
| |
`rebar3 ct --spec foo.spec,bar.spec,baz.spec` now works
also added support for the `join_specs` flag on the command line
|
|
|
|
| |
checks on hd(...) and so on could not handle empty lists
|
| |
|
| |
|
|\
| |
| | |
Properly support package aliasing and alt names
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This adds tracking of package hash in the in-memory index rather than
the current `undefined' values.
According to the test added, this is not necessary for transitive
package dep hash chcking, but does result in a more complete index search
result when doing app lookups, and could yield some optimizations on
hash checks by checking from the index structure before fetching a package.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Aliasing only had a bit of ad-hoc support in rebar3, and various issues
have encountered problems related to the package names not mapping
properly with the application name. One such issue is
https://github.com/erlang/rebar3/issues/1290
The problem has been hard to find because it only impacts transitive
dependencies (not top-level ones) of other packages. The root cause for
this is that the application name was not being tracked by rebar3's internal
index, only the package name and its version were.
When a given application was a package app, the data for the application
name would be reconstructed from the lock file, but only if it were a
top-level app or a dependency of a source application where parsing the
lock file is necessary to know what comes next.
When a transitive dependency of a package dependency was fetched, we
instead read its dependencies directly from the in-memory package index
within rebar3. This caused us to only read the package name and version,
and lost all information regarding application name. This worked fine
for most cases since for the vast majority of packages, the package name
matches the app name, but failed for all aliases, which would then be
moved to directories that wouldn't match the app name.
This in turn broke some aspects of code analysis (in Dialyzer), or other
functionality relying on static paths, such as including .hrl files from
dependencies.
This patch reformats the internal storage format of dependencies to
align with the internal one used by rebar3, so that the app name can be
carried along with the package name and its version.
The fix can only work once `rebar3 update` is called so the index is
rebuilt internally, and will the file cached on disk will be
incompatible with older rebar3 versions.
Currently, the following is not covered:
- Tests
- Including the package hashes of dependencies so they may match what
is in a lock file -- they're being `undefined` instead, which may
break some lookups. The previous format did not lend itself to hashing
in the same way, and it is possible transitive deps were not being
tracked properly, or worked by respecting the current package hierarchy.
This will require further analysis
For now this commit can allow reviewing and discussion.
|
|\ \
| | |
| | |
| | |
| | | |
Fix sys.config's handling in common_test and otherwise.
closes #1289
|
| | |
| | |
| | |
| | |
| | | |
- restore path after loading applications,
- helpful comments.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| | |
It turns out that pretty-printing uses throw-catch and thus garbages out
the stack trace sometimes, so we should get it only once.
|
| |
| |
| |
| | |
Helps cover extra cases.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When an include file is set in a private path (i.e. src/), the rebar3
compiler would not add them to the {i, Path} params -- only include/ and
the project root were being added.
This meant that when some extra source directories were added to the
compile job, such as test/ when running under the test profile, the
private include paths could not be shared with the test module.
This patch fixes the issues (and adds tests) for such a specific case by
adding all the configured include paths to the {i, Path} erl_opts
arguments, yielding successful compile runs.
|
|/ |
|
|
|
|
|
|
|
|
| |
{`eunit_test_regex`, Regex}` will use the supplied `Regex` instead of
the default to locate tests in test dirs. note this matches only the
filename, not the path. the regex is applied to all test dirs, recursively
fixes #1331
|