jslint_on_rails 1.0.5 → 1.0.6
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.
- data/Changelog.markdown +5 -0
- data/lib/jslint/config/jslint.yml +1 -1
- data/lib/jslint/lint.rb +5 -1
- data/lib/jslint/utils.rb +1 -1
- data/spec/lint_spec.rb +46 -22
- metadata +4 -4
data/Changelog.markdown
CHANGED
@@ -51,7 +51,7 @@ indent: 2 # Number of spaces that should be used for indentation - use
|
|
51
51
|
maxerr: 50 # The maximum number of warnings reported (per file)
|
52
52
|
passfail: false # true if the scan should stop on first error (per file)
|
53
53
|
# following are relevant only if undef = true
|
54
|
-
predef: '' # Names of predefined global variables - comma-separated string
|
54
|
+
predef: '' # Names of predefined global variables - comma-separated string or a YAML array
|
55
55
|
browser: true # true if the standard browser globals should be predefined
|
56
56
|
rhino: false # true if the Rhino environment globals should be predefined
|
57
57
|
windows: false # true if Windows-specific globals should be predefined
|
data/lib/jslint/lint.rb
CHANGED
@@ -23,6 +23,10 @@ module JSLint
|
|
23
23
|
custom_config = Utils.load_config_file(options[:config_path] || JSLint.config_path)
|
24
24
|
@config = default_config.merge(custom_config)
|
25
25
|
|
26
|
+
if @config['predef'].is_a?(Array)
|
27
|
+
@config['predef'] = @config['predef'].join(",")
|
28
|
+
end
|
29
|
+
|
26
30
|
included_files = files_matching_paths(options, :paths)
|
27
31
|
excluded_files = files_matching_paths(options, :exclude_paths)
|
28
32
|
@file_list = Utils.exclude_files(included_files, excluded_files)
|
@@ -34,7 +38,7 @@ module JSLint
|
|
34
38
|
def run
|
35
39
|
check_java
|
36
40
|
Utils.xputs "Running JSLint:\n\n"
|
37
|
-
arguments = "#{JSLINT_FILE} #{option_string.inspect} #{@file_list.join(' ')}"
|
41
|
+
arguments = "#{JSLINT_FILE} #{option_string.inspect.gsub(/\$/, "\\$")} #{@file_list.join(' ')}"
|
38
42
|
success = call_java_with_status(RHINO_JAR_FILE, RHINO_JAR_CLASS, arguments)
|
39
43
|
raise LintCheckFailure, "JSLint test failed." unless success
|
40
44
|
end
|
data/lib/jslint/utils.rb
CHANGED
data/spec/lint_spec.rb
CHANGED
@@ -2,6 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe JSLint::Lint do
|
4
4
|
|
5
|
+
JSLint::Lint.class_eval do
|
6
|
+
attr_reader :config, :file_list
|
7
|
+
end
|
8
|
+
|
5
9
|
before :all do
|
6
10
|
File.open(JSLint::DEFAULT_CONFIG_FILE, "w") { |f| f.write "color: red\nsize: 5\nshape: circle\n" }
|
7
11
|
File.open("custom_config.yml", "w") { |f| f.write "color: blue\nsize: 7\nborder: 2\n" }
|
@@ -13,20 +17,28 @@ describe JSLint::Lint do
|
|
13
17
|
lint.should_receive(:call_java_with_output).once.and_return("OK")
|
14
18
|
end
|
15
19
|
|
16
|
-
def file_list(lint)
|
17
|
-
lint.instance_variable_get("@file_list")
|
18
|
-
end
|
19
|
-
|
20
20
|
it "should merge default config with custom config from JSLint.config_path" do
|
21
21
|
lint = JSLint::Lint.new
|
22
|
-
config
|
23
|
-
config.should == { 'color' => 'blue', 'size' => 7, 'border' => 2, 'shape' => 'circle' }
|
22
|
+
lint.config.should == { 'color' => 'blue', 'size' => 7, 'border' => 2, 'shape' => 'circle' }
|
24
23
|
end
|
25
24
|
|
26
25
|
it "should merge default config with custom config given in argument, if available" do
|
27
26
|
lint = JSLint::Lint.new :config_path => 'other_config.yml'
|
28
|
-
config
|
29
|
-
|
27
|
+
lint.config.should == { 'color' => 'green', 'border' => 0, 'shape' => 'square', 'size' => 5 }
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should convert predef to string if it's an array" do
|
31
|
+
File.open("predef.yml", "w") { |f| f.write "predef:\n - a\n - b\n - c" }
|
32
|
+
|
33
|
+
lint = JSLint::Lint.new :config_path => 'predef.yml'
|
34
|
+
lint.config['predef'].should == "a,b,c"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should accept predef as string" do
|
38
|
+
File.open("predef.yml", "w") { |f| f.write "predef: d,e,f" }
|
39
|
+
|
40
|
+
lint = JSLint::Lint.new :config_path => 'predef.yml'
|
41
|
+
lint.config['predef'].should == "d,e,f"
|
30
42
|
end
|
31
43
|
|
32
44
|
it "should not pass paths and exclude_paths options to real JSLint" do
|
@@ -34,10 +46,9 @@ describe JSLint::Lint do
|
|
34
46
|
f.write(YAML.dump({ 'paths' => ['a', 'b'], 'exclude_paths' => ['c'], 'debug' => 'true' }))
|
35
47
|
end
|
36
48
|
lint = JSLint::Lint.new :config_path => 'test.yml'
|
37
|
-
config
|
38
|
-
config['
|
39
|
-
config['
|
40
|
-
config['exclude_paths'].should be_nil
|
49
|
+
lint.config['debug'].should == 'true'
|
50
|
+
lint.config['paths'].should be_nil
|
51
|
+
lint.config['exclude_paths'].should be_nil
|
41
52
|
end
|
42
53
|
|
43
54
|
it "should fail if Java isn't available" do
|
@@ -86,6 +97,19 @@ describe JSLint::Lint do
|
|
86
97
|
eval(option_string).split('&').sort.should == ['debug=true', 'linelength=120', 'semicolons=false']
|
87
98
|
end
|
88
99
|
|
100
|
+
it "should escape $ in option string when passing it to Java/JSLint" do
|
101
|
+
lint = JSLint::Lint.new
|
102
|
+
lint.instance_variable_set("@config", { 'predef' => 'window,$,Ajax,$app,Request' })
|
103
|
+
setup_java(lint)
|
104
|
+
param_string = ""
|
105
|
+
lint.
|
106
|
+
should_receive(:call_java_with_status).
|
107
|
+
once.
|
108
|
+
with(an_instance_of(String), an_instance_of(String), /window,\\\$,Ajax,\\\$app,Request/).
|
109
|
+
and_return(true)
|
110
|
+
lint.run
|
111
|
+
end
|
112
|
+
|
89
113
|
it "should pass space-separated list of files to JSLint" do
|
90
114
|
lint = JSLint::Lint.new
|
91
115
|
lint.instance_variable_set("@file_list", ['app.js', 'test.js', 'jquery.js'])
|
@@ -112,33 +136,33 @@ describe JSLint::Lint do
|
|
112
136
|
|
113
137
|
it "should calculate a list of files to test" do
|
114
138
|
lint = JSLint::Lint.new :paths => ['test/**/*.js']
|
115
|
-
|
139
|
+
lint.file_list.should == @files
|
116
140
|
|
117
141
|
lint = JSLint::Lint.new :paths => ['test/a*.js', 'test/**/*r*.js']
|
118
|
-
|
142
|
+
lint.file_list.should == [@files[0], @files[3], @files[4]]
|
119
143
|
|
120
144
|
lint = JSLint::Lint.new :paths => ['test/a*.js', 'test/**/*r*.js'], :exclude_paths => ['**/*q*.js']
|
121
|
-
|
145
|
+
lint.file_list.should == [@files[0], @files[4]]
|
122
146
|
|
123
147
|
lint = JSLint::Lint.new :paths => ['test/**/*.js'], :exclude_paths => ['**/*.js']
|
124
|
-
|
148
|
+
lint.file_list.should == []
|
125
149
|
|
126
150
|
lint = JSLint::Lint.new :paths => ['test/**/*.js', 'test/**/a*.js', 'test/**/p*.js']
|
127
|
-
|
151
|
+
lint.file_list.should == @files
|
128
152
|
|
129
153
|
File.open("new.yml", "w") { |f| f.write(YAML.dump({ 'paths' => ['test/vendor/*.js'] })) }
|
130
154
|
|
131
155
|
lint = JSLint::Lint.new :config_path => 'new.yml', :exclude_paths => ['**/proto.js']
|
132
|
-
|
156
|
+
lint.file_list.should == [@files[3]]
|
133
157
|
|
134
158
|
lint = JSLint::Lint.new :config_path => 'new.yml', :paths => ['test/l*.js']
|
135
|
-
|
159
|
+
lint.file_list.should == [@files[1]]
|
136
160
|
end
|
137
161
|
|
138
162
|
it "should accept :paths and :exclude_paths as string instead of one-element array" do
|
139
163
|
lambda do
|
140
164
|
lint = JSLint::Lint.new :paths => 'test/*.js', :exclude_paths => 'test/lib.js'
|
141
|
-
|
165
|
+
lint.file_list.should == [@files[0], @files[2]]
|
142
166
|
end.should_not raise_error
|
143
167
|
end
|
144
168
|
|
@@ -147,8 +171,8 @@ describe JSLint::Lint do
|
|
147
171
|
File.open("test/full.js", "w") { |f| f.write("qqq") }
|
148
172
|
|
149
173
|
lint = JSLint::Lint.new :paths => ['test/*.js']
|
150
|
-
|
151
|
-
|
174
|
+
lint.file_list.should_not include(File.expand_path("test/empty.js"))
|
175
|
+
lint.file_list.should include(File.expand_path("test/full.js"))
|
152
176
|
end
|
153
177
|
end
|
154
178
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jslint_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 6
|
10
|
+
version: 1.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jakub Suder
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-02-19 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|