Граф коммитов

56 Коммитов

Автор SHA1 Сообщение Дата
Alex Lopez 455d9a088b Bug 1696251 - Pass MachCommandBase object as first argument for Mach Commands. r=mhentges,remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers
As an intermediate step to allow mach commands as standalone functions, the MachCommandBase
subclass instance that currently corresponds to self has to be made available as a separate
argument (named command_context).

Differential Revision: https://phabricator.services.mozilla.com/D109650
2021-05-17 16:15:58 +00:00
Butkovits Atila 2e34e363b9 Backed out 2 changesets (bug 1696251) for causing js-bench-sm failures. CLOSED TREE
Backed out changeset 1c84c9a34575 (bug 1696251)
Backed out changeset e169193b7423 (bug 1696251)
2021-04-23 02:53:36 +03:00
Alex Lopez d1a82b8092 Bug 1696251 - Pass MachCommandBase object as first argument for Mach Commands. r=mhentges,remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers
As an intermediate step to allow mach commands as standalone functions, the MachCommandBase
subclass instance that currently corresponds to self has to be made available as a separate
argument (named command_context).

Differential Revision: https://phabricator.services.mozilla.com/D109650
2021-04-22 18:56:15 +00:00
Cosmin Sabou 785f9b8a87 Backed out changeset d4a5d8567977 (bug 1696251) for non-unified build bustages. CLOSED TREE 2021-04-19 19:43:31 +03:00
Alex Lopez 75dfe35468 Bug 1696251 - Pass MachCommandBase object as first argument for Mach Commands. r=mhentges,remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers
As an intermediate step to allow mach commands as standalone functions, the MachCommandBase
subclass instance that currently corresponds to self has to be made available as a separate
argument (named command_context).

Differential Revision: https://phabricator.services.mozilla.com/D109650
2021-04-19 16:15:11 +00:00
Nisarg 4b18d50091 Bug 1698838 - Create a format command as an alternative to lint --fix. r=ahal
***
Bug 1698838 - Restrict the list of linters to valid formatters r=ahal

***
Bug 1698838 - Abort formatting even if one of the linters passed is invalid r=ahal

***

***

Differential Revision: https://phabricator.services.mozilla.com/D109231
2021-04-12 18:01:14 +00:00
Steve Fink 85ba99a8de Bug 1703336 - Globally exclude vcs dirs r=linter-reviewers,ahal
Differential Revision: https://phabricator.services.mozilla.com/D110978
2021-04-07 16:53:45 +00:00
Ricky Stewart 7860c29e4c Bug 1674923 - Pass down `virtualenv_manager` from `mach lint` down to linters r=ahal
Before, on Windows, this resulted in installing the package in the parent environment (not the `virtualenv`). We fix this by passing down the `virtualenv_manager` so linters can install packages they need using that object's helper methods.

Differential Revision: https://phabricator.services.mozilla.com/D95738
2020-11-06 20:51:16 +00:00
Ricky Stewart fe502f41e1 Bug 1660338 - Pass down location of `virtualenv` `bin` directory from `mach lint` invocation down to linters r=ahal
The logic the `black` and `flake8` linters were using to find the location of the appropriate binaries for linting was wrong in certain cases given how `mach lint` uses subprocesses to batch work. Instead, we allow the option to override the old janky behavior with a known-good path.

Differential Revision: https://phabricator.services.mozilla.com/D95396
2020-10-31 04:42:11 +00:00
Andrew Halberstadt d0fbcca0b6 Bug 985141 - [mozbuild] Remove leading underscore from MozbuildObject._activate_virtualenv, r=firefox-build-system-reviewers,perftest-reviewers,andi,AlexandruIonescu,rstewart
This function is used all across the tree and should be considered a public API.

Differential Revision: https://phabricator.services.mozilla.com/D85045
2020-07-28 16:06:10 +00:00
Sylvestre Ledru 9b0a16fc65 Bug 1650834 - Make tools/lint code black compatible r=ahal
Differential Revision: https://phabricator.services.mozilla.com/D82401
2020-07-09 14:09:31 +00:00
Mihai Alexandru Michis 3a33785d38 Backed out changeset 9b15a67a50c3 (bug 1650834) as requested by Sylvestre.
CLOSED TREE
2020-07-07 11:49:36 +03:00
Sylvestre Ledru 9c734f1175 Bug 1650834 - Make tools/lint code black compatible r=ahal
Differential Revision: https://phabricator.services.mozilla.com/D82401
2020-07-07 08:09:31 +00:00
Razvan Maries 65bc3a986b Backed out changeset 4911fdc92832 (bug 1650834) for Docker Images bustages. CLOSED TREE 2020-07-06 22:30:17 +03:00
Sylvestre Ledru 16145a8de0 Bug 1650834 - Make tools/lint code black compatible r=ahal
Differential Revision: https://phabricator.services.mozilla.com/D82401
2020-07-06 18:11:28 +00:00
Rob Lemley 4543cab9bf Bug 1622974 - Add global exclude file for Thunderbird mozlint tests. r=sylvestre
Differential Revision: https://phabricator.services.mozilla.com/D67078

--HG--
extra : moz-landing-system : lando
2020-03-20 16:51:35 +00:00
Rob Lemley c7061b9ab3 Bug 1622974 - Add mozlint parameter to set additional config file path. r=ahal
Adds --config-paths parameter to mach mozlint where test configuration
files (.yml) can be located. The default path "tools/lint" is set automatically
and additional paths have preference over the default.
This allows Thunderbird to run mozlint-based tests in Taskcluster with a
different configuration.

Differential Revision: https://phabricator.services.mozilla.com/D67077

--HG--
extra : moz-landing-system : lando
2020-03-20 17:12:27 +00:00
Andrew Halberstadt d3eae4b83c Bug 1580280 - [mozlint] Run |mach lint| with Python 3 and drop support for Python 2 r=mars
Differential Revision: https://phabricator.services.mozilla.com/D45441

--HG--
extra : moz-landing-system : lando
2019-09-30 15:09:41 +00:00
Oana Pop Rus 4b9792db7c Backed out changeset 371641b1010b (bug 1580280) for lints failure on a CLOSED TREE 2019-09-26 00:18:33 +03:00
Andrew Halberstadt fdc7d0afac Bug 1580280 - [mozlint] Run |mach lint| with Python 3 and drop support for Python 2 r=mars
Differential Revision: https://phabricator.services.mozilla.com/D45441

--HG--
extra : moz-landing-system : lando
2019-09-25 20:03:14 +00:00
Sylvestre Ledru 20b343675a Bug 1577726 - Move generated directories into a dedicated file (Generated.txt) from ThirdPartyPaths.txt r=ahal
Differential Revision: https://phabricator.services.mozilla.com/D44147

--HG--
extra : moz-landing-system : lando
2019-09-05 14:24:21 +00:00
Andrew Halberstadt 773c593e22 Bug 1570772 - [lint] Add the root 'node_modules' to the GLOBAL_EXCLUDES list, r=sylvestre
Depends on D41755

Differential Revision: https://phabricator.services.mozilla.com/D41756

--HG--
extra : moz-landing-system : lando
2019-08-13 13:45:46 +00:00
Nick Alexander fd38e457ec Bug 1512487 - Part 1: Allow lints to inspect part of the build environment. r=ahal
This allows lints to "condition" themselves on having a build
environment or a specific build application.  It also adds the "name"
parameter, so that setup functions can be shared across lints.

`MozbuildObject` cannot be used as parameters to functions distributed
via multiprocessing, since they cannot be pickled (due, currently, to
internal terminal handles).  Therefore we extract just a few key
parts of the environment to expose.

Differential Revision: https://phabricator.services.mozilla.com/D35274

--HG--
extra : moz-landing-system : lando
2019-08-02 20:30:02 +00:00
Andrew Halberstadt 8dbaa4117c Bug 1375861 - [mozlint] Globally exclude paths listed in tools/rewriting/ThirdPartyPaths.txt from our linters, r=sylvestre
Differential Revision: https://phabricator.services.mozilla.com/D9126

--HG--
extra : moz-landing-system : lando
2018-10-18 15:27:59 +00:00
Andrew Halberstadt e36de7239c Bug 1494069 - [lint] Explicitly list out objdirs rather than depend on 'obj*' in the global exclude, r=rwood
When using globs in exclude directorives, FileFinder will return every *file*
that gets matched. This is can be thousands of files in the case of an objdir.
While we now collapse these files down to highest possible directories, this
collapse operation can still take a noticeable amount of time (0.6s). This
simply scans topsrcdir for files that start with 'obj' to avoid the glob.

This also moves the '_activate_virtualenv' call to the top of the function
because in CI, this will cause an objdir to be created (to store the
virtualenv). If this happens *after* calculating the global excludes, we won't
catch it since it doesn't exist yet. This will result in the objdir's
virtualenv being linted and erroneous failures.

Depends on D7739

Differential Revision: https://phabricator.services.mozilla.com/D7740

--HG--
extra : moz-landing-system : lando
2018-10-12 15:57:44 +00:00
Andrew Halberstadt f4c851912d Bug 1494069 - [mozlint] Collapse exclude paths into their smallest possible set, r=egao
Often we specify globs in our exclude patterns, e.g:

    exclude:
        - **/node_modules
        - obj*

However, these globs get expanded out to *every* file that matches them. This
can sometimes be thousands or even tens of thousands of files.

We then pass these paths on to the underlying linters and tell them to
exclude them all. This causes a lot of overhead and slows down performance.

This commit implements a "collapse" function. Given a set of paths, it'll
collapse them into the smallest set of parent directories that contain the
original set, and that don't contain any extra files.

For example, given a directory structure like this:

    a
    -- foo.txt
    -- b
       -- bar.txt
       -- baz.txt
    -- c
       -- ham.txt
       -- d
          -- spam.txt

Then the following will happen:

     >>> collapse(['a/foo.txt', 'a/b/bar.txt', 'a/c/ham.txt', 'a/c/d/spam.txt'])
     ['a/foo.txt', 'b/bar.txt', 'c']

Since all files under directory 'c' are specified by the original set (both
'c/ham.txt' and 'c/d/spam.txt'), we can collapse it down to just 'c'. However
not all files under 'b' are specified (we're missing 'a/b/baz.txt'), so we
can't collapse 'b' (and by extension also can't collapse 'a').

If we had included 'a/b/baz.txt':

     >>> collapse(['a/foo.txt', 'a/b/bar.txt', 'a/b/baz.txt', 'a/c/ham.txt', 'a/c/d/spam.txt'])
     ['a']

In both cases, the smallest set of paths that contains the original set (and
only the original set) is computed.

The collapse function has a little bit of overhead but it's not too bad.
For example collapsing all files matched by '**/node_modules' takes ~0.015s.
Collapsing two full objdirs, takes ~0.6s. But a follow up commit is planned to
make sure we stop using 'obj*' to reduce that overhead.

Depends on D7738

Differential Revision: https://phabricator.services.mozilla.com/D7739

--HG--
extra : moz-landing-system : lando
2018-10-12 15:57:42 +00:00
Csoregi Natalia f00a0ea9cc Backed out 3 changesets (bug 1494069) for blocking 1498215. a=backout
Backed out changeset 9752f179b9c3 (bug 1494069)
Backed out changeset fe0fb280dbfc (bug 1494069)
Backed out changeset a2956764213e (bug 1494069)
2018-10-12 13:11:04 +03:00
Narcis Beleuzu e8f62dbf84 Backed out changeset b01876f4f16e (bug 1498215) for bustages on test_pathutils.py. CLOSED TREE 2018-10-11 23:56:45 +03:00
James Graham 766c447843 Bug 1498215 - Fix problem importing scandir when system scandir exists, r=davehunt
If scandir is already present on the system the attempt to import the
c helper library will currently find the c helper from the system
install which may well be an outdated verion, so causing mach to
break. To solve this this patch does two things:

* Stops importing scandir in files that are run unconditionally when
  invoking mach. This is generally considered good for performance
  reasons.

* Installs the vendored scandir into the virtualenv for `mach lint`
  rather than trying to import it directly from the source tree and so
  not getting the c helper library.

Differential Revision: https://phabricator.services.mozilla.com/D8379

--HG--
extra : moz-landing-system : lando
2018-10-11 15:05:16 +00:00
Andrew Halberstadt 1c02345779 Bug 1494069 - [lint] Explicitly list out objdirs rather than depend on 'obj*' in the global exclude, r=rwood
When using globs in exclude directorives, FileFinder will return every *file*
that gets matched. This is can be thousands of files in the case of an objdir.
While we now collapse these files down to highest possible directories, this
collapse operation can still take a noticeable amount of time (0.6s). This
simply scans topsrcdir for files that start with 'obj' to avoid the glob.

This also moves the '_activate_virtualenv' call to the top of the function
because in CI, this will cause an objdir to be created (to store the
virtualenv). If this happens *after* calculating the global excludes, we won't
catch it since it doesn't exist yet. This will result in the objdir's
virtualenv being linted and erroneous failures.

Depends on D7739

Differential Revision: https://phabricator.services.mozilla.com/D7740

--HG--
extra : moz-landing-system : lando
2018-10-05 19:48:53 +00:00
Andrew Halberstadt d2e75d0ea8 Bug 1436802 - [lint] Add some tests for the flake8 linter integration r=andi
This essentially tests tools/lint/python/flake8.py. Though it also adds
a basic framework for testing all the other linters as well. Getting this
added now will allow others to collaborate on adding more tests without
needing to get to 100% coverage for all linters right off the bat.

All python tests under tools/lint/test will run as part of the 'ml' task
on Linux, and the build task on Windows (OSX coverage is currently missing
for python tests).

The flake8 linter currently has a bug where the 'exclude' argument is
ignored. This is why we need to also exclude 'tools/lint/test/files' in
topsrcdir/.flake8, even though it is already listed in the
'mach_commands.py'. Other linters shouldn't need to do this, the exclusion
in 'mach_commands.py' should be good enough. See bug 1277851 for more
details.

MozReview-Commit-ID: 9ho8C83eeuj

--HG--
extra : rebase_source : 0adb01aa81c06f26cb891ae9f92a17f8f9fdf111
2018-03-22 17:24:15 -04:00
Tom Prince 9761c4f2bf Bug 1384273 - Get lint root dir from mach; r=ahal
MozReview-Commit-ID: I6L6a9Sim49

--HG--
extra : rebase_source : 5ee0fe805c417b192f7408ea5cbcee73c902c593
2017-07-22 01:28:34 -06:00
Mark Banner 021f1ff90a Bug 1358540 - Change the *.lint files to be *.lint.py to better support editor integration & flake8 linting. r=smacleod
MozReview-Commit-ID: 4KK2GZK7xul

--HG--
rename : python/mozlint/test/linters/badreturncode.lint => python/mozlint/test/linters/badreturncode.lint.py
rename : python/mozlint/test/linters/explicit_path.lint => python/mozlint/test/linters/explicit_path.lint.py
rename : python/mozlint/test/linters/external.lint => python/mozlint/test/linters/external.lint.py
rename : python/mozlint/test/linters/invalid_exclude.lint => python/mozlint/test/linters/invalid_exclude.lint.py
rename : python/mozlint/test/linters/invalid_include.lint => python/mozlint/test/linters/invalid_include.lint.py
rename : python/mozlint/test/linters/invalid_type.lint => python/mozlint/test/linters/invalid_type.lint.py
rename : python/mozlint/test/linters/missing_attrs.lint => python/mozlint/test/linters/missing_attrs.lint.py
rename : python/mozlint/test/linters/missing_definition.lint => python/mozlint/test/linters/missing_definition.lint.py
rename : python/mozlint/test/linters/raises.lint => python/mozlint/test/linters/raises.lint.py
rename : python/mozlint/test/linters/regex.lint => python/mozlint/test/linters/regex.lint.py
rename : python/mozlint/test/linters/string.lint => python/mozlint/test/linters/string.lint.py
rename : python/mozlint/test/linters/structured.lint => python/mozlint/test/linters/structured.lint.py
rename : tools/lint/eslint.lint => tools/lint/eslint.lint.py
rename : tools/lint/flake8.lint => tools/lint/flake8.lint.py
rename : tools/lint/wpt.lint => tools/lint/wpt.lint.py
rename : tools/lint/wpt_manifest.lint => tools/lint/wpt_manifest.lint.py
extra : rebase_source : 97de88e0328e91347192672b848b286df1904ade
2017-04-21 17:31:15 +01:00
Carsten "Tomcat" Book 1dd975c180 Backed out changeset eec770d062b4 (bug 1358540) for bustage
--HG--
rename : tools/lint/eslint.lint.py => tools/lint/eslint.lint
rename : tools/lint/flake8.lint.py => tools/lint/flake8.lint
rename : tools/lint/wpt.lint.py => tools/lint/wpt.lint
rename : tools/lint/wpt_manifest.lint.py => tools/lint/wpt_manifest.lint
2017-04-25 10:15:07 +02:00
Mark Banner 8e42062ea3 Bug 1358540 - Change the *.lint files to be *.lint.py to better support editor integration & flake8 linting. r=smacleod
MozReview-Commit-ID: 4KK2GZK7xul

--HG--
rename : tools/lint/eslint.lint => tools/lint/eslint.lint.py
rename : tools/lint/flake8.lint => tools/lint/flake8.lint.py
rename : tools/lint/wpt.lint => tools/lint/wpt.lint.py
rename : tools/lint/wpt_manifest.lint => tools/lint/wpt_manifest.lint.py
extra : rebase_source : 66e4b4f95109c2645d0fb7be273de343408b9406
2017-04-21 17:31:15 +01:00
Francesco Pischedda 78c3624c28 Bug 1285555 - [flake8] Automatically install/update flake8 package to correct version r=ahal
Changed flake8 installation strategy, try to update it using testings/lint/flake8_requirements.txt
moved flake8_requirements to tools/lint/flake8 directory
extracted common pip invocations to _run_pip function
minor fixes
fixed calls to check_process (concatenating list to tuple)
removed update_pip function and its error message variable
if flake8 installation reports and error print pip command output - replaced out with e.output in print function

MozReview-Commit-ID: Fmq22aL8dMq

--HG--
extra : rebase_source : 2e2f942c1ffab012795c632ceacf6debf0dc1407
2016-10-15 09:45:22 +02:00
Philipp Kewisch 7a35040ddc Bug 1306366 - mach eslint no longer accepts --no-ignore as a parameter. r=ahal
MozReview-Commit-ID: LpT0Qlv6vsE

--HG--
extra : rebase_source : ea59047c9b9029c7e5362e68499b24a0eac67eb1
2016-10-14 14:20:23 +02:00
Andrew Halberstadt 9703ac2438 Bug 1258341 - Modify 'eslint' implementation to work with the mozlint framework, r=smacleod
This integrates 'eslint' with the mozlint framework. The old |mach eslint| command is kept around
for backwards compatibility and will simply dispatch to |mach lint|. But |mach lint| should be
preferred as the old command may eventually be removed.

The old |mach eslint| command should be mostly backwards compatible with a few exceptions:

    1. Can no longer define --extensions on the command line, this is instead hardcoded into
       eslint.lint.
    2. No longer using eslint formatters. However, the default mozlint formatter should be
       identical to the default eslint formatter, so developers should not notice a change.
       This does mean that non-default eslint formatters can no longer be used unless a mozlint
       copy of them is created.
    3. Installs dependencies automatically without prompting the user. This was necessary due to
       python multiprocessing limitations, but is actually also a better UX. Because the npm
       dependencies aren't global anymore, there isn't really any reason *not* to install them
       automatically.

Apart from that, any difference from the old |mach eslint| I'd consider a bug.

The main eslint implementation now lives in tools/lint/eslint.lint instead of
tools/lint/mach_commands.py.


MozReview-Commit-ID: KYhC6SEySC3

--HG--
extra : rebase_source : 36d06b1a3fced764e17154cc53091d7722919b67
2016-08-30 14:28:56 -04:00
Matthew Noorenberghe a59bf6717f Bug 1270926 - Support ESLint on XHTML files. r=ahal
MozReview-Commit-ID: 4iYODbZQiB9
2016-08-23 14:42:21 -07:00
Jared Wein df53d45313 Bug 1291910 - Add ability for mach eslint to accept --fix. r=Felipe
MozReview-Commit-ID: 5PB2oI2jPri

--HG--
extra : rebase_source : 42d03b9ab93c4ef390d0dfa59d25dd330309071d
2016-08-03 19:18:55 -04:00
J. Ryan Stinnett c9822d13cd Bug 1288225 - Exclude eslint-plugin-mozilla from tooltool. r=ahal
This removes the in-tree plugin from the tooltool archive and uses that code
directly from the Gecko checkout instead.

For automation, we now get ESLint and external plugins from tooltool and then
symbolic link to the in-tree plugin.

For local development, we install ESLint and external plugins following the
shrinkwrap file created from the last change to the tooltool archive.  The local
plugin is then installed.

This change also removes the list of module versions from mach_commands.py, so
there is only one place to update module versions for the future.

MozReview-Commit-ID: AhbZ8lVPmN4
2016-07-28 11:53:54 -05:00
J. Ryan Stinnett f8c4ba2279 Bug 1288225 - Use PEP 8 style for method names. r=ahal
MozReview-Commit-ID: 7ci9vAdUw0J
2016-07-28 11:53:54 -05:00
Tom Tromey 8cd914069c Bug 1264649 - add reject-some-requires eslint rule; r=pbro
MozReview-Commit-ID: FVxy2c5Wsgg

--HG--
extra : rebase_source : 901f8aee971f9ab48cef7eceffb4cfc8ad567822
2016-07-21 08:39:29 -06:00
Julian Descottes 095a6309b9 Bug 1285936 - eslint mozilla plugin: fix filename in import globals & bump to 0.1.1
The file base/content/browser-fullScreen.js was renamed. This patch updates the reference
to this filename in the esling rule import-browserjs-globals.js and bumps the version to
0.1.1.

MozReview-Commit-ID: 9hibfDnbtp
2016-07-19 12:51:47 -05:00
Andrew Halberstadt 3c8be23f37 Bug 1281899 - [mozlint] Add ability to lint files touched by revisions and/or the working directory, r=smacleod
This adds two parameters, --rev and --workdir. Each works both with mercurial and git (though the syntax for
specifying revisions is different between them). The value is simply forwarded to either |hg log| or |git diff|
so syntax like |mach lint -r .~4::.| or |mach lint -r "HEAD~4 HEAD"| will work as expected.

MozReview-Commit-ID: aOGp2Yrncs

--HG--
extra : rebase_source : d2cb834d4cc1a083171a3551af4e72c8a7d14021
2016-06-24 14:09:58 -04:00
Andrew Halberstadt 482f8a956c Bug 1281899 - [mozlint] Create cli module and move logic from tools/lint/mach_commands.py there, r=smacleod
There is currently no built-in user interface to mozlint. The only existing interface is the
external cli provided by |mach lint|. However, in the future mozlint may need to be used in a
context where mach isn't readily available (i.e version-control-tools). This patch basically
just moves the cli logic out of mach_commands.py, and into mozlint core. That way it can be
re-used in other places without needing to be re-implemented.

The |mach lint setup| subcommand was removed because apparently subcommands don't work with
the parser attribute. Nothing was using it yet anyway, so I removed it for now. It may get
re-added in some form in the future.

MozReview-Commit-ID: aOGp2Yrncs

--HG--
extra : rebase_source : 8f7530de96e5c131d2ed5bfcdd7a159329401e5b
2016-06-24 14:06:22 -04:00
Carsten "Tomcat" Book c6816bf0df merge mozilla-inbound to mozilla-central a=merge 2016-06-12 11:26:13 +02:00
J. Ryan Stinnett 51611069ed Bug 1279515 - Update ESLint plugin version after rule change. r=jdescottes
MozReview-Commit-ID: ECSIVMfsGHL
2016-06-10 11:28:03 -05:00
Andrew Halberstadt 13a551f7f9 Bug 1277641 - [mozlint] Add --no-filter option to make experimenting locally easier, r=smacleod
This makes it easier to lint a path that otherwise wouldn't have been linted due to the include/exclude
directives. Now, you can pass in -n/--no-filter instead of needing to modify the linter configuration file.

MozReview-Commit-ID: GMJuE2C1NyY

--HG--
extra : rebase_source : 03627e930f76903ad629cb01b58c4ae7372e4bb1
2016-06-02 15:14:07 -04:00
Julian Descottes eace7c89ed Bug 1279210 - eslint setup: fix eslint module path;r=ahal
MozReview-Commit-ID: HL4tIwgkSau

--HG--
extra : rebase_source : 8169cbc543528a6b2a6e2bffbf4a202dfcea1a93
2016-06-09 14:40:48 +02:00