Commit Graph

74 Commits

Author SHA1 Message Date
Andrew Halberstadt
ef5e8b1023 Bug 1476390 - [python-test] Default number of processes to multiprocessing.cpu_count() r=davehunt
Differential Revision: https://phabricator.services.mozilla.com/D2201
2018-07-18 16:15:48 +00:00
Dave Hunt
e711382424 Bug 1473727 - Avoid recreating virtual environment every time by using a unique environment for each Python version; r=ahal,dustin
This patch uses the PIPENV_PYTHON environment variable to append a suffix to the created virtual environment path according to the version specified. It also uses the PIPENV_DEFAULT_PYTHON_VERSION environment variable to avoid recreating the virtual environment every time. With these changes we are able to switch back and forth between Python versions without the expense of recreating environments, however there is a risk of these environments becoming stale. In this scenario it may be necessary to clobber the virtual environment root within the obj dir.

MozReview-Commit-ID: C4vuwNh04CP
2018-07-09 14:57:38 +01:00
Andreea Pavel
42453fcd8b Backed out changeset d75218b99a04 (bug 1473727) for build bustages on a CLOSED TREE 2018-07-10 18:17:47 +03:00
Dave Hunt
f6c0ba59b9 Bug 1473727 - Avoid recreating virtual environment every time by using a unique environment for each Python version; r=ahal,dustin
This patch uses the PIPENV_PYTHON environment variable to append a suffix to the created virtual environment path according to the version specified. It also uses the PIPENV_DEFAULT_PYTHON_VERSION environment variable to avoid recreating the virtual environment every time. With these changes we are able to switch back and forth between Python versions without the expense of recreating environments, however there is a risk of these environments becoming stale. In this scenario it may be necessary to clobber the virtual environment root within the obj dir.

MozReview-Commit-ID: C4vuwNh04CP
2018-07-09 14:57:38 +01:00
Dave Hunt
f030e0307f Bug 1466211 - Use --python for selecting target Python when using |mach python-test|; r=ahal
MozReview-Commit-ID: J8DSmX8mItb
2018-06-13 14:18:21 -07:00
Dave Hunt
cdf5d703ce Bug 1466211 - Switch all |mach python-test| tests to run using pipenv; r=ahal
MozReview-Commit-ID: AzmdDgAgZgI
2018-06-08 13:24:27 +01:00
Margareta Eliza Balazs
61cf444c53 Backed out 7 changesets (bug 1466211) for bustage e.g. z/task_1529662815/src/js/src/configure --enable-ctypes --enable-optimize on a CLOSED TREE
Backed out changeset 6680ca0acc27 (bug 1466211)
Backed out changeset dfdf4ea83655 (bug 1466211)
Backed out changeset 23eb377e2e6d (bug 1466211)
Backed out changeset fe821d61ecbf (bug 1466211)
Backed out changeset e04950c7c496 (bug 1466211)
Backed out changeset 4b197754381a (bug 1466211)
Backed out changeset 1695d4464c54 (bug 1466211)
2018-06-22 14:33:21 +03:00
Dave Hunt
6cf842b92a Bug 1466211 - Use --python for selecting target Python when using |mach python-test|; r=ahal
MozReview-Commit-ID: J8DSmX8mItb
2018-06-13 14:18:21 -07:00
Dave Hunt
12e6bc71ce Bug 1466211 - Switch all |mach python-test| tests to run using pipenv; r=ahal
MozReview-Commit-ID: AzmdDgAgZgI
2018-06-08 13:24:27 +01:00
Dave Hunt
8904bd7472 Bug 1465887 - Allow test manifests to skip based on Python version; r=ahal
This patch allows us to enable Python 3 tests and skip any tests that fail so that we can work on adding support for Python 3 without risking regressing any existing support. It will also eventually allow us to skip tests from running against Python 2, when we decide to drop support for it. To skip a test against Python 3, add "skip-if = python == 3" to the [DEFAULT] or test file section of a manifest file.

MozReview-Commit-ID: KYzjW6PQw2Q
2018-06-10 18:30:46 +01:00
Dave Hunt
eef6bca168 Bug 1388013 - Support running |mach python-test| against Python 3 using pipenv; r=ahal
This patch allows executing |mach python-test| against Python 3 by specifying the optional |--three| command line option. When this option is present, pipenv will be used to manage a virtual environment using Python 3 and attempt to run the tests. When it is not present, pipenv will not be used, and everything will work as it did before this patch.

My original plan was to use pipenv regardless of the target version of Python, however I encountered several issues running some of the tests against our Python packages. Once all tests have been patched to run against Python 3, then we should be able to use pipenv when running them against Python 2.

Note that this patch allows tests to run against Python 3, but there are plenty of issues preventing them from passing. With this patch in place we can start to add Python 3 support to our packages and have the tests running in CI to ensure we don't regress back to just supporting Python 2.

MozReview-Commit-ID: BuU5gZK83hL


IHG: changed taskcluster/ci/source-test/python.yml
2018-05-03 10:34:22 +01:00
Andreea Pavel
baf70c19f5 Backed out 3 changesets (bug 1388013) for build bustages e.g. ../python/mozbuild/mozpack/test/test_files.py on a CLOSED TREE
Backed out changeset eea857170a41 (bug 1388013)
Backed out changeset c55bfefbd4e1 (bug 1388013)
Backed out changeset 3a163da2b21b (bug 1388013)
2018-05-31 11:48:19 +03:00
Dave Hunt
d847c54788 Bug 1388013 - Support running |mach python-test| against Python 3 using pipenv; r=ahal
This patch allows executing |mach python-test| against Python 3 by specifying the optional |--three| command line option. When this option is present, pipenv will be used to manage a virtual environment using Python 3 and attempt to run the tests. When it is not present, pipenv will not be used, and everything will work as it did before this patch.

My original plan was to use pipenv regardless of the target version of Python, however I encountered several issues running some of the tests against our Python packages. Once all tests have been patched to run against Python 3, then we should be able to use pipenv when running them against Python 2.

Note that this patch allows tests to run against Python 3, but there are plenty of issues preventing them from passing. With this patch in place we can start to add Python 3 support to our packages and have the tests running in CI to ensure we don't regress back to just supporting Python 2.

MozReview-Commit-ID: BuU5gZK83hL


IHG: changed taskcluster/ci/source-test/python.yml
2018-05-03 10:34:22 +01:00
Andrew Halberstadt
cee532cf3f Bug 1451501 - Fix error trying to run python-tests via |mach test|, r=gps,whimboo
MozReview-Commit-ID: LNedxcqQ1NC
2018-04-04 17:30:22 -04:00
Gregory Szorc
cb9bff46a3 Bug 1446471 - Remove unused import; r=nalexander
MozReview-Commit-ID: JviugCf0TTE
2018-03-06 19:15:42 -08:00
Gregory Szorc
2f953786fe Bug 1446471 - Remove unused --stop argument from mach python-test; r=nalexander
This argument does nothing. While that's arguably a bug, I have
no desire to fix it. So remove dead code.

MozReview-Commit-ID: 9tToF66I7HE
2018-03-06 19:04:04 -08:00
Gregory Szorc
3a4729b3d7 Bug 1446471 - Remove unused find_tests_by_path function; r=nalexander
I was too lazy to find the commit that orphaned this. But it is most
definitely not referenced in the code base.

MozReview-Commit-ID: 8gYBJQxIWIR
2018-03-06 19:02:01 -08:00
Andrew Halberstadt
857f1797a0 Bug 1403012 - Fix TypeError when running python unittests via |mach test|, r=gbrown
Mach test now creates a structured logger and passes it down into all
of the various test harnesses. Except |mach python-test| doesn't use
structured logging yet, so the argument is not expected.

For now, just accept **kwargs and ignore the logger. Eventually we'll
want to get python tests to use structured logging, and we can use it
at that point.

MozReview-Commit-ID: 8LwdbgI0vqR
2018-01-12 11:22:58 -05:00
Gregory Szorc
b456405afd Bug 1426566 - Make -v an alias to --verbose for mach python-test; r=froydnj,nalexander
This alias is super common. It exists for other mach commands. Seems
useful to have for consistency.

MozReview-Commit-ID: 3gBvIHcMEZs
2018-01-05 14:19:33 -08:00
Mike Hommey
9b2ce4e9a9 Bug 1427468 - Allow to run mach python without a virtualenv. r=nalexander
Sometimes, one just wants to run a one-off script with access to all
(or most) the libraries available like mozbuild, etc. but without
the weight of the whole virtualenv, which implies having an objdir
setup, etc.

One of my use cases is to run our preprocessor before the objdir is even
setup, and I'd rather not have one automatically created.
2017-12-31 15:50:29 +09:00
Andrew Halberstadt
2730a80a6b Bug 1414399 - [mozbuild/moztest] Move mozbuild.testing.TestResolver to moztest.resolve r=gps
The TestMetadata and TestResolver classes aren't technically part of the build
system. The only connection is that they consume some build system output.

The next patch in this series is going to be merging in a bunch of other test
resolving logic from other parts of the tree. Moving this out first allows us
to keep that extra logic out of mozbuild.

MozReview-Commit-ID: 1eq4SjFVCyW
2017-11-06 08:41:42 -05:00
Andrew Halberstadt
6b8c2e3636 Bug 1408385 - Make sure python-test tasks turn orange if no tests are run, r=davehunt
MozReview-Commit-ID: 8HAGvOg1Bbp
2017-10-13 09:42:06 -04:00
Andrew Halberstadt
f7b445f2f2 Bug 1339178 - Use pytest to run python-tests, r=davehunt
This switches most tests over to use pytest as the runner instead of unittest (taking
advantage of the fact that pytest can run unittest based tests).

There were a couple tests that had failures when swithing to pytest:
config/tests/unit-expandlibs.py
xpcom/idl-parser/xpidl/runtests.py

For these tests, I added a runwith='unittest' argument so that they still run the
same way as before. Once we fix them to use pytest, the unittest logic in mozunit.py
can be deleted.

MozReview-Commit-ID: Gcsz6z8MeOi
2017-08-29 14:50:33 -04:00
Andrew Halberstadt
d4a9ebe802 Bug 1339178 - Add python/mach_commands.py and config/mozunit.py to flake8 linter, r=davehunt
MozReview-Commit-ID: Gcsz6z8MeOi
2017-08-29 14:41:38 -04:00
Andrew Halberstadt
a46e05d753 Bug 1393826 - [python-test] Make sure pytest errors get flagged by treeherder, r=davehunt
This is a quick and dirty hack to get treeherder to show pytest failures. Long term, we might
want to investigate using something like pytest-mozlog. But the benefit of this approach is
we get to keep pytest's fantastic default log format.

MozReview-Commit-ID: Gcsz6z8MeOi
2017-08-25 12:03:23 -04:00
Andrew Halberstadt
1386807b19 Bug 1048446 - [python-test] Add 'sequential' key to python.ini manifests so tests can opt out of running in parallel, r=jmaher
MozReview-Commit-ID: DQWJDdU9QHO
2017-06-01 09:50:15 -04:00
Andrew Halberstadt
44dc5b30c3 Bug 1048446 - [python-test] Set up a temporary directory for tests to use, r=gbrown
We set up the temporary directory here so that it persists across multiple test invocations, as each
test is run in its own subprocess.

MozReview-Commit-ID: 7SNip54AqEI
2017-02-28 10:27:19 -05:00
Andrew Halberstadt
87d047232c Bug 1345109 - Ensure |mach python-test| errors out if no tests are found, r=mshal
Because test_objects was a generator, using it in the condition always returned True,
even if no tests were found. But extending test_objects to the manifest, converts it
to a list. So this patch simply moves the 'no tests' check a bit later on.

MozReview-Commit-ID: JpETWD1WQWH
2017-03-07 10:55:07 -05:00
Andrew Halberstadt
aac4585624 Bug 1335873 - Convert marionette harness unittests to standard python unittests, r=maja_zf
This formats the marionette-harness python tests to be a regular |mach python-test| suite. Though
we add subsuite=marionette, this is just for automation purposes. The new preferred way to run the
marionette harness tests locally is:
./mach python-test testing/marionette

They will also run if running the full suite.

The mozbase packages.txt file modifies mozlog to use 'setup.py' instead of 'pth'. The reason for
this is that the marionette-harness tests use the pytest_mozlog pytest plugin for formatting
their results (converts pytest format into something resembling the standard tbpl logging format).
In order for this plugin to get picked up however, mozlog's setup.py file needs to be processed.

MozReview-Commit-ID: Ata99evHxbd
2017-02-15 16:38:45 -05:00
Sebastian Hengst
26ea5b9d14 Backed out changeset 3c0a7527608a (bug 1335873) 2017-03-01 17:35:06 +01:00
Andrew Halberstadt
d08b8a2c05 Bug 1335873 - Convert marionette harness unittests to standard python unittests, r=maja_zf
This formats the marionette-harness python tests to be a regular |mach python-test| suite. Though
we add subsuite=marionette, this is just for automation purposes. The new preferred way to run the
marionette harness tests locally is:
./mach python-test testing/marionette

They will also run if running the full suite.

The mozbase packages.txt file modifies mozlog to use 'setup.py' instead of 'pth'. The reason for
this is that the marionette-harness tests use the pytest_mozlog pytest plugin for formatting
their results (converts pytest format into something resembling the standard tbpl logging format).
In order for this plugin to get picked up however, mozlog's setup.py file needs to be processed.

MozReview-Commit-ID: Ata99evHxbd
2017-02-15 16:38:45 -05:00
Andrew Halberstadt
873ca61ce2 Bug 1003417 - Add ability to run subsuites to |mach python-test|, r=ted
This adds the ability to use manifestparser subsuites to |mach python-test|.
Subsuites are based on the premise of a "default" set that gets run when no
subsuites are explicitly specified. When a test is labelled with a subsuite,
that test is removed from the default set and will only run if that subsuite
is explicitly specified. This will allow us to chunk python unittests out of
'make check' piecemeal. The default set will run in 'make check', and
individual tasks (e.g mozbase), will specify a subsuite explicitly.

The |mach python-test| implementation is slightly different. By default,
subsuites are not considered if developers do not pass in --subsuite. This
means running |mach python-test| without arguments will still run the full set
of tests, and similarly, passing in test paths will *just work*.

If for some reason a developer needs to actually run the default set, a special
"default" subsuite has been create, so they can use
|mach python-test --subsuite default|. This default subsuite is also what 'make
check' will explicitly invoke.

MozReview-Commit-ID: FaHb4nvuoK9
2016-11-17 16:30:33 -05:00
Mike Shal
7e8d2b63d5 Bug 1325197 - Add logging around mach python-test; r=gps
In bug 1308472 we are seeing 'make -k check' fail intermittently with
the only apparent error message something like:

make: *** [check] Error 245

This debug should make it more clear which test (if any) is responsible
for setting the return code in 'mach python-test', and whether or not
'mach python-test' is actually reaching the end of the function.

MozReview-Commit-ID: 6IQrZQqs8ij
2016-12-21 11:12:55 -05:00
Andrew Halberstadt
fd725caf73 Bug 1317970 - Filter python unittests through manifestparser.active_tests, r=chmanchester
The build system's TestResolver does a pretty good job of getting the right manifestparser
based tests to run, but it isn't perfect. Notably, it ignores the 'disabled' key. We filter
the tests through manifestparser here to make sure the build system didn't miss anything.
For context, this is also what the other test harnesses (e.g mochitest) do as well.

MozReview-Commit-ID: FaHb4nvuoK9
2016-11-17 16:30:27 -05:00
Andrew Halberstadt
7663ee0695 Bug 1317970 - Use manifestparser manifests for python unit tests, r=chmanchester
This deprecates PYTHON_UNIT_TESTS and replaces it with PYTHON_UNITTEST_MANIFESTS.
In the build system, this means python unittests will be treated the same as all
other test suites that use manifestparser. New manifests called 'python.ini' have
been created for all test directories containing python unittests.

MozReview-Commit-ID: IBHG7Thif2D
2016-11-16 09:59:22 -05:00
Andrew Halberstadt
2a88ad7d2b Bug 1309060 - Give |mach python-test| the ability to run tests in parallel, r=gps
We recently switched make check to call into |mach python-test| rather than invoking python
itself for each test file. But this ended up slowing down the tests as they were no longer
being run in parallel. This patch adds a --jobs flag to python-tests and runs test files in
parallel.

Note: if more than one job is used, output per test will be buffered and printed at the end
to avoid interleaving. This has the unfortunate side effect of making |mach python-test| look
like it is hanging, especially if running a very long file like mozbase's test.py. For this
reason, we still use -j1 by default so output will continue to be streamed. In automation we
will use multiple processes though.

MozReview-Commit-ID: 3u0wOFmyQLI
2016-10-11 12:29:09 -04:00
Anjana Vakil
da012898f8 Bug 1253359 - Use vendored Pytest in python-test and Mn harness tests r=gps
In the `python-test` mach command and the mozharness script for
the Marionette harness tests, use the vendored-in Pytest
instead of installing from pip.

Add the Marionette harness test requirements file to the
file_patterns in the definition of the marionette-harness taskcluster
job, as changes to the requirements should trigger the job to run.


MozReview-Commit-ID: J5pln2WB4GY
2016-08-05 20:10:09 +02:00
Andrew Halberstadt
0fad1a97d3 Bug 1271734 - Move all eslint related infrastructure to tools/lint, r=miker
This commit simply moves 'testing/eslint' to 'tools/lint/eslint' and the eslint related
mach command from 'python/mach_commands.py' to 'tools/lint/mach_commands.py'. It shouldn't
have any functional change on running eslint, either through mach or taskcluster.

This is in preparation for bug 1258341, to make the diffs there a little easier to read.

MozReview-Commit-ID: K03sn9lv9Lv
2016-06-02 15:38:36 -04:00
Michael Ratcliffe
957bb0b814 Bug 1273623 - Optimize eslintModuleHasIssues. r=jryans
MozReview-Commit-ID: Iu1IhDCgLJm
2016-05-18 16:45:49 +01:00
Michael Ratcliffe
f1676ddac1 Bug 1270851 - mach eslint should install eslint and their dependencies if not installed r=gps 2016-05-13 14:06:08 +01:00
Michael Ratcliffe
0dbf9a00e1 Bug 1265082 - ESLint jobs are apparently hitting the network r=me,dustin,pbro,jryans
So a few changes here:
- node_modules is downloaded using tooltool so that we dont need to rely on external infrastructure.
- We have a npm-shrinkwrap.json file that version locks all of our node packages.
- eslint, eslint-plugin-mozilla etc. are now all installed locally.

In reality this means that we don't hit the network and we don't force users into installing global packages.

./mach eslint --setup has also been improved. We install packages locally and display the path of the user's eslint binary (useful for configuring editors).

eslint-plugin-mozilla has been moved from testing/eslint-plugin-mozilla to /testing/eslint/eslint-plugin-mozilla.

The node_modules directory for eslint and other plugins is located in testing/eslint/.

MozReview-Commit-ID: 4SFSxzka6BS
2016-05-02 00:22:31 +01:00
Alexandre Poirot
f3813a20e5 Bug 1271706 - Warn when eslint is outdated. r=gps 2016-05-11 07:16:33 -07:00
J. Ryan Stinnett
9562eb1da5 Bug 1270596 - Upgrade to ESLint 2.9.0. r=ahal
MozReview-Commit-ID: IylFUWf1HVG
2016-05-06 10:41:04 -05:00
Hector Zhao
a61a5057f4 Bug 1268752 - Bug fix in locating eslint with npm. r=gps
MozReview-Commit-ID: 2020nKjC5kL
2016-04-29 10:50:40 +08:00
Bob Silverberg
2199a9f406 Bug 1263637 - Fix eslint 2 warnings for WebExtensions code. r=kmag
MozReview-Commit-ID: CNLX3xjIoNV
2016-04-18 09:08:05 -04:00
Maja Frydrychowicz
6c27872e10 Bug 1261412 - Add mach python-test option to collect tests based on path alone; r=gps
MozReview-Commit-ID: 4rsG6sMPqpv
2016-04-18 10:21:56 -04:00
Maja Frydrychowicz
56af599c3c Bug 1261412 - Relax test output requirement in mach python-test; r=gps
This accounts for default unittest and pytest output formatting,
in addition to mozunit.

MozReview-Commit-ID: 749CD0xQezX
2016-04-14 13:06:47 -04:00
Maja Frydrychowicz
6b5ab8307a Bug 1261412 - Report when mach python-test collects no tests; r=gps
MozReview-Commit-ID: GDlshUUjO7C
2016-03-22 18:53:57 -04:00
Dave Townsend
b99c8e31ad Bug 1257246: Update the version of eslint that mach installs. r=gps
MozReview-Commit-ID: mcb4QwtM96
2016-03-17 10:58:12 -07:00
Dave Townsend
ac28a6408a Bug 1262978: Run npm to get the path to installed binaries if eslint can't otherwise be found. r=gps
MozReview-Commit-ID: HFWID6QhpS2
2016-04-07 13:18:40 -07:00