Age | Commit message (Collapse) | Author |
|
For historic reasons (as quite some tests date back till before the
public name of the build tools was decided), the end-to-end tests
assume generic names for the tools. This used to be done by simple
staging the artifacts. As soon as we started to support dynamic
linking, we also have to allow the runtime dependnecies, as provided
by our install-with-deps rule. ae2e515ab84ea3ab08764685f84441c0741f8039
attempted to add those dependencies by replacing the staging by
a generic action doing a copy. This, however, made the "lib" dir
containing the dependencies an opaque tree
- defined by different actions, and, more importantly,
- containing only the run-time dependencies of one of the tools.
This causes staging conflicts between those two lib dirs (currently
hidden by a bug in the computation of the disjoint union) and things
only worked because in the canonical configuration used for testing
both "lib" dirs are empty anyway.
The correct way of adding dependencies while renaming the tool is
still staging; fix this.
(cherry picked from commit ddd2f5937a9016f5ff2f6bf659ba459129e49826)
|
|
... by renaming test/end-to-end/targets.
(cherry-picked from d95d8121199e2519aa441cb1a471cf5aec69574d)
|
|
... on next invocation, instead of being taken from cache.
|
|
... and document at the appropriate places what can be overwritten
by setting those targets.
|
|
|
|
... also verifying that we can look into tree outputs
|
|
|
|
Verify that install and install-cas do not overwrite and instead
replace existing files. This behaviour is less surprising for the
user in the presence of hard links.
|
|
Checks that the new 'special' pragma works for all supported
repository types. In particular, checks that symlinks get resolved
as expected and that resolved trees add their unresolved
counterparts to the CAS for 'file' and 'archive' type repositories.
Splits install-roots test into a basic check which works with the
bootstrappable just-mr, and a new check focusing on the newly
introduced 'special' pragma.
|
|
...instead of a regular field.
Also removes the ignore-special logic from distdir repositories,
as those will never contain symlinks, so no entries would be
ignored.
|
|
|
|
While there, fix a typo in the setup.
|
|
... verifying the consistency of the representation of trees between
local and remote CAS.
|
|
... by creating a file only once the server is ready and waiting
for that file instead of waiting a fixed period of time.
|
|
Before this patch, when creating an action directory, symlinks were
staged as regular files.
|
|
|
|
|
|
|
|
Besides stdout and stderr of the test, the output of the remote-execution
server are also artifacts of that rule.
|
|
...that the expected objects are correctly uploaded to the remote cas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... as those binaries might need run-libs.
|
|
|
|
This allows better separation and, in particular, repositories
needed only for tests do not have to be provided for building the
tools. This also better documents which dependencies are only needed
for testing.
|
|
... and, in particular, do not read any rc files for just-mr
the user might have.
|
|
endpoint
This can be useful, for example, to test if justbuild can successfully
communicate with the specified remote execution service.
|
|
Make just-mr unconditionally support an option -D that collects a
configuration overlay and forwards it to the invocation of a just
subcommand that supports this option. This syntax-switching facility
makes it easy to embedd dynamic parts of the configuration (like
the head commit to be part of a version string) as those information
can unconditionally be the first argument to just-mr.
|
|
|
|
... by including the details of the parse error.
|
|
... as `git init -b ...` is a rather recent git feature.
|
|
|
|
|
|
... also verifying that the local CAS is used, even in the presence
of remote execution.
|
|
|
|
While for unit tests it is best practice to replicate the layout
of the source tree, for end-to-end tests, this is less so. This
is particularly true, as the distinction between the tests for two
tools is a bit blurry; some tests for just still use just-mr as a
launcher, and, e.g., the fetch test for just-mr uses just to carry
out the garbage collection. Therefore, move all end-to-end tests
together so that we also have a joinded target for precisely the
end-to-end tests.
In this reorganisation also indicate more explicitly which tests are
also available for the bootstrap multi-repo tool. That information
was so far hidden by the fact that in the other directory the tool
dependency would not dispatch on TEST_BOOTSTRAP_JUST_MR.
|
|
|
|
|
|
|
|
|
|
... instead of using pipes that are prone to get full. Also
increase log level to Trace.
|
|
remote endpoint
|
|
... and, in this way, ensure the test also tests properly in
absence of an external remote execution system.
|
|
... similar to ["@", "rules", "shell/test", "script"], but implicitly
starting a remote execution in the background, passing the information
about that endpoint to the test via an environment variable.
|
|
All desired outputs of just-mr (e.g., the config file after a setup call)
are printed to stdout, while all logging messages are printed to stderr.
Therefore, one should avoid explicitly piping stderr to stdout, as this
can break the intended use of just-mr.
|
|
... instead of only using the "install-cas" subcommand,
which considers the file and executable CAS as one single
logical instance. Rather also check the CAS directories
directly to verify that files and executables are actually
downloaded to the correct CAS. Furthermore, added "main" as
an export target to produce an executable file for running
the test.
|