roger_eslint 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/roger_eslint/lint.rb +33 -14
- data/lib/roger_eslint/version.rb +1 -1
- data/test/lint_test.rb +14 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 147aa12ad5cdcde7af013082566d33aa3e497597
|
4
|
+
data.tar.gz: dc97130bb05546b487d4bedd3459703cb27eff37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0dce1b94ecbfed10fedccf4c96b0fb7bcb70837e03dae9dd9a4bfa11d4a736eda58b8ce37cc62c2d5ee3253feb5a2d8f5964a5744fd1b7ee578e87c2e5184d08
|
7
|
+
data.tar.gz: 74970d9a1f0fb43916e8eba4d06ec9ec6764d46598c137c047c3c37e36854fd7315f9eabadd210a21216010c2d6ad9a96f7eb5983f5167ec0552cb2da6eca04b
|
data/CHANGELOG.md
CHANGED
data/lib/roger_eslint/lint.rb
CHANGED
@@ -15,21 +15,20 @@ module RogerEslint
|
|
15
15
|
# @option options [Array] :match Files to match
|
16
16
|
# @option options [Array[Regexp]] :skip Array of regular expressions to skip files
|
17
17
|
# @option options [Boolean] (false) :fail_on_warning Wether or not to fail test on warnings
|
18
|
-
# @option options [String] :eslint eslint command
|
18
|
+
# @option options [String, nil] :eslint eslint command, if nil will search for the command
|
19
|
+
# Preferring the local node_modules path.
|
19
20
|
# @option options [Array] :eslint_options An array of eslint options; make sure
|
20
21
|
# you have the commandline flag and the value in separate elments, so: `["--global", "$"]`
|
21
22
|
def initialize(options = {})
|
22
23
|
@options = {
|
23
24
|
match: ["html/**/*.js"],
|
24
|
-
skip: [],
|
25
|
+
skip: [%r{vendor\/.*\.js\Z}],
|
25
26
|
fail_on_warning: false,
|
26
|
-
eslint:
|
27
|
+
eslint: nil,
|
27
28
|
eslint_options: []
|
28
29
|
}
|
29
30
|
|
30
31
|
@options.update(options) if options
|
31
|
-
|
32
|
-
detect_eslint
|
33
32
|
end
|
34
33
|
|
35
34
|
def lint(test, file_path)
|
@@ -42,7 +41,7 @@ module RogerEslint
|
|
42
41
|
end
|
43
42
|
|
44
43
|
success = file_lints["errorCount"] <= 0
|
45
|
-
success &&= file_lints["warningCount"] <= 0 if @
|
44
|
+
success &&= file_lints["warningCount"] <= 0 if @_call_options[:fail_on_warning]
|
46
45
|
|
47
46
|
fixables = []
|
48
47
|
|
@@ -64,25 +63,29 @@ module RogerEslint
|
|
64
63
|
# @option options [Array] :match Files to match
|
65
64
|
# @option options [Array[Regexp]] :skip Array of regular expressions to skip files
|
66
65
|
def call(test, options)
|
67
|
-
|
66
|
+
@_call_options = {}.update(@options).update(options)
|
67
|
+
|
68
|
+
detect_eslint(test)
|
68
69
|
|
69
70
|
test.log(self, "ESLinting files")
|
70
71
|
|
71
|
-
failures = test.get_files(
|
72
|
+
failures = test.get_files(@_call_options[:match], @_call_options[:skip]).select do |file_path|
|
72
73
|
!lint(test, file_path)
|
73
74
|
end
|
74
75
|
failures.empty?
|
76
|
+
ensure
|
77
|
+
@_call_options = {}
|
75
78
|
end
|
76
79
|
|
77
80
|
private
|
78
81
|
|
79
82
|
def eslint_command(file_path, extras = [])
|
80
83
|
command = [
|
81
|
-
@
|
84
|
+
@_call_options[:eslint],
|
82
85
|
"-f", "json"
|
83
86
|
]
|
84
87
|
|
85
|
-
command += @
|
88
|
+
command += @_call_options[:eslint_options] if @_call_options[:eslint_options]
|
86
89
|
|
87
90
|
command += extras
|
88
91
|
command << file_path
|
@@ -112,11 +115,27 @@ module RogerEslint
|
|
112
115
|
end
|
113
116
|
end
|
114
117
|
|
115
|
-
def detect_eslint
|
116
|
-
|
117
|
-
|
118
|
-
|
118
|
+
def detect_eslint(test)
|
119
|
+
if @_call_options[:eslint]
|
120
|
+
commands_to_test = [@_call_options[:eslint]]
|
121
|
+
else
|
122
|
+
commands_to_test = [
|
123
|
+
test.project.path + "node_modules/eslint/bin/eslint.js",
|
124
|
+
"eslint.js",
|
125
|
+
"eslint"
|
126
|
+
]
|
127
|
+
end
|
128
|
+
|
129
|
+
detect = commands_to_test.detect do |command|
|
130
|
+
system(Shellwords.join([command, "-v"]) + "> /dev/null 2>&1")
|
131
|
+
end
|
132
|
+
|
133
|
+
if detect
|
134
|
+
# Bit of a hack to set the value like this
|
135
|
+
@_call_options[:eslint] = detect
|
136
|
+
else
|
119
137
|
err = "Could not find eslint. Install eslint using: 'npm install -g eslint'."
|
138
|
+
err += " Or install eslint locally."
|
120
139
|
fail ArgumentError, err
|
121
140
|
end
|
122
141
|
end
|
data/lib/roger_eslint/version.rb
CHANGED
data/test/lint_test.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + "/../lib/roger_eslint/lint.rb"
|
2
2
|
require "test/unit"
|
3
|
+
require "roger/testing/mock_project"
|
3
4
|
|
4
5
|
# Fake tester to pass into the linter plugin
|
5
6
|
class TesterStub
|
@@ -11,6 +12,15 @@ class TesterStub
|
|
11
12
|
@files = []
|
12
13
|
end
|
13
14
|
|
15
|
+
def project
|
16
|
+
# Creating a mock project with path will forego the construct creation
|
17
|
+
@project ||= Roger::Testing::MockProject.new(".")
|
18
|
+
end
|
19
|
+
|
20
|
+
def destroy
|
21
|
+
@project.destroy if @project
|
22
|
+
end
|
23
|
+
|
14
24
|
def log(_, message)
|
15
25
|
@messages.push(message)
|
16
26
|
end
|
@@ -31,11 +41,11 @@ class LintTest < Test::Unit::TestCase
|
|
31
41
|
|
32
42
|
def test_detect_eslint
|
33
43
|
assert_nothing_raised do
|
34
|
-
|
44
|
+
lint_file "test.js"
|
35
45
|
end
|
36
46
|
|
37
47
|
assert_raise(ArgumentError) do
|
38
|
-
|
48
|
+
lint_file "test.js", eslint: "eslint-blabla"
|
39
49
|
end
|
40
50
|
end
|
41
51
|
|
@@ -93,5 +103,7 @@ class LintTest < Test::Unit::TestCase
|
|
93
103
|
messages.shift
|
94
104
|
|
95
105
|
[success, messages]
|
106
|
+
ensure
|
107
|
+
faketester.destroy
|
96
108
|
end
|
97
109
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roger_eslint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flurin Egger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roger
|