ammeter 1.0.0 → 1.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.
- checksums.yaml +4 -4
- data/Gemfile +25 -3
- data/README.md +15 -7
- data/ammeter.gemspec +1 -0
- data/features/generator_in_a_gem.feature +1 -1
- data/features/generator_spec.feature +6 -6
- data/features/hooking_into_other_generators.feature +1 -1
- data/features/support/aruba_timeout.rb +0 -7
- data/features/support/env.rb +14 -2
- data/features/templates/my_rails_gem/Gemfile +26 -0
- data/features/templates/my_rails_gem/my_rails_gem.gemspec +1 -2
- data/features/templates/my_rails_gem/spec/spec_helper.rb +2 -0
- data/features/templates/my_railties_gem/Gemfile +26 -0
- data/features/templates/my_railties_gem/my_railties_gem.gemspec +1 -2
- data/lib/ammeter/init.rb +1 -1
- data/lib/ammeter/rspec/generator/matchers.rb +2 -0
- data/lib/ammeter/rspec/generator/matchers/be_a_migration.rb +1 -1
- data/lib/ammeter/rspec/generator/matchers/have_correct_syntax.rb +54 -0
- data/lib/ammeter/rspec/generator/matchers/have_method.rb +10 -0
- data/lib/ammeter/version.rb +1 -1
- data/spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb +2 -2
- data/spec/ammeter/rspec/generator/matchers/have_correct_syntax_spec.rb +106 -0
- data/spec/ammeter/rspec/generator/matchers/have_method_spec.rb +13 -0
- data/spec/spec_helper.rb +6 -0
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f14d89dc8ba87e492a772bd8e81a8370641b8bd
|
4
|
+
data.tar.gz: bea93658480644d813daafa47b58510c7d9c856b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24107720705e3ff11ba9691b762c43fe2b0d09c2608e00c9438a4ae25699acbc3f27993169c40f739fd30a66fc3a7ff65281ed9673a43330eaeb534b6858dbfa
|
7
|
+
data.tar.gz: 7687869b3fddd91f0fba62b628b23f3059befdfba8bdfd1cb25f08bfa64864237ac121152aaef5ebef12999a36f1a05002a8430e966179e676890811673f3e7c
|
data/Gemfile
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
rspec_version = ENV['RSPEC_VERSION']
|
3
|
+
rspec_version = ENV['RSPEC_VERSION']
|
4
|
+
rspec_major_version = (rspec_version && rspec_version != 'master') ? rspec_version.split('.')[0] : '3'
|
4
5
|
|
5
|
-
|
6
|
-
when 'master'
|
6
|
+
if rspec_version == 'master'
|
7
7
|
gem "rspec-rails", :git => 'git://github.com/rspec/rspec-rails.git'
|
8
8
|
gem "rspec", :git => 'git://github.com/rspec/rspec.git'
|
9
9
|
gem "rspec-core", :git => 'git://github.com/rspec/rspec-core.git'
|
@@ -16,6 +16,28 @@ else
|
|
16
16
|
gem 'rspec', rspec_version
|
17
17
|
end
|
18
18
|
|
19
|
+
case rspec_major_version
|
20
|
+
when '2'
|
21
|
+
# rspec 2.x does not support Rails 4.1+
|
22
|
+
gem 'rails', '~> 3.2'
|
23
|
+
gem 'uglifier', '~> 1.2.4'
|
24
|
+
gem 'rake', '~> 0.9.2.2'
|
25
|
+
gem 'coffee-rails', '~> 3.2'
|
26
|
+
gem 'sass-rails', '~> 3.2'
|
27
|
+
gem 'jquery-rails', '~> 2.0'
|
28
|
+
gem 'haml-rails', '~> 0.4'
|
29
|
+
when '3'
|
30
|
+
gem 'rails', '>= 4.0'
|
31
|
+
gem 'uglifier', '>= 1.3'
|
32
|
+
gem 'rake', '>= 0.10'
|
33
|
+
gem 'coffee-rails', '>= 4.0'
|
34
|
+
gem 'sass-rails', '>= 4.0'
|
35
|
+
gem 'jquery-rails', '>= 3.0'
|
36
|
+
gem 'haml-rails', '>= 0.5'
|
37
|
+
else
|
38
|
+
raise "rspec version #{rspec_version} is not supported"
|
39
|
+
end
|
40
|
+
|
19
41
|
# Specify your gem's dependencies in rspec-rails-generator-specs.gemspec
|
20
42
|
gemspec
|
21
43
|
|
data/README.md
CHANGED
@@ -53,23 +53,31 @@ describe Rspec::Generators::ModelGenerator do
|
|
53
53
|
describe 'the spec' do
|
54
54
|
# file - gives you the absolute path where the generator will create the file
|
55
55
|
subject { file('spec/models/posts_spec.rb') }
|
56
|
-
|
57
|
-
it {
|
56
|
+
# is_expected_to exist - verifies the file exists
|
57
|
+
it { is_expected_to exist }
|
58
58
|
|
59
|
-
#
|
60
|
-
it {
|
61
|
-
it {
|
59
|
+
# is_expected_to contain - verifies the file's contents
|
60
|
+
it { is_expected_to contain /require 'spec_helper'/ }
|
61
|
+
it { is_expected_to contain /describe Posts/ }
|
62
62
|
end
|
63
63
|
describe 'the migration' do
|
64
64
|
subject { file('db/migrate/create_posts.rb') }
|
65
65
|
|
66
|
-
#
|
67
|
-
it {
|
66
|
+
# is_expected_to be_a_migration - verifies the file exists with a migration timestamp as part of the filename
|
67
|
+
it { is_expected_to be_a_migration }
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
71
|
```
|
72
72
|
|
73
|
+
# Available matchers
|
74
|
+
|
75
|
+
- `exist` - verifies the file exists
|
76
|
+
- `contain` - verifies the file's contents
|
77
|
+
- `be_a_migration` - verifies the file exists with a migration timestamp as part of the filename
|
78
|
+
- `have_method` - verifies the file (or a class withing it) implements a method
|
79
|
+
- `have_correct_syntax` - verifies the file has correct syntax and is not broken (works for .rb, .erb and .haml files)
|
80
|
+
|
73
81
|
# Contributing
|
74
82
|
|
75
83
|
* Check out the latest master to make sure the feature hasn’t been implemented or the bug hasn’t been fixed yet
|
data/ammeter.gemspec
CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency 'coffee-rails', '>= 3.2.2'
|
29
29
|
s.add_development_dependency 'sass-rails', '>= 3.2.5'
|
30
30
|
s.add_development_dependency 'jquery-rails', '>= 2.0.2'
|
31
|
+
s.add_development_dependency 'haml-rails', '>= 0.4'
|
31
32
|
s.add_development_dependency 'cucumber', '>= 0.10'
|
32
33
|
s.add_development_dependency 'aruba', '>= 0.3'
|
33
34
|
case RUBY_PLATFORM
|
@@ -32,7 +32,7 @@ Feature: generator spec
|
|
32
32
|
Scenario: A spec that runs the entire generator
|
33
33
|
Given a file named "spec/generators/awesome_generator_spec.rb" with:
|
34
34
|
"""
|
35
|
-
require "
|
35
|
+
require "rails_helper"
|
36
36
|
require 'generators/awesome/awesome_generator'
|
37
37
|
|
38
38
|
describe AwesomeGenerator do
|
@@ -57,7 +57,7 @@ Feature: generator spec
|
|
57
57
|
Scenario: A spec that runs one task in the generator
|
58
58
|
Given a file named "spec/generators/another_awesome_generator_spec.rb" with:
|
59
59
|
"""
|
60
|
-
require "
|
60
|
+
require "rails_helper"
|
61
61
|
require 'generators/awesome/awesome_generator'
|
62
62
|
|
63
63
|
describe AwesomeGenerator do
|
@@ -82,7 +82,7 @@ Feature: generator spec
|
|
82
82
|
Scenario: A spec with some failures shows nice error messages
|
83
83
|
Given a file named "spec/generators/awesome_generator_spec.rb" with:
|
84
84
|
"""
|
85
|
-
require "
|
85
|
+
require "rails_helper"
|
86
86
|
require 'generators/awesome/awesome_generator'
|
87
87
|
|
88
88
|
describe AwesomeGenerator do
|
@@ -129,7 +129,7 @@ Feature: generator spec
|
|
129
129
|
Scenario: Can specify arguments separately from running the generator
|
130
130
|
Given a file named "spec/generators/awesome_generator_spec.rb" with:
|
131
131
|
"""
|
132
|
-
require "
|
132
|
+
require "rails_helper"
|
133
133
|
require 'generators/awesome/awesome_generator'
|
134
134
|
|
135
135
|
describe AwesomeGenerator do
|
@@ -152,7 +152,7 @@ Feature: generator spec
|
|
152
152
|
Scenario: A generator that creates a migration
|
153
153
|
Given a file named "spec/generators/a_migration_spec.rb" with:
|
154
154
|
"""
|
155
|
-
require "
|
155
|
+
require "rails_helper"
|
156
156
|
require 'rails/generators/active_record/migration/migration_generator'
|
157
157
|
|
158
158
|
describe ActiveRecord::Generators::MigrationGenerator do
|
@@ -169,7 +169,7 @@ Feature: generator spec
|
|
169
169
|
Scenario: Can tell the generator where to put its files
|
170
170
|
Given a file named "spec/generators/awesome_generator_spec.rb" with:
|
171
171
|
"""
|
172
|
-
require "
|
172
|
+
require "rails_helper"
|
173
173
|
require 'generators/awesome/awesome_generator'
|
174
174
|
|
175
175
|
describe AwesomeGenerator do
|
@@ -27,7 +27,7 @@ Feature: generator spec
|
|
27
27
|
Scenario: A spec that runs the entire generator
|
28
28
|
Given a file named "spec/generators/resourceful_generator_spec.rb" with:
|
29
29
|
"""
|
30
|
-
require "
|
30
|
+
require "rails_helper"
|
31
31
|
require 'generators/resourceful/resourceful_generator'
|
32
32
|
|
33
33
|
describe ResourcefulGenerator do
|
@@ -5,10 +5,3 @@ Aruba.configure do |config|
|
|
5
5
|
set_env('JAVA_OPTS', "-d32 #{ENV['JAVA_OPTS']}") # force jRuby to use client JVM for faster startup times
|
6
6
|
end
|
7
7
|
end if RUBY_PLATFORM == 'java'
|
8
|
-
|
9
|
-
# MRI 1.8.7 does not define RUBY_ENGINE
|
10
|
-
if defined?(RUBY_ENGINE) && %w(jruby rbx).include?(RUBY_ENGINE)
|
11
|
-
Before do
|
12
|
-
@aruba_timeout_seconds = 30
|
13
|
-
end
|
14
|
-
end
|
data/features/support/env.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'aruba/cucumber'
|
2
2
|
|
3
3
|
Before do
|
4
|
-
@aruba_timeout_seconds =
|
4
|
+
@aruba_timeout_seconds = 30
|
5
5
|
end
|
6
6
|
|
7
7
|
def aruba_path(file_or_dir, source_foldername)
|
@@ -12,9 +12,10 @@ def example_app_path(file_or_dir)
|
|
12
12
|
File.expand_path("../../../#{file_or_dir}", __FILE__)
|
13
13
|
end
|
14
14
|
|
15
|
-
def write_symlink(file_or_dir, source_foldername)
|
15
|
+
def write_symlink(file_or_dir, source_foldername, filename=nil)
|
16
16
|
source = example_app_path(file_or_dir)
|
17
17
|
target = aruba_path(file_or_dir, source_foldername)
|
18
|
+
target = File.join(File.dirname(target), filename) if filename
|
18
19
|
system "ln -s #{source} #{target}"
|
19
20
|
end
|
20
21
|
|
@@ -23,12 +24,23 @@ def copy_to_aruba_from(gem_or_app_name)
|
|
23
24
|
Given a directory named "spec"
|
24
25
|
}
|
25
26
|
|
27
|
+
rspec_version = ENV['RSPEC_VERSION']
|
28
|
+
rspec_major_version = (rspec_version && rspec_version != 'master') ? rspec_version.split('.')[0] : '3'
|
29
|
+
|
26
30
|
Dir["tmp/#{gem_or_app_name}/*"].each do |file_or_dir|
|
27
31
|
if !(file_or_dir =~ /\/spec$/)
|
28
32
|
write_symlink(file_or_dir, gem_or_app_name)
|
29
33
|
end
|
30
34
|
end
|
35
|
+
|
31
36
|
write_symlink("tmp/#{gem_or_app_name}/spec/spec_helper.rb", gem_or_app_name)
|
37
|
+
|
38
|
+
if rspec_major_version == '2'
|
39
|
+
# rspec 2.x does not create rails_helper.rb so we create a symlink to avoid cluttering tests
|
40
|
+
write_symlink("tmp/#{gem_or_app_name}/spec/spec_helper.rb", gem_or_app_name, 'rails_helper.rb')
|
41
|
+
elsif rspec_major_version == '3'
|
42
|
+
write_symlink("tmp/#{gem_or_app_name}/spec/rails_helper.rb", gem_or_app_name)
|
43
|
+
end
|
32
44
|
end
|
33
45
|
|
34
46
|
Before '@example_app' do
|
@@ -1,5 +1,31 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
+
rspec_version = ENV['RSPEC_VERSION']
|
4
|
+
rspec_major_version = (rspec_version && rspec_version != 'master') ? rspec_version.split('.')[0] : '3'
|
5
|
+
|
6
|
+
if rspec_version == 'master'
|
7
|
+
gem "rspec-rails", :git => 'git://github.com/rspec/rspec-rails.git'
|
8
|
+
gem "rspec", :git => 'git://github.com/rspec/rspec.git'
|
9
|
+
gem "rspec-core", :git => 'git://github.com/rspec/rspec-core.git'
|
10
|
+
gem "rspec-expectations", :git => 'git://github.com/rspec/rspec-expectations.git'
|
11
|
+
gem "rspec-mocks", :git => 'git://github.com/rspec/rspec-mocks.git'
|
12
|
+
gem "rspec-collection_matchers", :git => 'git://github.com/rspec/rspec-collection_matchers.git'
|
13
|
+
gem "rspec-support", :git => 'git://github.com/rspec/rspec-support.git'
|
14
|
+
else
|
15
|
+
gem 'rspec-rails', rspec_version
|
16
|
+
gem 'rspec', rspec_version
|
17
|
+
end
|
18
|
+
|
19
|
+
case rspec_major_version
|
20
|
+
when '2'
|
21
|
+
gem 'rails', '~> 3.2'
|
22
|
+
when '3'
|
23
|
+
gem 'rails', '>= 4.1'
|
24
|
+
else
|
25
|
+
raise "rspec version #{rspec_version} is not supported"
|
26
|
+
end
|
27
|
+
|
28
|
+
|
3
29
|
# Specify your gem's dependencies in my_gem.gemspec
|
4
30
|
gemspec
|
5
31
|
|
@@ -1,5 +1,31 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
+
rspec_version = ENV['RSPEC_VERSION']
|
4
|
+
rspec_major_version = (rspec_version && rspec_version != 'master') ? rspec_version.split('.')[0] : '3'
|
5
|
+
|
6
|
+
if rspec_version == 'master'
|
7
|
+
gem "rspec-rails", :git => 'git://github.com/rspec/rspec-rails.git'
|
8
|
+
gem "rspec", :git => 'git://github.com/rspec/rspec.git'
|
9
|
+
gem "rspec-core", :git => 'git://github.com/rspec/rspec-core.git'
|
10
|
+
gem "rspec-expectations", :git => 'git://github.com/rspec/rspec-expectations.git'
|
11
|
+
gem "rspec-mocks", :git => 'git://github.com/rspec/rspec-mocks.git'
|
12
|
+
gem "rspec-collection_matchers", :git => 'git://github.com/rspec/rspec-collection_matchers.git'
|
13
|
+
gem "rspec-support", :git => 'git://github.com/rspec/rspec-support.git'
|
14
|
+
else
|
15
|
+
gem 'rspec-rails', rspec_version
|
16
|
+
gem 'rspec', rspec_version
|
17
|
+
end
|
18
|
+
|
19
|
+
case rspec_major_version
|
20
|
+
when '2'
|
21
|
+
gem 'railties', '~> 3.2'
|
22
|
+
when '3'
|
23
|
+
gem 'railties', '>= 4.1'
|
24
|
+
else
|
25
|
+
raise "rspec version #{rspec_version} is not supported"
|
26
|
+
end
|
27
|
+
|
28
|
+
|
3
29
|
# Specify your gem's dependencies in my_gem.gemspec
|
4
30
|
gemspec
|
5
31
|
|
@@ -15,6 +15,5 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = MyRailtiesGem::VERSION
|
17
17
|
|
18
|
-
gem.add_runtime_dependency 'railties', '>= 3.
|
19
|
-
gem.add_development_dependency 'rspec-rails', '>= 2.2'
|
18
|
+
gem.add_runtime_dependency 'railties', '>= 3.2'
|
20
19
|
end
|
data/lib/ammeter/init.rb
CHANGED
@@ -2,9 +2,9 @@ require 'rspec/core'
|
|
2
2
|
if RSpec::Core::Version::STRING < '3'
|
3
3
|
require 'ammeter/rspec/rspec_2_compatibility' # if rspec2
|
4
4
|
end
|
5
|
+
require 'rails'
|
5
6
|
require 'ammeter/rspec/generator/example.rb'
|
6
7
|
require 'ammeter/rspec/generator/matchers.rb'
|
7
|
-
require 'rails'
|
8
8
|
|
9
9
|
if Rails.respond_to?(:application) && Rails.application.respond_to?(:load_generators)
|
10
10
|
Rails.application.load_generators
|
@@ -1,3 +1,5 @@
|
|
1
1
|
require 'ammeter/rspec/generator/matchers/be_a_migration'
|
2
2
|
require 'ammeter/rspec/generator/matchers/contain'
|
3
3
|
require 'ammeter/rspec/generator/matchers/exist'
|
4
|
+
require 'ammeter/rspec/generator/matchers/have_method'
|
5
|
+
require 'ammeter/rspec/generator/matchers/have_correct_syntax'
|
@@ -0,0 +1,54 @@
|
|
1
|
+
RSpec::Matchers.define :have_correct_syntax do
|
2
|
+
match do |file_path|
|
3
|
+
source = File.read(file_path)
|
4
|
+
extension = File.extname(file_path)
|
5
|
+
case extension
|
6
|
+
when '.rb', '.rake'
|
7
|
+
check_ruby_syntax(source)
|
8
|
+
when '.rhtml', '.erb'
|
9
|
+
check_erb_syntax(source)
|
10
|
+
when '.haml'
|
11
|
+
check_haml_syntax(source)
|
12
|
+
else
|
13
|
+
raise "Checking syntax for #{extension} files is not yet supported"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
define_method :check_ruby_syntax do |code|
|
19
|
+
begin
|
20
|
+
eval('__crash_me__;' + code)
|
21
|
+
rescue SyntaxError
|
22
|
+
false
|
23
|
+
rescue NameError
|
24
|
+
true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
define_method :check_erb_syntax do |code|
|
29
|
+
require 'action_view'
|
30
|
+
require 'ostruct'
|
31
|
+
|
32
|
+
begin
|
33
|
+
view = ActionView::Template::Handlers::ERB.call(OpenStruct.new(source: code))
|
34
|
+
eval('__crash_me__; ' + view)
|
35
|
+
rescue SyntaxError
|
36
|
+
false
|
37
|
+
rescue NameError
|
38
|
+
true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
define_method :check_haml_syntax do |code|
|
43
|
+
require 'haml'
|
44
|
+
|
45
|
+
begin
|
46
|
+
Haml::Engine.new(code)
|
47
|
+
rescue Haml::SyntaxError
|
48
|
+
false
|
49
|
+
rescue NameError
|
50
|
+
true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
RSpec::Matchers.define :have_method do |method|
|
2
|
+
chain :containing do |content|
|
3
|
+
@method_content = content.strip
|
4
|
+
end
|
5
|
+
|
6
|
+
match do |file_path|
|
7
|
+
content = File.read(file_path)
|
8
|
+
content =~ /(\s+)def #{method}(\(.+\))?(.*?)\n\1end/m && (@method_content.nil? ? true : $3.include?(@method_content))
|
9
|
+
end
|
10
|
+
end
|
data/lib/ammeter/version.rb
CHANGED
@@ -5,19 +5,19 @@ describe "be_a_migration" do
|
|
5
5
|
let(:migration_files) { ['db/migrate/20110504132601_create_posts.rb', 'db/migrate/20110520132601_create_users.rb'] }
|
6
6
|
|
7
7
|
before do
|
8
|
-
allow(File).to receive(:exist?).and_return(false)
|
9
8
|
migration_files.each do |migration_file|
|
10
9
|
allow(File).to receive(:exist?).with(migration_file).and_return(true)
|
11
10
|
end
|
12
|
-
allow(Dir).to receive(:glob).with('db/migrate/[0-9]*_*.rb').and_return(migration_files)
|
13
11
|
end
|
14
12
|
it 'should find for the migration file adding the filename timestamp for us' do
|
13
|
+
expect(Dir).to receive(:glob).with('db/migrate/[0-9]*_*.rb').and_return(migration_files)
|
15
14
|
expect('db/migrate/create_users.rb').to be_a_migration
|
16
15
|
end
|
17
16
|
it 'should find for the migration file when we know the filename timestamp' do
|
18
17
|
expect('db/migrate/20110504132601_create_posts.rb').to be_a_migration
|
19
18
|
end
|
20
19
|
it 'should know when a migration does not exist' do
|
20
|
+
expect(Dir).to receive(:glob).with('db/migrate/[0-9]*_*.rb').and_return([])
|
21
21
|
expect('db/migrate/create_comments.rb').to_not be_a_migration
|
22
22
|
end
|
23
23
|
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'have_correct_syntax' do
|
4
|
+
|
5
|
+
describe 'ruby files' do
|
6
|
+
subject { '/test.rb' }
|
7
|
+
it 'checks if Ruby file has a proper syntax' do
|
8
|
+
stub_file subject, "class SomeClass\n def some_method\n puts 'Hello world!'\n end\nend"
|
9
|
+
expect(subject).to have_correct_syntax
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'checks if Ruby file has an incorrect syntax' do
|
13
|
+
stub_file subject, "class SomeClass\ndef some_method\nputs 'Hello world!'"
|
14
|
+
expect(subject).to_not have_correct_syntax
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'erb files' do
|
19
|
+
subject { '/test.erb' }
|
20
|
+
it 'checks if simple ERB file has a proper syntax' do
|
21
|
+
stub_file subject, '<% if nonexistent_var == 1 %><a href="#"></a><% end %>'
|
22
|
+
expect(subject).to have_correct_syntax
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'checks if simple ERB file has an incorrect syntax' do
|
26
|
+
stub_file subject, '<% if 1 + 1 %> abc'
|
27
|
+
expect(subject).to_not have_correct_syntax
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'checks if complex ERB file has a proper syntax' do
|
31
|
+
stub_file subject, <<-EOF
|
32
|
+
<header>
|
33
|
+
<h1><%= application_title %></h1>
|
34
|
+
</header>
|
35
|
+
<div id="body">
|
36
|
+
<table>
|
37
|
+
<% @elements.each do |element| %>
|
38
|
+
<tr>
|
39
|
+
<td><%= element.id %></td>
|
40
|
+
<td><%= element.title %></td>
|
41
|
+
<td><%= link_to 'Show', element_path(element) %></td>
|
42
|
+
</tr>
|
43
|
+
<% end %>
|
44
|
+
</table>
|
45
|
+
</div>
|
46
|
+
EOF
|
47
|
+
expect(subject).to have_correct_syntax
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'checks if complex ERB file has an incorrect syntax' do
|
51
|
+
stub_file subject, <<-EOF
|
52
|
+
<div id="broken-example">
|
53
|
+
<p>This test should fail because I didn't close an each loop.</p>
|
54
|
+
<% @elements.each do |element| %>
|
55
|
+
<tr>
|
56
|
+
<td><%= element.id %></td>
|
57
|
+
</tr>
|
58
|
+
</div>
|
59
|
+
EOF
|
60
|
+
expect(subject).to_not have_correct_syntax
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe 'haml files' do
|
65
|
+
subject { '/test.haml' }
|
66
|
+
it 'checks if simple Haml file has a proper syntax' do
|
67
|
+
stub_file subject, <<-EOF
|
68
|
+
%a{:href => "#"}= @order.id
|
69
|
+
EOF
|
70
|
+
expect(subject).to have_correct_syntax
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'checks if simple Haml file has an incorrect syntax' do
|
74
|
+
stub_file subject, <<-EOF
|
75
|
+
%a{
|
76
|
+
EOF
|
77
|
+
expect(subject).to_not have_correct_syntax
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'checks if complex Haml file has a proper syntax' do
|
81
|
+
stub_file subject, <<-EOF
|
82
|
+
%header
|
83
|
+
%h1= application_title
|
84
|
+
#body
|
85
|
+
%table
|
86
|
+
- @elements.each do |element|
|
87
|
+
%tr
|
88
|
+
%td= element.id
|
89
|
+
%td= element.title
|
90
|
+
%td= link_to 'Show', element_path(element)
|
91
|
+
EOF
|
92
|
+
expect(subject).to have_correct_syntax
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'checks if complex Haml file has an incorrect syntax' do
|
96
|
+
stub_file subject, <<-EOF
|
97
|
+
#broken-example
|
98
|
+
%p This test should fail because of broken indentation
|
99
|
+
- @elements.each do |element|
|
100
|
+
%tr
|
101
|
+
$td= element.id
|
102
|
+
EOF
|
103
|
+
expect(subject).to_not have_correct_syntax
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'have_method' do
|
4
|
+
let(:contents) { "class SomeClass\n def some_method\n puts 'Hello world!'\n end\nend" }
|
5
|
+
|
6
|
+
subject { '/some/file/path' }
|
7
|
+
before { allow(File).to receive(:read).with('/some/file/path').and_return(contents) }
|
8
|
+
|
9
|
+
it { is_expected.to have_method(:some_method) }
|
10
|
+
it { is_expected.to have_method(:some_method).containing("puts 'Hello world!'")}
|
11
|
+
it { is_expected.to_not have_method(:some_method).containing("puts 'Good bye cruel world!' ") }
|
12
|
+
it { is_expected.to_not have_method(:some_other_method) }
|
13
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rails/all'
|
2
2
|
require 'rspec/rails'
|
3
3
|
|
4
|
+
ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
|
5
|
+
|
4
6
|
module TestApp
|
5
7
|
class Application < Rails::Application
|
6
8
|
config.root = File.dirname(__FILE__)
|
@@ -17,3 +19,7 @@ RSpec.configure do |c|
|
|
17
19
|
c.include RSpec2MemoizedHelpersCompatibility
|
18
20
|
end
|
19
21
|
end
|
22
|
+
|
23
|
+
def stub_file(filename, content)
|
24
|
+
allow(File).to receive(:read).with(filename).and_return(content)
|
25
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ammeter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rothenberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 2.0.2
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: haml-rails
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.4'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.4'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: cucumber
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -231,12 +245,16 @@ files:
|
|
231
245
|
- lib/ammeter/rspec/generator/matchers/be_a_migration.rb
|
232
246
|
- lib/ammeter/rspec/generator/matchers/contain.rb
|
233
247
|
- lib/ammeter/rspec/generator/matchers/exist.rb
|
248
|
+
- lib/ammeter/rspec/generator/matchers/have_correct_syntax.rb
|
249
|
+
- lib/ammeter/rspec/generator/matchers/have_method.rb
|
234
250
|
- lib/ammeter/rspec/rspec_2_compatibility.rb
|
235
251
|
- lib/ammeter/version.rb
|
236
252
|
- spec/ammeter/rspec/generator/example/generator_example_group_spec.rb
|
237
253
|
- spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb
|
238
254
|
- spec/ammeter/rspec/generator/matchers/contain_spec.rb
|
239
255
|
- spec/ammeter/rspec/generator/matchers/exist_spec.rb
|
256
|
+
- spec/ammeter/rspec/generator/matchers/have_correct_syntax_spec.rb
|
257
|
+
- spec/ammeter/rspec/generator/matchers/have_method_spec.rb
|
240
258
|
- spec/spec_helper.rb
|
241
259
|
- spec/support/helpers.rb
|
242
260
|
- spec/support/matchers.rb
|
@@ -284,6 +302,8 @@ test_files:
|
|
284
302
|
- spec/ammeter/rspec/generator/matchers/be_a_migration_spec.rb
|
285
303
|
- spec/ammeter/rspec/generator/matchers/contain_spec.rb
|
286
304
|
- spec/ammeter/rspec/generator/matchers/exist_spec.rb
|
305
|
+
- spec/ammeter/rspec/generator/matchers/have_correct_syntax_spec.rb
|
306
|
+
- spec/ammeter/rspec/generator/matchers/have_method_spec.rb
|
287
307
|
- spec/spec_helper.rb
|
288
308
|
- spec/support/helpers.rb
|
289
309
|
- spec/support/matchers.rb
|