Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
988513ac
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
988513ac
编写于
4月 30, 2009
作者:
J
Joshua Peek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Framework backtrace cleaning is handled by ActiveSupport now
上级
79420e71
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
85 addition
and
140 deletion
+85
-140
actionpack/lib/action_controller/testing/assertions/dom.rb
actionpack/lib/action_controller/testing/assertions/dom.rb
+8
-12
actionpack/lib/action_controller/testing/assertions/model.rb
actionpack/lib/action_controller/testing/assertions/model.rb
+1
-3
actionpack/lib/action_controller/testing/assertions/response.rb
...pack/lib/action_controller/testing/assertions/response.rb
+51
-57
actionpack/lib/action_controller/testing/assertions/routing.rb
...npack/lib/action_controller/testing/assertions/routing.rb
+19
-23
actionpack/lib/action_controller/testing/assertions/tag.rb
actionpack/lib/action_controller/testing/assertions/tag.rb
+6
-10
actionpack/lib/action_controller/testing/test_case.rb
actionpack/lib/action_controller/testing/test_case.rb
+0
-8
actionpack/test/controller/test_test.rb
actionpack/test/controller/test_test.rb
+0
-27
未找到文件。
actionpack/lib/action_controller/testing/assertions/dom.rb
浏览文件 @
988513ac
...
...
@@ -9,13 +9,11 @@ module DomAssertions
# assert_dom_equal '<a href="http://www.example.com">Apples</a>', link_to("Apples", "http://www.example.com")
#
def
assert_dom_equal
(
expected
,
actual
,
message
=
""
)
clean_backtrace
do
expected_dom
=
HTML
::
Document
.
new
(
expected
).
root
actual_dom
=
HTML
::
Document
.
new
(
actual
).
root
full_message
=
build_message
(
message
,
"<?> expected to be == to
\n
<?>."
,
expected_dom
.
to_s
,
actual_dom
.
to_s
)
expected_dom
=
HTML
::
Document
.
new
(
expected
).
root
actual_dom
=
HTML
::
Document
.
new
(
actual
).
root
full_message
=
build_message
(
message
,
"<?> expected to be == to
\n
<?>."
,
expected_dom
.
to_s
,
actual_dom
.
to_s
)
assert_block
(
full_message
)
{
expected_dom
==
actual_dom
}
end
assert_block
(
full_message
)
{
expected_dom
==
actual_dom
}
end
# The negated form of +assert_dom_equivalent+.
...
...
@@ -26,13 +24,11 @@ def assert_dom_equal(expected, actual, message = "")
# assert_dom_not_equal '<a href="http://www.example.com">Apples</a>', link_to("Oranges", "http://www.example.com")
#
def
assert_dom_not_equal
(
expected
,
actual
,
message
=
""
)
clean_backtrace
do
expected_dom
=
HTML
::
Document
.
new
(
expected
).
root
actual_dom
=
HTML
::
Document
.
new
(
actual
).
root
full_message
=
build_message
(
message
,
"<?> expected to be != to
\n
<?>."
,
expected_dom
.
to_s
,
actual_dom
.
to_s
)
expected_dom
=
HTML
::
Document
.
new
(
expected
).
root
actual_dom
=
HTML
::
Document
.
new
(
actual
).
root
full_message
=
build_message
(
message
,
"<?> expected to be != to
\n
<?>."
,
expected_dom
.
to_s
,
actual_dom
.
to_s
)
assert_block
(
full_message
)
{
expected_dom
!=
actual_dom
}
end
assert_block
(
full_message
)
{
expected_dom
!=
actual_dom
}
end
end
end
...
...
actionpack/lib/action_controller/testing/assertions/model.rb
浏览文件 @
988513ac
...
...
@@ -12,9 +12,7 @@ module ModelAssertions
#
def
assert_valid
(
record
)
::
ActiveSupport
::
Deprecation
.
warn
(
"assert_valid is deprecated. Use assert record.valid? instead"
,
caller
)
clean_backtrace
do
assert
record
.
valid?
,
record
.
errors
.
full_messages
.
join
(
"
\n
"
)
end
assert
record
.
valid?
,
record
.
errors
.
full_messages
.
join
(
"
\n
"
)
end
end
end
...
...
actionpack/lib/action_controller/testing/assertions/response.rb
浏览文件 @
988513ac
...
...
@@ -24,21 +24,19 @@ module ResponseAssertions
def
assert_response
(
type
,
message
=
nil
)
validate_request!
clean_backtrace
do
if
[
:success
,
:missing
,
:redirect
,
:error
].
include?
(
type
)
&&
@response
.
send
(
"
#{
type
}
?"
)
assert_block
(
""
)
{
true
}
# to count the assertion
elsif
type
.
is_a?
(
Fixnum
)
&&
@response
.
response_code
==
type
assert_block
(
""
)
{
true
}
# to count the assertion
elsif
type
.
is_a?
(
Symbol
)
&&
@response
.
response_code
==
ActionDispatch
::
StatusCodes
::
SYMBOL_TO_STATUS_CODE
[
type
]
assert_block
(
""
)
{
true
}
# to count the assertion
if
[
:success
,
:missing
,
:redirect
,
:error
].
include?
(
type
)
&&
@response
.
send
(
"
#{
type
}
?"
)
assert_block
(
""
)
{
true
}
# to count the assertion
elsif
type
.
is_a?
(
Fixnum
)
&&
@response
.
response_code
==
type
assert_block
(
""
)
{
true
}
# to count the assertion
elsif
type
.
is_a?
(
Symbol
)
&&
@response
.
response_code
==
ActionDispatch
::
StatusCodes
::
SYMBOL_TO_STATUS_CODE
[
type
]
assert_block
(
""
)
{
true
}
# to count the assertion
else
if
@controller
&&
@response
.
error?
exception
=
@controller
.
template
.
instance_variable_get
(
:@exception
)
exception_message
=
exception
&&
exception
.
message
assert_block
(
build_message
(
message
,
"Expected response to be a <?>, but was <?>
\n
<?>"
,
type
,
@response
.
response_code
,
exception_message
.
to_s
))
{
false
}
else
if
@controller
&&
@response
.
error?
exception
=
@controller
.
template
.
instance_variable_get
(
:@exception
)
exception_message
=
exception
&&
exception
.
message
assert_block
(
build_message
(
message
,
"Expected response to be a <?>, but was <?>
\n
<?>"
,
type
,
@response
.
response_code
,
exception_message
.
to_s
))
{
false
}
else
assert_block
(
build_message
(
message
,
"Expected response to be a <?>, but was <?>"
,
type
,
@response
.
response_code
))
{
false
}
end
assert_block
(
build_message
(
message
,
"Expected response to be a <?>, but was <?>"
,
type
,
@response
.
response_code
))
{
false
}
end
end
end
...
...
@@ -61,21 +59,19 @@ def assert_response(type, message = nil)
def
assert_redirected_to
(
options
=
{},
message
=
nil
)
validate_request!
clean_backtrace
do
assert_response
(
:redirect
,
message
)
return
true
if
options
==
@response
.
redirected_to
assert_response
(
:redirect
,
message
)
return
true
if
options
==
@response
.
redirected_to
# Support partial arguments for hash redirections
if
options
.
is_a?
(
Hash
)
&&
@response
.
redirected_to
.
is_a?
(
Hash
)
return
true
if
options
.
all?
{
|
(
key
,
value
)
|
@response
.
redirected_to
[
key
]
==
value
}
end
# Support partial arguments for hash redirections
if
options
.
is_a?
(
Hash
)
&&
@response
.
redirected_to
.
is_a?
(
Hash
)
return
true
if
options
.
all?
{
|
(
key
,
value
)
|
@response
.
redirected_to
[
key
]
==
value
}
end
redirected_to_after_normalisation
=
normalize_argument_to_redirection
(
@response
.
redirected_to
)
options_after_normalisation
=
normalize_argument_to_redirection
(
options
)
redirected_to_after_normalisation
=
normalize_argument_to_redirection
(
@response
.
redirected_to
)
options_after_normalisation
=
normalize_argument_to_redirection
(
options
)
if
redirected_to_after_normalisation
!=
options_after_normalisation
flunk
"Expected response to be a redirect to <
#{
options_after_normalisation
}
> but was a redirect to <
#{
redirected_to_after_normalisation
}
>"
end
if
redirected_to_after_normalisation
!=
options_after_normalisation
flunk
"Expected response to be a redirect to <
#{
options_after_normalisation
}
> but was a redirect to <
#{
redirected_to_after_normalisation
}
>"
end
end
...
...
@@ -95,40 +91,38 @@ def assert_redirected_to(options = {}, message=nil)
def
assert_template
(
options
=
{},
message
=
nil
)
validate_request!
clean_backtrace
do
case
options
when
NilClass
,
String
rendered
=
(
@controller
.
template
.
rendered
[
:template
]
||
[]).
map
{
|
t
|
t
.
identifier
}
msg
=
build_message
(
message
,
"expecting <?> but rendering with <?>"
,
options
,
rendered
.
join
(
', '
))
assert_block
(
msg
)
do
if
options
.
nil?
@controller
.
template
.
rendered
[
:template
].
blank?
else
rendered
.
any?
{
|
t
|
t
.
match
(
options
)
}
end
case
options
when
NilClass
,
String
rendered
=
(
@controller
.
template
.
rendered
[
:template
]
||
[]).
map
{
|
t
|
t
.
identifier
}
msg
=
build_message
(
message
,
"expecting <?> but rendering with <?>"
,
options
,
rendered
.
join
(
', '
))
assert_block
(
msg
)
do
if
options
.
nil?
@controller
.
template
.
rendered
[
:template
].
blank?
else
rendered
.
any?
{
|
t
|
t
.
match
(
options
)
}
end
when
Hash
if
expected_partial
=
options
[
:partial
]
partials
=
@controller
.
template
.
rendered
[
:partials
]
if
expected_count
=
options
[
:count
]
found
=
partials
.
detect
{
|
p
,
_
|
p
.
identifier
.
match
(
expected_partial
)
}
actual_count
=
found
.
nil?
?
0
:
found
.
second
msg
=
build_message
(
message
,
"expecting ? to be rendered ? time(s) but rendered ? time(s)"
,
expected_partial
,
expected_count
,
actual_count
)
assert
(
actual_count
==
expected_count
.
to_i
,
msg
)
else
msg
=
build_message
(
message
,
"expecting partial <?> but action rendered <?>"
,
options
[
:partial
],
partials
.
keys
)
assert
(
partials
.
keys
.
any?
{
|
p
|
p
.
identifier
.
match
(
expected_partial
)
},
msg
)
end
end
when
Hash
if
expected_partial
=
options
[
:partial
]
partials
=
@controller
.
template
.
rendered
[
:partials
]
if
expected_count
=
options
[
:count
]
found
=
partials
.
detect
{
|
p
,
_
|
p
.
identifier
.
match
(
expected_partial
)
}
actual_count
=
found
.
nil?
?
0
:
found
.
second
msg
=
build_message
(
message
,
"expecting ? to be rendered ? time(s) but rendered ? time(s)"
,
expected_partial
,
expected_count
,
actual_count
)
assert
(
actual_count
==
expected_count
.
to_i
,
msg
)
else
assert
@controller
.
template
.
rendered
[
:partials
].
empty?
,
"Expected no partials to be rendered"
msg
=
build_message
(
message
,
"expecting partial <?> but action rendered <?>"
,
options
[
:partial
],
partials
.
keys
)
assert
(
partials
.
keys
.
any?
{
|
p
|
p
.
identifier
.
match
(
expected_partial
)
},
msg
)
end
else
assert
@controller
.
template
.
rendered
[
:partials
].
empty?
,
"Expected no partials to be rendered"
end
end
end
...
...
actionpack/lib/action_controller/testing/assertions/routing.rb
浏览文件 @
988513ac
...
...
@@ -44,19 +44,17 @@ def assert_recognizes(expected_options, path, extras={}, message=nil)
request_method
=
nil
end
clean_backtrace
do
ActionController
::
Routing
::
Routes
.
reload
if
ActionController
::
Routing
::
Routes
.
empty?
request
=
recognized_request_for
(
path
,
request_method
)
ActionController
::
Routing
::
Routes
.
reload
if
ActionController
::
Routing
::
Routes
.
empty?
request
=
recognized_request_for
(
path
,
request_method
)
expected_options
=
expected_options
.
clone
extras
.
each_key
{
|
key
|
expected_options
.
delete
key
}
unless
extras
.
nil?
expected_options
=
expected_options
.
clone
extras
.
each_key
{
|
key
|
expected_options
.
delete
key
}
unless
extras
.
nil?
expected_options
.
stringify_keys!
routing_diff
=
expected_options
.
diff
(
request
.
path_parameters
)
msg
=
build_message
(
message
,
"The recognized options <?> did not match <?>, difference: <?>"
,
request
.
path_parameters
,
expected_options
,
expected_options
.
diff
(
request
.
path_parameters
))
assert_block
(
msg
)
{
request
.
path_parameters
==
expected_options
}
end
expected_options
.
stringify_keys!
routing_diff
=
expected_options
.
diff
(
request
.
path_parameters
)
msg
=
build_message
(
message
,
"The recognized options <?> did not match <?>, difference: <?>"
,
request
.
path_parameters
,
expected_options
,
expected_options
.
diff
(
request
.
path_parameters
))
assert_block
(
msg
)
{
request
.
path_parameters
==
expected_options
}
end
# Asserts that the provided options can be used to generate the provided path. This is the inverse of +assert_recognizes+.
...
...
@@ -78,21 +76,19 @@ def assert_recognizes(expected_options, path, extras={}, message=nil)
# # Asserts that the generated route gives us our custom route
# assert_generates "changesets/12", { :controller => 'scm', :action => 'show_diff', :revision => "12" }
def
assert_generates
(
expected_path
,
options
,
defaults
=
{},
extras
=
{},
message
=
nil
)
clean_backtrace
do
expected_path
=
"/
#{
expected_path
}
"
unless
expected_path
[
0
]
==
?/
# Load routes.rb if it hasn't been loaded.
ActionController
::
Routing
::
Routes
.
reload
if
ActionController
::
Routing
::
Routes
.
empty?
expected_path
=
"/
#{
expected_path
}
"
unless
expected_path
[
0
]
==
?/
# Load routes.rb if it hasn't been loaded.
ActionController
::
Routing
::
Routes
.
reload
if
ActionController
::
Routing
::
Routes
.
empty?
generated_path
,
extra_keys
=
ActionController
::
Routing
::
Routes
.
generate_extras
(
options
,
defaults
)
found_extras
=
options
.
reject
{
|
k
,
v
|
!
extra_keys
.
include?
k
}
generated_path
,
extra_keys
=
ActionController
::
Routing
::
Routes
.
generate_extras
(
options
,
defaults
)
found_extras
=
options
.
reject
{
|
k
,
v
|
!
extra_keys
.
include?
k
}
msg
=
build_message
(
message
,
"found extras <?>, not <?>"
,
found_extras
,
extras
)
assert_block
(
msg
)
{
found_extras
==
extras
}
msg
=
build_message
(
message
,
"found extras <?>, not <?>"
,
found_extras
,
extras
)
assert_block
(
msg
)
{
found_extras
==
extras
}
msg
=
build_message
(
message
,
"The generated path <?> did not match <?>"
,
generated_path
,
expected_path
)
assert_block
(
msg
)
{
expected_path
==
generated_path
}
end
msg
=
build_message
(
message
,
"The generated path <?> did not match <?>"
,
generated_path
,
expected_path
)
assert_block
(
msg
)
{
expected_path
==
generated_path
}
end
# Asserts that path and options match both ways; in other words, it verifies that <tt>path</tt> generates
...
...
actionpack/lib/action_controller/testing/assertions/tag.rb
浏览文件 @
988513ac
...
...
@@ -94,11 +94,9 @@ module TagAssertions
# that allow optional closing tags (p, li, td). <em>You must explicitly
# close all of your tags to use these assertions.</em>
def
assert_tag
(
*
opts
)
clean_backtrace
do
opts
=
opts
.
size
>
1
?
opts
.
last
.
merge
({
:tag
=>
opts
.
first
.
to_s
})
:
opts
.
first
tag
=
find_tag
(
opts
)
assert
tag
,
"expected tag, but no tag found matching
#{
opts
.
inspect
}
in:
\n
#{
@response
.
body
.
inspect
}
"
end
opts
=
opts
.
size
>
1
?
opts
.
last
.
merge
({
:tag
=>
opts
.
first
.
to_s
})
:
opts
.
first
tag
=
find_tag
(
opts
)
assert
tag
,
"expected tag, but no tag found matching
#{
opts
.
inspect
}
in:
\n
#{
@response
.
body
.
inspect
}
"
end
# Identical to +assert_tag+, but asserts that a matching tag does _not_
...
...
@@ -116,11 +114,9 @@ def assert_tag(*opts)
# assert_no_tag :tag => "p",
# :children => { :count => 1..3, :only => { :tag => "img" } }
def
assert_no_tag
(
*
opts
)
clean_backtrace
do
opts
=
opts
.
size
>
1
?
opts
.
last
.
merge
({
:tag
=>
opts
.
first
.
to_s
})
:
opts
.
first
tag
=
find_tag
(
opts
)
assert
!
tag
,
"expected no tag, but found tag matching
#{
opts
.
inspect
}
in:
\n
#{
@response
.
body
.
inspect
}
"
end
opts
=
opts
.
size
>
1
?
opts
.
last
.
merge
({
:tag
=>
opts
.
first
.
to_s
})
:
opts
.
first
tag
=
find_tag
(
opts
)
assert
!
tag
,
"expected no tag, but found tag matching
#{
opts
.
inspect
}
in:
\n
#{
@response
.
body
.
inspect
}
"
end
end
end
...
...
actionpack/lib/action_controller/testing/test_case.rb
浏览文件 @
988513ac
...
...
@@ -109,14 +109,6 @@ module Assertions
%w(response selector tag dom routing model)
.
each
do
|
kind
|
include
ActionController
::
Assertions
.
const_get
(
"
#{
kind
.
camelize
}
Assertions"
)
end
def
clean_backtrace
(
&
block
)
yield
rescue
ActiveSupport
::
TestCase
::
Assertion
=>
error
framework_path
=
Regexp
.
new
(
File
.
expand_path
(
"
#{
File
.
dirname
(
__FILE__
)
}
/assertions"
))
error
.
backtrace
.
reject!
{
|
line
|
File
.
expand_path
(
line
)
=~
framework_path
}
raise
end
end
include
Assertions
...
...
actionpack/test/controller/test_test.rb
浏览文件 @
988513ac
...
...
@@ -629,33 +629,6 @@ def with_foo_routing
end
end
class
CleanBacktraceTest
<
ActionController
::
TestCase
def
test_should_reraise_the_same_object
exception
=
ActiveSupport
::
TestCase
::
Assertion
.
new
(
'message'
)
clean_backtrace
{
raise
exception
}
rescue
Exception
=>
caught
assert_equal
exception
.
object_id
,
caught
.
object_id
assert_equal
exception
.
message
,
caught
.
message
end
def
test_should_clean_assertion_lines_from_backtrace
path
=
File
.
expand_path
(
"
#{
File
.
dirname
(
__FILE__
)
}
/../../lib/action_controller/testing"
)
exception
=
ActiveSupport
::
TestCase
::
Assertion
.
new
(
'message'
)
exception
.
set_backtrace
[
"
#{
path
}
/abc"
,
"
#{
path
}
/assertions/def"
]
clean_backtrace
{
raise
exception
}
rescue
Exception
=>
caught
assert_equal
[
"
#{
path
}
/abc"
],
caught
.
backtrace
end
def
test_should_only_clean_assertion_failure_errors
clean_backtrace
do
raise
"can't touch this"
,
[
File
.
expand_path
(
"
#{
File
.
dirname
(
__FILE__
)
}
/../../lib/action_controller/assertions/abc"
)]
end
rescue
=>
caught
assert
!
caught
.
backtrace
.
empty?
end
end
class
InferringClassNameTest
<
ActionController
::
TestCase
def
test_determine_controller_class
assert_equal
ContentController
,
determine_class
(
"ContentControllerTest"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录