aboutsummaryrefslogtreecommitdiff
path: root/run_tests.py
AgeCommit message (Collapse)AuthorFilesLines
2022-01-16Add a test for the --vsenv meson setup optionNirbheek Chauhan1-4/+3
The tests and the unittests both unconditionally call setup_vsenv() because all tests are run using the backend commands directly: ninja, msbuild, etc. There's no way to undo this vs env setup, so the only way to test that --vsenv works is by: 1. Removing all paths in PATH that provide ninja 2. Changing setup_vsenv(force=True) to forcibly set-up a new vsenv when MESON_FORCE_VSENV_FOR_UNITTEST is set 3. Mock-patching build_command, test_command, install_command to use `meson` instead of `ninja` 4. Asserting that 'Activating VS' is in the output for all commands 5. Ensure that compilation works because ninja is picked up from the vs env. I manually checked that this test actually does fail when the previous commit is reverted.
2021-10-10Add --vsenv command line option and active VS only when neededXavier Claessens1-2/+2
2021-06-29pathlib: Patch pathlib to work around some bugs (fixes #7295)Daniel Mensinger1-1/+5
2021-06-22coverage: Enable coverage reportsDaniel Mensinger1-49/+29
2021-06-18tests: clear mesonlib.project_meson_versions (which **really** needs a refactor)Daniel Mensinger1-0/+2
2021-06-18tests: Always enable the traceback in run_project_tests.pyDaniel Mensinger1-3/+11
2021-06-09typing: Fully annotate run_project_tests.pyDaniel Mensinger1-9/+9
2021-05-29Remove HFS workaround as everyone should use APFS by now.Jussi Pakkanen1-7/+0
2021-05-13Set up VS environment automatically when run.Jussi Pakkanen1-1/+2
2021-05-08Set unittest backend with an argument rather than an envvar.Jussi Pakkanen1-2/+1
2021-04-25Xcode: add objective C flags to plain C because Xcode requires it.Jussi Pakkanen1-3/+1
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz1-8/+8
performed by running "pyupgrade --py36-plus" and committing the results
2021-03-04various python neatness cleanupsEli Schwartz1-1/+1
All changes were created by running "pyupgrade --py3-only --keep-percent-format" and committing the results. I have not touched string formatting for now. - use set literals - simplify .format() parameter naming - remove __future__ - remove default "r" mode for open() - use OSError rather than compatibility aliases - remove stray parentheses in function(generator) scopes
2021-02-23add a script to run a single testDylan Baker1-1/+2
As a Meson developer it's often frustrating to have a single functional test with a regression. These tests can be awkward to reproduce, especially when they make use of a test.json file. This script provides a simmple interface to call functional tests 1 at a time, regardless of whether they use a test.json or not. If they do use a test.json, and have a matrix, then the `--subtest` option can be used to select spcific combinations, for example: ```sh ./run_single_test.py "test cases/frameworks/15 llvm" --subtest 1 ``` will run only the second (zero indexed of course) subtest from the llvm test cases. This is not a super elegent script, but this is super useful.
2021-02-23run_*_tests: Add some type annotationsDylan Baker1-12/+19
2021-01-21mlog: add __str__ method to AnsiDecoratorPaolo Bonzini1-3/+3
Automatically colorize the text when printing the AnsiDecorator, based on the result of mlog.colorize_console(). This is how AnsiDecorator is used most of the time anyway.
2021-01-04Use a single coredata dictionary for optionsDylan Baker1-1/+1
This patches takes the options work to it's logical conclusion: A single flat dictionary of OptionKey: UserOptions. This allows us to simplify a large number of cases, as we don't need to check if an option is in this dict or that one (or any of 5 or 6, actually).
2021-01-04move OptionKey to mesonlibDylan Baker1-1/+2
There's starting to be a lot of things including coredata that coredata needs to itself include. putting it in mesonlib makes more sense
2021-01-04use OptionKey for compiler_optionsDylan Baker1-2/+2
2020-11-20use real pathlib moduleDylan Baker1-1/+1
We added the _pathlib module to work around defeciencies in python 3.5's implementation, since we now rely on 3.6 lets drop this
2020-10-04pathlib: Fix resolve() by overriding it in Python 3.5Daniel Mensinger1-1/+1
2020-09-24compilers/mixins/clike: fix mypy issuesDylan Baker1-2/+0
2020-09-17tests: Make monkey patching smarterDylan Baker1-25/+13
There are two problems here. The first is that we're doing manual monkey patching which is fragile and verbose, when unittest.mock is designed specifically to solve this exact problem. The second is that we're monkey patching os.environ at two different levels with the same information. So let's only do it once.
2020-09-10Add a test run in an environment which only has a cross compilerJon Turney1-2/+4
Add '--cross-only' option to run_tests.py, so we can arrange not to run tests in the 'native' suite when only a cross-compiler is available, as they can't succeed.
2020-09-08typing: fixup of #7688Daniel Mensinger1-2/+2
This bug not beeing caught in review is another reason for adding strict typing support to meson.
2020-06-15run_*tests*.py: print Meson version at start of test suiteMichael Hirsch1-2/+3
on some systems, tests may take over an hour to run--only to find you might have used an unintended Meson version (e.g. release instead of dev). This change prints the Meson version at the start of the run_*tests*.py scripts. Also, raise SystemExit(main()) is preferred in general over sys.exit(main())
2020-04-30Make colourize_console() a functionJon Turney1-3/+3
Currently, colourize_console is a constant, set at process initialization. To allow the actual stdout to be easily compared with the expected when running tests, we want to allow colourization to be on for the test driver, but not for the in-process configure done by run_configure, which has stdout redirected from a tty to a pipe. v2: Cache _colorize_console per file object v3: Reset cache on setup_console()
2020-04-20Compiler options per langJohn Ericson1-1/+1
A current rather untyped storage of options is one of the things that contributes to the options code being so complex. This takes a small step in synching down by storing the compiler options in dicts per language. Future work might be replacing the langauge strings with an enum, and defaultdict with a custom struct, just like `PerMachine` and `MachineChoice`.
2020-02-22ninjabackend: List PDBs in output list for targetsNirbheek Chauhan1-10/+8
This is more correct, and forces the target(s) to be rebuilt if the PDB files are missing. Increases the minimum required Ninja to 1.7, which is available in Ubuntu 16.04 under backports. We can't do the same for import libraries, because it is impossible for us to know at configure time whether or not an import library will be generated for a given DLL.
2020-01-28Specify crossfile use in CI job configurationJon Turney1-18/+14
Pull the crossfile specification out of run_test.py so it can be specified in the CI job configuration. Also make some fixes to output ordering in run_test.py.
2020-01-15run_tests: Fix detection of ninja 1.9Nirbheek Chauhan1-16/+22
`get_backend_commands()` doesn't get called when we run tests as subprocesses, so detect ninja on import. This should speed up CI. Fixes https://github.com/mesonbuild/meson/issues/5888
2019-12-13run_tests.py: use mlog.log_once to avoid spamming ninja < 1.9 warningsDylan Baker1-3/+3
2019-12-05lgtm: Fix Module imported with `import` and `import from`Daniel Mensinger1-9/+9
2019-10-20Fix all flake8 warningsDaniel Mensinger1-1/+0
2019-09-05mesonlib.split_args/quote_arg/join_argsAleksey Gurtovoy1-1/+1
2019-09-01tests: Require ninja 1.9 on CINirbheek Chauhan1-9/+19
Also, print messages when we have to enable the timestamp resolution workaround.
2019-09-01tests: Upgrade to ninja v1.9 for LinuxNirbheek Chauhan1-1/+1
Also use the upstream release. This eliminates Meson CI's dependence on my server.
2019-09-01tests: Detect ninja v1.9 and disable timestamp hackNirbheek Chauhan1-5/+18
The high-res timestamp PR by QuLogic was merged in v1.9, so we can switch back to upstream ninja.
2019-08-24Intel-Cl tests: increase robustness of Windows Intel compilers detection (#5828)Michael Hirsch, Ph.D1-3/+27
* intel-cl tests: more rigorous detection of intent to use Intel Windows compilers * fortran coarray test: make skipping more robust in that underlying MPI stack is .run() This is useful for any Fortran coarray work, and especially for intel-cl where multiple Intel compiler versions are often installed, and the wrong underlying MPI library may be dynamically linked, and so a runtime check is needed to exercise the MPI stack underlying Fortran coarray. This is done by fc.run('sync all; end', dependencies: coarray) * pep8
2019-08-12Put native file before cross file in options listJohn Ericson1-1/+1
I think this makes more sense by matching how build comes before host. Native builds are also more common than cross builds.
2019-07-30fortran tests: non-gfortran compilers on Windows are best static libsMichael Hirsch, Ph.D1-1/+1
collapsed get_relative_files_list_from_dir to a one-liner via pathlib.Path
2019-07-30run_tests: ifort / intel-cl must have ninja backendMichael Hirsch, Ph.D1-2/+4
2019-07-23cmake: added test case for environment variablesDaniel Mensinger1-6/+11
2019-07-09Add command line argument to skip unit tests.Jussi Pakkanen1-6/+12
2019-05-16Make `PerMachine` and `MachineChoice` have just `build` and `host`John Ericson1-1/+1
Meson itself *almost* only cares about the build and host platforms. The exception is it takes a `target_machine` in the cross file and exposes it to the user; but it doesn't do anything else with it. It's therefore overkill to put target in `PerMachine` and `MachineChoice`. Instead, we make a `PerThreeMachine` only for the machine infos. Additionally fix a few other things that were bugging me in the process: - Get rid of `MachineInfos` class. Since `envconfig.py` was created, it has no methods that couldn't just got on `PerMachine` - Make `default_missing` and `miss_defaulting` work functionally. That means we can just locally bind rather than bind as class vars the "unfrozen" configuration. This helps prevent bugs where one forgets to freeze a configuration.
2019-04-29Fix unused variables warningsDaniel Mensinger1-1/+1
2019-04-15Flush run_tests output so it appears before the test subprocesses it runsJon Turney1-3/+3
This makes 'System information', 'Running unittests', etc. appear before any test output.
2019-02-02Never access environment.properties downstreamJohn Ericson1-1/+1
Instead use coredata.compiler_options.<machine>. This brings the cross and native code paths closer together, since both now use that. Command line options are interpreted just as before, for backwards compatibility. This does introduce some funny conditionals. In the future, I'd like to change the interpretation of command line options so - The logic is cross-agnostic, i.e. there are no conditions affected by `is_cross_build()`. - Compiler args for both the build and host machines can always be controlled by the command line. - Compiler args for both machines can always be controlled separately.
2019-01-31find_library: Check arch of libraries on DarwinNirbheek Chauhan1-0/+1
macOS provides the tool `lipo` to check the archs supported by an object (executable, static library, dylib, etc). This is especially useful for fat archives, but it also helps with thin archives. Without this, the linker will fail to link to the library we mistakenly 'found' like so: ld: warning: ignoring file /path/to/libfoo.a, missing required architecture armv7 in file /path/to/libfoo.a
2019-02-01Rewrite appleframework and extraframework dependency classesNirbheek Chauhan1-0/+1
Instead of only doing a naive filesystem search, also run the linker so that it can tell us whether the -F path specified actually contains the framework we're looking for. Unfortunately, `extraframework` searching is still not 100% correct in the case when since we want to search in either /Library/Frameworks or in /System/Library/Frameworks but not in both. The -Z flag disables searching in those prefixes and would in theory allow this, but then you cannot force the linker to look in those by manually adding -F args, so that doesn't work.