Commit Graph

344 Commits

Author SHA1 Message Date
Eli Schwartz f1035e0cd0 run_project_tests: fix assertion that crashes if you have git worktrees
git worktrees are frequently a handy tool to use. This glob pattern
asserts an error if the same named directory appears more than once,
which it will -- once per worktree -- but only because it is globbing
the entire project root, even though it should always only exclusively
care about files in `test cases/`. So just glob correctly, and then I
can run the testsuite locally again.
2023-12-24 07:55:30 -08:00
Eli Schwartz 7d652a6138 project tests: handle code internally fetching the meson command
Fixes crash when running the tests and yasm is installed, but nasm is
not. When printing the compilers at early startup in
run_project_tests.py, we try to detect the nasm compiler, which in this
case turns out to be yasm, and its exelist assumes that the meson
command is set.

Fixes #12662
2023-12-24 07:55:30 -08:00
Charles Brunet 35d89301a9 tests: skip symlink creation when not supported 2023-12-22 09:46:04 -08:00
Dylan Baker e991c4d454 Use SPDX-License-Identifier consistently
This replaces all of the Apache blurbs at the start of each file with an
`# SPDX-License-Identifier: Apache-2.0` string. It also fixes existing
uses to be consistent in capitalization, and to be placed above any
copyright notices.

This removes nearly 3000 lines of boilerplate from the project (only
python files), which no developer cares to look at.

SPDX is in common use, particularly in the Linux kernel, and is the
recommended format for Meson's own `project(license: )` field
2023-12-13 15:19:21 -05:00
Dylan Baker f1c748df87 run_project_tests: remove debug print 2023-12-04 14:36:43 -05:00
Jussi Pakkanen 2ea284bac1 Prohibit symlinks in test data dir because they get mangled by setup.py. 2023-11-07 21:52:14 +02:00
Tristan Partin 1991ad8706
Remove type comments in run_project_tests.py 2023-10-04 15:23:00 -04:00
Arsen Arsenović 56ef698426 run_project_tests: support checking for symlinks 2023-09-13 21:44:40 -04:00
Charles Brunet 204fe3c577 Fix include_directories test for relative path
- On Windows, it was not detected if include directory was an absolute
  path to source directory, because of the mis of path separators.

- In the edgecase the include directory begins with the exact same
  string as the source directory, but is a different directory, it was
  falsely reported as an error.

Fixes #12217.
2023-09-07 23:38:33 -04:00
Xavier Claessens b2654b2d43 Fix crash when installing a vala library and python sources
Installing python sources causes the python module to call
create_install_data() before Ninja backends adds extra outputs to Vala
targets.

Target objects are supposed to be immutable, adding outputs that late is
totally wrong. Add extra vala outputs immediately, but be careful
because the main output is only added later in post_init(). Luckily
the base class already puts a placeholder item in self.outputs for the
main filename so we can just replace self.outputs[0] instead of
replacing the whole list which would contain vala outputs at that stage.
This is surprisingly what SharedLibrary was already doing.
2023-09-07 10:56:37 -04:00
Eli Schwartz 156a9baab5
tests: repeat the failure reason in the detailed logs 2023-09-01 14:27:53 -04:00
Eli Schwartz 0833a0fa67
tests: move a couple log files into collapsed github groups where possible 2023-09-01 14:27:53 -04:00
Eli Schwartz 1ec4a0900a
tests: move the newline to the right place in ci includes
Make sure this is generic enough to be properly usable
2023-09-01 14:27:53 -04:00
Eli Schwartz e7c30e803b
tests: sync ninja stdout/stderr instead of listing them separately
It is fairly confusing for all the "ninja explain" to be the last thing
you see, instead of the compile error.
2023-09-01 14:27:53 -04:00
Eli Schwartz 0ecc8d5c8d
tests: make summary section for project tests more like pytest
Logs for failing tests come first, then the list of pass/fail.
2023-09-01 14:27:53 -04:00
Eli Schwartz 12e23f55d4
tests: make run_project_tests finish off the verbose logs with a summary
List each testcase name that failed so we can see at a glance which ones
they are.
2023-09-01 14:27:53 -04:00
Xavier Claessens 18b96cd069 machine file: Add @GLOBAL_SOURCE_ROOT@ and @DIRNAME@ 2023-08-23 11:33:39 -04:00
Eli Schwartz 1fd70a2a00
tests: consolidate MESON_SKIP_TEST reporting and use it in unittests
Previously, we only reported the skip reason when running project tests.
2023-08-17 21:30:32 -04:00
Andrew McNulty c730807696 Python: Add 'limited_api' kwarg to extension_module
This commit adds a new keyword arg to extension_module() that enables
a user to target the Python Limited API, declaring the version of the
limited API that they wish to target.

Two new unittests have been added to test this functionality.
2023-08-14 20:02:09 -04:00
Eli Schwartz b1ddfabf8f
dependencies: defer importing a custom dependency until it is used
This lessens the amount of code imported at Meson startup by mapping
each dependency to a dictionary entry and using a programmable import to
dynamically return it.

Minus 16 files and 6399 lines of code imported at startup.
2023-06-26 13:10:33 -04:00
Nomura 18cfa545f0 Initial support for Metrowerks C/C++ compiler 2023-04-24 09:07:37 -04:00
Josh Soref cf9fd56bc9 fix various spelling issues
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-04-11 19:21:05 -04:00
Eli Schwartz 5fe7ecb861
tests: make it easier to read overall results in github
Use collapsible sections for cicmds.
2023-04-04 15:06:17 -04:00
Eli Schwartz cfc1abcfaf
project tests: add log of the setup command being run
Followup to commit 2acb6ee79e.
2023-03-20 17:22:50 -04:00
Eli Schwartz 6719724c7c remove pointless, unused typing-only import in the test runner
In the commit that originally added this import, it wasn't even used.
Now the implementation is being moved, so it will fail to work.

I do not know why I originally added it, but it needs to go. :)
2023-02-22 10:32:09 -08:00
Eli Schwartz 115f298361 tests: do not run the deprecated python3 tests unless python is python3
It's broken in e.g. pypy, but that's okay because the module is utterly
deprecated, and people should use the python module instead.
2023-02-13 09:09:10 -05:00
Eli Schwartz 58cfd8fc2c
tests: track when an entire category is skipped and be quieter
There is no need to state for every single test that "preconditions were
not met". And logging the skip reason for a single test is easy to read,
but making every second line alternate is less so.
2023-01-12 15:02:35 -05:00
Eli Schwartz 901dc34ed5
tests: properly log the reason why a test got unexpectedly skipped 2023-01-12 14:56:39 -05:00
Tristan Partin 71cddebf2c
Enable Java project tests on Darwim 2022-12-15 20:36:43 -06:00
Daniele Nicolodi 235f32f1a6 python: Use correct extension filename suffix on Python < 3.8.7
On Windows, in Python version prior to 3.8.7, the `sysconfig` modules
provides an extension filename suffix that disagrees the one returned
by `distutils.sysconfig`. Get the more awesome suffix from the latter
when building for a Python version known to present this issue.

Simplify the extension module filename suffix lookup to use the same
method used by `setuptools`.

Adjust project tests accordingly.

Fixes #10960.
2022-11-23 07:29:23 -05:00
Marvin Scholz 08262c3102 test runner: fix excluding null options
It was impossible to specify null arguments in the exclude array,
while they were passed properly in the code, they were stringified
while the entries in the options array were just completely removed.

To fix this, do not early stringify the argument name and option
together as that would make it impossible to properly match it to
None without introducing a new special case for the string "None".
So instead they are now kept as tuples and only stringified when
its actually needed.
2022-11-22 20:22:04 -05:00
Eli Schwartz 193092e26b
fix deprecated use of meson builddir/ in testsuite 2022-11-17 19:10:51 -05:00
Robert Cohn 1939e567d6 basic support for oneapi compilers 2022-10-24 18:55:22 +03:00
Dylan Baker 369c2660d0 run_project_tests: also change paths for DEPRECATION messages
Not just WARNING and ERROR
2022-08-17 16:25:36 -04:00
Eli Schwartz 3c7ab542c0
deprecate running "meson builddir" without setup subcommand
This is ambiguous, if the build directory has the same name as a
subcommand then we end up running the subcommand. It also means we have
a hard time adding *new* subcommands, because if it is a popular name of
a build directory then suddenly scripts that try to set up a build
directory end up running a subcommand instead.

The fact that we support this at all is a legacy design. Back in the
day, the "meson" program was for setting up a build directory and all
other tools were their own entry points, e.g. `mesontest` or
`mesonconf`. Then in commit fa278f351f we
migrated to the subcommand mechanism. So, for backwards compatibility,
we made those tools print a warning and then invoke `meson <tool>`. We
also made the `meson` tool default to setup.

However, we only warned for the other tools whose entry points were
eventually deleted. We never warned for setup itself, we just continued
to silently default to setup if no tool was provided.

`meson setup` has worked since 0.42, which is 5 years old this week.
It's available essentially everywhere. No one needs to use the old
backwards-compatible invocation method, but it continues to drag down
our ability to innovate. Let's finally do what we should have done a
long time ago, and sunset it.
2022-08-16 17:40:03 -04:00
Dylan Baker 15078112f9 run_project_tests: Don't try to use tqdm when stdout is not a tty
Like when piped to something like less, where tqdm just makes a mess of
the output instead of providing something helpful.
2022-07-06 15:59:47 -04:00
Simon McVittie 65ea833d58 Require CMake 3.14 for all tests that use the cmake module
Older versions are not supported by the cmake module since 0.62.

This avoids having to hard-code the linux-bionic-gcc CI job as being
unable to run these tests, which leaves other older environments like
Debian 10 still trying to run them (and failing).

Signed-off-by: Simon McVittie <smcv@collabora.com>
2022-05-10 07:56:59 -04:00
Jussi Pakkanen 3ae36dee42 Limit parallelism to hopefully work on machines with 160 cores. 2022-05-06 16:37:36 -04:00
Eli Schwartz 9b94045170 another day, another mypy update becomes stricter about typing
Move GlobalState to a runtime T.NamedTuple, use it for constructing the
tuple we are passing around rather than expecting mypy to detect that
the one we already have matches.
2022-05-01 13:41:31 +03:00
Matti Picus 73fa3aad43 python module: windows dll name for pypy needs special casing 2022-04-12 06:58:04 -04:00
Eli Schwartz 105bbaabdd
project tests: log the reason why a test is skipped
We expose a reason after the string 'MESON_SKIP_TEST', but it is
actually ignored when running the test, so it is only useful as
documentation and really might as well be a comment.

Make it even more useful by actually printing that string after the
'[SKIPPED]' message.

Also, sometimes a test can be skipped for multiple reasons, and it would
be useful to know which one occurred.
2022-04-03 16:06:33 -04:00
Eli Schwartz ce7a67e511
project tests: do not use tqdm progress bars for a single test
This can happen for example with `--only fpga` as that category has
exactly one test.
2022-04-03 16:06:33 -04:00
Eli Schwartz ff8a9c9efb
move typing-only definition to TYPE_CHECKING 2022-03-29 16:44:54 -04:00
Mark Bolhuis 5a4177523e modules/wayland: Add unstable_wayland module 2022-02-27 14:33:33 -05:00
Eli Schwartz 58c124d48a
project tests: fine-tune the check for whether we are in CI
Follow-up on commit 4274e0f42a. We want to
allow tests to be skipped freely in third-party environments, so this
should check the jobname, not whether $CI exists.

We will anyways raise an error when trying to run the project tests, if
$CI is set but no jobname is set.
2022-02-17 14:48:27 -05:00
Eli Schwartz a580fac83a
tests: allow setting MESON_CI_JOBNAME=thirdparty
This is treated by the test harness as though unset, i.e. we do normal
skipping and don't assume we are running in Meson's own project CI.

However, it has one distinction which is that it isn't an error to set
$CI without setting $MESON_CI_JOBNAME, if it is in fact set but to the
ignored value.

This lets automated workflows such as Linux distro testing, particularly
alpine linux, set $CI or have it set for them by default, without
messing things up.

Also it has the advantage of $CI actually enabling useful benefits! We
will still assume that this thirdparty environment wants to force
verbose logging (printing testlogs, running ninja/samu with -v) and
colorize the console.
2022-02-17 14:48:27 -05:00
Daniel Mensinger 2e2ca5a877 cmake: ci: Skip tests on Ubuntu Bionic where CMake is stuck on 3.10 2022-02-03 11:25:59 -05:00
Eli Schwartz 751f84405e
pyupgrade --py37-plus 2022-01-10 18:36:56 -05:00
Daniel Mensinger c5ce9744b2 Fix mypy errors 2021-12-17 14:00:28 -05:00
Xavier Claessens 928078982c Add --vsenv command line option and active VS only when needed 2021-10-10 23:15:18 +03:00