pludoni-spec 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 02177e74bd70cb01ca222cbb2ba5354e5e2a52d1
4
+ data.tar.gz: d37f3b1dd85e3f8d54d378311aa59f4d3d23c037
5
+ SHA512:
6
+ metadata.gz: 04babc1a7d7abc06c330886d660e83873e7232ac7a1db661be6f14b77e52646992992729de57b488a8d34da98affbe3b91ed111faca8fcc200663e11af767002
7
+ data.tar.gz: cb1c59273ba96ab7c974f6c15916006e4f23d063aecfaee65450f80272ded6ca4ea27aaf339f9012de22c5e0c66d7707f4b33033a693890a1a514917393651b5
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pludoni-railsbase.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Stefan Wienert
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,96 @@
1
+ # Pludoni Spec helper
2
+
3
+ Add this line to your application's Gemfile:
4
+
5
+ ```ruby
6
+ group :development, :test do
7
+ gem 'pludoni-spec'
8
+ end
9
+ ```
10
+
11
+ And then your spec-helper:
12
+
13
+ ```ruby
14
+ ENV["RAILS_ENV"] ||= 'test'
15
+ require "pludoni/coverage"
16
+ require File.expand_path("../../config/environment", __FILE__)
17
+ require 'rspec/rails'
18
+ require "pludoni/spec-helper"
19
+
20
+ RSpec.configure do |config|
21
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
22
+ config.infer_base_class_for_anonymous_controllers = false
23
+ config.order = "random"
24
+ config.use_transactional_fixtures = true
25
+ end
26
+ ```
27
+
28
+
29
+
30
+ ## On-Demand Modules:
31
+
32
+ ```ruby
33
+ # requires and configures Database Cleaner for rspec
34
+ require 'pludoni/database-cleaner'
35
+
36
+ # requires and configures VCR (not part of gems dependencies!)
37
+ require 'pludoni/vcr'
38
+
39
+ # instead of Database Cleaner: patches Active Record thread
40
+ require 'pludoni/thread-patch'
41
+ ```
42
+
43
+
44
+ ```ruby
45
+ describe MyMailerSpec do
46
+ include MailHelper
47
+ specify do
48
+ # in this scenario, all outgoing deliveries (ActionMailer::Base.deliveries)
49
+ # will be checked for missing translations
50
+
51
+ # some methods:
52
+ mail # last ActionMailer::Base.deliveries
53
+ mails # alias for ActionMailer::Base.delivieries
54
+ end
55
+ end
56
+ ```
57
+
58
+ ```ruby
59
+ describe MyController do
60
+ include TranslationHelper # will include render_views!!
61
+ specify do
62
+ # will check views if containing Missing Translations
63
+ end
64
+ end
65
+ ```
66
+
67
+ ## spec tags:
68
+
69
+ ```ruby
70
+ # TimeCop freeze time, ensures returning to system date
71
+ it 'Some example', freeze_time: '2013-10-10 12:12' do
72
+ Time.now.should be constant
73
+ end
74
+
75
+ #enables caching for controller action spec
76
+ it 'Some example', caching: true do
77
+ end
78
+
79
+ it 'Timeout', timeout: 10 do
80
+ fail 'this scenario if takes longer than 10s'
81
+ end
82
+
83
+ ```
84
+
85
+ * All js:true feature specs will make an screenshot to public/error.jpg if failed.
86
+ * ActionMailer::Base.deliveries.clear will be called before each run
87
+ * rspec ``be_valid`` matcher, which shows errors on invalid
88
+ * Poltergeist as default JS Driver
89
+ * all Feature specs have new methods:
90
+
91
+ ```ruby
92
+ screenshot # fullscreen screenshot to public/screenshot.jpg
93
+ screenshot '1' #screenshot to public/1.jpg
94
+
95
+ skip_confirm(page) # will overwrite JS confirm method, so delete confirmations will work
96
+ ```
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,18 @@
1
+
2
+ RSpec::Matchers.define :be_valid do
3
+ match do |actual|
4
+ actual.valid?
5
+ end
6
+
7
+ failure_message_for_should do |actual|
8
+ "expected that #{actual} would be valid (errors: #{actual.errors.full_messages})"
9
+ end
10
+
11
+ failure_message_for_should_not do |actual|
12
+ "expected that #{actual} would not be valid"
13
+ end
14
+
15
+ description do
16
+ "be valid"
17
+ end
18
+ end
@@ -0,0 +1,54 @@
1
+
2
+ RSpec.configure do |config|
3
+ config.after :each, js: true do |example|
4
+ ex = defined?(example.example) ? example.example : example # rspec 2.14...
5
+ exception = ex.exception
6
+ if exception.present? and ex.metadata[:type] == :feature and ex.metadata[:js]
7
+ if defined? screenshot
8
+ puts "made screenshot to /error.jpg (#{exception.inspect})"
9
+ screenshot "error"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ require 'capybara/rails'
15
+ require 'capybara/rspec'
16
+ require 'capybara/poltergeist'
17
+ Capybara.register_driver :poltergeist do |app|
18
+ Capybara::Poltergeist::Driver.new(app, timeout: 300, js_errors: false)
19
+ end
20
+ Capybara.javascript_driver = :poltergeist
21
+
22
+ module PoltergeistHelper
23
+ # render screenshot of current page to /screenshot.jpg
24
+ def screenshot(name="screenshot")
25
+ if defined? page.driver.save_screenshot
26
+ page.driver.save_screenshot "public/#{name}.jpg", full: true
27
+ else
28
+ page.driver.render(Rails.root.join("public/#{name}.jpg").to_s,full: true)
29
+ end
30
+ end
31
+
32
+ def simple_t(lab)
33
+ I18n.t("simple_form.labels.defaults.#{lab}")
34
+ end
35
+
36
+ # 404 Fehlern vorbeugen -> Wir haben paperclip tmp in usage, also werden
37
+ # hochgeladene Logos nicht angezeigt
38
+ # -> 404 -> Test Failure
39
+ def stub_logo!(object,method=:logo)
40
+ logo = Object.new
41
+ def logo.url(*whatever) "" end
42
+ def logo.method_missing(name,*args) true end
43
+ object.any_instance.stub method => logo, :"#{method}_file_name" => "foo.png"
44
+ end
45
+
46
+ # skip any confirm: "Really delete?"
47
+ def skip_confirm(page)
48
+ page.evaluate_script('window.confirm = function() { return true; }')
49
+ end
50
+ end
51
+
52
+ RSpec.configure do |config|
53
+ config.include PoltergeistHelper, type: :feature
54
+ end
@@ -0,0 +1,21 @@
1
+ if `whoami`["jenkins"]
2
+ require 'simplecov'
3
+ # require 'simplecov-rcov-text'
4
+ # class SimpleCov::Formatter::MergedFormatter
5
+ # def format(result)
6
+ # SimpleCov::Formatter::HTMLFormatter.new.format(result)
7
+ # SimpleCov::Formatter::RcovTextFormatter.new.format(result)
8
+ # end
9
+ # end
10
+ # # SimpleCov.add_filter 'app/models/crawler/dresdende/'
11
+ # # SimpleCov.add_filter 'app/models/drupalapi/'
12
+ # SimpleCov.formatter = SimpleCov::Formatter::MergedFormatter
13
+ SimpleCov.start 'rails' do
14
+ add_filter do |source_file|
15
+ source_file.lines.count < 10
16
+ end
17
+ add_group "Long files" do |src_file|
18
+ src_file.lines.count > 150
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ require 'database_cleaner'
2
+
3
+ RSpec.configure do |config|
4
+ config.use_transactional_fixtures = false
5
+ config.before(:suite) do
6
+ DatabaseCleaner.clean_with(:truncation)
7
+ end
8
+
9
+ config.before(:each) do |example|
10
+ ex = defined?(example.example) ? example.example : example
11
+ DatabaseCleaner.strategy = ex.metadata[:js] ? :deletion : :transaction
12
+ DatabaseCleaner.start
13
+ end
14
+ config.after :each do |example|
15
+ DatabaseCleaner.clean
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+
2
+ # include into mail-sending scenarios
3
+ module MailHelper
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ after(:each) do
7
+ ActionMailer::Base.deliveries.each do |mail|
8
+ if mail.body.to_s[/translation missing: (.*)"/]
9
+ fail "There are missing translations: #{$1}"
10
+ end
11
+ if (mail.body.parts.first.to_s[/translation missing: (.*)"/] rescue false)
12
+ fail "There are missing translations: #{$1}"
13
+ end
14
+ end
15
+ end
16
+
17
+ def mail
18
+ ActionMailer::Base.deliveries.last
19
+ end
20
+ def mails
21
+ ActionMailer::Base.deliveries
22
+ end
23
+ let(:multi_part_body) { mail.body.parts.first.to_s }
24
+ end
25
+
26
+ end
@@ -0,0 +1,81 @@
1
+ require "pludoni/capybara"
2
+ RSpec.configure do |c|
3
+ c.treat_symbols_as_metadata_keys_with_true_values = true
4
+ end
5
+ require "timecop"
6
+ require 'i18n/missing_translations'
7
+ # require 'rspec/retry'
8
+ at_exit { I18n.missing_translations.dump }
9
+ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
10
+
11
+ ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
12
+
13
+
14
+ RSpec.configure do |config|
15
+ config.infer_base_class_for_anonymous_controllers = false
16
+ config.tty = true
17
+ config.before do
18
+ ActionMailer::Base.deliveries.clear
19
+ end
20
+
21
+ # Freeze Time using Timecop
22
+ # freeze_time: "2012-09-01 12:12:12"
23
+ config.around(:each) do |example|
24
+ ex = defined?(example.example) ? example.example : example # rspec 2.14...
25
+ if time = ex.metadata[:freeze_time]
26
+ begin
27
+ Timecop.freeze(Time.parse(time)) do
28
+ example.run
29
+ end
30
+ ensure
31
+ Timecop.return
32
+ end
33
+ else
34
+ example.run
35
+ end
36
+ end
37
+
38
+ # Skip = pending all examples
39
+ config.around(:each, :skip => true) do |example|
40
+ example.metadata[:pending] = true
41
+ example.metadata[:execution_result][:pending_message] = "Skipped #{example.to_s}"
42
+ end
43
+
44
+ # Activate ActionController Caching
45
+ # caching: true
46
+ config.around(:each, :caching => true) do |example|
47
+ caching, ActionController::Base.perform_caching = ActionController::Base.perform_caching, true
48
+ store, ActionController::Base.cache_store = ActionController::Base.cache_store, :memory_store
49
+ silence_warnings { Object.const_set "RAILS_CACHE", ActionController::Base.cache_store }
50
+ example.run
51
+ silence_warnings { Object.const_set "RAILS_CACHE", store }
52
+ ActionController::Base.cache_store = store
53
+ ActionController::Base.perform_caching = caching
54
+ end
55
+
56
+ config.around(:each, :timeout) do |example|
57
+ if example.metadata[:timeout]
58
+ time = 10 unless time.kind_of?(Numeric)
59
+ Timeout.timeout(time) do
60
+ example.run
61
+ end
62
+ else
63
+ example.run
64
+ end
65
+ end
66
+
67
+ end
68
+
69
+
70
+ silence_warnings do
71
+ require "bcrypt"
72
+ BCrypt::Engine::DEFAULT_COST = BCrypt::Engine::MIN_COST
73
+ end
74
+
75
+ require "pludoni/mail_helper"
76
+ require "pludoni/be_valid"
77
+ require "pludoni/translation_helper"
78
+
79
+
80
+
81
+
@@ -0,0 +1 @@
1
+ require "pry-rails"
@@ -0,0 +1,6 @@
1
+ # monkeypatch -> Transactions fuer Features
2
+ ActiveRecord::ConnectionAdapters::ConnectionPool.class_eval do
3
+ def current_connection_id
4
+ Thread.main.object_id
5
+ end
6
+ end
@@ -0,0 +1,21 @@
1
+
2
+ # include into controller-scenarios to check for missing translations
3
+ module TranslationHelper
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ render_views
7
+ after :each do
8
+ begin
9
+ if defined? response and response
10
+ if response.body
11
+ if response.body.to_s[/translation missing: (.*)"/]
12
+ fail "There are missing translations #{$1}"
13
+ end
14
+ end
15
+ end
16
+ rescue
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,8 @@
1
+ require 'vcr'
2
+
3
+ VCR.configure do |c|
4
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
5
+ c.hook_into :webmock # or :fakeweb
6
+ c.ignore_localhost = true
7
+ c.allow_http_connections_when_no_cassette = true
8
+ end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "pludoni-spec"
7
+ spec.version = "0.0.2"
8
+ spec.authors = ["Stefan Wienert"]
9
+ spec.email = ["stefan.wienert@pludoni.de"]
10
+ spec.description = %q{Alles was man so braucht zum testen}
11
+ spec.summary = %q{Alles was man so braucht zum testen}
12
+ spec.homepage = ""
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_runtime_dependency "poltergeist"
21
+ spec.add_runtime_dependency "simplecov"
22
+ spec.add_runtime_dependency 'timecop'
23
+ # spec.add_runtime_dependency "guard-rspec"
24
+ spec.add_runtime_dependency "capybara"
25
+ spec.add_runtime_dependency "poltergeist"
26
+ # spec.add_runtime_dependency "rb-inotify"
27
+ spec.add_runtime_dependency "pry-rails"
28
+ # spec.add_runtime_dependency "rspec-retry"
29
+ spec.add_runtime_dependency "database_cleaner"
30
+ spec.add_runtime_dependency "i18n-missing_translations"
31
+ spec.add_runtime_dependency 'action_mailer_cache_delivery'
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.3"
34
+ spec.add_development_dependency "rake"
35
+ end
metadata ADDED
@@ -0,0 +1,214 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pludoni-spec
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Stefan Wienert
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: poltergeist
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: simplecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: timecop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: capybara
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: poltergeist
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: database_cleaner
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: i18n-missing_translations
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: action_mailer_cache_delivery
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: bundler
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: '1.3'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '1.3'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: Alles was man so braucht zum testen
168
+ email:
169
+ - stefan.wienert@pludoni.de
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - .gitignore
175
+ - Gemfile
176
+ - LICENSE.txt
177
+ - README.md
178
+ - Rakefile
179
+ - lib/pludoni/be_valid.rb
180
+ - lib/pludoni/capybara.rb
181
+ - lib/pludoni/coverage.rb
182
+ - lib/pludoni/database-cleaner.rb
183
+ - lib/pludoni/mail_helper.rb
184
+ - lib/pludoni/spec-helper.rb
185
+ - lib/pludoni/spec.rb
186
+ - lib/pludoni/thread-patch.rb
187
+ - lib/pludoni/translation_helper.rb
188
+ - lib/pludoni/vcr.rb
189
+ - pludoni-spec.gemspec
190
+ homepage: ''
191
+ licenses:
192
+ - MIT
193
+ metadata: {}
194
+ post_install_message:
195
+ rdoc_options: []
196
+ require_paths:
197
+ - lib
198
+ required_ruby_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - '>='
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ required_rubygems_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ requirements: []
209
+ rubyforge_project:
210
+ rubygems_version: 2.1.11
211
+ signing_key:
212
+ specification_version: 4
213
+ summary: Alles was man so braucht zum testen
214
+ test_files: []