cuba 2.0.0.rc2 → 2.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Michel Martens, Damian Janowski and Cyril David
1
+ Copyright (c) 2010, 2011 Michel Martens, Damian Janowski and Cyril David
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -1,12 +1,12 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cuba"
3
- s.version = "2.0.0.rc2"
3
+ s.version = "2.0.0.rc3"
4
4
  s.summary = "Rum based microframework for web applications."
5
5
  s.description = "Cuba is a light wrapper for Rum, a microframework for Rack applications."
6
6
  s.authors = ["Michel Martens"]
7
7
  s.email = ["michel@soveran.com"]
8
8
  s.homepage = "http://github.com/soveran/cuba"
9
- s.files = ["LICENSE", "README.markdown", "Rakefile", "lib/cuba/ron.rb", "lib/cuba/test.rb", "lib/cuba/version.rb", "lib/cuba.rb", "cuba.gemspec", "test/accept.rb", "test/captures.rb", "test/extension.rb", "test/helper.rb", "test/host.rb", "test/integration.rb", "test/match.rb", "test/number.rb", "test/on.rb", "test/path.rb", "test/run.rb", "test/segment.rb"]
9
+ s.files = ["LICENSE", "README.markdown", "Rakefile", "lib/cuba/ron.rb", "lib/cuba/test.rb", "lib/cuba/version.rb", "lib/cuba.rb", "cuba.gemspec", "test/accept.rb", "test/captures.rb", "test/composition.rb", "test/extension.rb", "test/helper.rb", "test/host.rb", "test/integration.rb", "test/match.rb", "test/number.rb", "test/on.rb", "test/path.rb", "test/run.rb", "test/segment.rb"]
10
10
  s.add_dependency "rack", "~> 1.2"
11
11
  s.add_dependency "tilt", "~> 1.2"
12
12
  s.add_development_dependency "cutest", "~> 1.0"
@@ -69,11 +69,6 @@ module Cuba
69
69
  }.render(self, locals)
70
70
  end
71
71
 
72
- # Basic wrapper for using Rack session.
73
- def session
74
- @session ||= env['rack.session']
75
- end
76
-
77
72
  # The heart of the path / verb / any condition matching.
78
73
  #
79
74
  # @example
@@ -115,14 +110,20 @@ module Cuba
115
110
  # on true, "signup"
116
111
  return unless args.all? { |arg| match(arg) }
117
112
 
118
- # The captures we yield here were generated and assembled
119
- # by evaluating each of the `arg`s above. Most of these
120
- # are carried out by #consume.
121
- yield *captures
113
+ begin
114
+ # The captures we yield here were generated and assembled
115
+ # by evaluating each of the `arg`s above. Most of these
116
+ # are carried out by #consume.
117
+ yield *captures
118
+
119
+ ensure
120
+ # Regardless of what happens in the `yield`, we should ensure that
121
+ # we successfully set `@matched` to true.
122
122
 
123
- # At this point, we've successfully matched with some corresponding
124
- # matcher, so we can skip all other matchers defined.
125
- @matched = true
123
+ # At this point, we've successfully matched with some corresponding
124
+ # matcher, so we can skip all other matchers defined.
125
+ @matched = true
126
+ end
126
127
  end
127
128
  end
128
129
 
@@ -134,7 +135,7 @@ module Cuba
134
135
  yield
135
136
 
136
137
  ensure
137
- env["SCRIPT_NAME"], env["PATH_INFO"] = script, path
138
+ env["SCRIPT_NAME"], env["PATH_INFO"] = script, path unless @matched
138
139
  end
139
140
  private :try
140
141
 
@@ -1,3 +1,3 @@
1
1
  module Cuba
2
- VERSION = "2.0.0.rc2"
3
- end
2
+ VERSION = "2.0.0.rc3"
3
+ end
@@ -0,0 +1,21 @@
1
+ require File.expand_path("helper", File.dirname(__FILE__))
2
+
3
+ test "composing on top of a PATH" do
4
+ Services = Cuba::Ron.new {
5
+ on "services/:id" do |id|
6
+ res.write "View #{id}"
7
+ end
8
+ }
9
+
10
+ Cuba.define do
11
+ on "provider" do
12
+ run Services
13
+ end
14
+ end
15
+
16
+ env = { "SCRIPT_NAME" => "/", "PATH_INFO" => "/provider/services/101" }
17
+
18
+ _, _, resp = Cuba.call(env)
19
+
20
+ assert_equal ["View 101"], resp.body
21
+ end
data/test/on.rb CHANGED
@@ -24,27 +24,6 @@ test "executes on non-false" do
24
24
  assert_equal ["+1"], resp.body
25
25
  end
26
26
 
27
- test "restores SCRIPT_NAME and PATH_INFO" do
28
- Cuba.define do
29
- on true do
30
- env["SCRIPT_NAME"] = "foo"
31
- env["PATH_INFO"] = "/hello"
32
-
33
- raise "Something went wrong"
34
- end
35
- end
36
-
37
- env = { "SCRIPT_NAME" => "/", "PATH_INFO" => "/hello" }
38
-
39
- begin
40
- _, _, resp = Cuba.call(env)
41
- rescue
42
- end
43
-
44
- assert_equal "/", env["SCRIPT_NAME"]
45
- assert_equal "/hello", env["PATH_INFO"]
46
- end
47
-
48
27
  test "ensures SCRIPT_NAME and PATH_INFO are reverted" do
49
28
  Cuba.define do
50
29
  on lambda { env["SCRIPT_NAME"] = "/hello"; false } do
@@ -100,4 +79,19 @@ test "finds first match available" do
100
79
  _, _, resp = Cuba.call({})
101
80
 
102
81
  assert_equal ["bar"], resp.body
82
+ end
83
+
84
+ test "reverts a half-met matcher" do
85
+ Cuba.define do
86
+ on "post", false do
87
+ res.write "Should be unmet"
88
+ end
89
+ end
90
+
91
+ env = { "PATH_INFO" => "/post", "SCRIPT_NAME" => "/" }
92
+ _, _, resp = Cuba.call(env)
93
+
94
+ assert_equal [], resp.body
95
+ assert_equal "/post", env["PATH_INFO"]
96
+ assert_equal "/", env["SCRIPT_NAME"]
103
97
  end
@@ -14,7 +14,6 @@ test "one level path" do |env|
14
14
  _, _, resp = Cuba.call(env)
15
15
 
16
16
  assert_equal ["About"], resp.body
17
- assert_equal({ "SCRIPT_NAME" => "/", "PATH_INFO" => "/about" }, env)
18
17
  end
19
18
 
20
19
  test "two level nested paths" do |env|
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: cuba
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 6
5
- version: 2.0.0.rc2
5
+ version: 2.0.0.rc3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Michel Martens
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-25 00:00:00 -03:00
13
+ date: 2011-03-03 00:00:00 -03:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -77,6 +77,7 @@ files:
77
77
  - cuba.gemspec
78
78
  - test/accept.rb
79
79
  - test/captures.rb
80
+ - test/composition.rb
80
81
  - test/extension.rb
81
82
  - test/helper.rb
82
83
  - test/host.rb
@@ -111,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
112
  requirements: []
112
113
 
113
114
  rubyforge_project:
114
- rubygems_version: 1.5.2
115
+ rubygems_version: 1.6.0
115
116
  signing_key:
116
117
  specification_version: 3
117
118
  summary: Rum based microframework for web applications.