Summary:
if you run `arc lint --output json` and don't have your environment correctly set up, the failure to run the linter was silently ignored.
I wanted to fix that, but then realized that we could integrate this better without too much effort, hence this diff.
This is a small python script that processes the output from the check code test and captures the appropriate context so that `arc lint` can show you where in the code the problem(s) lie.
Test Plan:
This is the output when the environment is not set up correctly:
```
$ arc lint
>>> Lint for lint.py:
Error (S&RX) ENVIRON
Please either set MERCURIALRUNTEST env var to the full path to
run-tests.py, or add the containing directory to your $PATH
>>> 1
Error (S&RX) ENVIRON
Please either set MERCURIALRUNTEST env var to the full path to
run-tests.py, or add the containing directory to your $PATH
>>> 1
```
This is the same thing but in json output mode:
```
$ arc lint --output json
{".arcconfig":[]}
{"scripts\/lint.py":[]}
{"lint.py":[{"line":"1","char":null,"code":"S&RX","severity":"error","name":"ENVIRON","description":"Please either set MERCURIALRUNTEST env var to the full path to run-tests.py, or add the containing directory to your $PATH","original":null,"replacement":null,"granularity":1,"locations":[],"bypassChangedLineFiltering":null,"context":""},{"line":"1","char":null,"code":"S&RX","severity":"error","name":"ENVIRON","description":"Please either set MERCURIALRUNTEST env var to the full path to run-tests.py, or add the containing directory to your $PATH","original":null,"replacement":null,"granularity":1,"locations":[],"bypassChangedLineFiltering":null,"context":""}]}
```
This shows the lint errors from my `hg publish` stack:
```
>>> Lint for phabricator/arcconfig.py:
Error (S&RX) CheckCode
don't raise generic exceptions
18 def load_for_path(path):
19 homedir = os.getenv('HOME')
20 if not homedir:
>>> 21 raise Exception('$HOME environment variable not found')
22
23 # Use their own file as a basis
24 userconfig = _load_file(os.path.join(homedir, '.arcrc')) or {}
```
Reviewers: #sourcecontrol, ttung, lcharignon
Reviewed By: lcharignon
Subscribers: mjpieters
Differential Revision: https://phabricator.fb.com/D3203666
Signature: t1:3203666:1461185075:e9b03c8251d7e3b8e965b81146d17cdeac75d837
Summary:
Editorconfig (http://editorconfig.org/) is a file format helping define coding
styles like spaces, tabs etc. It supports a wide range of editors. The upstream
is using it already.
This patch adds a simple .editorconfig, making it clear we use 8-char tabs in
C code, 4-char spaces in Python and Shell scripts, and we don't keep trailing
spaces.
Besides, do a style fixes for `scripts/runcheckcode.sh`. But note that
`scripts/scm-prompt.sh` is left untouched since it was copied from other
repository and we may sync it later.
Test Plan:
Use `gg=G` in vim to format `scripts/runcheckcode.sh` and make sure it does
not showed up in Phabricator with space changes ignored.
Reviewers: #sourcecontrol, durham, ttung
Reviewed By: durham
Subscribers: durham, mjpieters
Differential Revision: https://phabricator.fb.com/D3197242
Signature: t1:3197242:1461129423:e24a898370f8e8eb9bea8be414fee8670f06c16d
Summary:
Before this patch, `runcheckcode.sh` sets an extra config option
`extensions.lz4revlog=`, which will break if lz4revlog is not installed
in the system. This patch drops the config option if the repo does not
require `lz4revlog`.
Test Plan: Run `runcheckcode.sh` in both lz4revlog and non-lz4revlog repos.
Reviewers: #sourcecontrol, ttung
Reviewed By: ttung
Subscribers: mjpieters
Differential Revision: https://phabricator.fb.com/D3196200
Signature: t1:3196200:1461088741:11cfc8f3236f471e060e768c01a772072543e6fc
Summary:
It was too easy to check in code that was not passing check-code. I
got tired of fixing it so let's add a linter :)
Test Plan:
Test that the linter works as expected and asks the user to provide
the location of run-tests.py if not set.
Reviewers: #sourcecontrol, ttung
Subscribers: mjpieters
Differential Revision: https://phabricator.fb.com/D3153365