| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
When fetching a downloadable source, we make a defensive check
to avoid redundant download at fetch() time by checking if it's
already cached, but fetch() will never be called if the source
is already cached.
|
|
|
|
|
| |
This has remained without test coverage mostly due to upstream
pytest-datafiles bug https://github.com/omarkohl/pytest-datafiles/issues/1
|
|
|
|
|
|
|
|
| |
Seems that local.py is an appropriate plugin to use for testing
errors which originate from the abstract Source class.
This test checks that we raise the appropriate error in the case
that we attempt to stage to a directory that is a regular file.
|
|
|
|
|
|
|
|
| |
The local plugin is always Consistency.CACHED, this means that
fetch(), set_ref() and get_ref() methods will never be called.
Instead of omitting them, just "pragma: nocover" on the `pass`
statements, making our coverage report more realistic.
|
|
|
|
|
|
|
|
|
| |
The patch plugin was checking if the target directory exists, however
this is automatically guaranteed by the Source abstract class and
documented to be guaranteed as well.
Since this error cannot be caught by the plugin (it will be caught
in advance by the Source class), removing the check from patch.py.
|
|
|
|
|
|
|
| |
directory
This changes the UX to report a better human readable error, which
is otherwise a BUG message with stack trace.
|
|
|
|
|
| |
This also fixes #177 - the problem here was solved simply
by passing the project directory to `cli.run(project=project...)`
|
| |
|
| |
|
|
|
|
|
|
| |
Also added a test case for the `patch` plugin which checks for graceful
failure when the specified patch file is not a regular file (but a block
device or a named pipe instead).
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this, we only stored the last exception to have been raised in the main
process, now we additionally provide some Result members allowing tests to
inspect a machine readable error `domain` and `reason` describing why
a task has "failed".
This adds some new APIs to the Result() object for tests:
assert_main_error() - asserts the nature of the main buildstream error
assert_task_error() - asserts the nature of the error from a child task
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Outline of changes to exceptions:
o Now BstError base class has a `domain` and `reason` member,
reason members are optional.
o All derived error classes now specify their `domain`
o For LoadError, LoadErrorReason defines the error's `reason`
o Now the scheduler `job` class takes care of sending the error
reason and domain back to the main process where the last
exception which caused a child task to fail can be discretely stored.
|
|
|
|
|
| |
Build it in one stage before the `pages` target, and then only
make the deployment step conditional on the branch.
|
|
|
|
|
|
|
|
| |
It's possible for the custom termination handlers to raise exceptions.
Indeed this was actually the case for utils._call(). They're especially
difficult to reach with tests, so make extra effort to insulate them.
Print any exceptions encountered as a regular traceback before exiting.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Tested by inflating the chance of hitting the race. First, insert a
sleep between opening the terminator context and starting the process,
then:
python3 -c 'import buildstream.utils; import os; \
buildstream.utils._call(["echo", "hello"], True); \
print(os.getpid())' & sleep 1; kill $!
|
| |
|
|
|
|
|
| |
Integration tests were failing as the installed version of BuildStream
didn't support the new --hardlinks option.
|
|
|
|
|
| |
It's not required to raise SourceError() manually when calling
utils.get_host_tool().
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Report UtilError instead of OSError and similar python errors.
Also ensure we catch system errors and raise UtilError with
descriptive text instead; for the user experience; this is the
difference between:
o A FAILURE message with a description as to
what went wrong (exception handled with UtilError)
o A BUG message with the unhandled system error printed
with a stack trace (exception left unhandled)
Also, UtilsError and ProgramNotFoundError are now public exceptions
declared in utils.py, where they will appear in the documentation.
|
|
|
|
|
| |
This is often useful, for example when the main element needs to do
something with a path like /etc/%{project-name}/ .
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Source plugins typically do not have an accompanying YAML file with
their default settings.
|
| |
|
| |
|
|
|
|
|
|
| |
This calls bst_with_flags checkout in a uniform way, we
use it for now to pass `--hardlinks` to all checkouts potentially
speeding up the test runs.
|
| |
|
|
|
|
|
|
| |
Checking for plugins with the same name no longer happens in the
plugincontext, it happens in project, so the old test was removed and a
new one added.
|
|
|
|
|
|
| |
In addition, it changes the "plugins" and "required-versions" fields,
combining them for plugins and adding a new "required-project-version"
field.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Make it explicit that we should not rely on 'finally' clauses to clean
up for us in the event of termination.
|
|
|
|
| |
And also adapted them to remove any occurrences of HAVE_ROOT.
|
|
|
|
|
| |
There is no scenario worth testing where this condition is
not true, removing this.
|
|
|
|
|
| |
We need this now in order to properly test the frontend and
parse logs from stderr or output from stdout.
|
|
|
|
|
|
|
|
|
|
|
| |
Now we just assume that logging is turned on all the time, any
messages must now always go through the central context messaging
APIs.
As a side effect, we now send all output messages that
buildstream generates to stderr, leaving stdout only to
payload types of output, such as parsible `bst show` output,
the output of `bst workspace list` or `bst shell`.
|
|
|
|
|
|
|
|
| |
Currently this does not update the task list, and is for timing
groups of activities from the frontend, or for timing long standing
tasks which run directly in the frontend and not in a child task
(like downloading the refs from a remote at load time before a build
commences).
|
| |
|
|
|
|
| |
A version of the function which can be shared with the frontend too.
|
| |
|