briar 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd551eeb73273fbcc915591455f9630b7400182e
4
- data.tar.gz: 0a67f0f572881d6351092ec105a6591075dc42f8
3
+ metadata.gz: b7dab5c94d2a903dc24b84bbf85c24f3654180cb
4
+ data.tar.gz: 2c47762c151da5fd494f033dbf4ed4760ce3d706
5
5
  SHA512:
6
- metadata.gz: e9dffa137f2c76b87b1597cdf8043ba1ac87094f33dc464b3d2fff0773387d17964a7c1cc3723375b3fd8c040588a623635deb09827be5c8d21a821a70a71649
7
- data.tar.gz: 2de61c5013c282bb63c21e77a0e3fc5dad587e08a257a191d77df17398ebb58c3e3f497b02bf98407ec924c10052463bc6fc436ee8597358e835d004a77dbedf
6
+ metadata.gz: 31dc7a2637f9042087f3d8fd7ee9b7fd4f02ef05fbf0a6a0cc2917dbd08d43cbfb619f51947fca41afb6657a4c85e0dd62a3ea07dc4d4e37c7d42e877b01794a
7
+ data.tar.gz: b8a4d8557c0df97feb1ee5245bdbcfdcd6b1e0a895b4a5ec106e2b594f0f02194a7882b659d808d2579b573e5dbe89d7114b4d598b47683a85dbac6b288a982c
data/README.md CHANGED
@@ -4,7 +4,7 @@ Briar Extends the steps defined in [calabash-ios](https://github.com/calabash/ca
4
4
 
5
5
  ### WARNING: briar is not trying to provide steps that will work for every project
6
6
 
7
- Every project should cultivate its own [venacular](http://en.wikipedia.org/wiki/Vernacular) -
7
+ Every project should cultivate its own [vernacular](http://en.wikipedia.org/wiki/Vernacular) -
8
8
  a shared language between developers, clients, and users. The [steps that briar provides](features/step_definitions) are not meant to be dropped into into your projects (although they can be). Briar provides a library of ruby methods to build application-specific steps from. The steps in the features directory are meant to be examples of what briar can offer.
9
9
 
10
10
  To see briar in action, take a look at https://github.com/jmoody/briar-ios-example
@@ -4,47 +4,95 @@ require_relative './briar_env'
4
4
 
5
5
  require 'rainbow'
6
6
  require 'ansi/logger'
7
+ require 'retriable'
7
8
 
8
9
  @log = ANSI::Logger.new(STDOUT)
9
10
 
10
- def ideviceinstaller(device, cmd, opts={})
11
- default_opts = {:build_script => ENV['IPA_BUILD_SCRIPT'],
12
- :ipa => ENV['IPA'],
13
- :bundle_id => expect_bundle_id(),
14
- :idevice_installer => expect_ideviceinstaller()}
15
- opts = default_opts.merge(opts)
11
+ module Briar
12
+ module IDEVICEINSTALLER
16
13
 
17
- cmds = [:install, :uninstall, :reinstall]
18
- unless cmds.include? cmd
19
- raise "illegal option '#{cmd}' must be one of '#{cmds}'"
20
- end
14
+ include Calabash::Cucumber::Logging
15
+
16
+ def ideviceinstaller(device, cmd, opts={})
17
+ default_opts = {:build_script => ENV['IPA_BUILD_SCRIPT'],
18
+ :ipa => ENV['IPA'],
19
+ :bundle_id => expect_bundle_id(),
20
+ :idevice_installer => expect_ideviceinstaller()}
21
+ merged = default_opts.merge(opts)
22
+
23
+ cmds = [:install, :uninstall, :reinstall]
24
+ unless cmds.include? cmd
25
+ raise "illegal option '#{cmd}' must be one of '#{cmds}'"
26
+ end
27
+
28
+ build_script = merged[:build_script]
29
+ expect_build_script(build_script) if build_script
21
30
 
22
- build_script = opts[:build_script]
23
- expect_build_script(build_script) if build_script
31
+ udid = read_device_info(device, :udid)
24
32
 
25
- udid = read_device_info(device, :udid)
33
+ bin_path = merged[:idevice_installer]
34
+ bundle_id = merged[:bundle_id]
26
35
 
27
- bin_path = opts[:idevice_installer]
36
+ case cmd
37
+ when :install
38
+ if build_script
39
+ system "#{build_script}"
40
+ briar_remove_derived_data_dups
41
+ end
28
42
 
29
- if cmd == :install
30
- if build_script
31
- system "#{build_script}"
32
- briar_remove_derived_data_dups
43
+ ipa = merged[:ipa]
44
+ expect_ipa(ipa)
45
+
46
+ Retriable.retriable do
47
+ uninstall udid, bundle_id, bin_path
48
+ end
49
+
50
+ Retriable.retriable do
51
+ install udid, ipa, bundle_id, bin_path
52
+ end
53
+ when :uninstall
54
+ Retriable.retriable do
55
+ uninstall udid, bundle_id, bin_path
56
+ end
57
+ when :reinstall
58
+ _deprecated('1.1.0', ':reinstall arg has been deprecated; use :install instead', :warn)
59
+ ideviceinstaller device, :install
60
+ end
33
61
  end
34
62
 
35
- ipa = opts[:ipa]
36
- expect_ipa(ipa)
37
-
38
- cmd = "#{bin_path} -u #{udid} --install #{ipa}"
39
- puts "#{Rainbow(cmd).green}"
40
- system cmd
41
- elsif cmd == :uninstall
42
- bundle_id = opts[:bundle_id]
43
- cmd = "#{bin_path} -u #{udid} --uninstall #{bundle_id}"
44
- puts "#{Rainbow(cmd).green}"
45
- system cmd
46
- else
47
- ideviceinstaller(device, :uninstall)
48
- ideviceinstaller(device, :install)
63
+
64
+ def bundle_installed?(udid, bundle_id, installer)
65
+ cmd = "#{installer} -u #{udid} -l"
66
+ puts "#{Rainbow(cmd).green}"
67
+ `#{cmd}`.strip.split(/\s/).include? bundle_id
68
+ end
69
+
70
+ def install(udid, ipa, bundle_id, installer)
71
+ if bundle_installed? udid, bundle_id, installer
72
+ puts "#{Rainbow("bundle '#{bundle_id}' is already installed").green}"
73
+ return true
74
+ end
75
+
76
+ cmd = "#{installer} -u #{udid} --install #{ipa}"
77
+ system cmd
78
+ unless bundle_installed?(udid, bundle_id, installer)
79
+ raise "could not install '#{ipa}' on '#{udid}' with '#{bundle_id}'"
80
+ end
81
+ true
82
+ end
83
+
84
+
85
+ def uninstall(udid, bundle_id, installer)
86
+ unless bundle_installed? udid, bundle_id, installer
87
+ return true
88
+ end
89
+ cmd = "#{installer} -u #{udid} --uninstall #{bundle_id}"
90
+ system cmd
91
+ if bundle_installed?(udid, bundle_id, installer)
92
+ raise "could not uninstall '#{bundle_id}' on '#{udid}'"
93
+ end
94
+ true
95
+ end
49
96
  end
50
97
  end
98
+
@@ -6,6 +6,8 @@ require 'pry'
6
6
  require 'ansi/logger'
7
7
  @log = ANSI::Logger.new(STDOUT)
8
8
 
9
+ include Briar::IDEVICEINSTALLER
10
+
9
11
  def briar_install_gem
10
12
  warn_deprecated('0.1.3', 'will be removed')
11
13
  puts 'will install briar gem'
@@ -120,5 +122,5 @@ def briar_install(args)
120
122
  end
121
123
 
122
124
  def briar_device_install(device)
123
- ideviceinstaller(device, :reinstall)
125
+ ideviceinstaller(device, :install)
124
126
  end
@@ -44,6 +44,7 @@ def briar_xtc_submit(device_set, profile, opts={})
44
44
  :xtc_staging_dir => expect_xtc_staging_dir(),
45
45
  :briar_dev => ENV['XTC_BRIAR_GEM_DEV'] == '1',
46
46
  :calabash_dev => ENV['XTC_CALABASH_GEM_DEV'] == '1',
47
+ :async_submit => ENV['XTC_WAIT_FOR_RESULTS'] == '0',
47
48
  :rebuild => true}
48
49
 
49
50
 
@@ -70,7 +71,7 @@ def briar_xtc_submit(device_set, profile, opts={})
70
71
  system('gem uninstall briar --no-executables --ignore-dependencies --quiet',
71
72
  :err => '/dev/null')
72
73
  Dir.chdir(File.expand_path(briar_path)) do
73
- system 'rake install'
74
+ system 'bundle exec rake install'
74
75
  end
75
76
  end
76
77
 
@@ -80,7 +81,7 @@ def briar_xtc_submit(device_set, profile, opts={})
80
81
  :err => '/dev/null')
81
82
 
82
83
  Dir.chdir(File.expand_path(calabash_path)) do
83
- system 'rake install'
84
+ system 'bundle exec rake install'
84
85
  end
85
86
  end
86
87
 
@@ -94,7 +95,13 @@ def briar_xtc_submit(device_set, profile, opts={})
94
95
  end
95
96
  end
96
97
 
97
- xtc_gemfile = "#{opts[:xtc_staging_dir]}/Gemfile"
98
+ staging_dir = opts[:xtc_staging_dir]
99
+ unless File.exists?(File.expand_path(staging_dir))
100
+ @log.fatal{ "XTC_STAGING_DIR => '#{staging_dir}' does not exist" }
101
+ exit 1
102
+ end
103
+
104
+ xtc_gemfile = "#{staging_dir}/Gemfile"
98
105
 
99
106
  File.open(xtc_gemfile, 'w') do |file|
100
107
  file.write("source 'https://rubygems.org'\n")
@@ -124,11 +131,19 @@ def briar_xtc_submit(device_set, profile, opts={})
124
131
 
125
132
  profile = 'default' if profile.nil?
126
133
 
134
+ if opts[:async_submit]
135
+ wait = '--async'
136
+ else
137
+ wait = '--no-async'
138
+ end
139
+
127
140
  ipa = File.basename(File.expand_path(expect_ipa(opts[:ipa])))
128
141
 
129
- cmd = "DEBUG=0 test-cloud submit #{ipa} #{api_key} -d #{device_set} -c cucumber.yml -p #{profile}"
130
- puts Rainbow("cd xamarin; #{cmd}").green
131
- Dir.chdir(opts[:xtc_staging_dir]) do
142
+ cmd = "bundle exec test-cloud submit #{ipa} #{api_key} -d #{device_set} -c cucumber.yml -p #{profile} #{wait}"
143
+
144
+ puts Rainbow("cd #{staging_dir}; #{cmd}").green
145
+ Dir.chdir(staging_dir) do
146
+ system 'bundle install'
132
147
  exec cmd
133
148
  end
134
149
  end
@@ -3,7 +3,7 @@
3
3
  # ==> require_relative 'lib/briar/version' <==
4
4
  # bundler on 1.9.3 complains
5
5
  # 'Does it try to require a relative path? That's been removed in Ruby 1.9'
6
- #
6
+ #
7
7
  # this is the current _best_ solution
8
8
  $:.push File.expand_path('../lib', __FILE__)
9
9
  require 'briar/version'
@@ -23,20 +23,26 @@ Gem::Specification.new do |gem|
23
23
  gem.license = 'MIT'
24
24
 
25
25
  gem.platform = Gem::Platform::RUBY
26
- gem.required_ruby_version = '>= 1.8.7'
26
+ gem.required_ruby_version = '>= 1.9.3'
27
27
 
28
28
  gem.add_runtime_dependency 'rbx-require-relative', '~> 0.0'
29
- gem.add_runtime_dependency 'calabash-cucumber', '~> 0.9.169.pre5'
30
- gem.add_runtime_dependency 'rake', '~>10.1'
29
+ gem.add_runtime_dependency 'calabash-cucumber', '~> 0.9.169'
31
30
  gem.add_runtime_dependency 'dotenv', '~> 0.9'
32
31
  gem.add_runtime_dependency 'ansi', '~> 1.4'
33
32
  gem.add_runtime_dependency 'rainbow', '~> 1.99'
34
- gem.add_runtime_dependency 'pry', '~> 0.9'
35
- gem.add_runtime_dependency 'rspec'
33
+ gem.add_runtime_dependency 'xcpretty', '~> 0.1'
34
+ # downgrade because of xtc gem
35
+ gem.add_runtime_dependency 'retriable', '~> 1.3'
36
+ gem.add_runtime_dependency 'bundler', '~> 1.6'
37
+
36
38
 
37
39
  # downgrading to 1.0.0 from 1.2.0
38
40
  # https://github.com/xamarin/test-cloud-command-line/issues/3
39
- gem.add_runtime_dependency 'syntax', '~>1.0.0'
41
+ gem.add_runtime_dependency 'syntax', '~>1.0'
42
+
43
+ gem.add_runtime_dependency 'pry', '~> 0.10'
44
+ gem.add_development_dependency('yard', '~> 0.8')
45
+ gem.add_development_dependency('rake', '~> 10.3')
40
46
 
41
47
  gem.files = `git ls-files`.split("\n") - ['.gitignore']
42
48
  gem.executables = 'briar'
@@ -0,0 +1,23 @@
1
+ ## 1.1.0 changelog
2
+
3
+ This release improves the `$ briar install < device >` and `$ briar xtc` commands.
4
+
5
+ Briar now depends on bundler. Calls to 3rd party gem binaries will be executed in the context of `bundle exec`.
6
+
7
+ Briar now requires ruby 1.9.3 or higher. Ruby 1.8.7 is no longer supported.
8
+
9
+ ## features
10
+
11
+ * [pull 8](https://github.com/jmoody/briar/pull/8) added language keys for Danish and Thai
12
+ - thanks @crishoj
13
+
14
+ * [pull 12](https://github.com/jmoody/briar/pull/12) briar now retries ideviceinstaller commands on failures
15
+
16
+ * [pull 13](https://github.com/jmoody/briar/pull/13) briar xtc command now executes all commands in the context of `bundle exec`
17
+
18
+ * [pull 14](https://github.com/jmoody/briar/pull/14) briar is dropping support for ruby 1.8.7
19
+
20
+ ## deprecated
21
+
22
+ - 1.1.0 `:reinstall` is no longer a valid `ideviceinstaller` command - `:install` will always delete the existing .ipa from the device and reinstall.
23
+ - 1.1.0 drops ruby 1.8.7 support
@@ -0,0 +1,14 @@
1
+ ## 1.1.1 changelog
2
+
3
+ ## release requirements
4
+
5
+ *** @required ***
6
+
7
+ - [ ] update cli help docs around XTC_WAIT_FOR_RESULTS
8
+ - [ ] need support for profiles
9
+ - [ ] need support for opening consoles against different simulators
10
+ - [ ] check calabash version!
11
+
12
+ *** @optional ***
13
+
14
+ ## features
@@ -9,6 +9,8 @@ module Briar
9
9
  BRIAR_LANGUAGE_KEYS = {
10
10
  :en => 'space',
11
11
  :de => 'Leerzeichen',
12
+ :da => 'mellemrum',
13
+ :th => 'วรรค',
12
14
  # could not decide what the language code should be (alt was ja-JP)
13
15
  :ja => '空白'
14
16
  }
@@ -1,3 +1,3 @@
1
1
  module Briar
2
- VERSION = '1.0.1'
2
+ VERSION = '1.1.0'
3
3
  end
metadata CHANGED
@@ -1,141 +1,183 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: briar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Moody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-10 00:00:00.000000000 Z
11
+ date: 2014-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbx-require-relative
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: calabash-cucumber
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.169.pre5
33
+ version: 0.9.169
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.9.169.pre5
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ~>
46
- - !ruby/object:Gem::Version
47
- version: '10.1'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '10.1'
40
+ version: 0.9.169
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: dotenv
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - ~>
45
+ - - "~>"
60
46
  - !ruby/object:Gem::Version
61
47
  version: '0.9'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ~>
52
+ - - "~>"
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0.9'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: ansi
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ~>
59
+ - - "~>"
74
60
  - !ruby/object:Gem::Version
75
61
  version: '1.4'
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ~>
66
+ - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: '1.4'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rainbow
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ~>
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
75
  version: '1.99'
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ~>
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '1.99'
97
83
  - !ruby/object:Gem::Dependency
98
- name: pry
84
+ name: xcpretty
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - ~>
87
+ - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '0.9'
89
+ version: '0.1'
104
90
  type: :runtime
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - ~>
94
+ - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: '0.9'
96
+ version: '0.1'
111
97
  - !ruby/object:Gem::Dependency
112
- name: rspec
98
+ name: retriable
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
- - - '>='
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: '0'
103
+ version: '1.3'
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
- - - '>='
108
+ - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: '0'
110
+ version: '1.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: bundler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.6'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.6'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: syntax
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ~>
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 1.0.0
131
+ version: '1.0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ~>
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.10'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.10'
153
+ - !ruby/object:Gem::Dependency
154
+ name: yard
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.8'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.8'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '10.3'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
137
179
  - !ruby/object:Gem::Version
138
- version: 1.0.0
180
+ version: '10.3'
139
181
  description: extends calabash-ios steps
140
182
  email:
141
183
  - joshuajmoody@gmail.com
@@ -162,6 +204,8 @@ files:
162
204
  - bin/briar_tags.rb
163
205
  - bin/briar_xtc.rb
164
206
  - briar.gemspec
207
+ - changelog/1.1.0.md
208
+ - changelog/1.1.1.md
165
209
  - features/step_definitions/alerts_and_sheets/action_sheet_steps.rb
166
210
  - features/step_definitions/alerts_and_sheets/alert_view_steps.rb
167
211
  - features/step_definitions/bars/navbar_steps.rb
@@ -228,19 +272,20 @@ require_paths:
228
272
  - features
229
273
  required_ruby_version: !ruby/object:Gem::Requirement
230
274
  requirements:
231
- - - '>='
275
+ - - ">="
232
276
  - !ruby/object:Gem::Version
233
- version: 1.8.7
277
+ version: 1.9.3
234
278
  required_rubygems_version: !ruby/object:Gem::Requirement
235
279
  requirements:
236
- - - '>='
280
+ - - ">="
237
281
  - !ruby/object:Gem::Version
238
282
  version: '0'
239
283
  requirements: []
240
284
  rubyforge_project:
241
- rubygems_version: 2.2.2
285
+ rubygems_version: 2.3.0
242
286
  signing_key:
243
287
  specification_version: 4
244
- summary: briar-1.0.1
288
+ summary: briar-1.1.0
245
289
  test_files:
246
290
  - spec/spec_helper.rb
291
+ has_rdoc: