checker 0.0.5 → 0.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/.travis.yml +12 -0
- data/CHANGELOG +7 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +22 -0
- data/README.md +11 -4
- data/Rakefile +3 -1
- data/checker.gemspec +7 -4
- data/lib/checker.rb +4 -0
- data/lib/checker/cli.rb +9 -4
- data/lib/checker/modules/base.rb +87 -46
- data/lib/checker/modules/coffeescript.rb +1 -1
- data/lib/checker/modules/haml.rb +4 -0
- data/lib/checker/modules/javascript.rb +3 -6
- data/lib/checker/modules/pry.rb +2 -21
- data/lib/checker/modules/ruby.rb +1 -1
- data/lib/checker/modules/sass.rb +2 -2
- data/lib/checker/modules/slim.rb +21 -0
- data/lib/checker/modules/yaml.rb +21 -0
- data/lib/checker/version.rb +3 -0
- data/spec/checker/cli_spec.rb +1 -8
- data/spec/checker/fixtures/pry/with_both.rb +4 -0
- data/spec/checker/fixtures/pry/with_pry.rb +3 -0
- data/spec/checker/fixtures/pry/with_pry_remote.rb +3 -0
- data/spec/checker/fixtures/pry/without_pry.rb +2 -0
- data/spec/checker/fixtures/ruby/1.8/bad.rb +3 -0
- data/spec/checker/fixtures/ruby/1.8/bad2.rb +2 -0
- data/spec/checker/fixtures/ruby/1.8/good.rb +3 -0
- data/spec/checker/fixtures/ruby/1.9/bad.rb +2 -0
- data/spec/checker/fixtures/ruby/1.9/good.rb +3 -0
- data/spec/checker/fixtures/yaml/bad.yaml +18 -0
- data/spec/checker/fixtures/yaml/good.yaml +18 -0
- data/spec/checker/modules/coffeescript_spec.rb +16 -0
- data/spec/checker/modules/haml_spec.rb +18 -0
- data/spec/checker/modules/javascript_spec.rb +18 -0
- data/spec/checker/modules/pry_spec.rb +35 -0
- data/spec/checker/modules/ruby_spec.rb +41 -3
- data/spec/checker/modules/sass_spec.rb +21 -0
- data/spec/checker/modules/slim_spec.rb +18 -0
- data/spec/checker/modules/yaml_spec.rb +27 -0
- data/spec/spec_helper.rb +23 -1
- metadata +39 -7
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
=== version 0.0.6 (released 2012-08-28)
|
2
|
+
|
3
|
+
* better support for rvm users
|
4
|
+
* adding slim support (thanks to Filip Skokan)
|
5
|
+
* better check for files which are staged and modified
|
6
|
+
* cleanups, speed and refactor
|
7
|
+
|
1
8
|
=== version 0.0.5 (released 2012-07-09)
|
2
9
|
|
3
10
|
* depencendy message - if executable not found,
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
colorize (0.5.8)
|
5
|
+
diff-lcs (1.1.3)
|
6
|
+
rake (0.9.2.2)
|
7
|
+
rspec (2.11.0)
|
8
|
+
rspec-core (~> 2.11.0)
|
9
|
+
rspec-expectations (~> 2.11.0)
|
10
|
+
rspec-mocks (~> 2.11.0)
|
11
|
+
rspec-core (2.11.0)
|
12
|
+
rspec-expectations (2.11.1)
|
13
|
+
diff-lcs (~> 1.1.3)
|
14
|
+
rspec-mocks (2.11.1)
|
15
|
+
|
16
|
+
PLATFORMS
|
17
|
+
ruby
|
18
|
+
|
19
|
+
DEPENDENCIES
|
20
|
+
colorize
|
21
|
+
rake
|
22
|
+
rspec
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Checker
|
1
|
+
# Checker [](http://travis-ci.org/netguru/checker)
|
2
2
|
|
3
3
|
A collection of modules for which every is designed to check syntax in files to be commited via git.
|
4
4
|
|
@@ -34,6 +34,13 @@ fi
|
|
34
34
|
echo ":checkered_flag:" >> $1
|
35
35
|
```
|
36
36
|
|
37
|
+
you can also prepend the flag to the first line of commit message, by changing last line with:
|
38
|
+
|
39
|
+
``` bash
|
40
|
+
text=`echo -n ':checkered_flag: '; cat $1`
|
41
|
+
echo $text > $1
|
42
|
+
```
|
43
|
+
|
37
44
|
#### pre-commit hook
|
38
45
|
To just check your source code every time you commit, add to your `.git/hooks/pre-commit` line:
|
39
46
|
|
@@ -68,12 +75,12 @@ To check only specific filetypes on commit, use `git config` :
|
|
68
75
|
git config checker.check 'ruby, haml, coffeescript'
|
69
76
|
```
|
70
77
|
|
71
|
-
Available options are: ruby, haml, pry, coffeescript, sass
|
78
|
+
Available options are: ruby, haml, pry, coffeescript, sass, slim
|
72
79
|
|
73
80
|
### Dependencies
|
74
81
|
|
75
82
|
For various modules to work you may need to install additional dependencies:
|
76
83
|
|
77
84
|
* coffeescript - `npm install -g coffee-script` - see https://github.com/jashkenas/coffee-script/
|
78
|
-
* javascript -
|
79
|
-
* haml & sass - `gem install haml
|
85
|
+
* javascript - install jsl binary - see http://www.javascriptlint.com/download.htm
|
86
|
+
* haml & sass & slim - `gem install haml sass slim`
|
data/Rakefile
CHANGED
data/checker.gemspec
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require File.expand_path('../lib/checker/version', __FILE__)
|
3
|
+
|
1
4
|
Gem::Specification.new do |s|
|
2
5
|
s.name = 'checker'
|
3
|
-
s.version =
|
4
|
-
s.date = '2012-
|
6
|
+
s.version = Checker::VERSION
|
7
|
+
s.date = '2012-08-28'
|
5
8
|
s.summary = "Syntax checker for various files"
|
6
9
|
s.description = "A collection of modules which every is designed to check syntax for specific files."
|
7
|
-
s.authors = ["Jacek Jakubik"]
|
8
|
-
s.email = 'jacek.jakubik@netguru.pl'
|
10
|
+
s.authors = ["Jacek Jakubik", "Tomasz Pewiński"]
|
11
|
+
s.email = ['jacek.jakubik@netguru.pl', 'tomasz.pewinski@netguru.pl']
|
9
12
|
s.files = `git ls-files`.split("\n")
|
10
13
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
11
14
|
s.require_paths = ["lib"]
|
data/lib/checker.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
require 'colorize'
|
2
|
+
require 'digest/md5'
|
2
3
|
|
3
4
|
require 'checker/core_ext'
|
5
|
+
require 'checker/version'
|
4
6
|
|
5
7
|
require "checker/modules/base"
|
6
8
|
require "checker/modules/ruby"
|
7
9
|
require "checker/modules/haml"
|
10
|
+
require "checker/modules/slim"
|
8
11
|
require "checker/modules/pry"
|
9
12
|
require "checker/modules/coffeescript"
|
10
13
|
require "checker/modules/javascript"
|
11
14
|
require "checker/modules/sass"
|
15
|
+
require "checker/modules/yaml"
|
data/lib/checker/cli.rb
CHANGED
@@ -21,13 +21,18 @@ module Checker
|
|
21
21
|
exit 1
|
22
22
|
end
|
23
23
|
|
24
|
-
|
24
|
+
module_instances = []
|
25
25
|
files = modified_files
|
26
26
|
modules.each do |mod|
|
27
27
|
klass = "Checker::Modules::#{mod.downcase.capitalize}".constantize
|
28
|
-
|
28
|
+
module_instances << klass.new(files.dup)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
|
+
files_checked = module_instances.map(&:files_to_check).flatten.uniq
|
32
|
+
puts "[ CHECKER #{Checker::VERSION} - #{files_checked.size} files ]".light_blue
|
33
|
+
|
34
|
+
results = module_instances.map(&:check)
|
35
|
+
exit (results.all_true? ? 0 : 1)
|
31
36
|
end
|
32
37
|
|
33
38
|
private
|
@@ -49,7 +54,7 @@ module Checker
|
|
49
54
|
end
|
50
55
|
|
51
56
|
def modified_files
|
52
|
-
@modified_files ||= `git status --porcelain | egrep "^(A
|
57
|
+
@modified_files ||= `git status --porcelain | egrep "^(A|M|R).*" | awk ' { if ($3 == "->") print $4; else print $2 } '`.split
|
53
58
|
end
|
54
59
|
end
|
55
60
|
end
|
data/lib/checker/modules/base.rb
CHANGED
@@ -2,10 +2,9 @@ module Checker
|
|
2
2
|
module Modules
|
3
3
|
class Base < Struct.new(:files)
|
4
4
|
def check
|
5
|
+
check_files_existing or return true
|
5
6
|
print_module_header
|
6
|
-
prepare_check
|
7
7
|
check_executable or return true
|
8
|
-
select_proper_files
|
9
8
|
check_all_files
|
10
9
|
valid?
|
11
10
|
end
|
@@ -14,19 +13,30 @@ module Checker
|
|
14
13
|
@results.all_true?
|
15
14
|
end
|
16
15
|
|
16
|
+
def files_to_check
|
17
|
+
@files_to_check ||= begin
|
18
|
+
if self.class.extensions.any?
|
19
|
+
self.files.select { |f|
|
20
|
+
self.class.extensions.map { |ex| f.ends_with?(".#{ex}") }.any?
|
21
|
+
}
|
22
|
+
else
|
23
|
+
self.files
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
17
28
|
private
|
18
29
|
|
19
30
|
def print_module_header
|
20
|
-
color "[ #{name} ]\n", :light_blue
|
31
|
+
color "[ #{name} - #{files_to_check.size} files ]\n", :light_blue
|
21
32
|
end
|
22
33
|
|
23
34
|
def dependency_message
|
24
35
|
"Executable not found, skipping...\n"
|
25
36
|
end
|
26
37
|
|
27
|
-
def
|
28
|
-
|
29
|
-
@results = []
|
38
|
+
def check_files_existing
|
39
|
+
files_to_check.any?
|
30
40
|
end
|
31
41
|
|
32
42
|
def check_executable
|
@@ -42,21 +52,22 @@ module Checker
|
|
42
52
|
true
|
43
53
|
end
|
44
54
|
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
55
|
+
def check_all_files
|
56
|
+
with_checker_cache do
|
57
|
+
@results = files_to_check.map do |file_name|
|
58
|
+
color " Checking #{file_name}...", :yellow
|
59
|
+
result = check_one_file(file_name)
|
60
|
+
show_status(result)
|
61
|
+
flush_and_forget_output(result)
|
62
|
+
result
|
63
|
+
end
|
51
64
|
end
|
52
|
-
@files_to_check
|
53
65
|
end
|
54
66
|
|
55
|
-
def
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
67
|
+
def check_one_file file_name
|
68
|
+
checksum = ::Digest::MD5.hexdigest(file_name)
|
69
|
+
checkout_file(file_name, checksum)
|
70
|
+
check_one(checkout_file_name(checksum))
|
60
71
|
end
|
61
72
|
|
62
73
|
def self.extensions *args
|
@@ -69,38 +80,47 @@ module Checker
|
|
69
80
|
end
|
70
81
|
|
71
82
|
def plain_command(cmd, options = {})
|
72
|
-
|
73
|
-
|
74
|
-
exitstatus
|
83
|
+
cmd = parse_command(cmd, options)
|
84
|
+
execute(cmd)
|
75
85
|
end
|
76
86
|
|
77
|
-
def
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
87
|
+
def silent_command(cmd, options = {})
|
88
|
+
options = { :output => false }.merge(options)
|
89
|
+
cmd = parse_command(cmd, options)
|
90
|
+
execute(cmd)
|
91
|
+
end
|
83
92
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
show_output(exitstatus, options)
|
88
|
-
exitstatus
|
93
|
+
def flush_and_forget_output(success)
|
94
|
+
print @buffer.to_s unless success
|
95
|
+
@buffer = ""
|
89
96
|
end
|
90
97
|
|
91
|
-
def
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
puts " [FAIL]".red
|
97
|
-
end
|
98
|
+
def show_status(success)
|
99
|
+
if success
|
100
|
+
puts " [OK]".green
|
101
|
+
else
|
102
|
+
puts " [FAIL]".red
|
98
103
|
end
|
99
104
|
end
|
100
105
|
|
101
|
-
|
102
106
|
def execute(cmd)
|
103
|
-
|
107
|
+
io = IO.popen(cmd)
|
108
|
+
Process.wait(io.pid)
|
109
|
+
@buffer ||= ""
|
110
|
+
@buffer << io.read
|
111
|
+
success?
|
112
|
+
end
|
113
|
+
|
114
|
+
def success?
|
115
|
+
$? && $?.success?
|
116
|
+
end
|
117
|
+
|
118
|
+
def parse_command command, options
|
119
|
+
options = { :bundler => true, :output => true }.merge(options)
|
120
|
+
command = bundler_command(command) if use_bundler? && options[:bundler]
|
121
|
+
command = rvm_command(command) if use_rvm?
|
122
|
+
command << " > /dev/null" unless options[:output]
|
123
|
+
"#{command} 2>&1"
|
104
124
|
end
|
105
125
|
|
106
126
|
def color(str, color)
|
@@ -112,20 +132,41 @@ module Checker
|
|
112
132
|
end
|
113
133
|
|
114
134
|
def use_bundler?
|
115
|
-
File.exists?("Gemfile.lock")
|
135
|
+
File.exists?("Gemfile.lock")
|
136
|
+
end
|
137
|
+
|
138
|
+
def bundler_command(command)
|
139
|
+
"bundle exec #{command}"
|
116
140
|
end
|
117
141
|
|
118
142
|
def use_rvm?
|
119
|
-
File.exists?(
|
143
|
+
File.exists?(rvm_shell)
|
144
|
+
end
|
145
|
+
|
146
|
+
def rvm_command(command)
|
147
|
+
rvm_version = ENV.fetch('RUBY_VERSION')
|
148
|
+
"#{rvm_shell} '#{rvm_version}' -c '#{command}'"
|
120
149
|
end
|
121
150
|
|
122
151
|
def rvm_shell
|
123
152
|
File.join(ENV.fetch('rvm_path', ''), 'bin/rvm-shell')
|
124
153
|
end
|
125
154
|
|
126
|
-
def
|
127
|
-
|
128
|
-
|
155
|
+
def with_checker_cache
|
156
|
+
begin
|
157
|
+
`mkdir .checker-cache`
|
158
|
+
yield if block_given?
|
159
|
+
ensure
|
160
|
+
`rm -rf .checker-cache > /dev/null 2>&1`
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def checkout_file file_name, target
|
165
|
+
`git show :0:#{file_name} > #{checkout_file_name(target)} 2>/dev/null`
|
166
|
+
end
|
167
|
+
|
168
|
+
def checkout_file_name target
|
169
|
+
".checker-cache/#{target}"
|
129
170
|
end
|
130
171
|
end
|
131
172
|
end
|
data/lib/checker/modules/haml.rb
CHANGED
@@ -7,6 +7,10 @@ module Checker
|
|
7
7
|
plain_command("haml --check #{file} >> /dev/null")
|
8
8
|
end
|
9
9
|
|
10
|
+
def check_for_executable
|
11
|
+
silent_command("haml -v")
|
12
|
+
end
|
13
|
+
|
10
14
|
def dependency_message
|
11
15
|
str = "Executable not found\n"
|
12
16
|
str << "Install haml from rubygems: 'gem install haml'\n"
|
@@ -8,7 +8,7 @@ module Checker
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def check_for_executable
|
11
|
-
|
11
|
+
silent_command('jsl -help:conf', :bundler => false)
|
12
12
|
end
|
13
13
|
|
14
14
|
def dependency_message
|
@@ -19,11 +19,8 @@ module Checker
|
|
19
19
|
end
|
20
20
|
|
21
21
|
# ignore exit status 1 - warnings
|
22
|
-
def
|
23
|
-
|
24
|
-
exitstatus = $?.exitstatus == 0 || $?.exitstatus == 1
|
25
|
-
show_output(exitstatus, options)
|
26
|
-
exitstatus
|
22
|
+
def success?
|
23
|
+
$? && ($?.exitstatus == 0 || $?.exitstatus == 1)
|
27
24
|
end
|
28
25
|
end
|
29
26
|
end
|
data/lib/checker/modules/pry.rb
CHANGED
@@ -8,30 +8,11 @@ module Checker
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def check_for_binding_pry(file)
|
11
|
-
|
12
|
-
|
13
|
-
unless result.empty?
|
14
|
-
puts " pry -> FAIL, ".red
|
15
|
-
puts result
|
16
|
-
else
|
17
|
-
print " pry -> OK, ".green
|
18
|
-
end
|
19
|
-
|
20
|
-
result.empty?
|
11
|
+
!plain_command("grep -n \"binding\\.pry\" #{file}", :bundler => false)
|
21
12
|
end
|
22
13
|
|
23
14
|
def check_for_binding_remote_pry(file)
|
24
|
-
|
25
|
-
|
26
|
-
unless result.empty?
|
27
|
-
puts " remote_pry -> FAIL".red
|
28
|
-
puts result
|
29
|
-
else
|
30
|
-
print " remote_pry -> OK".green
|
31
|
-
end
|
32
|
-
puts ""
|
33
|
-
|
34
|
-
result.empty?
|
15
|
+
!plain_command("grep -n \"binding\\.remote_pry\" #{file}", :bundler => false)
|
35
16
|
end
|
36
17
|
end
|
37
18
|
end
|
data/lib/checker/modules/ruby.rb
CHANGED
data/lib/checker/modules/sass.rb
CHANGED
@@ -4,11 +4,11 @@ module Checker
|
|
4
4
|
extensions 'scss', 'sass'
|
5
5
|
private
|
6
6
|
def check_one(file)
|
7
|
-
|
7
|
+
plain_command("sass #{file}")
|
8
8
|
end
|
9
9
|
|
10
10
|
def check_for_executable
|
11
|
-
|
11
|
+
silent_command("sass -v")
|
12
12
|
end
|
13
13
|
|
14
14
|
def dependency_message
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Checker
|
2
|
+
module Modules
|
3
|
+
class Slim < Base
|
4
|
+
extensions 'slim'
|
5
|
+
private
|
6
|
+
def check_one(file)
|
7
|
+
plain_command("slimrb --compile #{file} >> /dev/null")
|
8
|
+
end
|
9
|
+
|
10
|
+
def check_for_executable
|
11
|
+
silent_command("slimrb -v")
|
12
|
+
end
|
13
|
+
|
14
|
+
def dependency_message
|
15
|
+
str = "Executable not found\n"
|
16
|
+
str << "Install slim from rubygems: 'gem install slim'\n"
|
17
|
+
str
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Checker
|
4
|
+
module Modules
|
5
|
+
class Yaml < Base
|
6
|
+
extensions 'yaml', 'yml'
|
7
|
+
private
|
8
|
+
def check_one(file)
|
9
|
+
ret = begin
|
10
|
+
YAML.load_file(file)
|
11
|
+
true
|
12
|
+
rescue Exception => e
|
13
|
+
puts e
|
14
|
+
false
|
15
|
+
end
|
16
|
+
show_status(ret)
|
17
|
+
ret
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/checker/cli_spec.rb
CHANGED
@@ -17,13 +17,6 @@ module Checker
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe Checker::CLI do
|
20
|
-
before do
|
21
|
-
@argv_copy = ARGV
|
22
|
-
end
|
23
|
-
after do
|
24
|
-
ARGV = @argv_copy
|
25
|
-
end
|
26
|
-
|
27
20
|
context "running without arguments" do
|
28
21
|
it "should run checks on modules from git config" do
|
29
22
|
ARGV.stub(:size).and_return 0
|
@@ -35,7 +28,7 @@ describe Checker::CLI do
|
|
35
28
|
|
36
29
|
context "running with argument" do
|
37
30
|
it "should run check on modules from argument" do
|
38
|
-
ARGV
|
31
|
+
stub_const("ARGV", ["pry"])
|
39
32
|
Checker::CLI.should_not_receive(:get_modules_to_check)
|
40
33
|
Checker::CLI.should_receive(:exit).with(0).and_return true
|
41
34
|
Checker::CLI.execute
|
@@ -0,0 +1,18 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
mobile_ipad: "iPad"
|
3
|
+
mobile_agents:
|
4
|
+
- "AppleWebKit.+Mobile"
|
5
|
+
- "webOS"
|
6
|
+
- "SymbianOS"
|
7
|
+
- "AppleWebKit.+midori"
|
8
|
+
new_search_config:
|
9
|
+
options:
|
10
|
+
suffix: "/search"
|
11
|
+
params:
|
12
|
+
a: "a"
|
13
|
+
b: "b"
|
14
|
+
|
15
|
+
test:
|
16
|
+
<<: *defaults
|
17
|
+
discount: 0.12
|
18
|
+
host: test.test
|
@@ -0,0 +1,18 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
mobile_ipad: "iPad"
|
3
|
+
mobile_agents:
|
4
|
+
- "AppleWebKit.+Mobile"
|
5
|
+
- "webOS"
|
6
|
+
- "SymbianOS"
|
7
|
+
- "AppleWebKit.+midori"
|
8
|
+
new_search_config:
|
9
|
+
options:
|
10
|
+
suffix: "/search"
|
11
|
+
params:
|
12
|
+
a: "a"
|
13
|
+
b: "b"
|
14
|
+
|
15
|
+
test:
|
16
|
+
<<: *defaults
|
17
|
+
discount: 0.12
|
18
|
+
host: test.test
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Checker::Modules::Coffeescript do
|
4
|
+
it 'should only check .coffee files' do
|
5
|
+
files = ['a.rb', 'b.js.erb', 'c.r', 'd.yml', 'e.yaml', 'f.coffee']
|
6
|
+
mod = Checker::Modules::Coffeescript.new(files)
|
7
|
+
mod.stub(:check_for_executable).and_return(true)
|
8
|
+
mod.should_receive(:check_one_file).with('f.coffee')
|
9
|
+
mod.should_not_receive(:check_one_file).with('e.yaml')
|
10
|
+
mod.should_not_receive(:check_one_file).with('d.yml')
|
11
|
+
mod.should_not_receive(:check_one_file).with('a.rb')
|
12
|
+
mod.should_not_receive(:check_one_file).with('b.js.erb')
|
13
|
+
mod.should_not_receive(:check_one_file).with('c.r')
|
14
|
+
mod.check
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Checker::Modules::Haml do
|
4
|
+
it 'should only check .haml files' do
|
5
|
+
files = ['a.rb', 'b.js.erb', 'c.r', 'd.yml', 'e.yaml', 'f.coffee', 'g.haml']
|
6
|
+
mod = Checker::Modules::Haml.new(files)
|
7
|
+
mod.stub(:check_for_executable).and_return(true)
|
8
|
+
mod.stub(:check_one_file).and_return(true)
|
9
|
+
mod.should_receive(:check_one_file).with('g.haml')
|
10
|
+
mod.should_not_receive(:check_one_file).with('f.coffee')
|
11
|
+
mod.should_not_receive(:check_one_file).with('e.yaml')
|
12
|
+
mod.should_not_receive(:check_one_file).with('d.yml')
|
13
|
+
mod.should_not_receive(:check_one_file).with('a.rb')
|
14
|
+
mod.should_not_receive(:check_one_file).with('b.js.erb')
|
15
|
+
mod.should_not_receive(:check_one_file).with('c.r')
|
16
|
+
mod.check
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Checker::Modules::Javascript do
|
4
|
+
it 'should only check .js files' do
|
5
|
+
files = ['a.rb', 'b.js.erb', 'c.r', 'd.yml', 'e.yaml', 'f.coffee', 'g.haml', 'h.js']
|
6
|
+
mod = Checker::Modules::Javascript.new(files)
|
7
|
+
mod.stub(:check_for_executable).and_return(true)
|
8
|
+
mod.should_receive(:check_one_file).with('h.js').and_return(true)
|
9
|
+
mod.should_not_receive(:check_one_file).with('g.haml')
|
10
|
+
mod.should_not_receive(:check_one_file).with('f.coffee')
|
11
|
+
mod.should_not_receive(:check_one_file).with('e.yaml')
|
12
|
+
mod.should_not_receive(:check_one_file).with('d.yml')
|
13
|
+
mod.should_not_receive(:check_one_file).with('a.rb')
|
14
|
+
mod.should_not_receive(:check_one_file).with('b.js.erb')
|
15
|
+
mod.should_not_receive(:check_one_file).with('c.r')
|
16
|
+
mod.check
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Checker::Modules::Pry do
|
4
|
+
it 'should check all files' do
|
5
|
+
files = ['a.rb', 'b.js.erb', 'c.r', 'd.yaml', 'e.yml', 'f.coffee']
|
6
|
+
mod = Checker::Modules::Pry.new(files)
|
7
|
+
mod.stub(:check_one).and_return(true)
|
8
|
+
mod.should_receive(:check_one).exactly(6).times
|
9
|
+
mod.check
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should not find the pry or remote_pry" do
|
13
|
+
files = [fixture("pry", "without_pry.rb")]
|
14
|
+
mod = Checker::Modules::Pry.new(files)
|
15
|
+
mod.check.should be_true
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should find the pry or remote_pry" do
|
19
|
+
files = [fixture("pry", "with_pry.rb")]
|
20
|
+
mod = Checker::Modules::Pry.new(files)
|
21
|
+
mod.check.should be_false
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should find the pry or remote_pry" do
|
25
|
+
files = [fixture("pry", "with_pry_remote.rb")]
|
26
|
+
mod = Checker::Modules::Pry.new(files)
|
27
|
+
mod.check.should be_false
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should find the pry or remote_pry" do
|
31
|
+
files = [fixture("pry", "with_both.rb")]
|
32
|
+
mod = Checker::Modules::Pry.new(files)
|
33
|
+
mod.check.should be_false
|
34
|
+
end
|
35
|
+
end
|
@@ -4,8 +4,46 @@ describe Checker::Modules::Ruby do
|
|
4
4
|
it 'should only check .rb files' do
|
5
5
|
files = ['a.rb', 'b.js.erb', 'c.r']
|
6
6
|
mod = Checker::Modules::Ruby.new(files)
|
7
|
-
mod.stub(:
|
8
|
-
mod.should_receive(:
|
7
|
+
mod.stub(:check_one_file).and_return(true)
|
8
|
+
mod.should_receive(:check_one_file).with('a.rb')
|
9
|
+
mod.should_not_receive(:check_one_file).with('b.js.erb')
|
10
|
+
mod.should_not_receive(:check_one_file).with('c.r')
|
9
11
|
mod.check
|
10
12
|
end
|
11
|
-
|
13
|
+
|
14
|
+
# 1.8
|
15
|
+
if RUBY_VERSION < "1.9"
|
16
|
+
it "should pass the syntax check" do
|
17
|
+
files = [fixture("ruby", "1.8/good.rb")]
|
18
|
+
mod = Checker::Modules::Ruby.new(files)
|
19
|
+
mod.check.should be_true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not pass the syntax check" do
|
23
|
+
files = [fixture("ruby", "1.8/bad.rb")]
|
24
|
+
mod = Checker::Modules::Ruby.new(files)
|
25
|
+
mod.check.should be_false
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should not pass the syntax check" do
|
29
|
+
files = [fixture("ruby", "1.8/bad2.rb")]
|
30
|
+
mod = Checker::Modules::Ruby.new(files)
|
31
|
+
mod.check.should be_false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
if RUBY_VERSION >= "1.9"
|
36
|
+
it "should pass the syntax check" do
|
37
|
+
files = [fixture("ruby", "1.9/good.rb")]
|
38
|
+
mod = Checker::Modules::Ruby.new(files)
|
39
|
+
mod.check.should be_true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should not pass the syntax check" do
|
43
|
+
files = [fixture("ruby", "1.9/bad.rb")]
|
44
|
+
mod = Checker::Modules::Ruby.new(files)
|
45
|
+
mod.check.should be_false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
# 1.9
|
49
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Checker::Modules::Sass do
|
4
|
+
it 'should only check .sass and .scss files' do
|
5
|
+
files = ['a.rb', 'b.js.erb', 'c.r', 'd.yml', 'e.yaml', 'f.coffee', 'g.haml', 'h.js', 'i.scss', 'j.sass']
|
6
|
+
mod = Checker::Modules::Sass.new(files)
|
7
|
+
mod.stub(:check_for_executable).and_return(true)
|
8
|
+
mod.stub(:check_one_file).and_return(true)
|
9
|
+
mod.should_receive(:check_one_file).with('j.sass')
|
10
|
+
mod.should_receive(:check_one_file).with('i.scss')
|
11
|
+
mod.should_not_receive(:check_one_file).with('h.js')
|
12
|
+
mod.should_not_receive(:check_one_file).with('g.haml')
|
13
|
+
mod.should_not_receive(:check_one_file).with('f.coffee')
|
14
|
+
mod.should_not_receive(:check_one_file).with('e.yaml')
|
15
|
+
mod.should_not_receive(:check_one_file).with('d.yml')
|
16
|
+
mod.should_not_receive(:check_one_file).with('a.rb')
|
17
|
+
mod.should_not_receive(:check_one_file).with('b.js.erb')
|
18
|
+
mod.should_not_receive(:check_one_file).with('c.r')
|
19
|
+
mod.check
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Checker::Modules::Slim do
|
4
|
+
it 'should only check .slim files' do
|
5
|
+
files = ['a.rb', 'b.js.erb', 'c.r', 'd.yml', 'e.yaml', 'f.coffee', 'g.slim']
|
6
|
+
mod = Checker::Modules::Slim.new(files)
|
7
|
+
mod.stub(:check_for_executable).and_return(true)
|
8
|
+
mod.stub(:check_one_file).and_return(true)
|
9
|
+
mod.should_receive(:check_one_file).with('g.slim')
|
10
|
+
mod.should_not_receive(:check_one_file).with('f.coffee')
|
11
|
+
mod.should_not_receive(:check_one_file).with('e.yaml')
|
12
|
+
mod.should_not_receive(:check_one_file).with('d.yml')
|
13
|
+
mod.should_not_receive(:check_one_file).with('a.rb')
|
14
|
+
mod.should_not_receive(:check_one_file).with('b.js.erb')
|
15
|
+
mod.should_not_receive(:check_one_file).with('c.r')
|
16
|
+
mod.check
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Checker::Modules::Yaml do
|
4
|
+
it 'should only check .yaml and .yml files' do
|
5
|
+
files = ['a.rb', 'b.js.erb', 'c.r', 'd.yml', 'e.yaml']
|
6
|
+
mod = Checker::Modules::Yaml.new(files)
|
7
|
+
mod.stub(:check_one_file).and_return(true)
|
8
|
+
mod.should_receive(:check_one_file).with('d.yml')
|
9
|
+
mod.should_receive(:check_one_file).with('e.yaml')
|
10
|
+
mod.should_not_receive(:check_one_file).with('a.rb')
|
11
|
+
mod.should_not_receive(:check_one_file).with('b.js.erb')
|
12
|
+
mod.should_not_receive(:check_one_file).with('c.r')
|
13
|
+
mod.check
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should properly fetch yaml files" do
|
17
|
+
files = [fixture("yaml", "good.yaml")]
|
18
|
+
mod = Checker::Modules::Yaml.new(files)
|
19
|
+
mod.check.should be_true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should not pass the syntax check" do
|
23
|
+
files = [fixture("yaml", "bad.yaml")]
|
24
|
+
mod = Checker::Modules::Yaml.new(files)
|
25
|
+
mod.check.should be_false
|
26
|
+
end
|
27
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
|
1
3
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
4
|
|
3
|
-
|
5
|
+
FIXTURES_PATH = File.join(File.dirname(__FILE__), "checker", "fixtures")
|
6
|
+
|
7
|
+
def fixture(dir, filename)
|
8
|
+
"#{FIXTURES_PATH}/#{dir}/#{filename}"
|
9
|
+
end
|
10
|
+
|
11
|
+
def digest filename
|
12
|
+
Digest::MD5.hexdigest(filename)
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'checker/cli'
|
16
|
+
|
17
|
+
module Checker
|
18
|
+
module Modules
|
19
|
+
class Base
|
20
|
+
def checkout_file file_name, target
|
21
|
+
`cp #{file_name} #{checkout_file_name(target)} > /dev/null 2>&1`
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,30 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jacek Jakubik
|
9
|
+
- Tomasz Pewiński
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2012-
|
13
|
+
date: 2012-08-28 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: colorize
|
16
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
17
18
|
none: false
|
18
19
|
requirements:
|
19
|
-
- - =
|
20
|
+
- - '='
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: 0.5.8
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - '='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 0.5.8
|
25
31
|
description: A collection of modules which every is designed to check syntax for specific
|
26
32
|
files.
|
27
|
-
email:
|
33
|
+
email:
|
34
|
+
- jacek.jakubik@netguru.pl
|
35
|
+
- tomasz.pewinski@netguru.pl
|
28
36
|
executables:
|
29
37
|
- checker
|
30
38
|
- prepare-commit-msg
|
@@ -32,7 +40,10 @@ extensions: []
|
|
32
40
|
extra_rdoc_files: []
|
33
41
|
files:
|
34
42
|
- .gitignore
|
43
|
+
- .travis.yml
|
35
44
|
- CHANGELOG
|
45
|
+
- Gemfile
|
46
|
+
- Gemfile.lock
|
36
47
|
- README.md
|
37
48
|
- Rakefile
|
38
49
|
- bin/checker
|
@@ -48,8 +59,29 @@ files:
|
|
48
59
|
- lib/checker/modules/pry.rb
|
49
60
|
- lib/checker/modules/ruby.rb
|
50
61
|
- lib/checker/modules/sass.rb
|
62
|
+
- lib/checker/modules/slim.rb
|
63
|
+
- lib/checker/modules/yaml.rb
|
64
|
+
- lib/checker/version.rb
|
51
65
|
- spec/checker/cli_spec.rb
|
66
|
+
- spec/checker/fixtures/pry/with_both.rb
|
67
|
+
- spec/checker/fixtures/pry/with_pry.rb
|
68
|
+
- spec/checker/fixtures/pry/with_pry_remote.rb
|
69
|
+
- spec/checker/fixtures/pry/without_pry.rb
|
70
|
+
- spec/checker/fixtures/ruby/1.8/bad.rb
|
71
|
+
- spec/checker/fixtures/ruby/1.8/bad2.rb
|
72
|
+
- spec/checker/fixtures/ruby/1.8/good.rb
|
73
|
+
- spec/checker/fixtures/ruby/1.9/bad.rb
|
74
|
+
- spec/checker/fixtures/ruby/1.9/good.rb
|
75
|
+
- spec/checker/fixtures/yaml/bad.yaml
|
76
|
+
- spec/checker/fixtures/yaml/good.yaml
|
77
|
+
- spec/checker/modules/coffeescript_spec.rb
|
78
|
+
- spec/checker/modules/haml_spec.rb
|
79
|
+
- spec/checker/modules/javascript_spec.rb
|
80
|
+
- spec/checker/modules/pry_spec.rb
|
52
81
|
- spec/checker/modules/ruby_spec.rb
|
82
|
+
- spec/checker/modules/sass_spec.rb
|
83
|
+
- spec/checker/modules/slim_spec.rb
|
84
|
+
- spec/checker/modules/yaml_spec.rb
|
53
85
|
- spec/spec_helper.rb
|
54
86
|
homepage: http://github.com/netguru/checker
|
55
87
|
licenses: []
|
@@ -71,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
103
|
version: '0'
|
72
104
|
requirements: []
|
73
105
|
rubyforge_project:
|
74
|
-
rubygems_version: 1.8.
|
106
|
+
rubygems_version: 1.8.24
|
75
107
|
signing_key:
|
76
108
|
specification_version: 3
|
77
109
|
summary: Syntax checker for various files
|