qed 2.8.2 → 2.8.3

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/.ruby CHANGED
@@ -13,6 +13,7 @@ requirements:
13
13
  - name: facets
14
14
  version: 2.8+
15
15
  - name: brass
16
+ - name: confection
16
17
  - name: detroit
17
18
  groups:
18
19
  - build
@@ -40,10 +41,10 @@ revision: 0
40
41
  created: '2009-06-16'
41
42
  summary: Quod Erat Demonstrandum
42
43
  title: QED
43
- version: 2.8.2
44
- scm_uri: http://github.com/rubyworks/qed/blob/master/
44
+ version: 2.8.3
45
45
  name: qed
46
+ webcvs: http://github.com/rubyworks/qed/blob/master/
46
47
  description: ! 'QED (Quality Ensured Demonstrations) is a TDD/BDD framework
47
48
 
48
49
  utilizing Literate Programming techniques.'
49
- date: '2012-03-07'
50
+ date: '2012-03-14'
data/HISTORY.rdoc CHANGED
@@ -1,5 +1,23 @@
1
1
  = RELEASE HISTORY
2
2
 
3
+ == 2.8.3 | 2012-03-14
4
+
5
+ What a difference a week makes ;) The Confection library has been substantially
6
+ improved and if that trend contiunes at all then I think it will be well worth
7
+ supporting. So with this release QED will again move configuration handling
8
+ over to Confection. Jump over to the Confection project to learn how to use it.
9
+ In short, this release reverts the previous release. Along with this change,
10
+ profiles are now specified via the `-p`/`--profile` command line option instead
11
+ of specialized options.
12
+
13
+ Changes:
14
+
15
+ * Use Confection library for configuration.
16
+ * Use `-p`/`--profile` to select configuration profile.
17
+ * Use `config='none'` environment variable to circumvent Confection.
18
+ * Deprecated use of `.map` configuration redirection file.
19
+
20
+
3
21
  == 2.8.2 | 2012-03-07
4
22
 
5
23
  This release simply reverts the configuration file back to an
data/README.rdoc CHANGED
@@ -115,9 +115,9 @@ of running, such as <code>Before :each</code> or <code>After :all</code>,
115
115
  and *pattern advice* which are used to match against descriptive
116
116
  phrases in the QED demos. An example would be:
117
117
 
118
- When "a new round is started" do
119
- @round = []
120
- end
118
+ When "a new round is started" do
119
+ @round = []
120
+ end
121
121
 
122
122
  So that whenever the phrase "a new round is started" appears in a demo,
123
123
  the @round instance variable with be reset to an empty array.
@@ -126,11 +126,31 @@ It is rather amazing what can be accomplished with such a system,
126
126
  be sure to look at QED's own demonstrandum to get a better notion of
127
127
  how you can put the the system to use.
128
128
 
129
+ === Configuration
130
+
131
+ QED uses the {Confection}[http://rubyworks.github.com/confection] library to
132
+ handle configuration.
133
+
134
+ Here's a generally useful example of using SimpleCov to generate a test
135
+ coverage report when running your QED demos. Add this to your `Confile`:
136
+
137
+ config :qed, :profile=>:coverage do
138
+ require 'simplecov'
139
+ SimpleCov.start do
140
+ coverage_dir 'log/coverage'
141
+ end
142
+ end
143
+
144
+ Or omit the `config` method and just add the block's code to `task/qed-coverage.rb`.
145
+ Either approch makes the `coverage` profile available to the `qed` command.
146
+
147
+ $ qed -p coverage
148
+
129
149
  === Generating Documentation
130
150
 
131
151
  To generate documentation from QED documents, use the +qedoc+ command.
132
152
 
133
- $ qedoc --output doc/qedoc --title "Example" demo/*.rdoc
153
+ $ qedoc --output doc/qedoc --title "Example" demo/*.rdoc
134
154
 
135
155
  When documenting, QED recognizes the format by the file extension and
136
156
  treats it accordingly. An extension of <code>.qed</code> is treated the same
@@ -144,13 +164,20 @@ on the use of these commands.
144
164
 
145
165
  QED depends on the following external libraries:
146
166
 
147
- * AE - Assertions Framework
148
- * ANSI - ANSI Color Codes
149
- * Facets - Core Extensions
167
+ * {BRASS}[http://rubyworks.github.com/brass] - Assertions System
168
+ * {ANSI}[http://rubyworks.github.com/ansi] - ANSI Color Codes
169
+ * {Confection}[http://rubyworks.github.com/confection] - Project Tool Configuration
170
+ * {Facets}[http://rubyworks.github.com/facets] - Core Extensions
150
171
 
151
172
  These will be automatically installed when installing QED via RubyGems,
152
173
  if they are not already installed.
153
174
 
175
+ Optional libraries that are generally useful with QED.
176
+
177
+ * {AE}[http://rubyworks.github.com/ae] - Assertions Framework
178
+
179
+ Install these individually and require them in your applique to use.
180
+
154
181
 
155
182
  == Copyrights
156
183
 
@@ -161,3 +188,4 @@ Copyright (c) 2009 Rubyworks, Thomas Sawyer
161
188
  BSD 2 Clause License
162
189
 
163
190
  See COPYING.rdoc for details.
191
+
data/lib/qed.yml CHANGED
@@ -13,6 +13,7 @@ requirements:
13
13
  - name: facets
14
14
  version: 2.8+
15
15
  - name: brass
16
+ - name: confection
16
17
  - name: detroit
17
18
  groups:
18
19
  - build
@@ -40,10 +41,10 @@ revision: 0
40
41
  created: '2009-06-16'
41
42
  summary: Quod Erat Demonstrandum
42
43
  title: QED
43
- version: 2.8.2
44
- scm_uri: http://github.com/rubyworks/qed/blob/master/
44
+ version: 2.8.3
45
45
  name: qed
46
+ webcvs: http://github.com/rubyworks/qed/blob/master/
46
47
  description: ! 'QED (Quality Ensured Demonstrations) is a TDD/BDD framework
47
48
 
48
49
  utilizing Literate Programming techniques.'
49
- date: '2012-03-07'
50
+ date: '2012-03-14'
data/lib/qed/cli/qed.rb CHANGED
@@ -21,8 +21,8 @@ module QED
21
21
  # exit -1
22
22
  #end
23
23
 
24
- session = Session.new(files, options)
25
- success = session.run
24
+ session = Session.new(files, options)
25
+ success = session.run
26
26
 
27
27
  exit -1 unless success
28
28
  end
@@ -33,16 +33,8 @@ module QED
33
33
  options_parser = OptionParser.new do |opt|
34
34
  opt.banner = "Usage: qed [options] <files...>"
35
35
 
36
- opt.separator("Custom Profiles:") unless settings.profiles.empty?
37
-
38
- settings.profiles.each do |name, value|
39
- o = "--#{name}"
40
- opt.on(o, "#{name} custom profile") do
41
- options[:profile] = name.to_sym
42
- end
43
- end
44
-
45
36
  opt.separator("Report Formats (pick one):")
37
+
46
38
  #opt.on('--dotprogress', '-d', "use dot-progress reporter [default]") do
47
39
  # options[:format] = :dotprogress
48
40
  #end
@@ -66,12 +58,13 @@ module QED
66
58
  end
67
59
 
68
60
  opt.separator("Control Options:")
61
+
62
+ opt.on('-p', '--profile NAME', "load runtime profile") do |name|
63
+ options[:profile] = name.to_sym
64
+ end
69
65
  opt.on('--comment', '-c', "run comment code") do
70
66
  options[:mode] = :comment
71
67
  end
72
- opt.on('--profile', '-p NAME', "load runtime profile") do |name|
73
- options[:profile] = name
74
- end
75
68
  opt.on('--loadpath', "-I PATH", "add paths to $LOAD_PATH") do |paths|
76
69
  options[:loadpath] = paths.split(/[:;]/).map{|d| File.expand_path(d)}
77
70
  end
@@ -81,10 +74,7 @@ module QED
81
74
  opt.on('--rooted', '-R', "run from project root instead of temporary directory") do
82
75
  options[:rooted] = true
83
76
  end
84
- # COMMIT:
85
- # The qed command --trace option takes a count.
86
- # Use 0 to mean all.
87
- opt.on('--trace', '-t [COUNT]', "show full backtraces for exceptions") do |cnt|
77
+ opt.on('--trace', '-t [COUNT]', "number of backtraces for exceptions (0 for all)") do |cnt|
88
78
  #options[:trace] = true
89
79
  ENV['trace'] = cnt
90
80
  end
@@ -92,10 +82,11 @@ module QED
92
82
  $VERBOSE = true # wish this were called $WARN!
93
83
  end
94
84
  opt.on('--debug', "exit immediately upon raised exception") do
95
- $DEBUG = true
85
+ $DEBUG = true
96
86
  end
97
87
 
98
88
  opt.separator("Optional Commands:")
89
+
99
90
  opt.on_tail('--version', "display version") do
100
91
  puts "QED #{QED::VERSION}"
101
92
  exit
@@ -106,18 +97,34 @@ module QED
106
97
  end
107
98
  opt.on_tail('--help', '-h', "display this help message") do
108
99
  puts opt
109
- exit
100
+
101
+ unless settings.profiles.empty?
102
+ puts "Available Profiles:"
103
+ require 'confection'
104
+ Confection.profiles(:qed).each do |name|
105
+ puts " #{name}"
106
+ end
107
+ end
108
+
109
+ exit -1
110
110
  end
111
111
  end
112
+
112
113
  options_parser.parse!(argv)
114
+
113
115
  return argv, options
114
116
  end
115
117
 
118
+ #
119
+ #def self.profiles
120
+ # Settings.profiles
121
+ #end
122
+
116
123
  # TODO: Pass to Session class, instead of acting global.
117
124
  # It is used at the class level to get profiles for the cli.
118
- def self.settings
119
- @settings ||= Settings.new
120
- end
125
+ #def self.settings
126
+ # @settings ||= Settings.new([])
127
+ #end
121
128
 
122
129
  end
123
130
 
data/lib/qed/session.rb CHANGED
@@ -9,67 +9,65 @@ module QED
9
9
  #
10
10
  class Session
11
11
 
12
- # If files are not specified than these directories
13
- # will be searched.
14
- DEFAULT_FILES = ['qed', 'demo', 'spec']
15
-
16
12
  # Default recognized demos file types.
17
13
  DEMO_TYPES = %w{qed rdoc md markdown}
18
14
 
19
15
  #
20
16
  CODE_TYPES = %w{rb}
21
17
 
22
- # Directory names to omit from automatic selection.
23
- OMIT_PATHS = %w{applique helpers support sample samples fixture fixtures}
18
+ # Returns instance of Settings class.
19
+ attr :settings
20
+
21
+ # New Session
22
+ def initialize(files, options={})
23
+ require_reporters
24
+
25
+ @settings = Settings.new(files, options)
26
+ end
24
27
 
25
28
  # Demonstration files (or globs).
26
- attr_reader :files
29
+ def files
30
+ settings.files
31
+ end
27
32
 
28
33
  # File patterns to omit.
29
- attr_accessor :omit
34
+ def omit
35
+ settings.omit
36
+ end
30
37
 
31
38
  # Output format.
32
- attr_accessor :format
39
+ def format
40
+ settings.format
41
+ end
33
42
 
34
43
  # Trace execution?
35
- attr_accessor :trace
44
+ def trace?
45
+ settings.trace
46
+ end
36
47
 
37
48
  # Parse mode.
38
- attr_accessor :mode
49
+ def mode
50
+ settings.mode
51
+ end
39
52
 
40
53
  # Paths to be added to $LOAD_PATH.
41
- attr_reader :loadpath
54
+ def loadpath
55
+ settings.loadpath
56
+ end
42
57
 
43
58
  # Libraries to be required.
44
- attr_reader :requires
59
+ def requires
60
+ settings.requires
61
+ end
45
62
 
46
63
  # Operate from project root?
47
- attr_accessor :rooted
64
+ def rooted
65
+ settings.rooted
66
+ end
48
67
 
49
68
  # Selected profile.
50
- attr_accessor :profile
51
-
52
- # Returns instance of Settings class.
53
- attr :settings
54
-
55
- # New Session
56
- def initialize(files, options={})
57
- require_reporters
58
-
59
- @files = [files].flatten.compact
60
- @files = [DEFAULT_FILES.find{ |d| File.directory?(d) }] if @files.empty?
61
- @files = @files.compact
62
-
63
- @format = options[:format] || :dot
64
- @trace = options[:trace] || false
65
- @mode = options[:mode] || nil
66
- @profile = options[:profile] || :default
67
- @loadpath = options[:loadpath] || ['lib']
68
- @requires = options[:requires] || []
69
-
70
- @omit = OMIT_PATHS # TODO: eventually make configurable
71
-
72
- @settings = Settings.new(options)
69
+ def profile
70
+ settings.profile
73
71
  end
74
72
 
75
73
  #
@@ -95,7 +93,7 @@ module QED
95
93
  def reporter
96
94
  @reporter ||= (
97
95
  name = Reporter.constants.find{ |c| /#{format}/ =~ c.to_s.downcase }
98
- Reporter.const_get(name).new(:trace => trace)
96
+ Reporter.const_get(name).new(:trace => trace?)
99
97
  )
100
98
  end
101
99
 
data/lib/qed/settings.rb CHANGED
@@ -11,7 +11,7 @@ module QED
11
11
  # In this file special configuration setups can be placed to automatically
12
12
  # effect QED execution, in particular optional profiles can be defined.
13
13
  #
14
- # profile :coverage do
14
+ # if ENV['cover']
15
15
  # require 'simplecov'
16
16
  # SimpleCov.start do
17
17
  # coverage_dir 'log/coverage'
@@ -24,36 +24,117 @@ module QED
24
24
  #
25
25
  class Settings
26
26
 
27
+ #
28
+ # Because QED usese the Confection library, but Confection also
29
+ # uses QED for testing, a special configuration exception needed
30
+ # be sliced out so Confection's test could run without QED using
31
+ # it. We handle this via a environment variable `config`. Set
32
+ # it to 'none' to deactivate the use of Confection.
33
+ #
34
+ def self.configless?
35
+ ENV['config'] == 'none'
36
+ end
37
+
27
38
  require 'tmpdir'
28
39
  require 'fileutils'
29
40
 
41
+ require 'confection' unless configless?
42
+
43
+ # If files are not specified than these directories
44
+ # will be searched.
45
+ DEFAULT_FILES = ['qed', 'demo', 'spec']
46
+
30
47
  # QED support configuration file mapping.
31
- MAP_FILE = '.map'
48
+ #MAP_FILE = '.map'
32
49
 
33
50
  # Glob pattern used to search for project's root directory.
34
- ROOT_PATTERN = '{.map,.ruby,.git/,.hg/,_darcs/,.qed,.qed.rb,qed.rb,task/qed.rb}'
51
+ ROOT_PATTERN = '{.map,.ruby,.git/,.hg/,_darcs/}'
35
52
 
36
- # Glob pattern used to find QED configuration file in root directory.
37
- CONFIG_PATTERN = '{task/qed.rb,qed.rb,.qed,.qed.rb}'
53
+ # Glob pattern used to find QED configuration file relative to root directory.
54
+ CONFIG_PATTERN = '{.,,task/}qed,qedfile{,.rb}'
38
55
 
39
56
  # Home directory.
40
57
  HOME = File.expand_path('~')
41
58
 
59
+ # Directory names to omit from automatic selection.
60
+ OMIT_PATHS = %w{applique helpers support sample samples fixture fixtures}
61
+
42
62
  #
43
63
  #
44
64
  #
45
- def initialize(options={})
65
+ def initialize(files, options={})
66
+ @files = [files].flatten.compact
67
+ @files = [DEFAULT_FILES.find{ |d| File.directory?(d) }] if @files.empty?
68
+ @files = @files.compact
69
+
70
+ @format = options[:format] || :dot
71
+ @trace = options[:trace] || false
72
+ @mode = options[:mode] || nil
73
+ @profile = options[:profile] || :default
74
+ @loadpath = options[:loadpath] || ['lib']
75
+ @requires = options[:requires] || []
76
+
77
+ @omit = OMIT_PATHS # TODO: eventually make configurable
78
+
46
79
  @rootless = options[:rootless]
47
- @profiles = {}
80
+ #@profiles = {}
48
81
 
49
82
  @root = @rootless ? system_tmpdir : find_root
50
83
 
51
84
  # Set global. TODO: find away to not need this ?
52
85
  $ROOT = @root
53
86
 
54
- if config_file
55
- instance_eval(File.read(config_file), config_file)
56
- end
87
+ initialize_configuration
88
+
89
+ #profile = options[:profile]
90
+ #confection(:qed, profile)
91
+ end
92
+
93
+ #
94
+ # Because QED uses the Confection library, but Confection also
95
+ # uses QED for testing, a special configuration exception needed
96
+ # be sliced out so Confection's demos could run without QED using
97
+ # it. We handle this via a `.qed` config file. Add this file
98
+ # to a project and it will deactivate the use of Confection,
99
+ # and load the contents of the file instead.
100
+ #
101
+ def initialize_configuration
102
+ require 'confection' unless configless?
103
+ end
104
+
105
+ # Demonstration files (or globs).
106
+ attr_reader :files
107
+
108
+ # File patterns to omit.
109
+ attr_accessor :omit
110
+
111
+ # Output format.
112
+ attr_accessor :format
113
+
114
+ # Trace execution?
115
+ attr_accessor :trace
116
+
117
+ # Parse mode.
118
+ attr_accessor :mode
119
+
120
+ # Paths to be added to $LOAD_PATH.
121
+ attr_reader :loadpath
122
+
123
+ # Libraries to be required.
124
+ attr_reader :requires
125
+
126
+ # Operate from project root?
127
+ attr_accessor :rooted
128
+
129
+ # Selected profile.
130
+ attr_accessor :profile
131
+
132
+ #
133
+ # If Environment varible is set to 'none' then COnfection will not be
134
+ # used for configuration.
135
+ #
136
+ def configless?
137
+ self.class.configless?
57
138
  end
58
139
 
59
140
  #
@@ -107,6 +188,8 @@ module QED
107
188
  #
108
189
  # Define a profile.
109
190
  #
191
+ # @deprecated Confection library is used instead.
192
+ #
110
193
  # @param [#to_s] name
111
194
  # Name of profile.
112
195
  #
@@ -114,10 +197,21 @@ module QED
114
197
  #
115
198
  # @return [Proc] The procedure.
116
199
  #
117
- def profile(name, &block)
118
- @profiles[name.to_s] = block
200
+ #def profile(name, &block)
201
+ # raise "The #profile method is deprecated."
202
+ # #@profiles[name.to_s] = block
203
+ #end
204
+
205
+ #
206
+ # Profiles are collected from the Confection library, unless
207
+ # confection is deactivated via the override file.
208
+ #
209
+ def profiles
210
+ return [] if configless?
211
+ Confection.profiles(:qed)
119
212
  end
120
213
 
214
+ =begin
121
215
  #
122
216
  # Keeps a list of defined profiles.
123
217
  #
@@ -146,6 +240,18 @@ module QED
146
240
  # require(file)
147
241
  #end
148
242
  end
243
+ =end
244
+
245
+ #
246
+ # Load QED configuration profile. QED configurations are defined
247
+ # via standards of the Confection library, unless otherwise
248
+ # deativated via the `.qed` file.
249
+ #
250
+ def load_profile(profile)
251
+ return if config_override
252
+ config = confection(:qed, profile.to_sym)
253
+ config.exec
254
+ end
149
255
 
150
256
  #
151
257
  # Locate project's root directory. This is done by searching upward
@@ -171,7 +277,7 @@ module QED
171
277
  path = File.expand_path(path || Dir.pwd)
172
278
  path = File.dirname(path) unless File.directory?(path)
173
279
 
174
- root = lookup(ROOT_PATTERN, path)
280
+ root = lookup(ROOT_PATTERN, path) || lookup(CONFIG_PATTERN, path)
175
281
  return root if root
176
282
 
177
283
  #root = lookup(path, '{qed,demo,spec}/')
@@ -220,32 +326,31 @@ module QED
220
326
  #
221
327
  # Lookup, cache and return QED config file.
222
328
  #
223
- def config_file
224
- @config_file ||= (
225
- glob = file_map['qed'] || CONFIG_PATTERN
226
- Dir.glob(File.join(root_directory,glob)).first
329
+ def config_override
330
+ @config_override ||= (
331
+ Dir.glob(File.join(root_directory, '.qed')).first
227
332
  )
228
333
  end
229
334
 
230
- #
231
- # Return cached file map from a project's `.map` file, if it exists.
232
- #
233
- def file_map
234
- @file_map ||= (
235
- if File.exist?(map_file)
236
- YAML.load_file(map_file)
237
- else
238
- {}
239
- end
240
- )
241
- end
335
+ ##
336
+ ## Return cached file map from a project's `.map` file, if it exists.
337
+ ##
338
+ #def file_map
339
+ # @file_map ||= (
340
+ # if File.exist?(map_file)
341
+ # YAML.load_file(map_file)
342
+ # else
343
+ # {}
344
+ # end
345
+ # )
346
+ #end
242
347
 
243
- #
244
- # Lookup, cache and return `.map` map file.
245
- #
246
- def map_file
247
- @_map_file ||= File.join(root_directory,MAP_FILE)
248
- end
348
+ ##
349
+ ## Lookup, cache and return `.map` map file.
350
+ ##
351
+ #def map_file
352
+ # @_map_file ||= File.join(root_directory,MAP_FILE)
353
+ #end
249
354
 
250
355
  end
251
356
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qed
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.2
4
+ version: 2.8.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-07 00:00:00.000000000 Z
12
+ date: 2012-03-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ansi
16
- requirement: &21715680 !ruby/object:Gem::Requirement
16
+ requirement: &32221080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *21715680
24
+ version_requirements: *32221080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: facets
27
- requirement: &21714660 !ruby/object:Gem::Requirement
27
+ requirement: &32219960 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2.8'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *21714660
35
+ version_requirements: *32219960
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: brass
38
- requirement: &21736760 !ruby/object:Gem::Requirement
38
+ requirement: &32234580 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,21 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *21736760
46
+ version_requirements: *32234580
47
+ - !ruby/object:Gem::Dependency
48
+ name: confection
49
+ requirement: &32233240 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *32233240
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: detroit
49
- requirement: &21735960 !ruby/object:Gem::Requirement
60
+ requirement: &32232100 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *21735960
68
+ version_requirements: *32232100
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: ae
60
- requirement: &21734980 !ruby/object:Gem::Requirement
71
+ requirement: &32231100 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,7 +76,7 @@ dependencies:
65
76
  version: '0'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *21734980
79
+ version_requirements: *32231100
69
80
  description: ! 'QED (Quality Ensured Demonstrations) is a TDD/BDD framework
70
81
 
71
82
  utilizing Literate Programming techniques.'