qed 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +622 -344
- data/DIARY.rdoc +117 -0
- data/HISTORY +36 -0
- data/PROFILE +16 -0
- data/README.rdoc +69 -36
- data/REQUIRE +9 -0
- data/ROADMAP +12 -0
- data/VERSION +5 -0
- data/demo/01_demos.rdoc +56 -0
- data/demo/02_advice.rdoc +158 -0
- data/demo/03_helpers.rdoc +42 -0
- data/demo/04_fixtures.rdoc +29 -0
- data/demo/05_quote.rdoc +24 -0
- data/demo/07_toplevel.rdoc +42 -0
- data/demo/08_cross_script.rdoc +27 -0
- data/demo/09_cross_script.rdoc +27 -0
- data/demo/10_constant_lookup.rdoc +16 -0
- data/demo/applique/constant.rb +2 -0
- data/demo/applique/env.rb +5 -0
- data/demo/applique/fileutils.rb +1 -0
- data/demo/applique/markup.rb +10 -0
- data/demo/applique/quote.rb +4 -0
- data/demo/applique/toplevel.rb +15 -0
- data/demo/fixtures/data.txt +1 -0
- data/demo/fixtures/table.yml +5 -0
- data/demo/helpers/advice.rb +40 -0
- data/demo/helpers/sample.rb +4 -0
- data/demo/helpers/toplevel.rb +6 -0
- data/eg/hello_world.rdoc +15 -0
- data/{demo/error.rdoc → eg/view_error.rdoc} +0 -0
- data/{demo → eg}/website.rdoc +0 -0
- data/lib/qed.rb +20 -1
- data/lib/qed/advice.rb +4 -30
- data/lib/qed/advice/events.rb +6 -3
- data/lib/qed/advice/patterns.rb +37 -19
- data/lib/qed/applique.rb +85 -0
- data/lib/qed/command.rb +3 -5
- data/lib/qed/evaluator.rb +52 -56
- data/lib/qed/package.yml +5 -0
- data/lib/qed/parser.rb +149 -0
- data/lib/qed/profile.yml +16 -0
- data/lib/qed/reporter/{base.rb → abstract.rb} +17 -19
- data/lib/qed/reporter/bullet.rb +14 -16
- data/lib/qed/reporter/dotprogress.rb +7 -6
- data/lib/qed/reporter/html.rb +21 -3
- data/lib/qed/reporter/verbatim.rb +28 -26
- data/lib/qed/scope.rb +98 -82
- data/lib/qed/script.rb +21 -69
- data/lib/qed/session.rb +44 -3
- data/script/qedoc +2 -0
- data/script/test +2 -0
- metadata +74 -28
- data/doc/qedoc/index.html +0 -515
- data/doc/qedoc/jquery.js +0 -19
- data/meta/authors +0 -1
- data/meta/created +0 -1
- data/meta/description +0 -2
- data/meta/homepage +0 -1
- data/meta/name +0 -1
- data/meta/released +0 -1
- data/meta/repository +0 -1
- data/meta/requires +0 -5
- data/meta/ruby +0 -2
- data/meta/suite +0 -1
- data/meta/summary +0 -1
- data/meta/title +0 -1
- data/meta/version +0 -1
data/lib/qed/script.rb
CHANGED
@@ -1,52 +1,48 @@
|
|
1
1
|
module QED
|
2
2
|
require 'yaml'
|
3
|
-
require 'tilt'
|
4
|
-
require 'nokogiri'
|
5
3
|
|
6
4
|
require 'facets/dir/ascend'
|
7
5
|
|
6
|
+
require 'qed/parser'
|
8
7
|
require 'qed/evaluator'
|
9
8
|
|
10
|
-
#Assertion = AE::Assertion
|
11
|
-
#Expectation = Assertor
|
12
|
-
|
13
9
|
# = Script
|
14
10
|
#
|
15
|
-
# When run current working directory is changed to that of
|
16
|
-
# the demonstration script's. So any relative file references
|
17
|
-
# within a demo must take that into account.
|
18
|
-
#
|
19
11
|
class Script
|
20
12
|
|
21
|
-
#
|
22
|
-
attr :
|
13
|
+
#
|
14
|
+
attr :applique
|
23
15
|
|
24
|
-
#
|
25
|
-
attr :
|
16
|
+
# Demonstrandum file.
|
17
|
+
attr :file
|
26
18
|
|
27
19
|
#
|
28
20
|
attr :scope
|
29
21
|
|
30
22
|
# New Script
|
31
|
-
def initialize(file, scope=nil)
|
23
|
+
def initialize(applique, file, scope=nil)
|
24
|
+
@applique = applique.dup # localize copy of applique
|
32
25
|
@file = file
|
33
|
-
@scope = scope || Scope.new
|
34
|
-
|
26
|
+
@scope = scope || Scope.new(applique)
|
27
|
+
@binding = @scope.__binding__
|
28
|
+
#@loadlist = []
|
29
|
+
#apply_environment
|
35
30
|
end
|
36
31
|
|
37
32
|
# One binding per script.
|
38
33
|
def binding
|
39
|
-
@binding
|
34
|
+
@binding #||= @scope.__binding__
|
40
35
|
end
|
41
36
|
|
42
37
|
#
|
43
38
|
def advice
|
44
|
-
|
39
|
+
#@scope.__advice__
|
40
|
+
@applique.__advice__
|
45
41
|
end
|
46
42
|
|
47
|
-
#
|
48
|
-
def
|
49
|
-
@
|
43
|
+
# Expanded dirname of +file+.
|
44
|
+
def directory
|
45
|
+
@directory ||= File.expand_path(File.dirname(file))
|
50
46
|
end
|
51
47
|
|
52
48
|
# File basename less extension.
|
@@ -54,36 +50,6 @@ module QED
|
|
54
50
|
@name ||= File.basename(file).chomp(File.extname(file))
|
55
51
|
end
|
56
52
|
|
57
|
-
# Nokogiri HTML document.
|
58
|
-
def document
|
59
|
-
@document ||= Nokogiri::HTML(to_html)
|
60
|
-
end
|
61
|
-
|
62
|
-
# Root node of the html document.
|
63
|
-
def root
|
64
|
-
document.root
|
65
|
-
end
|
66
|
-
|
67
|
-
# Open file and translate template into HTML text.
|
68
|
-
def to_html
|
69
|
-
#case file
|
70
|
-
#when /^http/
|
71
|
-
# ext = File.extname(file).sub('.','')
|
72
|
-
# Tilt[ext].new{ source }
|
73
|
-
#else
|
74
|
-
#end
|
75
|
-
if File.extname(file) == '.html'
|
76
|
-
File.read(file)
|
77
|
-
else
|
78
|
-
Tilt.new(file).render
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
# Open, convert to HTML and cache.
|
83
|
-
def html
|
84
|
-
@html ||= to_html
|
85
|
-
end
|
86
|
-
|
87
53
|
#
|
88
54
|
#def source
|
89
55
|
# @source ||= (
|
@@ -97,30 +63,16 @@ module QED
|
|
97
63
|
# )
|
98
64
|
#end
|
99
65
|
|
66
|
+
def parse
|
67
|
+
Parser.new(file).parse
|
68
|
+
end
|
69
|
+
|
100
70
|
#
|
101
71
|
def run(*observers)
|
102
72
|
evaluator = Evaluator.new(self, *observers)
|
103
73
|
evaluator.run
|
104
74
|
end
|
105
75
|
|
106
|
-
#
|
107
|
-
def environment
|
108
|
-
glob = File.join(dir, '{environment,common,shared}', '*')
|
109
|
-
Dir[glob]
|
110
|
-
end
|
111
|
-
|
112
|
-
#
|
113
|
-
def apply_environment
|
114
|
-
environment.each do |file|
|
115
|
-
case File.extname(file)
|
116
|
-
when '.rb'
|
117
|
-
eval(File.read(file), scope.__binding__, file)
|
118
|
-
else
|
119
|
-
Script.new(file, scope).run
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
76
|
end
|
125
77
|
|
126
78
|
end
|
data/lib/qed/session.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
module QED
|
2
2
|
|
3
3
|
#require 'qed/config'
|
4
|
+
require 'qed/applique'
|
4
5
|
require 'qed/script'
|
5
6
|
|
6
|
-
# =
|
7
|
+
# = Runtime Session
|
7
8
|
#
|
8
9
|
# The Session class encapsulates a set of demonstrations
|
9
10
|
# and the procedure for looping through them and running
|
@@ -32,6 +33,8 @@ module QED
|
|
32
33
|
options.each do |k,v|
|
33
34
|
__send__("#{k}=", v) if v
|
34
35
|
end
|
36
|
+
|
37
|
+
@applique = create_applique
|
35
38
|
end
|
36
39
|
|
37
40
|
# Top-level configuration.
|
@@ -61,7 +64,7 @@ module QED
|
|
61
64
|
|
62
65
|
#
|
63
66
|
def scripts
|
64
|
-
@scripts ||= demos.map{ |demo| Script.new(demo) }
|
67
|
+
@scripts ||= demos.map{ |demo| Script.new(@applique, demo) }
|
65
68
|
end
|
66
69
|
|
67
70
|
#
|
@@ -77,7 +80,9 @@ module QED
|
|
77
80
|
# script = Script.new(demo, report)
|
78
81
|
scripts.each do |script|
|
79
82
|
script.run(*observers)
|
80
|
-
|
83
|
+
#pid = fork { script.run(*observers) }
|
84
|
+
#Process.detach(pid)
|
85
|
+
end
|
81
86
|
reporter.after_session(self)
|
82
87
|
#profile.after_session(self)
|
83
88
|
end
|
@@ -89,6 +94,42 @@ module QED
|
|
89
94
|
# end
|
90
95
|
#end
|
91
96
|
|
97
|
+
# TODO: associate scripts to there applique
|
98
|
+
def create_applique
|
99
|
+
applique = Applique.new
|
100
|
+
#eval "include QED::DomainLanguage", TOPLEVEL_BINDING
|
101
|
+
applique_scripts.each do |file|
|
102
|
+
#next if @loadlist.include?(file)
|
103
|
+
#case File.extname(file)
|
104
|
+
#when '.rb'
|
105
|
+
# since scope is just TOPLEVEL now
|
106
|
+
#require(file)
|
107
|
+
applique.module_eval(File.read(file), file)
|
108
|
+
#eval(File.read(file), scope.__binding__, file) # TODO: for each script!? Nay.
|
109
|
+
#else
|
110
|
+
# Script.new(file, scope).run
|
111
|
+
#end
|
112
|
+
#@loadlist << file
|
113
|
+
end
|
114
|
+
applique
|
115
|
+
end
|
116
|
+
|
117
|
+
#
|
118
|
+
def applique_scripts
|
119
|
+
locs = []
|
120
|
+
demos.each do |demo|
|
121
|
+
Dir.ascend(File.dirname(demo)) do |path|
|
122
|
+
break if path == Dir.pwd
|
123
|
+
dir = File.join(path, 'applique')
|
124
|
+
if File.directory?(dir)
|
125
|
+
locs << dir
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
envs = locs.map{ |loc| Dir[File.join(loc,'**/*.rb')] }
|
130
|
+
envs.flatten.compact.uniq
|
131
|
+
end
|
132
|
+
|
92
133
|
end#class Session
|
93
134
|
|
94
135
|
end#module QED
|
data/script/qedoc
ADDED
data/script/test
ADDED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 2
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 2.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 2.2.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Thomas Sawyer <transfire@gmail.com>
|
@@ -14,16 +15,18 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-06-19 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: ae
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
version: "0"
|
@@ -33,9 +36,11 @@ dependencies:
|
|
33
36
|
name: ansi
|
34
37
|
prerelease: false
|
35
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
36
40
|
requirements:
|
37
41
|
- - ">="
|
38
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
39
44
|
segments:
|
40
45
|
- 0
|
41
46
|
version: "0"
|
@@ -45,9 +50,11 @@ dependencies:
|
|
45
50
|
name: facets
|
46
51
|
prerelease: false
|
47
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
48
54
|
requirements:
|
49
55
|
- - ">="
|
50
56
|
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
51
58
|
segments:
|
52
59
|
- 0
|
53
60
|
version: "0"
|
@@ -57,9 +64,11 @@ dependencies:
|
|
57
64
|
name: tilt
|
58
65
|
prerelease: false
|
59
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
60
68
|
requirements:
|
61
69
|
- - ">="
|
62
70
|
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
63
72
|
segments:
|
64
73
|
- 0
|
65
74
|
version: "0"
|
@@ -69,39 +78,76 @@ dependencies:
|
|
69
78
|
name: nokogiri
|
70
79
|
prerelease: false
|
71
80
|
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ">="
|
74
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
75
86
|
segments:
|
76
87
|
- 0
|
77
88
|
version: "0"
|
78
89
|
type: :runtime
|
79
90
|
version_requirements: *id005
|
80
|
-
|
81
|
-
|
82
|
-
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: syckle
|
93
|
+
prerelease: false
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
103
|
+
type: :development
|
104
|
+
version_requirements: *id006
|
105
|
+
description: QED (Quality Ensured Demonstrations) is a TDD/BDD framework utilizing Literate Programming techniques.
|
83
106
|
email:
|
84
107
|
executables:
|
85
108
|
- qedoc
|
86
109
|
- qed
|
87
110
|
extensions: []
|
88
111
|
|
89
|
-
extra_rdoc_files:
|
90
|
-
|
112
|
+
extra_rdoc_files:
|
113
|
+
- README.rdoc
|
91
114
|
files:
|
92
115
|
- bin/qed
|
93
116
|
- bin/qedoc
|
94
|
-
- demo/
|
95
|
-
- demo/
|
96
|
-
-
|
97
|
-
-
|
117
|
+
- demo/01_demos.rdoc
|
118
|
+
- demo/02_advice.rdoc
|
119
|
+
- demo/03_helpers.rdoc
|
120
|
+
- demo/04_fixtures.rdoc
|
121
|
+
- demo/05_quote.rdoc
|
122
|
+
- demo/07_toplevel.rdoc
|
123
|
+
- demo/08_cross_script.rdoc
|
124
|
+
- demo/09_cross_script.rdoc
|
125
|
+
- demo/10_constant_lookup.rdoc
|
126
|
+
- demo/applique/constant.rb
|
127
|
+
- demo/applique/env.rb
|
128
|
+
- demo/applique/fileutils.rb
|
129
|
+
- demo/applique/markup.rb
|
130
|
+
- demo/applique/quote.rb
|
131
|
+
- demo/applique/toplevel.rb
|
132
|
+
- demo/fixtures/data.txt
|
133
|
+
- demo/fixtures/table.yml
|
134
|
+
- demo/helpers/advice.rb
|
135
|
+
- demo/helpers/sample.rb
|
136
|
+
- demo/helpers/toplevel.rb
|
137
|
+
- eg/hello_world.rdoc
|
138
|
+
- eg/view_error.rdoc
|
139
|
+
- eg/website.rdoc
|
98
140
|
- lib/qed/advice/events.rb
|
99
141
|
- lib/qed/advice/patterns.rb
|
100
142
|
- lib/qed/advice.rb
|
143
|
+
- lib/qed/applique.rb
|
101
144
|
- lib/qed/command.rb
|
102
145
|
- lib/qed/config.rb
|
103
146
|
- lib/qed/evaluator.rb
|
104
|
-
- lib/qed/
|
147
|
+
- lib/qed/package.yml
|
148
|
+
- lib/qed/parser.rb
|
149
|
+
- lib/qed/profile.yml
|
150
|
+
- lib/qed/reporter/abstract.rb
|
105
151
|
- lib/qed/reporter/bullet.rb
|
106
152
|
- lib/qed/reporter/dotprogress.rb
|
107
153
|
- lib/qed/reporter/html.rb
|
@@ -115,21 +161,15 @@ files:
|
|
115
161
|
- lib/qedoc/document/markup.rb
|
116
162
|
- lib/qedoc/document/template.rhtml
|
117
163
|
- lib/qedoc/document.rb
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
121
|
-
- meta/homepage
|
122
|
-
- meta/name
|
123
|
-
- meta/released
|
124
|
-
- meta/repository
|
125
|
-
- meta/requires
|
126
|
-
- meta/ruby
|
127
|
-
- meta/suite
|
128
|
-
- meta/summary
|
129
|
-
- meta/title
|
130
|
-
- meta/version
|
164
|
+
- script/qedoc
|
165
|
+
- script/test
|
166
|
+
- PROFILE
|
131
167
|
- README.rdoc
|
132
168
|
- HISTORY
|
169
|
+
- REQUIRE
|
170
|
+
- ROADMAP
|
171
|
+
- DIARY.rdoc
|
172
|
+
- VERSION
|
133
173
|
- COPYING
|
134
174
|
has_rdoc: true
|
135
175
|
homepage: http://proutils.github.com/qed
|
@@ -139,26 +179,32 @@ post_install_message:
|
|
139
179
|
rdoc_options:
|
140
180
|
- --title
|
141
181
|
- QED API
|
182
|
+
- --main
|
183
|
+
- README.rdoc
|
142
184
|
require_paths:
|
143
185
|
- lib
|
144
186
|
required_ruby_version: !ruby/object:Gem::Requirement
|
187
|
+
none: false
|
145
188
|
requirements:
|
146
189
|
- - ">="
|
147
190
|
- !ruby/object:Gem::Version
|
191
|
+
hash: 3
|
148
192
|
segments:
|
149
193
|
- 0
|
150
194
|
version: "0"
|
151
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
|
+
none: false
|
152
197
|
requirements:
|
153
198
|
- - ">="
|
154
199
|
- !ruby/object:Gem::Version
|
200
|
+
hash: 3
|
155
201
|
segments:
|
156
202
|
- 0
|
157
203
|
version: "0"
|
158
204
|
requirements: []
|
159
205
|
|
160
206
|
rubyforge_project: qed
|
161
|
-
rubygems_version: 1.3.
|
207
|
+
rubygems_version: 1.3.7
|
162
208
|
signing_key:
|
163
209
|
specification_version: 3
|
164
210
|
summary: Quod Erat Demonstrandum
|