summaryrefslogtreecommitdiff
path: root/setup.cfg
Commit message (Collapse)AuthorAgeFilesLines
* scheduler.py: Use threads instead of processes for jobsBenjamin Schubert2020-12-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes how the scheduler works and adapts all the code that needs adapting in order to be able to run in threads instead of in subprocesses, which helps with Windows support, and will allow some simplifications in the main pipeline. This addresses the following issues: * Fix #810: All CAS calls are now made in the master process, and thus share the same connection to the cas server * Fix #93: We don't start as many child processes anymore, so the risk of starving the machine are way less * Fix #911: We now use `forkserver` for starting processes. We also don't use subprocesses for jobs so we should be starting less subprocesses And the following highlevel changes where made: * cascache.py: Run the CasCacheUsageMonitor in a thread instead of a subprocess. * casdprocessmanager.py: Ensure start and stop of the process are thread safe. * job.py: Run the child in a thread instead of a process, adapt how we stop a thread, since we ca't use signals anymore. * _multiprocessing.py: Not needed anymore, we are not using `fork()`. * scheduler.py: Run the scheduler with a threadpool, to run the child jobs in. Also adapt how our signal handling is done, since we are not receiving signals from our children anymore, and can't kill them the same way. * sandbox: Stop using blocking signals to wait on the process, and use timeouts all the time. * messenger.py: Use a thread-local context for the handler, to allow for multiple parameters in the same process. * _remote.py: Ensure the start of the connection is thread safe * _signal.py: Allow blocking entering in the signal's context managers by setting an event. This is to ensure no thread runs long-running code while we asked the scheduler to pause. This also ensures all the signal handlers is thread safe. * source.py: Change check around saving the source's ref. We are now running in the same process, and thus the ref will already have been changed.
* setup.cfg: Remove pytest and py from the list of non-typechecked modulesbschubert/typingBenjamin Schubert2020-08-301-1/+1
| | | | pytest now provides type annotations
* node.pyi: Add type annotations for the node moduleBenjamin Schubert2020-08-301-5/+0
| | | | | This does not contain all the possible needed annotations, but just enough to have mypy pass.
* _types.pyi: Add type information for the cython moduleBenjamin Schubert2020-08-301-1/+1
|
* _utils.pyi: Add type information for _utils.pyxBenjamin Schubert2020-08-301-1/+1
|
* _loader: Add type information for the loader package's cython filesBenjamin Schubert2020-08-301-1/+1
| | | | This helps with type checking and give better feedback to mypy
* _variables.pyi: Add type annotations for _variables.pyxBenjamin Schubert2020-08-301-1/+1
| | | | This enables type checking from mypy on the cython module
* Add tests for checking the working of a remote cacheWilliam Salmon2020-08-111-0/+1
| | | | | These basic tests are ment to be run with a remote cache and can be used to check bst conpatiblity with a remote cache server.
* Drop unused _fuse packageJürg Billeter2020-06-031-1/+1
|
* tests/plugins/pip-samples/sample-plugins: Adding a sample pip plugins packageTristan Van Berkom2020-05-041-1/+1
| | | | | | | | | | This commit: * Adds a bare bones BuildStream pip plugin package structure at tests/plugins/pip-samples/sample-plugins * setup.cfg: Adds tests/plugins/pip-samples to the norecursedirs so that we don't consider the dummy plugins as test code
* tests/plugins/loading.py: Added tests for plugin BST_MIN_VERSION guardsTristan Van Berkom2020-04-291-1/+1
|
* setup.cfg: Increase pytest default timeoutJürg Billeter2020-04-241-1/+1
| | | | CI runners sometimes need more time under load.
* Remove "deb" surce plugin, it has beem moved to bst-plugins-experimentaljjardon/move_deb_sourceJavier Jardón2020-01-171-1/+1
|
* setup.cfg: Don't collect tests from src directoryChandan Singh2019-12-241-1/+1
| | | | | | | | | | | | | Generally we don't have any tests in the `src` directory so we don't need to collect anything from that directory. The only exception to this are the `sourcetests`, but they add their own collection hook so they are not affected by this. This fixes an issue where pytest gets confused upon finding two different `conftest.py` modules - one in the `src` directory and one in the virtual environment. Fixes #1121.
* Drop support for `setup.py test`Chandan Singh2019-12-231-3/+0
| | | | | | | | | | | | | | Drop support for running tests via `setup.py test`, that is considered deprecated. `tox` is our primary frontend for running tests, so this change ensures that we don't have to support multiple ways of running tests. For testing against a specific installation environment, `tox` is not quite practical. But in these cases, one can run `pytest` directly. So, there is no need for this additional indirection. This was discussed in the following mailing list thread: https://mail.gnome.org/archives/buildstream-list/2019-December/msg00006.html.
* setup.cfg: Set pytest default timeoutjuerg/pytest-timeoutJürg Billeter2019-12-191-1/+1
| | | | | | | This sets a default timeout of 15 minutes for tests to avoid hanging indefinitely. As the slowest test in CI normally takes less than 5 minutes, the timeout should be long enough to not trigger even on slower systems if everything operates normally.
* Remove pycodestyleChandan Singh2019-11-141-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All the formatting-related warnings from `pycodestyle` are covered by Black, and almost all of the remaining ones are covered by `pylint`. Based on that, remove `pycodestyle` so that we don't have to maintain another set of configuration. More details on warnings/errors covered by `pycodestyle` below. --- Here's the big list of pycodestyle error/warning codes: https://pycodestyle.readthedocs.io/en/latest/intro.html#error-codes. They are broken down into following categories: 1. Indentation 2. Whitespace 3. Blank line 4. Import 5. Line Length 6. Runtime 7. Deprecation warning 8. Statement Out of the above, 1-5 are purely formatting related so we don't needd to care about them. 6 is runtime issues like syntax error that are hard to miss (even mypy will complain about these). 7 is about deprecation warnings. Half of them don't apply to us since we only support Python 3.5+ and the other half is covered by `pylint`. That leaves us with the "E7*" codes, that pycodestyle groups under "Statement" heading. After verifying each of them, the only ones that is really not covered by either Black or Pylint is the following: * E731 do not assign a lambda expression, use a def This sole check does not seem worth keeping another tool.
* tests: remove mark.in_subprocessAngelos Evripiotis2019-10-221-1/+0
| | | | | It seems we don't need this anymore, thanks to cleaning up gRPC background threads.
* setup.cfg: Register mark for pytest-datafileschandan/register-pytest-markChandan Singh2019-10-221-0/+1
| | | | | | | | | | | | Register the marker for `pytest-datafiles`. This fixes the following warning that we currently get: ``` .tox/py37-nocover/lib/python3.7/site-packages/_pytest/mark/structures.py:324 /Users/csingh43/buildstream/bst-tmp/.tox/py37-nocover/lib/python3.7/site-packages/_pytest/mark/structures.py:324: PytestUnknownMarkWarning: Unknown pytest.mark.datafiles - is this a typo? You can register custom marks to avoid this warning - for detail s, see https://docs.pytest.org/en/latest/mark.html PytestUnknownMarkWarning, ```
* setup.cfg: make xfail marks strict by defaulttraveltissues/strictxfailDarius Makovsky2019-10-091-0/+1
| | | | tests: remove strict kwargs from xfail marks
* setup.cfg: Fix xdg env vars to not affect the hostbschubert/fix-xdg-temppathsBenjamin Schubert2019-10-081-4/+1
| | | | | | | | | | | | | | | | A fix was made in https://gitlab.com/BuildStream/buildstream/merge_requests/1244 in order to set xdg_* env variables inside of the test's directory to avoid importing data from the host. There was however still two problems: - When a variable was not set, it was set with a relative path, which would create a configuration for BuildStream that is invalid. - When a variable was set and running with pytest directly, we would still use the variable's value, which would be the host one. This ensure this can never happen, by not relying on the same variable's name and always overriding them.
* Add initial mypy configuration and typesChandan Singh2019-09-021-0/+19
| | | | | | | | | | As a first step, add type hints to variables whose type `mypy` cannot infer automatically. This is the minimal set of type hints that allow running `mypy` without any arguments, and having it not fail. We currently ignore C extensions that mypy can't process directly. Later, we can look into generating stubs for such modules (potentially automatically).
* setup.cfg: Register our already-existing pytest marksTom Mewett2019-08-301-0/+2
|
* tests: Implement and register in_subprocess pytest markTom Mewett2019-08-301-0/+2
|
* Set HOME environment variable for testsJürg Billeter2019-08-301-0/+1
| | | | This fixes host contamination for tools that use HOME, e.g., bzr.
* Move source from 'buildstream' to 'src/buildstream'Chandan Singh2019-05-211-2/+2
| | | | | | This was discussed in #1008. Fixes #1009.
* setup.cfg: Override/relocate XDG_ environment variables when running testsTristan Van Berkom2019-03-201-0/+3
| | | | This fixes #966
* setup.cfg, tox.ini: Moved coverage support to the tox.ini levelTristan Van Berkom2019-03-041-1/+1
| | | | | | | This disables any attempt to use coverage when running tests directly against installed dependencies with setup.py. This fixes #916
* setup.cfg: exclude .eggs/**, build/** and tmp/** from pycodestyle lintingDor Askayo2019-02-191-1/+1
|
* setup.cfg: Don't lint by default through setup.py test invocationsTristan Van Berkom2019-01-031-1/+1
|
* setup.cfg: Specify the pycodestyle configurations separately from pytest ↵Tristan Van Berkom2019-01-031-3/+5
| | | | configuration
* Use pycodestyle instead of pep8Javier Jardón2019-01-021-13/+4
| | | | | | | | pep8 package was renamed to pycodestyle to reduce confusion. Disabled warnings: W504 - Line break after binary operator (seems people like this) W605 - Invalid escape sequence (some of our regexes use these)
* setup.cfg: Show timing of the 20 slowest testsJosh Smith2018-08-241-1/+1
| | | | | This helps identifying what tests are slow or if the CI got stuck on some of them
* Search for tags with the *.*.* patten for versionwillsalmon/versionTagRegrexWilliam Salmon2018-08-221-0/+1
| | | | | | | | | | This has been done in a way that I hope might be able to be upstreamed in to versioneer. This is not garanteed but it would be good if it could be. Please see https://github.com/warner/python-versioneer/pull/186 and https://github.com/wsalmonct/python-versioneer/tree/feature/regexTags for further details.
* setup.cfg: Add tests/integration/project to norecursedirsTristan Van Berkom2018-08-201-1/+1
| | | | | | This is causing pytest to try to import the recently added app1.py from the pip related tests. This fails because it's not meant to be imported outside of the sandbox environment.
* setup.py: Add grpcio dependency and support for code generationJürg Billeter2018-07-171-0/+2
| | | | This allows code generation with ./setup.py build_grpc
* Use versioneer instead of setuptools_scmTristan Van Berkom2018-04-261-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using setuptools_scm had a couple of bad problems: o Unexpected versioning semantics, setuptools_scm would increment the micro version by itself in the case that we derive a version number from something that is not a tag, making the assumption that we are "leading up to" the next micro version. People mostly dont expect this. o When installing in developer mode, i.e. with `pip3 install --user -e .`, then we were always picking the generated version at install time and never again dynamically resolving it. Many of our users install this way and update through git, so it's important that we report more precise versions all the time. This commit needs to make a series of changes at the same time: o Adds versioneer.py to the toplevel, this is used by setup.py for various activities. This is modified only to inform the linter to skip o Adds buildstream/_version.py, which is generated by versioneer and gives us the machinery to automatically derive the correct version This is modified only to inform the linter to skip o Adds a .gitattributes file which informs git to substitute the buildstream/_version.py file, this is just to ensure that the versioning output would work if ever we used `git archive` to release a tarball. o Modifies setup.py and setup.cfg for versioneer o Modifies utils.py and _frontend/cli.py such as to avoid importing the derived version when running bash completion mode, we dont derive the version at completion time because this can result in running a subprocess (when running in developer install mode) and is an undesirable overhead. o Updates tests/frontend/version.py to expect changed version output
* Make pylint and pep8 tests run by defaultjennis/add_gi.repository_to_ignored_pylint_modulesJames Ennis2018-03-161-1/+1
|
* Add pylint to setup.cfg and setup.pyJames Ennis2018-03-141-2/+2
|
* Merge integration tests into general testsTristan Maat2018-02-071-1/+1
|
* setup.cfg: Ignore .eggs directory for pep8 linterTristan Van Berkom2017-10-211-0/+1
| | | | | | | For some reason, an undesired .eggs/ directory gets created at times by the incomprehensible pip/setuptools machinery. This makes sure it doesnt cause noise in our tests.
* Add warnings when staging to /buildstream/build74-prevent-artifacts-from-containing-files-in-buildstream-buildTristan Maat2017-10-191-0/+1
|
* Fork and embed fusepySam Thursfield2017-09-271-0/+1
| | | | | | | | | | | | | | | The upstream of fuse.py is <https://github.com/terencehonles/fusepy>. It looks pretty abandoned -- there have been no commits there since 5th April 2016 and there are 17 pull requests dating from 2013 onwards that are still waiting for responses from the maintainer. There's no support in fuse.py for ppc64 platforms which means BuildStream is unusable on that architecture at present. My pull request to fix that upstream is being ignored; since the module is a single .py file provided under the ISC license it is simplest to pull the whole thing into buildstream.git instead. The version of fuse.py that's been embedded is the one from pull request #72, from upstream release v2.0.4 (commit 0eafeb5).
* setup.{cfg,py}: Bring back BST_TEST_SUITE env variableTristan Van Berkom2017-09-051-0/+2
| | | | Turns out we do need this in some corner cases
* plugin.py: Removed special case for test casesTristan Van Berkom2017-09-031-2/+0
| | | | | | | Turns out this doesnt work once you try to actually run the full buildstream in a test case (in foreground it screws with other parsing, in background it fails in the test context with a strange error).
* Added .coveragerc and use that in setup.cfgTristan Van Berkom2017-07-171-1/+1
|
* Make logging go to stdout when the test suite is being run in CIJonathan Maw2017-05-251-1/+3
|
* setup.cfg: Ignore pep8 E125.Tristan Van Berkom2017-03-051-0/+1
| | | | Ignore multiline statement has same indentation as next logical line.
* Patching setup.cfg file for virtual envAndrew Leeming2017-01-041-0/+2
| | | | | Pep8 should not be run on all files in the basedir. Adding an ignore rule for if a virtual env directory exists.
* Include coverage report in ./setup.py test invocationsTristan Van Berkom2016-12-111-1/+1
|