68 Commits

Author SHA1 Message Date
Richard Gibson
cf4c281a38 Improve license linting
* Bump max year to $now + 1.
* Emit a more specific error for year range where a single year is expected.
2025-04-04 12:47:48 -04:00
Richard Gibson
2f937a61fd Update features/includes test linting to report all unused/unrecognized values
(rather than just the first)
2025-04-04 12:47:48 -04:00
André Bargull
c3cbc32745 Checks features are consistent in parsetestrecord 2024-12-18 16:11:18 +01:00
André Bargull
ada06362dc Add linter for parseTestRecord 2024-12-17 17:52:36 +01:00
Ms2ger
d0bda4d26f Allow public domain dedications 2024-12-09 13:35:08 -08:00
Ms2ger
3468e6aa77 Support excluding harness files from the unused includes check 2024-12-09 13:35:08 -08:00
Philip Chimento
0df1565532 Remove ci_lint.sh
After the previous commit, it doesn't do much, only passes the linting
exceptions file on the command line. Instead, make the lint.exceptions
file the default for that argument (if it exists), and remove the shell
script.
2024-11-11 16:48:38 -08:00
Peter Hoddie
d6155b6ef2 add verifyPrimordialProperty 2024-10-11 12:45:30 -07:00
Liviu Rau
be929de3ec Allow linter to use alternate features.txt file 2023-10-16 12:37:31 -07:00
Ms2ger
715dd1073b Only lint js and json files
CheckFileName is the only one that could arguably be valid for other files, but it doesn't seem worth the complexity to run it.
2023-10-06 13:45:37 +02:00
André Bargull
a8bd958193
Don't require Inflect for linting files (#3839) 2023-08-28 16:22:19 +02:00
Philip Chimento
a58ae41ea7 linter: Fix parsing features.txt
Previously, split() would split on whitespace, then the if-condition would
remove `#` - interpreting every word in every comment in the file as a
potential valid feature flag. We want splitlines() here.

Partial-line comments were inadvertently "supported" before, because of
this bug. Instead, support them explicitly by chopping off a `#`
character, anything after it, and any whitespace immediately preceding it.
2023-03-06 17:31:20 +01:00
Philip Chimento
6e1b737357 linter: Use same Python interpreter when executing script in subprocess
If a specific Python interpreter is used (e.g. by invoking the script with
"/path/to/python run.py") then we should use the same Python interpreter
to execute scripts in subprocesses, not the one from the environment.

The path to the running Python interpreter is given by sys.executable.
2023-03-06 17:31:20 +01:00
Csaba Osztrogonác
00f682e746 tools: enforce restriction on YAML negative key
The phase field must precede the type field for negative tests
to have a consistent style and be able to parse easier.
Related to the goal of https://github.com/tc39/test262/issues/1997

Added this check to the linting script and updated tests accordingly.
2022-01-10 13:50:38 -05:00
Csaba Osztrogonác
bd1acb51a4 tools: enforce restriction on YAML includes key
Includes key should use flow notation to be able parsed easier
as suggested in https://github.com/tc39/test262/issues/1997

Added this check to the linting script and updated tests accordingly.
2022-01-05 17:27:58 -05:00
Mike Pennisi
c4e54648c0 tools: enforce restriction on YAML
Some consumers have reported difficulty parsing an uncommon YAML
construction [1] [2] [3]. Extend the linter to help ensure that
construction is not used in future contributions.

[1] https://github.com/tc39/test262/issues/1997
[2] https://github.com/tc39/test262/pull/2505
[3] https://github.com/tc39/test262/issues/3171
2021-09-07 17:41:36 -04:00
Rick Waldron
304edd2296
chore: migrate $ERROR -> throw new Test262Error in tools/lint/test/fixtures/harness/propertyHelper.js (#3124) 2021-07-29 12:34:53 -07:00
jugglinmike
6c9d2222fb
lint: disallow duplicate values in "features" tag (#3010) 2021-06-24 13:38:18 -04:00
jugglinmike
64a8968246
lint: disallow extra fields in "negative" metadata (#3009) 2021-06-24 13:37:55 -04:00
Mike Pennisi
56ca8add7d Update project structure to support non-JS files
This change is in service of forthcoming tests for the "JSON modules"
language proposal [1]. Verifying the semantics of that proposal requires
modules whose source text is not valid ECMAScript; this change updates
the guidelines for contributing and interpreting tests so that such test
material can be handled consistently.

Differentiating JSON files with a distinct file name suffice will assist
consumers which require special handling of such files (e.g. web
browsers).

Change the pattern used to designate "fixture" files so that it may be
applied to files used for JSON modules.

Increment the project version number to alert consumers of this change
in interpreting instructions.

[1] https://github.com/tc39/proposal-json-modules
2021-05-28 20:02:59 -04:00
Leo Balter
0277ed4260 fixup! Rename usage of master to main 2020-07-15 15:47:15 -04:00
Leo Balter
2e127ec40e Rename usage of master to main
Ref #2699
2020-07-15 15:47:15 -04:00
Gus Caplan
833825849d
add lint check for newline at end of file 2019-11-10 20:18:53 -08:00
Mike Pennisi
a9111d7144 lint: add rule to verify use of harness files
Verify that every test file which references a harness file using the
"includes" directive also contains at least one reference to a value
defined in the harness file.

To support this check, extend each harness file with a list of values
which it defines.
2019-09-25 14:00:50 -04:00
Mike Pennisi
bb5a6622d4 lint: Compute ergonomic name for tests
The command-line interface to Python's "unittest" module allows users to
run tests by name, e.g.

    $ test.py TestLinter.test_foo

If the tests include a period, they cannot be referenced in this way.
Rename the tests to omit the filename extension so that they may be
referenced from the command-line in this way.
2019-09-25 14:00:50 -04:00
Mike Pennisi
f38748efc1 lint: Increase isolation between tests and project
Prior to this commit, the tests for the linter partially depended on
project files. This coupling risks churn in the tests: if the needs of
the project change (e.g. a harness file is modified), then the linter
tests would need to be updated. It also made the tests more difficult to
understand because the input was both larger and more complicated than
necessary to exercise the relevant functionality.

Execute the tests in the context of the fixture directory and introduce
minimal support files that serve the same purpose as the corresponding
project files.
2019-09-25 14:00:50 -04:00
Ms2ger
f7896ada9e Lint: Use the print function rather than the statement. 2019-08-12 17:14:07 +02:00
Ms2ger
f899f9524c Lint: Use items() rather than iteritems(). 2019-08-12 17:14:07 +02:00
Ms2ger
0b5ff0e151 Lint: Expect bytes rather than unicode from subprocess. 2019-08-12 17:14:07 +02:00
Ms2ger
b78cb852e6 Lint: Rename _THROW_STMT_LEGACY to _THROW_STMT_RAW.
'Legacy' implies (to me) that it should no longer be allowed, but the lint
explicitly checks for its presence (in the 'raw' case).
2019-08-12 17:14:07 +02:00
Ms2ger
8946956f19 Lint: Make CheckHarnessFeatures output stable.
The iteration order for a set is not guaranteed to be stable, but this test expected it to be.
2019-08-12 17:14:07 +02:00
Ms2ger
c4e5d69044 Tools: Update PyYAML version. (#2279)
Fixes #2278.
2019-08-12 09:49:14 -04:00
Ms2ger
8f5f6a1aa1 tools: update lint.py to work with pip 10+ some more (#2273)
main() and InstallRequirement were also removed from the public API.
2019-08-08 14:11:34 -04:00
Leo Balter
002d3484d6 Add tests for linter 2019-07-15 14:03:25 -04:00
Leo Balter
8b28871eca Update header regexp to prevent year ranges 2019-07-15 14:03:25 -04:00
André Bargull
c822f4c929 Fix existing linting errors, update error phase, and add a new flags linter (#2086) 2019-03-06 12:24:44 -05:00
André Bargull
41edfcebce Remove old test format parser and simplify yaml frontmatter parsing 2019-02-28 06:39:59 -08:00
Leo Balter
e7092eacc4 set lint rules to avoid leading or trailing empty lines in frontmatter string values
Fix #2034
Ref #1997
2019-02-25 16:14:21 -05:00
Leo Balter
8e0c0eac10 Linter should require direct throw statement for raw tests instead of DONOTEVALUATE 2019-02-14 15:06:08 -05:00
Leo Balter
48a7471060 Relax lint check for licensing in files 2019-02-14 15:06:08 -05:00
Leo Balter
7054805941
rename whitelist to exceptions in the linter tool (#2004) 2018-12-18 15:39:57 -02:00
Mathias Bynens
8869799c6d Rebase, regenerate, and update tests 2018-10-23 13:51:17 +02:00
Mathias Bynens
b9daa57dcb Rename to $DONOTEVALUATE per @leobalter's suggestion 2018-10-23 13:51:17 +02:00
Mathias Bynens
e3feffb01e Move throw "…" for negative parsing errors to a helper function
Closes #1634.
2018-10-23 13:51:16 +02:00
Ujjwal Sharma
fbd79b10a7 tools: update lint.py to work with pip 10+
Update the lint.py script to work with pip 10+ as pip.req was moved to
pip._internal.req in version 10 onwards and the existing code only works
on versions of pip under or equal to 9.0.3
2018-09-17 13:30:01 -04:00
Rick Waldron
ae925f6791 Lint: make esid check allow "%" (#1638) 2018-07-13 16:39:32 -04:00
jugglinmike
ac02aa57ff Relax linting rules for esid metadata (#1632)
The document fragments used by the ECMAScript specification do not
conform to any particular pattern beyond the grammar defined by the URL
standard [1]. Relax the linting rule to enforce a simplified version of
that grammar.

[1] https://url.spec.whatwg.org/#fragment-state
2018-07-09 12:29:43 -04:00
Rick Waldron
7dc92154af Frontmatter: Adds top level "locale" attribute. Fixes gh-1515 (#1561) 2018-06-19 14:56:30 -04:00
Leo Balter
f87f744741
Avoid printing tests source in the lint script (#1602) 2018-06-18 21:09:55 -04:00
Rick Waldron
c686cc6099 Lint: disallow calls to verifyConfigurable and verifyProperty in same file 2018-06-07 22:38:36 -04:00