syntaxer 0.1.0

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.
@@ -0,0 +1,80 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'git'
5
+ require 'syntaxer'
6
+ require "tmpdir"
7
+
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
12
+ # RSpec.configure do |config|
13
+ # end
14
+
15
+ ROOT = File.join(File.dirname(__FILE__), '..')
16
+
17
+ def silence_warnings
18
+ old_verbose, $VERBOSE = $VERBOSE, nil
19
+ yield
20
+ ensure
21
+ $VERBOSE = old_verbose
22
+ end
23
+
24
+ def create_temp_git_repo
25
+ @dir = Dir.tmpdir + "/#{Time.now.to_i}" + "/git_repo"
26
+ FileUtils.mkdir_p(@dir)
27
+ return @dir
28
+ end
29
+
30
+ def create_temp_ruby_project
31
+ @ruby_repo_dir ||= create_temp_git_repo
32
+ Git.init(@ruby_repo_dir)
33
+ @ruby_repo_dir
34
+ end
35
+
36
+ def add_file_to_repo(lang, repo_dir, file_name)
37
+ FileUtils.mkdir_p(File.join(repo_dir,lang.to_s))
38
+ FileUtils.cp(File.join(fixtures_path, lang.to_s, file_name),File.join(repo_dir,lang.to_s,file_name))
39
+ end
40
+
41
+ def make_git_add(ruby_repo_dir)
42
+ g = Git.open(Dir.new(ruby_repo_dir))
43
+ g.chdir do
44
+ g.add('.')
45
+ end
46
+ end
47
+
48
+ def make_initial_commit(ruby_repo_dir)
49
+ g = Git.open(Dir.new(ruby_repo_dir))
50
+ FileUtils.touch(File.join(ruby_repo_dir, 'README'))
51
+ make_git_add(ruby_repo_dir)
52
+ g.commit('first commit')
53
+ end
54
+
55
+ def make_commit(ruby_repo_dir)
56
+ g = Git.open(Dir.new(ruby_repo_dir))
57
+ g.chdir do
58
+ g.commit('second commit')
59
+ end
60
+ end
61
+
62
+ def add_hook(ruby_repo_dir)
63
+ bin_file = File.join(File.expand_path('../'),'syntaxer/bin', 'syntaxer')
64
+ hook_file = File.join(ruby_repo_dir,'.git/hooks/pre-commit')
65
+ File.open(hook_file, 'w') do |f|
66
+ f.puts "#{bin_file} -c #{syntaxer_rules_example_file('syntaxer_rules_git')} -r git -p #{ruby_repo_dir}"
67
+ end
68
+ File.chmod(0755, hook_file)
69
+ end
70
+
71
+ def fixtures_path(lang = nil)
72
+ p = File.join(File.dirname(__FILE__), 'fixtures')
73
+ p = File.join(p, lang.to_s) if lang
74
+ p
75
+ end
76
+
77
+ def syntaxer_rules_example_file file = ''
78
+ File.join(fixtures_path, "#{file.empty? ? 'syntaxer_rules': file}.rb" )
79
+ end
80
+
@@ -0,0 +1,47 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Syntaxer" do
4
+ subject {Syntaxer}
5
+
6
+ it {should respond_to(:check_syntax)}
7
+
8
+ context "in plain mode" do
9
+ it "should exit with error if where is syntax mistake" do
10
+ lambda{ subject.check_syntax({:root_path => fixtures_path, :config_file => syntaxer_rules_example_file}) }.should raise_exception
11
+ end
12
+ end
13
+
14
+ context "checking GIT repo" do
15
+
16
+ before(:each) do
17
+ @repo_dir = create_temp_ruby_project
18
+ make_initial_commit(@repo_dir)
19
+ end
20
+
21
+ it "should exit with error if there are files whith errors" do
22
+ add_file_to_repo(:ruby, @repo_dir, "correct.rb.example")
23
+ add_file_to_repo(:ruby, @repo_dir, "wrong.rb.example")
24
+ make_git_add(@repo_dir)
25
+ add_hook @repo_dir
26
+ g = Git.open(Dir.new(@repo_dir))
27
+ g.chdir do
28
+ lambda {g.commit('second commit')}.should raise_exception
29
+ end
30
+ end
31
+
32
+ it "should commit if there are no errors in files" do
33
+ add_file_to_repo(:ruby, @repo_dir, "correct.rb.example")
34
+ make_git_add(@repo_dir)
35
+ add_hook @repo_dir
36
+ g = Git.open(Dir.new(@repo_dir))
37
+ g.chdir do
38
+ lambda {g.commit('second commit')}.should_not raise_exception
39
+ end
40
+ end
41
+
42
+ after(:each) do
43
+ FileUtils.rm_rf(@repo_dir)
44
+ end
45
+ end
46
+
47
+ end
@@ -0,0 +1,20 @@
1
+ syntaxer do
2
+ languages :ruby do
3
+ folders "**/*"
4
+ extensions "rb", "rake"
5
+ specific_files "Rakefile", "Thorfile"
6
+ exec_rule "ruby -wc %filename%"
7
+ end
8
+
9
+ lang :sass do
10
+ folders "**/*"
11
+ extensions "sass"
12
+ exec_rule "sass -c %filename%"
13
+ end
14
+
15
+ lang :haml do
16
+ folders "**/*"
17
+ extensions "haml"
18
+ exec_rule "haml -c %filename%"
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,227 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: syntaxer
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - artemk
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-04-16 00:00:00 +03:00
14
+ default_executable: syntaxer
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: git
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rainbow
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.3.0
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: yard
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 0.6.0
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: bundler
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 1.0.0
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: jeweler
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 1.5.2
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: rcov
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: *id007
93
+ - !ruby/object:Gem::Dependency
94
+ name: cucumber
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ type: :development
102
+ prerelease: false
103
+ version_requirements: *id008
104
+ - !ruby/object:Gem::Dependency
105
+ name: aruba
106
+ requirement: &id009 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: "0"
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: *id009
115
+ - !ruby/object:Gem::Dependency
116
+ name: git
117
+ requirement: &id010 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 1.2.5
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: *id010
126
+ - !ruby/object:Gem::Dependency
127
+ name: rainbow
128
+ requirement: &id011 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 1.1.1
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: *id011
137
+ description: Syntax checker for ruby and other languages
138
+ email: kramarenko.artyom@gmail.com
139
+ executables:
140
+ - syntaxer
141
+ extensions: []
142
+
143
+ extra_rdoc_files:
144
+ - LICENSE.txt
145
+ - README.rdoc
146
+ files:
147
+ - Gemfile
148
+ - Gemfile.lock
149
+ - LICENSE.txt
150
+ - README.rdoc
151
+ - Rakefile
152
+ - VERSION
153
+ - bin/syntaxer
154
+ - features/plain_check.feature
155
+ - features/repository_check.feature
156
+ - features/step_definitions/plain_checker.rb
157
+ - features/step_definitions/repository_checker.rb
158
+ - features/support/env.rb
159
+ - features/support/hooks.rb
160
+ - features/support/plain_helpers.rb
161
+ - init.rb
162
+ - lib/syntaxer.rb
163
+ - lib/syntaxer/checker.rb
164
+ - lib/syntaxer/file_status.rb
165
+ - lib/syntaxer/language_definition.rb
166
+ - lib/syntaxer/printer.rb
167
+ - lib/syntaxer/railtie.rb
168
+ - lib/syntaxer/reader.rb
169
+ - lib/syntaxer/repository.rb
170
+ - lib/syntaxer/version.rb
171
+ - lib/tasks/syntaxer.rake
172
+ - rails/init.rb
173
+ - spec/checker_spec.rb
174
+ - spec/fixtures/haml/correct.html.haml
175
+ - spec/fixtures/haml/wrong.html.haml
176
+ - spec/fixtures/ruby/correct.rb.example
177
+ - spec/fixtures/ruby/wrong.rb.example
178
+ - spec/fixtures/syntaxer_rules.rb
179
+ - spec/fixtures/syntaxer_rules_git.rb
180
+ - spec/language_rules_spec.rb
181
+ - spec/printer_spec.rb
182
+ - spec/reader_spec.rb
183
+ - spec/repository_spec.rb
184
+ - spec/spec_helper.rb
185
+ - spec/syntaxer_spec.rb
186
+ - syntaxer_rules.dist.rb
187
+ has_rdoc: true
188
+ homepage: http://github.com/artemk/syntaxer
189
+ licenses:
190
+ - MIT
191
+ post_install_message:
192
+ rdoc_options: []
193
+
194
+ require_paths:
195
+ - lib
196
+ required_ruby_version: !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ hash: 931220418047199103
202
+ segments:
203
+ - 0
204
+ version: "0"
205
+ required_rubygems_version: !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: "0"
211
+ requirements: []
212
+
213
+ rubyforge_project:
214
+ rubygems_version: 1.5.2
215
+ signing_key:
216
+ specification_version: 3
217
+ summary: Syntax checker for ruby and other languages
218
+ test_files:
219
+ - spec/checker_spec.rb
220
+ - spec/fixtures/syntaxer_rules.rb
221
+ - spec/fixtures/syntaxer_rules_git.rb
222
+ - spec/language_rules_spec.rb
223
+ - spec/printer_spec.rb
224
+ - spec/reader_spec.rb
225
+ - spec/repository_spec.rb
226
+ - spec/spec_helper.rb
227
+ - spec/syntaxer_spec.rb