qed 2.8.2 → 2.8.3

Sign up to get free protection for your applications and to get access to all the features.
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.'