ramaze 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. data/Rakefile +14 -259
  2. data/bin/ramaze +52 -25
  3. data/doc/AUTHORS +6 -0
  4. data/doc/CHANGELOG +1363 -42
  5. data/doc/INSTALL +1 -1
  6. data/doc/README +48 -35
  7. data/doc/README.html +637 -0
  8. data/doc/TODO +7 -16
  9. data/doc/allison/allison.css +6 -7
  10. data/doc/allison/allison.gif +0 -0
  11. data/doc/allison/cache/STYLE +1 -2
  12. data/doc/changes.txt +3375 -0
  13. data/doc/changes.xml +3378 -0
  14. data/doc/meta/announcement.txt +47 -0
  15. data/doc/meta/configuration.txt +179 -0
  16. data/doc/meta/internals.txt +111 -0
  17. data/doc/readme_chunks/features.txt +8 -16
  18. data/doc/readme_chunks/installing.txt +7 -1
  19. data/doc/tutorial/todolist.txt +2 -3
  20. data/examples/blog/main.rb +9 -8
  21. data/examples/blog/public/styles/blog.css +132 -0
  22. data/examples/blog/src/controller.rb +14 -41
  23. data/examples/blog/src/model.rb +12 -13
  24. data/examples/blog/src/view.rb +16 -0
  25. data/examples/blog/template/edit.xhtml +19 -8
  26. data/examples/blog/template/index.xhtml +14 -22
  27. data/examples/blog/template/new.xhtml +18 -5
  28. data/examples/caching.rb +5 -8
  29. data/examples/element.rb +3 -3
  30. data/examples/hello.rb +3 -5
  31. data/examples/simple.rb +4 -7
  32. data/examples/templates/template/external.haml +8 -7
  33. data/examples/templates/template/external.mab +11 -8
  34. data/examples/templates/template_amrita2.rb +4 -4
  35. data/examples/templates/template_erubis.rb +3 -3
  36. data/examples/templates/template_ezamar.rb +1 -2
  37. data/examples/templates/template_haml.rb +24 -23
  38. data/examples/templates/template_liquid.rb +3 -1
  39. data/examples/templates/template_markaby.rb +15 -9
  40. data/examples/todolist/src/element/page.rb +1 -1
  41. data/lib/proto/conf/benchmark.yaml +6 -20
  42. data/lib/proto/conf/debug.yaml +6 -19
  43. data/lib/proto/conf/live.yaml +7 -19
  44. data/lib/proto/conf/silent.yaml +6 -16
  45. data/lib/proto/conf/stage.yaml +6 -18
  46. data/lib/proto/public/error.zmr +2 -2
  47. data/lib/ramaze.rb +34 -72
  48. data/lib/ramaze/adapter.rb +21 -18
  49. data/lib/ramaze/adapter/mongrel.rb +0 -3
  50. data/lib/ramaze/adapter/webrick.rb +6 -6
  51. data/lib/ramaze/cache/memcached.rb +3 -0
  52. data/lib/ramaze/controller.rb +227 -183
  53. data/lib/ramaze/dispatcher.rb +34 -129
  54. data/lib/ramaze/dispatcher/action.rb +28 -0
  55. data/lib/ramaze/dispatcher/error.rb +43 -0
  56. data/lib/ramaze/dispatcher/file.rb +34 -0
  57. data/lib/ramaze/global.rb +89 -48
  58. data/lib/ramaze/helper/aspect.rb +8 -6
  59. data/lib/ramaze/helper/auth.rb +3 -3
  60. data/lib/ramaze/helper/cache.rb +2 -2
  61. data/lib/ramaze/helper/file.rb +14 -0
  62. data/lib/ramaze/helper/inform.rb +36 -0
  63. data/lib/ramaze/helper/link.rb +7 -3
  64. data/lib/ramaze/helper/markaby.rb +30 -0
  65. data/lib/ramaze/helper/redirect.rb +2 -0
  66. data/lib/ramaze/inform.rb +8 -182
  67. data/lib/ramaze/inform/analogger.rb +19 -0
  68. data/lib/ramaze/inform/growl.rb +28 -0
  69. data/lib/ramaze/inform/hub.rb +26 -0
  70. data/lib/ramaze/inform/informer.rb +92 -0
  71. data/lib/ramaze/inform/informing.rb +44 -0
  72. data/lib/ramaze/inform/syslog.rb +27 -0
  73. data/lib/ramaze/inform/xosd.rb +42 -0
  74. data/lib/ramaze/snippets.rb +6 -2
  75. data/lib/ramaze/snippets/object/traits.rb +13 -1
  76. data/lib/ramaze/snippets/ramaze/autoreload.rb +58 -2
  77. data/lib/ramaze/snippets/string/color.rb +27 -0
  78. data/lib/ramaze/snippets/string/each.rb +6 -0
  79. data/lib/ramaze/snippets/struct/fill.rb +15 -0
  80. data/lib/ramaze/template/ezamar.rb +13 -22
  81. data/lib/ramaze/template/ezamar/element.rb +12 -12
  82. data/lib/ramaze/template/liquid.rb +19 -18
  83. data/lib/ramaze/template/markaby.rb +37 -58
  84. data/lib/ramaze/tool/localize.rb +128 -0
  85. data/lib/ramaze/tool/tidy.rb +51 -21
  86. data/lib/ramaze/trinity.rb +3 -3
  87. data/lib/ramaze/trinity/request.rb +41 -23
  88. data/lib/ramaze/trinity/response.rb +10 -5
  89. data/lib/ramaze/trinity/session.rb +17 -3
  90. data/lib/ramaze/version.rb +2 -2
  91. data/rake_tasks/conf.rake +56 -0
  92. data/rake_tasks/gem.rake +44 -0
  93. data/rake_tasks/maintaince.rake +187 -0
  94. data/spec/all.rb +32 -0
  95. data/spec/examples/caching.rb +19 -0
  96. data/spec/examples/element.rb +15 -0
  97. data/spec/examples/hello.rb +11 -0
  98. data/spec/examples/simple.rb +51 -0
  99. data/spec/examples/templates/template_amrita2.rb +14 -0
  100. data/spec/examples/templates/template_erubis.rb +21 -0
  101. data/spec/examples/templates/template_ezamar.rb +22 -0
  102. data/spec/examples/templates/template_haml.rb +23 -0
  103. data/spec/examples/templates/template_liquid.rb +24 -0
  104. data/spec/examples/templates/template_markaby.rb +21 -0
  105. data/spec/helper.rb +81 -0
  106. data/spec/{spec_helper_context.rb → helper/context.rb} +1 -1
  107. data/spec/helper/layout.rb +55 -0
  108. data/spec/helper/mock_http.rb +66 -0
  109. data/spec/{spec_helper_requester.rb → helper/requester.rb} +0 -6
  110. data/spec/{spec_helper_simple_http.rb → helper/simple_http.rb} +57 -57
  111. data/spec/helper/wrap.rb +193 -0
  112. data/spec/{adapter_spec.rb → ramaze/adapter.rb} +7 -5
  113. data/spec/{tc_adapter_mongrel.rb → ramaze/adapter/mongrel.rb} +2 -2
  114. data/spec/{tc_adapter_webrick.rb → ramaze/adapter/webrick.rb} +2 -2
  115. data/spec/{tc_cache.rb → ramaze/cache.rb} +16 -16
  116. data/spec/ramaze/conf/locale_de.yaml +6 -0
  117. data/spec/ramaze/conf/locale_en.yaml +6 -0
  118. data/spec/ramaze/controller.rb +184 -0
  119. data/spec/ramaze/controller/template/greet.xhtml +1 -0
  120. data/spec/ramaze/controller/template_resolving.rb +54 -0
  121. data/spec/ramaze/dependencies.rb +16 -0
  122. data/spec/{tc_element.rb → ramaze/element.rb} +21 -19
  123. data/spec/ramaze/error.rb +64 -0
  124. data/spec/{tc_gestalt.rb → ramaze/gestalt.rb} +10 -10
  125. data/spec/{tc_global.rb → ramaze/global.rb} +7 -7
  126. data/spec/{tc_helper_aspect.rb → ramaze/helper/aspect.rb} +22 -14
  127. data/spec/{tc_helper_auth.rb → ramaze/helper/auth.rb} +9 -7
  128. data/spec/{tc_helper_cache.rb → ramaze/helper/cache.rb} +14 -24
  129. data/spec/{tc_helper_feed.rb → ramaze/helper/feed.rb} +12 -12
  130. data/spec/ramaze/helper/file.rb +17 -0
  131. data/spec/{tc_helper_flash.rb → ramaze/helper/flash.rb} +16 -17
  132. data/spec/{tc_helper_form.rb → ramaze/helper/form.rb} +25 -26
  133. data/spec/{tc_helper_link.rb → ramaze/helper/link.rb} +9 -9
  134. data/spec/{tc_helper_redirect.rb → ramaze/helper/redirect.rb} +11 -10
  135. data/spec/{tc_helper_stack.rb → ramaze/helper/stack.rb} +10 -11
  136. data/spec/ramaze/inform/informer.rb +40 -0
  137. data/spec/ramaze/inform/syslog.rb +10 -0
  138. data/spec/ramaze/localize.rb +40 -0
  139. data/spec/ramaze/morpher.rb +82 -0
  140. data/spec/ramaze/params.rb +124 -0
  141. data/spec/{public → ramaze/public}/error404.xhtml +0 -0
  142. data/spec/{public → ramaze/public}/favicon.ico +0 -0
  143. data/spec/{public → ramaze/public}/ramaze.png +0 -0
  144. data/spec/{public → ramaze/public}/test_download.css +0 -0
  145. data/spec/ramaze/request.rb +129 -0
  146. data/spec/{tc_request_mongrel.rb → ramaze/request/mongrel.rb} +2 -2
  147. data/spec/{tc_request_webrick.rb → ramaze/request/webrick.rb} +1 -1
  148. data/spec/{tc_session.rb → ramaze/session.rb} +18 -18
  149. data/spec/{tc_store.rb → ramaze/store/default.rb} +10 -10
  150. data/spec/{tc_store_yaml.rb → ramaze/store/yaml.rb} +9 -9
  151. data/spec/ramaze/template.rb +86 -0
  152. data/spec/{tc_template_amrita2.rb → ramaze/template/amrita2.rb} +5 -5
  153. data/spec/{template → ramaze/template}/amrita2/data.amrita +0 -0
  154. data/spec/{template → ramaze/template}/amrita2/index.amrita +0 -0
  155. data/spec/{template → ramaze/template}/amrita2/sum.amrita +0 -0
  156. data/spec/{tc_template_erubis.rb → ramaze/template/erubis.rb} +9 -9
  157. data/spec/{template → ramaze/template}/erubis/sum.rhtml +0 -0
  158. data/spec/ramaze/template/ezamar.rb +62 -0
  159. data/spec/{template → ramaze/template}/ezamar/another/long/action.zmr +0 -0
  160. data/spec/{template → ramaze/template}/ezamar/combined.zmr +0 -0
  161. data/spec/{template → ramaze/template}/ezamar/file_only.zmr +0 -0
  162. data/spec/{template → ramaze/template}/ezamar/index.zmr +0 -0
  163. data/spec/ramaze/template/ezamar/nested.zmr +1 -0
  164. data/spec/{template → ramaze/template}/ezamar/some__long__action.zmr +0 -0
  165. data/spec/{template → ramaze/template}/ezamar/sum.zmr +0 -0
  166. data/spec/{tc_template_haml.rb → ramaze/template/haml.rb} +7 -7
  167. data/spec/{template → ramaze/template}/haml/index.haml +0 -0
  168. data/spec/{template → ramaze/template}/haml/with_vars.haml +0 -0
  169. data/spec/{tc_template_liquid.rb → ramaze/template/liquid.rb} +7 -7
  170. data/spec/{template → ramaze/template}/liquid/index.liquid +0 -0
  171. data/spec/{template → ramaze/template}/liquid/products.liquid +0 -0
  172. data/spec/ramaze/template/markaby.rb +59 -0
  173. data/spec/{template → ramaze/template}/markaby/external.mab +0 -0
  174. data/spec/{template → ramaze/template}/markaby/sum.mab +0 -0
  175. data/spec/ramaze/template/ramaze/external.test +1 -0
  176. data/spec/{tc_tidy.rb → ramaze/tidy.rb} +3 -3
  177. metadata +145 -81
  178. data/examples/blog/public/screen.css +0 -106
  179. data/examples/blog/src/element.rb +0 -58
  180. data/examples/blog/template/view.xhtml +0 -15
  181. data/examples/blog/test/tc_entry.rb +0 -18
  182. data/lib/proto/public/404.jpg +0 -0
  183. data/spec/request_tc_helper.rb +0 -135
  184. data/spec/spec_all.rb +0 -118
  185. data/spec/spec_helper.rb +0 -66
  186. data/spec/tc_controller.rb +0 -49
  187. data/spec/tc_dependencies.rb +0 -13
  188. data/spec/tc_error.rb +0 -43
  189. data/spec/tc_morpher.rb +0 -88
  190. data/spec/tc_params.rb +0 -125
  191. data/spec/tc_template_ezamar.rb +0 -64
  192. data/spec/tc_template_markaby.rb +0 -72
  193. data/spec/template/ezamar/nested.zmr +0 -1
@@ -1,106 +0,0 @@
1
- body {
2
- background: #111;
3
- margin: auto;
4
- padding: 1em;
5
- color: #fff;
6
- }
7
-
8
- span#title {
9
- font-size: 1.5em;
10
- text-align: right;
11
- }
12
-
13
- span#login {
14
- font-size: 0.5em;
15
- float: right;
16
- margin-top: -2em;
17
- }
18
-
19
- a {
20
- text-decoration: none;
21
- color: #afa;
22
- }
23
-
24
- div#menu {
25
- text-align: center;
26
- padding: 0.2em;
27
- margin-top: -0.5em;
28
- margin-right: -0.5em;
29
- margin-left: -0.5em;
30
- margin-bottom: 0.5em;
31
- background: #222;
32
- font-size: 2em;
33
- }
34
-
35
- div#sidebar {
36
- width: 12%;
37
- height: 50%;
38
- float: right;
39
- margin-right: -0.3em;
40
- background: #222;
41
- padding: 0.5em;
42
- border: #333 1px solid;
43
- text-align: center;
44
- }
45
-
46
- div#sidebar h1 {
47
- font-size: 1.1em;
48
- color: #0da;
49
- background: #011;
50
- margin: -0.4em;
51
- margin-bottom: 0.4em;
52
- text-align: center;
53
- }
54
-
55
- div.blog_entry {
56
- background: #222;
57
- width: 80%;
58
- padding: 0.4em;
59
- margin-bottom: 1em;
60
- margin-left: 5%;
61
- margin-right: 15%;
62
- border: #333 1px solid;
63
- }
64
-
65
- div.blog_entry div.title {
66
- background: #111;
67
- text-align: center;
68
- }
69
-
70
- div.blog_entry div.title div.date {
71
- color: #aaa;
72
- text-align: right;
73
- font-size: 0.8em;
74
- }
75
-
76
- div.blog_entry div.title div.title {
77
- font-size: 1.5em;
78
- }
79
-
80
- div.blog_entry div.text {
81
- background: #111;
82
- margin: 0.4em;
83
- padding: 0.4em;
84
- padding-top: 2em;
85
- padding-bottom: 1.5em;
86
- }
87
-
88
- div.blog_entry div.menu {
89
- background: #111;
90
- text-align: center;
91
- margin: 0.4em;
92
- }
93
-
94
- form {
95
- margin: auto;
96
- width: 70%;
97
- }
98
-
99
- form input {
100
- width: 100%;
101
- }
102
-
103
- form textarea {
104
- width: 100%;
105
- height: 70%;
106
- }
@@ -1,58 +0,0 @@
1
- class Page < Controller
2
- attr_accessor :content
3
- helper :auth
4
-
5
- def initialize content
6
- @content = content
7
- end
8
-
9
- def render
10
- p :render => content
11
- %{
12
- <html>
13
- <head>
14
- <title>#{@title}</title>
15
- <link href="/screen.css" type="text/css" rel="stylesheet">
16
- </head>
17
- <body>
18
- #{menu}
19
- #{sidebar}
20
- #{content}
21
- </body>
22
- </html>
23
- }
24
- end
25
-
26
- def menu
27
- %{
28
- <div id="menu">
29
- <span id="title">
30
- <a href="#{R :/}">#{@title || 'Blogging Ramaze'}</a>
31
- </span>
32
- <?r if logged_in? ?>
33
- <span id="login"> #{link R(:logout), :title => 'logout'} </span>
34
- <?r else ?>
35
- <span id="login"> #{link R(:login), :title => 'login'} </span>
36
- <?r end ?>
37
- </div>
38
- }
39
- end
40
-
41
- def sidebar
42
- entries =
43
- Entry.all.map do |eid, e|
44
- %{
45
- <div>
46
- #{link R(:/, :view, eid), :title => e.title}
47
- </div>
48
- }
49
- end
50
-
51
- %{
52
- <div id="sidebar">
53
- <h1>Recent Entries</h1>
54
- #{entries}
55
- </div>
56
- }
57
- end
58
- end
@@ -1,15 +0,0 @@
1
- <Page>
2
- <div class="blog_entry">
3
- <div class="title">
4
- <div class="title">#{link self, :view, @entry.oid, :title => @entry.title}</div>
5
- <div class="date">#{@entry.time}</div>
6
- </div>
7
- <div class="text">
8
- #{@entry.text}
9
- </div>
10
- <div class="menu">
11
- #{link self, :delete, @entry.oid, :title => 'Delete'}
12
- #{link self, :edit, @entry.oid, :title => 'Edit'}<br />
13
- </div>
14
- </div>
15
- </Page>
@@ -1,18 +0,0 @@
1
- require 'ramaze'
2
- require 'ramaze/../test/test_helper'
3
-
4
- require 'main'
5
-
6
- ramaze do
7
- context "Entry" do
8
- specify "list" do
9
- get('/entry').should =~ %r(<h1>Entry list</h1>)
10
- end
11
-
12
- specify "add" do
13
- new = get('/entry/new')
14
- new.should =~ %r(<input type="text")
15
- new.should =~ %r(<textarea name="text")
16
- end
17
- end
18
- end
Binary file
@@ -1,135 +0,0 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
3
-
4
- require 'spec/spec_helper'
5
-
6
- class TCRequestController < Ramaze::Controller
7
- trait :public => 'spec/public'
8
-
9
- def is_post() request.post?.to_s end
10
- def is_get() request.get?.to_s end
11
- def is_put() request.put?.to_s end
12
- def is_delete() request.delete?.to_s end
13
-
14
- def request_inspect
15
- request.params.inspect
16
- end
17
-
18
- def post_inspect
19
- request.params.inspect
20
- end
21
-
22
- def put_inspect(file)
23
- request.body.read.inspect
24
- end
25
-
26
- def get_inspect
27
- request.params.inspect
28
- end
29
-
30
- def test_get
31
- request['foo']
32
- end
33
-
34
- def test_headers
35
- end
36
-
37
- def my_ip
38
- request.remote_addr
39
- end
40
- end
41
-
42
- context "Request" do
43
- options = ramaze_options rescue {:adapter => :webrick}
44
- ramaze options.merge( :mapping => {'/' => TCRequestController})
45
-
46
- context "POST" do
47
- specify "give me the result of request.post?" do
48
- post("is_post").should == 'true'
49
- end
50
-
51
- specify "give me the result of request.get?" do
52
- post("is_get").should == 'false'
53
- end
54
-
55
- # this here has shown some odd errors... keep an eye on it.
56
- specify "give me back what i gave" do
57
- post("post_inspect", 'this' => 'post').should == {"this" => "post"}.inspect
58
- end
59
- end
60
-
61
- context "PUT" do
62
- specify "put a ressource" do
63
- image = 'favicon.ico'
64
- image_path = File.join('spec', 'public', image)
65
- address = "http://localhost:7007/put_inspect/#{image}"
66
- response = `curl -S -s -T #{image_path} #{address}`
67
- file = File.read(image_path)
68
-
69
- response[1..-2].should == file
70
- end
71
- end
72
-
73
- context "DELETE" do
74
- specify "delete a ressource" do
75
- # find a way to test this one, even curl doesn't support it
76
- end
77
- end
78
-
79
- context "GET" do
80
- specify "give me the result of request.post?" do
81
- get("/is_post").should == 'false'
82
- end
83
-
84
- specify "give me the result of request.get?" do
85
- get("/is_get").should == 'true'
86
- end
87
-
88
- specify "give me back what i gave" do
89
- params = {'one' => 'two', 'three' => 'four'}
90
- get("/get_inspect", params).should == params.inspect
91
- end
92
-
93
- specify "my ip" do
94
- get("/my_ip").should == '127.0.0.1'
95
- end
96
-
97
- specify "request[key]" do
98
- get('/test_get', 'foo' => 'bar').should == 'bar'
99
- end
100
- end
101
-
102
- context "send files" do
103
- specify "threaded concurrently" do
104
- css_path = 'test_download.css'
105
- image_path = 'favicon.ico'
106
- static_css = File.read("spec/public/#{css_path}").strip
107
- static_image = File.read("spec/public/#{image_path}").strip
108
-
109
- images = []
110
- csses = []
111
- threads = []
112
-
113
- times = 100
114
-
115
- times.times do
116
- threads << Thread.new do
117
- csses << get(css_path)
118
- images << get(image_path)
119
- end
120
- end
121
-
122
- threads.each do |t|
123
- t.join
124
- end
125
-
126
- images.each do |image|
127
- image.should == static_image
128
- end
129
-
130
- csses.each do |css|
131
- css.should == static_css
132
- end
133
- end
134
- end
135
- end
@@ -1,118 +0,0 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
3
-
4
- require 'pp'
5
-
6
- begin
7
- require 'rubygems'
8
- rescue LoadError
9
- end
10
-
11
- begin
12
- require 'systemu'
13
- rescue LoadError
14
- puts "Please install systemu for better-looking results"
15
-
16
- # small drop-in replacement for systemu... far from perfect though, so please
17
- # install the library
18
-
19
- def systemu command
20
- stdout = `#{command} 2>&1`
21
- status, stdout, stderr = $?, stdout, ''
22
- end
23
- end
24
-
25
- class String
26
-
27
- {
28
- :red => 31,
29
- :green => 32,
30
- :yellow => 33,
31
- }.each do |key, value|
32
- define_method key do
33
- "\e[#{value}m" + self + "\e[0m"
34
- end
35
- end
36
- end
37
-
38
- $stdout.sync = true
39
-
40
- total_specs = 0
41
- total_fails = 0
42
- failed = {}
43
- specs = Dir[File.join('spec', 'tc_*.rb')].sort
44
- width = specs.sort_by{|s| s.size }.last.size
45
-
46
- result_format = lambda do |str|
47
- str = " #{ str } ".center(22, '=')
48
- "[ #{str} ]"
49
- end
50
-
51
- specs.each do |spec|
52
- print "Running #{spec}... ".ljust(width + 20)
53
- status, stdout, stderr = systemu("ruby #{spec}")
54
- hash = {:status => status, :stdout => stdout, :stderr => stderr}
55
-
56
- if stdout =~ /Usually you should not worry about this failure, just install the/
57
-
58
- lib = stdout.scan(/^no such file to load -- (.*?)$/).flatten.first
59
- print result_format["needs #{lib}"].red
60
-
61
- elsif status.exitstatus.nonzero? or stdout.empty? or not stderr.empty?
62
-
63
- failed[spec] = hash
64
- print result_format['failed'].red
65
-
66
- else
67
- found = false
68
- stdout.each do |line|
69
- if line =~ /(\d+) specifications?, (\d+) failures?/
70
- found = true
71
- s, f = $1.to_i, $2.to_i
72
- ss, sf = s.to_s.rjust(3), f.to_s.rjust(3)
73
-
74
- total_specs += s
75
- total_fails += f
76
-
77
- message = "[ #{ss} specs - "
78
-
79
- if f.nonzero?
80
- failed[spec] = hash
81
- print((message << "#{sf} failed ]").red)
82
- else
83
- print((message << "all passed ]").green)
84
- end
85
- end
86
- end
87
-
88
- unless found
89
- print("[ please test standalone ]".red)
90
- end
91
- end
92
- puts
93
- end
94
-
95
- failed.each do |name, hash|
96
- status, stdout, stderr = hash.values_at(:status, :stdout, :stderr)
97
-
98
- puts "[ #{name} ]".center(80, '-')
99
- puts "ExitStatus:".yellow
100
- pp status
101
- puts
102
- puts "StdOut:".yellow
103
- puts stdout
104
- puts
105
- puts "StdErr:".yellow
106
- puts stderr
107
- end
108
-
109
- puts
110
- puts "#{total_specs} specifications, #{total_fails} failures"
111
- puts
112
-
113
- if failed.empty?
114
- puts "No failing specifications, let's add some tests!"
115
- puts
116
- else
117
- puts "These failed: #{failed.keys.join(', ')}"
118
- end