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 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