Commit Graph

309 Commits

Author SHA1 Message Date
Daniel Mensinger 7fc755b334 typing: Fully annotate run_project_tests.py 2021-06-09 13:25:36 +02:00
Dylan Baker 74ed27f776 cython: add 1 basic test 2021-06-07 09:17:40 -07:00
Jussi Pakkanen 0b2a7300c0 Set up VS environment automatically when run. 2021-05-13 11:03:10 +03:00
Ralf Gommers 9bbf2dd07c Add validation for --only in `run_project_tests.py`
This now gives a clear error rather than silently passes for
unrecognized categories, like:

    python run_project_tests.py --only nonexisting

or

    python run_project_tests.py --only objc  # should be 'objective c'
2021-05-02 22:27:40 +03:00
Jussi Pakkanen 54767ab482
Merge pull request #8568 from dcbaker/submit/qt-dependency-factory
QT: use a proper dependency factory
2021-03-24 22:52:15 +02:00
Dylan Baker 1767c57492 run_project_tests: add annotations 2021-03-23 15:28:08 -07:00
Dylan Baker 54c55f77a9 run_project_tests.py: Allow qt tests to skip on !macOS
We don't always have qmake installed (and it's good to test failure
paths too!) so we can't expect this to succeed in all cases. With the
following commit we'll use a test.json to test both pkg-config and
qmake, so we need to be able to skip.
2021-03-23 15:28:08 -07:00
Xavier Claessens 66d62a224e test.json: Add support for not matching stdout lines
By default expected line must be matched in order. When an expected line
is matched it does not matter if it's matched again later or not.

When defining "count", it means that line must be matched exactly that
many times before matching the next expected line. Once all occurences
have been matched for an expected line, it not must appear any more in
all next lines.
2021-03-23 18:07:18 -04:00
Xavier Claessens d0d81ab84e run_project_tests.py: Allow "--only common/240" syntax 2021-03-23 18:07:18 -04:00
Jussi Pakkanen ecd8c7e4af Update VS module version check. 2021-03-16 21:06:51 +02:00
Jussi Pakkanen 3ac3e125e4 Delete leftover files from some tests. 2021-03-16 16:37:02 +02:00
Eli Schwartz 6a0fabc647
mass rewrite of string formatting to use f-strings everywhere
performed by running "pyupgrade --py36-plus" and committing the results
2021-03-04 17:16:11 -05:00
Eli Schwartz 4340bf34fa
various python neatness cleanups
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-03-04 17:11:26 -05:00
Dylan Baker 3e11da6db5 run_*_tests: Add some type annotations 2021-02-23 08:38:19 -08:00
Dylan Baker 8a12115741 run_project_tests: Delete a build directory if it already exists
This can happen if you abort a run before the cleanup finishes
2021-02-23 08:38:19 -08:00
Dylan Baker 44d5ea2a1f run_project_tests: split json parsing code from test gathering code 2021-02-23 08:38:19 -08:00
Dylan Baker 80ec157e5e ci: Add bindgen to CI images 2021-02-06 10:27:04 -08:00
Paolo Bonzini 9ba7b0ebd0 mlog: add __str__ method to AnsiDecorator
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-21 08:54:35 -05:00
Daniel Mensinger 8f1d9bb7b0 cmake: add PATH logic to preliminary dep check (fixes #8133) 2021-01-10 21:48:23 +00:00
Christoph Reiter 58640bdff9 Remove AutoDeletedDir
Replace the only usage with a simple try/finally and remove the class.
2020-11-23 09:26:41 -08:00
Christoph Reiter edbcb2bfc8 Replace various calls to AutoDeletedDir with TemporaryDirectoryWinProof
AutoDeletedDir was a workaround to TemporaryDirectory not using
windows_proof_rmtree(). TemporaryDirectoryWinProof does now, so replace
it.
2020-11-23 09:26:41 -08:00
Jussi Pakkanen d27bad7d6d
Merge pull request #8011 from dcbaker/submit/post-python36-cleanups
Python 3.6 cleanups
2020-11-22 04:28:19 +02:00
Jason Ekstrand 9dab27f814 run_project_tests: Use the test environment for install and clean 2020-11-21 07:55:10 -08:00
Dylan Baker f6672c7a19 use real pathlib module
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-11-20 15:08:40 -08:00
Sam Thursfield 21897a10ca gnome: Handle libraries that are not in the current build dir
The generate_gir() function previously assumed all library
inputs were in the current build dir. This would fail if they
weren't.
2020-11-13 17:39:47 +02:00
Jussi Pakkanen bca90722ec Bump minimum supported Python version to 3.6. Closes #6297. 2020-10-30 11:18:11 +02:00
Dylan Baker e8399c8c6e
depenencies/llvm: Handle llvm-config --shared-mode failing (#7379)
* depenencies/llvm: Handle llvm-config --shared-mode failing

Fixes: #7371
Fixes: #7878

* test cases/llvm: Refactor to use test.json

Instead of trying to cover everything internally
2020-10-22 17:21:14 +03:00
Daniel Mensinger b27af7e465
cmake: Add cross tests 2020-10-13 17:04:20 +02:00
Daniel Mensinger 1dfaccfd91 pathlib: Fix resolve() by overriding it in Python 3.5 2020-10-04 10:45:48 +02:00
Nirbheek Chauhan 946aeb6947 project tests: Also check whether introspect works 2020-09-17 22:25:37 +00:00
Nirbheek Chauhan 4c93da6531 project tests: Rename a variable for clarity 2020-09-17 22:25:37 +00:00
Jon Turney 6053da7a00 Add build machine compilers to project tests compiler report
When cross-compiling, also report build machine compilers in the
compiler report produced by run_project_tests.py
2020-09-11 20:45:09 +00:00
Jon Turney 88e13c5f7c Split tests out from 'common' which require a native compiler
Split out tests (and parts of tests) which require a native compiler
from the 'common' suite to a new suite called 'native', so we can
selectively avoid running those tests when only a cross-compiler is
available.

Also move test '211 cmake module' to 'cmake' suite, since it appears
that the way we use cmake requires a native compiler.
2020-09-10 07:20:41 +00:00
Daniel Mensinger e681235e5f
typing: fix code review 2020-09-08 20:15:58 +02:00
Daniel Mensinger 17439fa3e8 test: Add 'dir' support for installed files in test.json
This is useful for automatically generated docs (doxygen, hotdoc)
with a lot of generated files that may differ with different
versions of the generator.
2020-08-27 00:08:57 +00:00
Jussi Pakkanen 587e159d6c
Merge pull request #7460 from mensinda/fixDeepcpy
deps: Do not deepcopy internal libraries (fixes #7457)
2020-07-23 12:45:49 +03:00
cmcneish a7a6a4833f
Add boost_root support to properties files (#7210)
* Add boost_root support to properties files

This commit implements `boost_root`, `boost_includedir`, and
`boost_librarydir` variable support to native and cross properties
files. The search order is currently environment variables, then
these variables, and finally a platform-dependent search.

* Add preliminary boost_root / boost_includedir tests

Each test contains a fake "version.hpp", as that's how boost detection is
currently being done. We look for this file relative to the root directory,
which probably shouldn't be allowed (it previously was for BOOST_LIBRARYDIR
but not for BOOST_ROOT). It also cannot help with breakage detection in
libraries, however it looks like this wasn't getting tested beforehand.

I've given the two unique version numbers that shouldn't be present in any
stock version of boost (001 and 002).

* Add return type to detect_split_root

* Return empty list when nothing found in BOOST_ROOT, rather than None

* Update boost_root tests

* Create nativefile.ini based on location of run_project_tests.py
* Add fake libraries to ensure boost_librarydir is being used

* Require all search paths for boost to be absolute

* Redo boost search ordering

To better match things like pkg-config, we now look through native/cross files,
then environment variables, then system locations for boost installations.

Path detection does not fall back from one method to the next for properties or
environment variables--if boost_root, boost_librarydir, or boost_includedir is
specified, they must be sufficient to find boost. Likewise for BOOST_ROOT and
friends. pkg-config detection is still optional falling back to system-wide
detection, for Conan.

(Also, fix a typo in test 33's nativefile)

* Correct return type for detect_roots

* Correct boost dependency search order in documentation

* Print debug information for boost library finding, to resolve CI issues

* Handle native/cross file templates in a more consistent way

All tests can now create a `nativefile.ini.in` if they need to use some
parameter that the testing framework knows about but they can't.

* Pass str--rather than PosixPath--to os.path.exists, for Python35

* Look for boost minor versions, rather than boost patch versions in test cases

* Drop fake dylib versions of boost_regex

* Prefer get_env_var to use of os.environ

* Correct error reporting for relative BOOST_ROOT paths

* Bump version this appears in. Also, change "properties file" to "machine file" as that appears to be the more common language.
2020-07-21 16:40:29 +02:00
Daniel Mensinger 62f3aa1dad
Make virtualenv inside the project work 2020-07-16 14:30:07 +02:00
Michael Hirsch 7851495064
remove redundant syntax 2020-07-12 09:13:00 -04:00
Michael Hirsch 895de87b90
some python test cases don't care about backend, so run them in any case 2020-07-12 09:12:16 -04:00
Michael Hirsch 1ec84c570f run_*tests*.py: print Meson version at start of test suite
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-06-15 23:33:40 +03:00
Daniel Mensinger a44dc67cb7 ci: Use test.json to skip VS2017 azure tests
See also #7307 #7314 #7316

cc @nirbheek
2020-06-15 05:46:25 +00:00
Daniel Mensinger 96379e51ed tests: reset CMakeDependency.class_cmakeinfo 2020-06-13 11:05:28 +00:00
Jussi Pakkanen 1e7f1ad4c9
Merge pull request #7197 from jon-turney/test-output-check-mandatory
Make the expected output check mandatory for failing-meson and warning-meson tests
2020-05-26 02:52:12 +03:00
Jussi Pakkanen 527536dd4a Clear internal caches before running each test. 2020-05-23 22:45:30 +03:00
Jon Turney 0ac4376990
Make expected stdout mandatory for warning-meson and failing-meson tests
Unify present or absent test.json file cases in gather_tests

Make expected stdout mandatory in test.json for some test categories

Use a trivial TestCategory class rather than a tuple, to make it easier
to default category attributes
2020-05-23 19:55:50 +01:00
Jussi Pakkanen f2e2e910d9 Remove stray print call. 2020-05-23 17:50:21 +03:00
Jussi Pakkanen 22bc0d46a5 Revert "Merge pull request #7172 from jon-turney/test-output-check-mandatory"
This reverts commit 0871b1032c, reversing
changes made to 9dc3ca2c1c.
2020-05-23 16:02:30 +03:00
Jussi Pakkanen 0871b1032c
Merge pull request #7172 from jon-turney/test-output-check-mandatory
Make the expected output check mandatory for failing-meson and warning-meson tests
2020-05-22 17:06:23 +03:00
Jon Turney 19b44575d1
Make expected stdout mandatory for warning-meson and failing-meson tests
Unify present or absent test.json file cases in gather_tests

Make expected stdout mandatory in test.json for some test categories

Use a trivial TestCategory class rather than a tuple, to make it easier
to default category attributes
2020-05-15 15:25:00 +01:00
Dylan Baker 4e9e35f3bd interpreterbase: Allow passing an extra message in feature/deprecation warnings
The intended use it to tell people the new thing to do.
2020-05-14 11:04:51 -07:00
Dylan Baker 85708facae
Merge pull request #6620 from jon-turney/test-output-check
Add a mechanism for validating meson output in tests
2020-05-13 11:32:28 -07:00
Paolo Bonzini 7e15295018 rename unstable-kconfig to unstable-keyval
Discussions in #6524 have shown that there are various possible uses of the
kconfig module and even disagreements in the exact file format between
Python-based kconfiglib and the tools in Linux.  Instead of trying to
reconcile them, just rename the module to something less suggestive and
leave any policy to meson.build files.

In the future it may be possible to add some kind of parsing through
keyword arguments such as bool_true, quoted_strings, etc. and possibly
creation of key-value lists too.  For now, configuration_data objects
provide an easy way to access quoted strings.  Note that Kconfig stores
false as "absent" so it was already necessary to write "x.has_key('abc')"
rather than the more compact "x['abc']".  Therefore, having to use
configuration_data does not make things much more verbose.
2020-05-08 20:56:14 +03:00
Jon Turney f867bfbce0
Add a mechanism for validating meson output in tests
Expected stdout lines must match lines from the actual stdout, in the
same order. Lines with match type 're' are regex matched.

v2:
Ignore comment lines in expected_stdout

v3:
Automatically adjust path separators for location in expected output

v4:
Put expected stdout in test.json, rather than a separate file
2020-04-30 20:41:29 +01:00
Jon Turney f107f9b396
Make colourize_console() a function
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-30 20:11:31 +01:00
Daniel Mensinger 2a586f00b7
tests: Skip hotdoc test if hotdoc is not installed 2020-04-28 17:54:02 +02:00
Daniel Mensinger 4a1f197743
tests: Add support for specifying tool requirements
Adds the `tools` section to `tests.json` to specify requirements
for the tools in the environment. All tests that fail at least
one tool requirements check are skipped.
2020-04-28 17:54:02 +02:00
Dylan Baker a3f39fde1b run_project_tests: Allow matrix tests to skip
Since they generate some tests that are only valid on specific operating
systems.
2020-04-17 10:49:08 -07:00
Dylan Baker d887a8faff run_project_tests: Add an option to put temprorary files in /tmp
I have an NVME drive, I really don't want to be thrashing it with
temporary files. It's also annoying to watch vscode thrash about with
files that are quickly created and deleted. I'd rather put them in /tmp,
so I've added a non-default option to do so.
2020-04-17 10:49:08 -07:00
Jussi Pakkanen 84e216fd64
Merge pull request #6636 from jon-turney/machine-detection-problems
Redetect machines when languages change
2020-03-20 20:35:59 +02:00
Dylan Baker 7470617953 project_tests: Add the option to the test format to mark the language
This is needed when mixing D and C code, as it's possible to end up
witha  combination of linkers and compilres such that C produces pdb
files but D does not.
2020-03-09 16:55:08 -07:00
Dylan Baker fc8fffaf47 run_project_tests: Sort imports
It was impossible to figure out what was coming from where before.
2020-03-09 16:55:08 -07:00
Dylan Baker 6d4df978e2 run_project_tests: fix argument type 2020-03-09 16:55:08 -07:00
Dylan Baker c9ecfc84ff tests: Add pdb files for d tests 2020-03-09 16:55:08 -07:00
Dylan Baker 5ccda6878d project_tests: Add "version" to "shared_lib" and "pdb" types
This allows the harness to apply the version correctly, putting it in the right
place, dropping the right amount of numbers, etc.

pdb taking a version allows it to be more easily copied from the
shared_lib type.
2020-03-09 11:57:26 -07:00
Dylan Baker 2cdc6892f4 project_tests: Add a "shared_lib" type
This allows fixing tests that produce .dylib's on macOS and .so's on elf
Unices.
2020-03-06 12:11:26 -08:00
Jon Turney 42fbf9299a
Extend _run_test to test build without regenerate
Add coverage of a simple 'configure then build' sequence, to catch bugs
which occur with that.

Also, to simplify returning results from functions called by
_run_test(), allow it also throw TestResult objects, which run_test()
catches and returns.
2020-02-29 16:35:18 +00:00
Daniel Mensinger 12930051ae
test: replace pass_* functions with a test.json entry 2020-02-26 20:25:55 +01:00
Daniel Mensinger 8e60b8c146
test: merge installed_files.txt into test.json 2020-02-25 21:47:42 +01:00
Daniel Mensinger 3065202f6b
test: realise test_args.txt with a test matrix 2020-02-25 21:47:42 +01:00
Daniel Mensinger efd4e2a15b
test: merge test_matrix.json and setup_env.json into test.json 2020-02-25 21:47:37 +01:00
Daniel Mensinger 1da11be132
test: general refactoring of run_project_tests.py 2020-02-25 21:47:32 +01:00
Daniel Mensinger 96f5d4e455
boost: Updated tests 2020-02-20 13:38:45 +01:00
Jon Turney eb1a8ecf7c
Remove unused no-installed-files test feature
Looking at 45c8557d, the idea behind this seems to be that a test could
conditionally indicate that the list of installed files should not be
validated by creating that file.

It's no longer used anywhere.

Also remove a lingering no-install-files file which isn't used since commit
c693bd9b.
2020-02-13 17:15:58 +00:00
Jon Turney 3d6d908f7c
Refactor TestResult object initialization
Just add or alter attributes of the TestResult object, rather than many,
many invocations of the constructor with very similar arguments.

Define helper methods for TestResult to add the results of a step and
set the failure reason.
2020-02-13 13:28:13 +00:00
Daniel Mensinger 038e0293c6 ci: Add Fedora and OpenSUSE images 2020-02-11 19:02:25 +02:00
Dylan Baker 3689e49f4e run_project_tests: Fix it to actually work
This move the sorting logic into the TestDef class itself, which
simplifies sorting them.

Additionally it remove overcomplicated sort logic, because python
strings are compared character by character, we don't need to do the
split and cast to int, we know that realistically a maximum of 4
characters (the first 4 numbers) are going to be compared in most cases.
2020-02-07 09:29:02 -08:00
Daniel Mensinger 883262dbf6
tests: Added basic test matrix support for project tests 2020-02-05 12:11:32 +01:00
Jussi Pakkanen d8faf9b706
Merge pull request #6536 from jon-turney/cross-testing-refactor
Refactor CI cross-testing
2020-01-30 23:13:24 +02:00
Michael Hirsch, Ph.D 00f5dadd5b
Bugfix: sanitize_dir: use pathlib to handle case-insensitive filesystems (#6398) 2020-01-30 23:07:44 +02:00
Jon Turney ea805d4287
Make run_project_tests.py aware of --cross-file option 2020-01-28 21:42:06 +00:00
Daniel Mensinger 375a51712b
cmake: Some test improvements 2020-01-26 18:23:41 +01:00
Nirbheek Chauhan 2c8e676e2b tests: Fix some test failures on Ubuntun 16.04 CI
* xenial doesn't ship many dependencies, so make them all optional
  since we don't guarantee that everything will work
* cmake/{5,6}: needs stdlib.h for EXIT_SUCCESS on GCC 5
* common/222: needs C++11, and GCC 5 doesn't understand `auto`
  correctly unless we explicitly enable it.
* frameworks/1 boost: xenial doesn't ship boost_python3, so make it
  properly optional
* frameworks/6 gettext: gettext can be installed without xgettext,
  which doesn't cause the project to fail, but the installed files
  list is different which causes the test to fail.
* frameworks/7 gnome: gobject-introspection can't be enabled because
  the sanitizer unit test detects leaks in glib and fails
2020-01-24 02:53:34 +05:30
Daniel Mensinger 09b53c534f types: import typing as T (fixes #6333) 2020-01-08 15:28:17 +01:00
Michael Hirsch, Ph.D a910ba133a
doc: cuda windows comment 2019-12-23 17:25:14 -05:00
Jussi Pakkanen 17dd9e5bff
Merge pull request #6207 from dcbaker/linker-option
Add a way to select the dynamic linker meson uses
2019-12-11 23:29:33 +02:00
Michael Hirsch, Ph.D 8be7278855 run_project_tests: argparse(choices) for --only name check 2019-12-07 21:21:25 +02:00
Jussi Pakkanen 06cc98ab54
Merge pull request #6228 from scivision/scalapack
deps: add Scalapack
2019-12-07 21:17:53 +02:00
Daniel Mensinger 379d633ef2 lgtm: fix Unreachable code 2019-12-05 00:22:10 +02:00
Dylan Baker 39efd97714 run_project_tests: Fix skip rust
which expects an argument of backend, but isn't getting one.
2019-12-03 13:08:42 -08:00
Michael Hirsch, Ph.D 3120481d77
CI: scalapack not skippable since it's now in Docker image 2019-11-30 21:37:45 -05:00
Michael Hirsch, Ph.D 92b77cb321
deps: add scalapack
Scalapack uses a library stack that can be challenging to manage.
Not least of all since many Scalapacks ship with broken / incomplete
pkg-config files and CMake FindScalapack.cmake

This resolves those issues for typical Scalapack setups including:

* Linux: Intel MKL or OpenMPI + Netlib
* MacOS: Intel MKL or OpenMPI + Netlib
* Windows: Intel MKL (OpenMPI not available on Windows)
2019-11-30 21:29:49 -05:00
Daniel Mensinger 9435f11b17
ci: Add CI command to include text files in the CI log 2019-11-19 15:21:13 +01:00
Michael Hirsch, Ph.D 1baa1c9222 use '-Werror=unused-parameter' for gcc/clang on project tests and -fimplicit-none on fortran
Fortran: check for undeclared variables by forcing implicit none everywhere
C/C++: check for unused parameters and return types

removed unused variables from test cases

ci: do missing return and unused arg check with Github Actions
2019-11-17 13:24:42 +02:00
Daniel Mensinger 892c8ebe65
run_project_tests: Added print_tool_versions() 2019-10-20 12:04:15 +02:00
Dylan Baker 0c22798b1a compilers: replace CompilerType with MachineInfo
Now that the linkers are split out of the compilers this enum is
only used to know what platform we're compiling for. Which is
what the MachineInfo class is for
2019-10-07 12:08:20 -07:00
Patrick Griffis 1670fca36f Add blocks dependency
This allows easily enabling the blocks clang extension.
2019-09-23 21:10:00 +03:00
Michael Hirsch, Ph.D 3447767cac
PGI: windows PGI is sort of MSVC-like 2019-09-05 11:50:23 -04:00
Dylan Baker 25e32b56fb tests: add wasm to run_project_tests --only 2019-08-12 10:40:09 -07:00
Jussi Pakkanen f39600647d Condense test directory names. 2019-08-03 02:29:44 +03:00