11
11
12
12
const fs = require ( 'fs' )
13
13
const path = require ( 'path' )
14
+ const semver = require ( 'semver' )
14
15
const RuleTester = require ( 'eslint' ) . RuleTester
15
16
const rule = require ( '../../../lib/rules/script-indent' )
16
17
@@ -36,21 +37,37 @@ const FIXTURE_ROOT = path.resolve(__dirname, '../../fixtures/script-indent/')
36
37
* @returns {object } The loaded patterns.
37
38
*/
38
39
function loadPatterns ( additionalValid , additionalInvalid ) {
39
- const valid = fs . readdirSync ( FIXTURE_ROOT ) . map ( ( filename ) => {
40
- const commentPattern = / ^ ( < ! - - | \/ \* ) ( .+ ?) ( - - > | \* \/ ) /
41
- const code0 = fs . readFileSync ( path . join ( FIXTURE_ROOT , filename ) , 'utf8' )
42
- const code = code0 . replace ( commentPattern , `$1${ filename } $3` )
43
- const baseObj = JSON . parse ( commentPattern . exec ( code0 ) [ 2 ] )
44
- if ( 'parser' in baseObj ) {
45
- baseObj . parser = require . resolve ( baseObj . parser )
46
- }
47
- if ( 'parserOptions' in baseObj && 'parser' in baseObj . parserOptions ) {
48
- baseObj . parserOptions . parser = require . resolve (
49
- baseObj . parserOptions . parser
50
- )
51
- }
52
- return Object . assign ( baseObj , { code, filename } )
53
- } )
40
+ const valid = fs
41
+ . readdirSync ( FIXTURE_ROOT )
42
+ . map ( ( filename ) => {
43
+ const commentPattern = / ^ ( < ! - - | \/ \* ) ( .+ ?) ( - - > | \* \/ ) /
44
+ const code0 = fs . readFileSync ( path . join ( FIXTURE_ROOT , filename ) , 'utf8' )
45
+ const code = code0 . replace ( commentPattern , `$1${ filename } $3` )
46
+ const baseObj = JSON . parse ( commentPattern . exec ( code0 ) [ 2 ] )
47
+ if ( 'parser' in baseObj ) {
48
+ baseObj . parser = require . resolve ( baseObj . parser )
49
+ }
50
+ if ( 'parserOptions' in baseObj && 'parser' in baseObj . parserOptions ) {
51
+ baseObj . parserOptions . parser = require . resolve (
52
+ baseObj . parserOptions . parser
53
+ )
54
+ }
55
+ return Object . assign ( baseObj , { code, filename } )
56
+ } )
57
+ . filter ( ( obj ) => {
58
+ if ( obj . requirements ) {
59
+ if (
60
+ Object . entries ( obj . requirements ) . some ( ( [ pkgName , pkgVersion ] ) => {
61
+ const pkg = require ( `${ pkgName } /package.json` )
62
+ return ! semver . satisfies ( pkg . version , pkgVersion )
63
+ } )
64
+ ) {
65
+ return false
66
+ }
67
+ delete obj . requirements
68
+ }
69
+ return true
70
+ } )
54
71
const invalid = valid
55
72
. map ( ( pattern ) => {
56
73
const kind =
0 commit comments