jslint_on_rails 1.0.6 → 1.0.7

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 CHANGED
@@ -1,3 +1,7 @@
1
+ Version 1.0.7 (12.09.2011)
2
+
3
+ * fixed problem with local options from one file being applied to all subsequent files
4
+
1
5
  Version 1.0.6 (19.02.2011)
2
6
 
3
7
  * escape $ in predef line to prevent Bash for interpreting it
data/lib/jslint/utils.rb CHANGED
@@ -3,7 +3,7 @@ require 'yaml'
3
3
 
4
4
  module JSLint
5
5
 
6
- VERSION = "1.0.6"
6
+ VERSION = "1.0.7"
7
7
  DEFAULT_CONFIG_FILE = File.expand_path(File.dirname(__FILE__) + "/config/jslint.yml")
8
8
 
9
9
  class << self
@@ -5877,19 +5877,28 @@ loop: for (;;) {
5877
5877
  var input = readFile(args[f]);
5878
5878
  if (!input) {
5879
5879
  print("Error: couldn't open file.");
5880
- } else if (!JSLINT(input, options)) {
5881
- print(pluralize(JSLINT.errors.length, "error") + ":\n");
5882
- totalErrors += JSLINT.errors.length;
5883
- for (var i = 0; i < JSLINT.errors.length; i += 1) {
5884
- var e = JSLINT.errors[i];
5885
- if (e) {
5886
- print('Lint at line ' + e.line + ' character ' + e.character + ': ' + e.reason);
5887
- print((e.evidence || '').replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
5888
- print('');
5880
+ } else {
5881
+ var optionsCopy = {};
5882
+ for (var key in options) {
5883
+ if (options.hasOwnProperty(key)) {
5884
+ optionsCopy[key] = options[key];
5889
5885
  }
5890
5886
  }
5891
- } else {
5892
- print("OK");
5887
+
5888
+ if (!JSLINT(input, optionsCopy)) {
5889
+ print(pluralize(JSLINT.errors.length, "error") + ":\n");
5890
+ totalErrors += JSLINT.errors.length;
5891
+ for (var i = 0; i < JSLINT.errors.length; i += 1) {
5892
+ var e = JSLINT.errors[i];
5893
+ if (e) {
5894
+ print('Lint at line ' + e.line + ' character ' + e.character + ': ' + e.reason);
5895
+ print((e.evidence || '').replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
5896
+ print('');
5897
+ }
5898
+ }
5899
+ } else {
5900
+ print("OK");
5901
+ }
5893
5902
  }
5894
5903
  }
5895
5904
 
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'jslint.js' do
4
+ before :all do
5
+ File.open(JSLint::DEFAULT_CONFIG_FILE, "w") { |f| f.write "color: red\nsize: 5\nshape: circle\n" }
6
+ File.open("custom_config.yml", "w") { |f| f.write "color: blue\nsize: 7\nborder: 2\n" }
7
+ File.open("other_config.yml", "w") { |f| f.write "color: green\nborder: 0\nshape: square" }
8
+ JSLint.config_path = "custom_config.yml"
9
+ end
10
+
11
+ describe "options in comments" do
12
+ before do
13
+ FakeFS.deactivate!
14
+ create_file 'spec-config.yml', 'evil: false'
15
+ create_file 'first.js', "
16
+ /*jslint evil: true*/
17
+ eval('alert(\"muahahahaha\")');
18
+ "
19
+ create_file 'second.js', "
20
+ // I shouldn't be able to do that
21
+ eval('alert(\"muahahahaha\")');
22
+ "
23
+ end
24
+
25
+ it "should not apply local options from one file to all subsequent files" do
26
+ lint = JSLint::Lint.new(:paths => ["first.js", "second.js"], :config => 'spec-config.yml')
27
+
28
+ # silence stdout from jslint
29
+ lint.instance_eval do
30
+ def system(command)
31
+ `#{command}`
32
+ $? == 0
33
+ end
34
+ end
35
+
36
+ expect { lint.run }.to raise_error(JSLint::LintCheckFailure)
37
+ end
38
+
39
+ after do
40
+ File.delete('first.js')
41
+ File.delete('second.js')
42
+ File.delete('spec-config.yml')
43
+ FakeFS.activate!
44
+ end
45
+ end
46
+ end
data/spec/lint_spec.rb CHANGED
@@ -7,9 +7,9 @@ describe JSLint::Lint do
7
7
  end
8
8
 
9
9
  before :all do
10
- File.open(JSLint::DEFAULT_CONFIG_FILE, "w") { |f| f.write "color: red\nsize: 5\nshape: circle\n" }
11
- File.open("custom_config.yml", "w") { |f| f.write "color: blue\nsize: 7\nborder: 2\n" }
12
- File.open("other_config.yml", "w") { |f| f.write "color: green\nborder: 0\nshape: square" }
10
+ create_config 'color' => 'red', 'size' => 5, 'shape' => 'circle'
11
+ create_file 'custom_config.yml', 'color' => 'blue', 'size' => 7, 'border' => 2
12
+ create_file 'other_config.yml', 'color' => 'green', 'border' => 0, 'shape' => 'square'
13
13
  JSLint.config_path = "custom_config.yml"
14
14
  end
15
15
 
@@ -28,23 +28,22 @@ describe JSLint::Lint do
28
28
  end
29
29
 
30
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" }
31
+ create_file 'predef.yml', 'predef' => ['a', 'b', 'c']
32
32
 
33
33
  lint = JSLint::Lint.new :config_path => 'predef.yml'
34
34
  lint.config['predef'].should == "a,b,c"
35
35
  end
36
36
 
37
37
  it "should accept predef as string" do
38
- File.open("predef.yml", "w") { |f| f.write "predef: d,e,f" }
38
+ create_file 'predef.yml', 'predef' => 'd,e,f'
39
39
 
40
40
  lint = JSLint::Lint.new :config_path => 'predef.yml'
41
41
  lint.config['predef'].should == "d,e,f"
42
42
  end
43
43
 
44
44
  it "should not pass paths and exclude_paths options to real JSLint" do
45
- File.open("test.yml", "w") do |f|
46
- f.write(YAML.dump({ 'paths' => ['a', 'b'], 'exclude_paths' => ['c'], 'debug' => 'true' }))
47
- end
45
+ create_file 'test.yml', 'paths' => ['a', 'b'], 'exclude_paths' => ['c'], 'debug' => 'true'
46
+
48
47
  lint = JSLint::Lint.new :config_path => 'test.yml'
49
48
  lint.config['debug'].should == 'true'
50
49
  lint.config['paths'].should be_nil
@@ -130,7 +129,7 @@ describe JSLint::Lint do
130
129
 
131
130
  before :all do
132
131
  @files = ['test/app.js', 'test/lib.js', 'test/utils.js', 'test/vendor/jquery.js', 'test/vendor/proto.js']
133
- @files.each { |fn| File.open(fn, "w") { |f| f.write("alert()") }}
132
+ @files.each { |fn| create_file(fn, "alert()") }
134
133
  @files = @files.map { |fn| File.expand_path(fn) }
135
134
  end
136
135
 
@@ -150,7 +149,7 @@ describe JSLint::Lint do
150
149
  lint = JSLint::Lint.new :paths => ['test/**/*.js', 'test/**/a*.js', 'test/**/p*.js']
151
150
  lint.file_list.should == @files
152
151
 
153
- File.open("new.yml", "w") { |f| f.write(YAML.dump({ 'paths' => ['test/vendor/*.js'] })) }
152
+ create_file 'new.yml', 'paths' => ['test/vendor/*.js']
154
153
 
155
154
  lint = JSLint::Lint.new :config_path => 'new.yml', :exclude_paths => ['**/proto.js']
156
155
  lint.file_list.should == [@files[3]]
@@ -167,8 +166,8 @@ describe JSLint::Lint do
167
166
  end
168
167
 
169
168
  it "should ignore empty files" do
170
- File.open("test/empty.js", "w") { |f| f.write("") }
171
- File.open("test/full.js", "w") { |f| f.write("qqq") }
169
+ create_file 'test/empty.js', ''
170
+ create_file 'test/full.js', 'qqq'
172
171
 
173
172
  lint = JSLint::Lint.new :paths => ['test/*.js']
174
173
  lint.file_list.should_not include(File.expand_path("test/empty.js"))
data/spec/railtie_spec.rb CHANGED
@@ -3,7 +3,7 @@ require 'jslint/railtie'
3
3
 
4
4
  describe JSLint::Railtie do
5
5
  before :all do
6
- File.open(JSLint::DEFAULT_CONFIG_FILE, "w") { |f| f.write "foo" }
6
+ create_config 'example config'
7
7
  JSLint.config_path = "custom_config.yml"
8
8
  end
9
9
 
@@ -16,11 +16,11 @@ describe JSLint::Railtie do
16
16
  JSLint::Railtie.create_example_config
17
17
 
18
18
  File.exist?(JSLint.config_path).should be_true
19
- File.read(JSLint.config_path).should == "foo"
19
+ File.read(JSLint.config_path).should == 'example config'
20
20
  end
21
21
 
22
22
  it "should not do anything if config already exists" do
23
- File.open(JSLint.config_path, "w") { |f| f.write "bar" }
23
+ create_file(JSLint.config_path, "bar")
24
24
 
25
25
  JSLint::Railtie.create_example_config
26
26
 
data/spec/spec_helper.rb CHANGED
@@ -19,3 +19,26 @@ module FileUtils
19
19
  cp(*args)
20
20
  end
21
21
  end
22
+
23
+ module FakeFS
24
+ class File
25
+ def self.identical?(file1, file2)
26
+ File.expand_path(file1) == File.expand_path(file2)
27
+ end
28
+ end
29
+ end
30
+
31
+ module SpecHelper
32
+ def create_file(filename, contents)
33
+ contents = YAML.dump(contents) + "\n" unless contents.is_a?(String)
34
+ File.open(filename, "w") { |f| f.print(contents) }
35
+ end
36
+
37
+ def create_config(data)
38
+ create_file(JSLint::DEFAULT_CONFIG_FILE, data)
39
+ end
40
+ end
41
+
42
+ RSpec.configure do |config|
43
+ config.include SpecHelper
44
+ end
data/spec/utils_spec.rb CHANGED
@@ -5,7 +5,7 @@ describe JSLint::Utils do
5
5
  JSU = JSLint::Utils
6
6
 
7
7
  before :all do
8
- File.open(JSLint::DEFAULT_CONFIG_FILE, "w") { |f| f.puts "default config file" }
8
+ create_config "default config file"
9
9
  end
10
10
 
11
11
  it "should have a config_path setting" do
@@ -37,7 +37,7 @@ describe JSLint::Utils do
37
37
  describe "load_config_file" do
38
38
 
39
39
  before :all do
40
- File.open("sample.yml", "w") { |f| f.puts("framework: rails") }
40
+ create_file 'sample.yml', 'framework: rails'
41
41
  Dir.mkdir("tmp")
42
42
  end
43
43
 
@@ -103,7 +103,7 @@ describe JSLint::Utils do
103
103
 
104
104
  it "should not overwrite the file if it exists" do
105
105
  JSLint.config_path = "newfile2.yml"
106
- File.open("newfile2.yml", "w") { |f| f.write("qwe") }
106
+ create_file 'newfile2.yml', 'qwe'
107
107
  FileUtils.should_not_receive(:copy)
108
108
  JSLint::Utils.copy_config_file
109
109
  end
@@ -117,7 +117,7 @@ describe JSLint::Utils do
117
117
 
118
118
  it "should remove the file if it's identical to default one" do
119
119
  JSLint.config_path = "newfile3.yml"
120
- File.open("newfile3.yml", "w") { |f| f.puts("default config file") }
120
+ create_file 'newfile3.yml', 'default config file'
121
121
  File.exists?("newfile3.yml").should be_true
122
122
  JSLint::Utils.remove_config_file
123
123
  File.exists?("newfile3.yml").should be_false
@@ -125,7 +125,7 @@ describe JSLint::Utils do
125
125
 
126
126
  it "should not remove the file if it's not identical to default one" do
127
127
  JSLint.config_path = "newfile4.yml"
128
- File.open("newfile4.yml", "w") { |f| f.puts("something's changed") }
128
+ create_file 'newfile4.yml', "something's changed"
129
129
  File.exists?("newfile4.yml").should be_true
130
130
  JSLint::Utils.remove_config_file
131
131
  File.exists?("newfile4.yml").should be_true
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: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 6
10
- version: 1.0.6
9
+ - 7
10
+ version: 1.0.7
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-02-19 00:00:00 +01:00
18
+ date: 2011-09-12 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -46,6 +46,7 @@ files:
46
46
  - lib/jslint/vendor/test.jar
47
47
  - lib/jslint.rb
48
48
  - lib/jslint_on_rails.rb
49
+ - spec/jslint_spec.rb
49
50
  - spec/lint_spec.rb
50
51
  - spec/railtie_spec.rb
51
52
  - spec/spec_helper.rb