roger_eslint 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3ed5a00c847aa7df8754176d1dbeef857ff1969
4
- data.tar.gz: 20509207b4e93285315bfdd7a4064f866b7226a6
3
+ metadata.gz: 147aa12ad5cdcde7af013082566d33aa3e497597
4
+ data.tar.gz: dc97130bb05546b487d4bedd3459703cb27eff37
5
5
  SHA512:
6
- metadata.gz: b5c82390bd2e59841405044d4435cbbf160c3125d45e229424697981b550e990508a5317cdc62fb7477dac78ee885a64fd281565e5bbc22794ed62de0d8c40ca
7
- data.tar.gz: 4d542778c45ca52cdfa929e1f250d982cf1c767d3d8281ec7fec22d12548a366aaacfe857190fbcf3a9adb22ba231668dcb8587d9e1bdedee77cc6c362e521f2
6
+ metadata.gz: 0dce1b94ecbfed10fedccf4c96b0fb7bcb70837e03dae9dd9a4bfa11d4a736eda58b8ce37cc62c2d5ee3253feb5a2d8f5964a5744fd1b7ee578e87c2e5184d08
7
+ data.tar.gz: 74970d9a1f0fb43916e8eba4d06ec9ec6764d46598c137c047c3c37e36854fd7315f9eabadd210a21216010c2d6ad9a96f7eb5983f5167ec0552cb2da6eca04b
data/CHANGELOG.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 1.0.1
4
+ * Prefer to load eslint from local node_modules. This makes it much easier to in combination with eslint configs from other NPM.
5
+
3
6
  ## Version 1.0.0
4
7
  * First workable version
@@ -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: "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 @options[:fail_on_warning]
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
- options = {}.update(@options).update(options)
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(options[:match], options[:skip]).select do |file_path|
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
- @options[:eslint],
84
+ @_call_options[:eslint],
82
85
  "-f", "json"
83
86
  ]
84
87
 
85
- command += @options[:eslint_options] if @options[:eslint_options]
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
- command = [@options[:eslint], "-v", "2>/dev/null"]
117
- detect = system(Shellwords.join(command))
118
- unless detect
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
@@ -1,4 +1,4 @@
1
1
  # Roger main namespace
2
2
  module RogerEslint
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1".freeze
4
4
  end
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
- RogerEslint::Lint.new
44
+ lint_file "test.js"
35
45
  end
36
46
 
37
47
  assert_raise(ArgumentError) do
38
- RogerEslint::Lint.new eslint: "eslint-blabla"
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.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-01-17 00:00:00.000000000 Z
11
+ date: 2016-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: roger