Commit Graph

79 Commits

Author SHA1 Message Date
Jussi Pakkanen 20b57d6e15 Write deprecation warnings to stderr. 2017-08-02 22:01:13 +03:00
Jussi Pakkanen 59a35c4c53 Print deprecation warnings on old style commands. 2017-08-02 22:01:13 +03:00
Jussi Pakkanen c2e40650e8 Turned mesontest into on internal module. 2017-08-02 22:00:09 +03:00
Dima Krasner 99fdb6c19e mesontest: logfilename may be undefined
Signed-off-by: Dima Krasner <dima@dimakrasner.com>
2017-07-23 15:22:30 +03:00
Jussi Pakkanen db34a3a701 Close files reliably. 2017-07-18 00:33:08 +02:00
Elliott Sales de Andrade 5d1e35fa01 Print real error if mesontest used on invalid directory. 2017-07-15 10:04:55 +02:00
Jussi Pakkanen f24a4e27ad Removed some dead code. Closes #1949. 2017-07-02 10:07:17 -04:00
Elliott Sales de Andrade c0ab6e9d5b Don't rebuild tests during listing.
`mesontest --list` doesn't need to rebuild tests.
2017-06-30 11:18:26 -04:00
Rob Doolittle c389f7cdc7 can't pass args to python3 shebang 2017-05-26 11:49:13 +03:00
Rob Doolittle 56b41d1c79 mesontest: use unbuffered IO
This helps when running mesontest as part of CI.
2017-05-24 20:00:47 +03:00
Elliott Sales de Andrade 83d1c7f063 Rearrange trys to avoid possible undefined vars. 2017-05-17 05:37:02 -04:00
Elliott Sales de Andrade ea636fcd51 Remove unused variables. 2017-05-17 04:41:54 -04:00
Dylan Baker a8173630ea Don't use len() to test emptiness vs not emptiness
Meson has a common pattern of using 'if len(foo) == 0:' or
'if len(foo) != 0:', however, this is a common anti-pattern in python.
Instead tests for emptiness/non-emptiness should be done with a simple
'if foo:' or 'if not foo:'

Consider the following:
>>> import timeit
>>> timeit.timeit('if len([]) == 0: pass')
0.10730923599840025
>>> timeit.timeit('if not []: pass')
0.030033907998586074
>>> timeit.timeit('if len(['a', 'b', 'c', 'd']) == 0: pass')
0.1154778649979562
>>> timeit.timeit("if not ['a', 'b', 'c', 'd']: pass")
0.08259823200205574
>>> timeit.timeit('if len("") == 0: pass')
0.089759664999292
>>> timeit.timeit('if not "": pass')
0.02340641999762738
>>> timeit.timeit('if len("foo") == 0: pass')
0.08848102600313723
>>> timeit.timeit('if not "foo": pass')
0.04032287199879647

And for the one additional case of 'if len(foo.strip()) == 0', which can
be replaced with 'if not foo.isspace()'
>>> timeit.timeit('if len("   ".strip()) == 0: pass')
0.15294511600222904
>>> timeit.timeit('if "   ".isspace(): pass')
0.09413968399894657
>>> timeit.timeit('if len("   abc".strip()) == 0: pass')
0.2023209120015963
>>> timeit.timeit('if "   abc".isspace(): pass')
0.09571301700270851

In other words, it's always a win to not use len(), when you don't
actually want to check the length.
2017-05-02 21:57:26 +03:00
Jussi Pakkanen 27e2c23efc Colorize terminal output of mesontest. Closes #1593. 2017-04-10 01:06:03 +03:00
Jussi Pakkanen 4c6f99a31a Check that requested executables are available. Closes #1591. 2017-04-09 22:54:27 +03:00
Jon Turney fd47ef3a27 Use '.exe' extension for executables for Cygwin
Use '.exe' extension for executables for Cygwin when building and installing
2017-04-06 22:47:15 +01:00
Jon Turney 600f16f9f8 Use extra_paths on Cygwin
Cygwin executables are still loaded by the Windows PE loader, so PATH needs
to include any extra directories where required DLLs can be found.

Cygwin uses a unix style ':'-separated PATH.  os.pathsep is used correctly
on extra_paths in meson_exe.py, but not in mesontest.py
2017-04-06 22:47:15 +01:00
Nirbheek Chauhan f5b43eef1b mesontest: Support passing test arguments at runtime
This is especially useful with the glib testing framework where you
can select which tests to run within a single test executable by
pasing `-p /some/test/path`
2017-02-23 11:56:46 +05:30
Nirbheek Chauhan 9fffcef290 mesontest: Fix --repeat with --gdb
It would add --args to `wrap` repeatedly for each re-run, resulting in
gdb erroring out with `--args: No such file or directory.`

Also don't make --gdb and --wrapper mutually exclusive. Sometimes people
want to run under a wrapper *and* run it under gdb.
2017-02-23 11:56:46 +05:30
Nirbheek Chauhan 62c7dcf32d mesontest: Use shlex.split for parsing the wrapper
Allows people to pass arguments with spaces in them. Do this using
argparse itself instead of doing an isinstance later.
2017-02-23 11:56:46 +05:30
Jussi Pakkanen d6614ba811 Merge pull request #1402 from centricular/test-setup-fixes
Various fixes to how mesontest handles test setups.
2017-02-20 14:56:45 -05:00
Jussi Pakkanen 69e51109c2 Run regen before loading test data because it might have changed. 2017-02-19 17:20:14 -05:00
Nirbheek Chauhan 06d615611b mesontest: Use setup timeout multiplier if not specified
The setup's timeout multiplier will always be set, and it will default
to 1.0, so just use that.

Without this, the setup's timeout multiplier was always ignored.
2017-02-19 23:13:32 +05:30
Nirbheek Chauhan 5bf4338913 mesontest: Use test setup name in logfiles
When using a setup, use the setup name as the namebase for the logfile
instead of the wrapper. The wrapper may not be set, or it may be shared
between test setups.

Also don't try to use the wrapper if it's an empty list.

Closes https://github.com/mesonbuild/meson/issues/1371
2017-02-19 23:13:32 +05:30
Nirbheek Chauhan e9f9a42c7a mesontest: Don't run tests if no tests were selected
The output is very confusing otherwise. Before it said
'No suitable tests defined' and then showed a list of tests that
passed/failed.

Now it will just say 'No suitable tests defined' and exit.
2017-02-19 23:13:32 +05:30
Nirbheek Chauhan 07c3d35d4b mesontest: Set MALLOC_PERTURB_ to a random value
This is useful enough that we can enable this for everyone. If people
really don't want this, they can pass MALLOC_PERTURB_=0 in the
environment or in the test.
2017-02-19 11:39:27 -05:00
Jussi Pakkanen 4a08841331 Merge pull request #1335 from tp-m/test-custom-target-used-in-test-cmd
tests: check custom target output is created before being used in a t…
2017-01-28 19:05:54 +02:00
Hemmo Nieminen 85304bd8cf [mesontest] Implement a quiet option.
Implement a quiet option that can be used to hide OK messages for
successful tests to better highlight the failing ones.
2017-01-28 18:27:58 +02:00
Nirbheek Chauhan 2e30912447 vs: Fix running of tests to use mesontest.py
Back in November when this broke, we didn't notice because our tests
are run in-process, so we don't check that `msbuild RUN_TESTS.vcxproj`
and `ninja test` actually work.

Now we do.
2017-01-28 01:05:21 +05:30
Nirbheek Chauhan 6778d0e2da mesontest: Don't add '.' at the end of some prints
Makes it difficult to copy the filename/datetime by double-clicking
since that includes the '.' at the end.
2017-01-26 21:56:51 +02:00
Nirbheek Chauhan d9a4b367b4 mesontest: Don't overwrite test status on timeout
Earlier it would mark tests as "FAIL" even if it skipped.
2017-01-26 21:56:51 +02:00
Mike Sinkovsky 550761d97b cleanup: @staticmethod 2017-01-18 21:22:47 +02:00
Mike Sinkovsky c9423cc3a8 cleanup: Replace assignment with augmented assignment 2017-01-18 21:22:47 +02:00
Mike Sinkovsky 969be1f679 cleanup: Remove redundant parentheses 2017-01-18 21:22:47 +02:00
Jussi Pakkanen 7a28f387e2 More readable total statistics. 2017-01-15 21:27:32 +02:00
Hemmo Nieminen b90956c2f2 mesontest: Improve test suite selection.
Suite option can now be given to specify in more detail which tests should
be run.
2017-01-12 22:17:12 +02:00
Mike Sinkovsky 5b626ab4cb style: [E1**] Indentation 2017-01-11 12:33:27 -05:00
Hemmo Nieminen ebea1e3bd9 mesontest: Print test stats even if in verbose mode. 2017-01-03 09:51:31 +02:00
Hemmo Nieminen 01be50fdd9 mesontest: Unify testing behaviour between the test target and mesontest.
Also add a test summary to the end of the test output.
2017-01-03 09:51:31 +02:00
Hemmo Nieminen fc17e3b9cc mesontest: Show the test command in truncated test logs. 2017-01-03 09:39:55 +02:00
Hemmo Nieminen bf281fd4c4 mesontest: Remove excess newline and whitespace from test logs. 2017-01-03 09:39:55 +02:00
Jussi Pakkanen b3d51abff2 Can put external programs to test suite exe wrappers directly. 2017-01-02 23:52:50 +02:00
Jussi Pakkanen 74f15263b6 Can set envvars in test setups. 2017-01-02 23:52:50 +02:00
Jussi Pakkanen ee8a6e6fc5 Can specify test setups and run them with mesontest. 2017-01-02 23:52:50 +02:00
Igor Gnatenko 969dc7e995 style: fix E124 violations
E124: closing bracket does not match visual indentation

Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01 12:02:05 -05:00
Igor Gnatenko 116da33cdd style: fix E128 violations
E128: continuation line under-indented for visual indent

Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01 12:02:05 -05:00
Igor Gnatenko ef608f217d style: fix E222 violations
E222: multiple spaces after operator

Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01 12:02:05 -05:00
Igor Gnatenko 2017d8578a style: fix E226 violations
E226: missing whitespace around arithmetic operator

Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01 12:02:05 -05:00
Igor Gnatenko f0b30baa39 style: fix E225 violations
E225: missing whitespace around operator

Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
2017-01-01 12:02:05 -05:00
Jussi Pakkanen b55235dfbd Fix space before :. 2016-12-31 16:28:15 +02:00