Commit Graph

67 Commits

Author SHA1 Message Date
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
Jussi Pakkanen 3fc67f4951 Minimal fixes to make tests pass when cross compiling. 2016-12-20 20:33:59 +02:00
Jussi Pakkanen 2b65083463 Fix cross test and run them if a cross compiler is available. 2016-12-20 20:33:59 +02:00
Jussi Pakkanen f2b3ab826b If/elif fix so running just mesontest actually runs the tests after doing a rebuild. 2016-12-11 14:20:39 +02:00
Jussi Pakkanen 22aedda6d0 Use a big timeout when running gdb interactively and a typo fix. 2016-12-11 14:20:39 +02:00
Patrick Griffis 4c74b47cfd mesontest: Fix exception 2016-12-07 21:54:30 +02:00
Thibault Saunier 10e2b9bca0 mesontest: Rebuild all before running tests
Only supporting ninja backend for now.
2016-12-03 22:41:31 +02:00
Jussi Pakkanen 8be0df1443 Typo fix. 2016-12-03 20:58:29 +02:00
Jussi Pakkanen 57b7a98e02 Merge pull request #1128 from thiblahute/mesontest_misc_fixes
mesontest misc fixes
2016-12-03 20:54:42 +02:00
Jussi Pakkanen c1efaafec4 Stray debug print removal. 2016-12-03 16:19:02 +02:00
Thibault Saunier 16bdc044e4 mesontest: Properly let user know when a test timeout out in verbose mode 2016-12-02 20:04:33 -03:00
Thibault Saunier e2782f7864 tests: Allow user to change timeout time
For example if we know the tests takes more time because, for example
we are tracing it, or running with very high debug log level we might
not want the test to timeout.
2016-12-02 20:04:33 -03:00
Thibault Saunier 56a6f86827 mesontest: Do not timeout when running inside GDB 2016-12-02 20:04:33 -03:00