jshint 1.3.0 → 1.3.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.
- data/CHANGELOG.md +5 -0
- data/jshint.gemspec +1 -1
- data/lib/jshint/tasks/jshint.rake +2 -2
- data/lib/jshint/version.rb +1 -1
- data/spec/jshint_spec.rb +1 -1
- data/spec/lib/configuration_spec.rb +15 -11
- data/spec/lib/lint_spec.rb +30 -28
- data/spec/lib/reporters/default_spec.rb +16 -16
- data/spec/spec_helper.rb +5 -1
- metadata +5 -5
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.3.1
|
4
|
+
|
5
|
+
* Fixes [#23](https://github.com/damian/jshint/pull/23) - Broken Rake task
|
6
|
+
* [Upgraded to RSpec 3](https://github.com/damian/jshint/pull/22)
|
7
|
+
|
3
8
|
## 1.3.0
|
4
9
|
|
5
10
|
* Fixes [#18](https://github.com/damian/jshint/pull/18) - Ensure the default Rake task runs the test suite
|
data/jshint.gemspec
CHANGED
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
26
26
|
spec.add_development_dependency "railties", ">= 3.2.0"
|
27
27
|
spec.add_development_dependency "rake"
|
28
|
-
spec.add_development_dependency "rspec", "~>
|
28
|
+
spec.add_development_dependency "rspec", "~> 3.1.0"
|
29
29
|
spec.add_development_dependency "yard"
|
30
30
|
end
|
@@ -6,8 +6,8 @@ namespace :jshint do
|
|
6
6
|
desc "Runs JSHint, the JavaScript lint tool over this project's JavaScript assets"
|
7
7
|
task :lint => :environment do |_, args|
|
8
8
|
# Our own argument parsing, since rake jshint will push extra nil's.
|
9
|
-
reporter_name = args.extras[0]
|
10
|
-
result_file = args.extras[1]
|
9
|
+
reporter_name = args.extras[0] || :Default
|
10
|
+
result_file = args.extras[1]
|
11
11
|
|
12
12
|
linter = Jshint::Cli::run(reporter_name, result_file)
|
13
13
|
fail if linter.errors.any? { |_, errors| errors.any? }
|
data/lib/jshint/version.rb
CHANGED
data/spec/jshint_spec.rb
CHANGED
@@ -4,7 +4,7 @@ require 'jshint'
|
|
4
4
|
describe Jshint do
|
5
5
|
describe ".class methods" do
|
6
6
|
it "should return the root path of the gem" do
|
7
|
-
described_class.root.
|
7
|
+
expect(described_class.root).to eq(File.expand_path('../..', __FILE__))
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -6,47 +6,51 @@ describe Jshint::Configuration do
|
|
6
6
|
|
7
7
|
describe "core behaviour" do
|
8
8
|
before do
|
9
|
-
described_class
|
10
|
-
|
9
|
+
allow_any_instance_of(described_class).
|
10
|
+
to receive(:default_config_path).and_return('/foo/bar.yml')
|
11
|
+
allow_any_instance_of(described_class).
|
12
|
+
to receive(:parse_yaml_config).and_return(YAML.load_file(config))
|
11
13
|
end
|
12
14
|
|
13
15
|
it "should allow the developer to index in to config options" do
|
14
16
|
config = described_class.new
|
15
|
-
config[:boss].
|
16
|
-
config[:browser].
|
17
|
+
expect(config[:boss]).to be_truthy
|
18
|
+
expect(config[:browser]).to be_truthy
|
17
19
|
end
|
18
20
|
|
19
21
|
it "should return a Hash of the global variables declared" do
|
20
22
|
config = described_class.new
|
21
|
-
config.global_variables.
|
23
|
+
expect(config.global_variables).to eq({ "jQuery" => true, "$" => true })
|
22
24
|
end
|
23
25
|
|
24
26
|
it "should return a Hash of the lint options declared" do
|
25
27
|
config = described_class.new
|
26
|
-
config.lint_options.
|
28
|
+
expect(config.lint_options).
|
29
|
+
to eq(config.options["options"].reject { |key| key == "globals" })
|
27
30
|
end
|
28
31
|
|
29
32
|
it "should return an array of files" do
|
30
33
|
config = described_class.new
|
31
|
-
config.files.
|
34
|
+
expect(config.files).to eq(["**/*.js"])
|
32
35
|
end
|
33
36
|
|
34
37
|
context "search paths" do
|
35
38
|
subject { described_class.new }
|
36
39
|
|
37
40
|
it "should default the exclusion paths to an empty array" do
|
38
|
-
subject.excluded_search_paths.
|
41
|
+
expect(subject.excluded_search_paths).to eq([])
|
39
42
|
end
|
40
43
|
|
41
44
|
it "should set the exclusion paths to those in the config" do
|
42
45
|
subject.options["exclude_paths"] << 'vendor/assets/javascripts'
|
43
|
-
subject.excluded_search_paths.
|
46
|
+
expect(subject.excluded_search_paths).to eq(["vendor/assets/javascripts"])
|
44
47
|
end
|
45
48
|
|
46
49
|
it "should be the default search paths minus the exclude paths" do
|
47
|
-
subject.search_paths.
|
50
|
+
expect(subject.search_paths).to eq(subject.default_search_paths)
|
48
51
|
subject.options["exclude_paths"] << 'vendor/assets/javascripts'
|
49
|
-
subject.search_paths.
|
52
|
+
expect(subject.search_paths).
|
53
|
+
to eq(['app/assets/javascripts', 'lib/assets/javascripts'])
|
50
54
|
end
|
51
55
|
end
|
52
56
|
end
|
data/spec/lib/lint_spec.rb
CHANGED
@@ -9,72 +9,74 @@ describe Jshint::Lint do
|
|
9
9
|
let(:globals) { MultiJson.dump({ :jquery => true, :app => true }) }
|
10
10
|
|
11
11
|
subject do
|
12
|
-
Jshint::Configuration.
|
12
|
+
allow(Jshint::Configuration).to receive(:new).and_return(configuration)
|
13
13
|
described_class.new
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should initialize errors to an empty Hash" do
|
17
|
-
subject.errors.
|
17
|
+
expect(subject.errors).to be_a Hash
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should assing the Configration object to config" do
|
21
|
-
subject.config.
|
21
|
+
expect(subject.config).to eq(configuration)
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should respond to get_json" do
|
25
25
|
hash = { :hello => 'world' }
|
26
|
-
MultiJson.
|
26
|
+
expect(MultiJson).to receive(:dump).with(hash)
|
27
27
|
subject.get_json(hash)
|
28
28
|
end
|
29
29
|
|
30
|
-
describe
|
30
|
+
describe "lint" do
|
31
31
|
before do
|
32
|
-
subject.
|
33
|
-
subject.
|
34
|
-
subject.
|
32
|
+
allow(subject).to receive(:javascript_files).and_return(files)
|
33
|
+
allow(subject).to receive(:jshint_options).and_return(opts)
|
34
|
+
allow(subject).to receive(:jshint_globals).and_return(globals)
|
35
35
|
end
|
36
36
|
|
37
37
|
context "invalid file" do
|
38
38
|
before do
|
39
|
-
subject.
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
allow(subject).to receive(:get_file_content_as_json).
|
40
|
+
and_return(subject.get_json(<<-eos
|
41
|
+
var foo = "bar",
|
42
|
+
baz = "qux",
|
43
|
+
bat;
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
|
45
|
+
if (foo == baz) bat = "gorge" // no semicolon and single line
|
46
|
+
eos
|
47
|
+
))
|
47
48
|
subject.lint
|
48
49
|
end
|
49
50
|
|
50
51
|
it "should add two error messages to the errors Hash" do
|
51
|
-
subject.errors[file].length.
|
52
|
+
expect(subject.errors[file].length).to eq(2)
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
55
56
|
context "valid file" do
|
56
57
|
before do
|
57
|
-
subject.
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
allow(subject).to receive(:get_file_content_as_json).
|
59
|
+
and_return(subject.get_json(<<-eos
|
60
|
+
var foo = "bar",
|
61
|
+
baz = "qux",
|
62
|
+
bat;
|
61
63
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
64
|
+
if (foo == baz) {
|
65
|
+
bat = "gorge";
|
66
|
+
var x = "foo"; // jshint ignore:line
|
67
|
+
}
|
68
|
+
eos
|
69
|
+
))
|
68
70
|
subject.lint
|
69
71
|
end
|
70
72
|
|
71
73
|
it "should retrieve the files content" do
|
72
|
-
subject.
|
74
|
+
expect(subject).to receive(:get_file_content_as_json).with(file)
|
73
75
|
subject.lint
|
74
76
|
end
|
75
77
|
|
76
78
|
it "should add two error messages to the errors Hash" do
|
77
|
-
subject.errors[file].length.
|
79
|
+
expect(subject.errors[file].length).to eq(0)
|
78
80
|
end
|
79
81
|
end
|
80
82
|
end
|
@@ -46,67 +46,67 @@ describe Jshint::Reporters::Default do
|
|
46
46
|
subject { described_class.new(results) }
|
47
47
|
|
48
48
|
it "should initialize output to be an empty string" do
|
49
|
-
subject.output.
|
49
|
+
expect(subject.output).to eq('')
|
50
50
|
end
|
51
51
|
|
52
|
-
describe
|
52
|
+
describe "print_footer" do
|
53
53
|
it "should output a footer starting with a new line feed" do
|
54
|
-
subject.print_footer(3).start_with
|
54
|
+
expect(subject.print_footer(3)).to start_with("\n")
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should output a footer containing '3 errors'" do
|
58
|
-
subject.print_footer(3).
|
58
|
+
expect(subject.print_footer(3)).to include("3 errors")
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should output a footer containing '1 error'" do
|
62
|
-
subject.print_footer(1).
|
62
|
+
expect(subject.print_footer(1)).to include("1 error")
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
describe
|
66
|
+
describe "print_errors_for_file" do
|
67
67
|
before do
|
68
68
|
subject.print_errors_for_file("app/assets/javascripts/angular/controllers/feeds_controller.js", results["app/assets/javascripts/angular/controllers/feeds_controller.js"])
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should add 3 entries in to the error output" do
|
72
|
-
subject.output.split(/\r?\n/).length.
|
72
|
+
expect(subject.output.split(/\r?\n/).length).to eq(3)
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should contain the line number in to the error output" do
|
76
|
-
subject.output.
|
76
|
+
expect(subject.output).to include("line 1")
|
77
77
|
end
|
78
78
|
|
79
79
|
it "should contain the column number in to the error output" do
|
80
|
-
subject.output.
|
80
|
+
expect(subject.output).to include("col 1")
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should contain the filename in to the error output" do
|
84
|
-
subject.output.
|
84
|
+
expect(subject.output).to include("app/assets/javascripts/angular/controllers/feeds_controller.js")
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should contain the nature of the error in to the error output" do
|
88
|
-
subject.output.
|
88
|
+
expect(subject.output).to include("'app' is not defined")
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
-
describe
|
92
|
+
describe "report" do
|
93
93
|
it "should call print errors for file 1 time" do
|
94
|
-
subject.
|
94
|
+
expect(subject).to receive(:print_errors_for_file)
|
95
95
|
subject.report
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should print the report footer" do
|
99
|
-
subject.
|
99
|
+
expect(subject).to receive(:print_footer).with(3)
|
100
100
|
subject.report
|
101
101
|
end
|
102
102
|
|
103
103
|
it "should return a thorough report" do
|
104
|
-
subject.report.length.
|
104
|
+
expect(subject.report.length).to be >= 10
|
105
105
|
end
|
106
106
|
|
107
107
|
it "should return 0 errors when it has no results" do
|
108
108
|
subject.instance_variable_set(:@results, {})
|
109
|
-
subject.report.
|
109
|
+
expect(subject.report).to include "0 errors"
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,7 +2,6 @@ require 'coveralls'
|
|
2
2
|
Coveralls.wear!
|
3
3
|
|
4
4
|
RSpec.configure do |config|
|
5
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
6
5
|
config.run_all_when_everything_filtered = true
|
7
6
|
config.filter_run :focus
|
8
7
|
|
@@ -11,4 +10,9 @@ RSpec.configure do |config|
|
|
11
10
|
# the seed, which is printed after each run.
|
12
11
|
# --seed 1234
|
13
12
|
config.order = 'random'
|
13
|
+
|
14
|
+
# Require the RSpec 3 "expect()" syntax
|
15
|
+
config.expect_with :rspec do |c|
|
16
|
+
c.syntax = :expect
|
17
|
+
end
|
14
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jshint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -114,7 +114,7 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 3.1.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - ~>
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
125
|
+
version: 3.1.0
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: yard
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
191
191
|
version: '0'
|
192
192
|
segments:
|
193
193
|
- 0
|
194
|
-
hash:
|
194
|
+
hash: 3701102366372032400
|
195
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
196
|
none: false
|
197
197
|
requirements:
|
@@ -200,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
200
200
|
version: '0'
|
201
201
|
segments:
|
202
202
|
- 0
|
203
|
-
hash:
|
203
|
+
hash: 3701102366372032400
|
204
204
|
requirements: []
|
205
205
|
rubyforge_project:
|
206
206
|
rubygems_version: 1.8.23
|