Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
brakeman
提交
85b44808
B
brakeman
项目概览
CoCo_Code_Op2
/
brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
85b44808
编写于
11月 23, 2013
作者:
J
Justin Collins
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add tests for instance variable scoping
上级
25a41dfc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
172 addition
and
7 deletion
+172
-7
test/apps/rails4/app/controllers/friendly_controller.rb
test/apps/rails4/app/controllers/friendly_controller.rb
+9
-3
test/tests/alias_processor.rb
test/tests/alias_processor.rb
+152
-4
test/tests/rails4.rb
test/tests/rails4.rb
+11
-0
未找到文件。
test/apps/rails4/app/controllers/friendly_controller.rb
浏览文件 @
85b44808
class
FriendlyController
some_helper_thing
do
@user
=
User
.
current_user
end
def
find
@user
=
User
.
friendly
.
find
(
params
[
:id
])
redirect_to
@user
end
end
\ No newline at end of file
def
some_user_thing
redirect_to
@user
.
url
end
end
test/tests/alias_processor.rb
浏览文件 @
85b44808
class
AliasProcessorTests
<
Test
::
Unit
::
TestCase
def
assert_alias
expected
,
original
def
assert_alias
expected
,
original
,
full
=
false
original_sexp
=
RubyParser
.
new
.
parse
original
expected_sexp
=
RubyParser
.
new
.
parse
expected
processed_sexp
=
Brakeman
::
AliasProcessor
.
new
.
process_safely
original_sexp
result
=
processed_sexp
.
last
assert_equal
expected_sexp
,
result
if
full
assert_equal
expected_sexp
,
processed_sexp
else
assert_equal
expected_sexp
,
processed_sexp
.
last
end
end
def
assert_output
input
,
output
assert_alias
output
,
input
,
true
end
def
test_addition
...
...
@@ -377,4 +383,146 @@ class AliasProcessorTests < Test::Unit::TestCase
y
RUBY
end
def
test_block_with_local
assert_output
<<-
INPUT
,
<<-
OUTPUT
def a
if b
c = nil
ds.each do |d|
e = T.new
c = e.map
end
r("f" + c.name)
else
g
end
end
INPUT
def a
if b
c = nil
ds.each do |d|
e = T.new
c = T.new.map
end
r("f" + T.new.map.name)
else
g
end
end
OUTPUT
end
def
test_block_in_class_scope
# Make sure blocks in class do not mess up instance variable scope
# for subsequent methods
assert_output
<<-
INPUT
,
<<-
OUTPUT
class A
x do
@a = 1
end
def b
@a
end
end
INPUT
class A
x do
@a = 1
end
def b
@a
end
end
OUTPUT
end
def
test_instance_method_scope_in_block
# Make sure instance variables set inside blocks are set at the method
# scope
assert_output
<<-
INPUT
,
<<-
OUTPUT
class A
def b
x do
@a = 1
end
@a
end
end
INPUT
class A
def b
x do
@a = 1
end
1
end
end
OUTPUT
end
def
test_instance_method_scope_in_if_with_blocks
# Make sure instance variables set inside if expressions are set at the
# method scope after being combined
assert_output
<<-
INPUT
,
<<-
OUTPUT
class A
def b
if something
x do
@a = 1
end
else
y do
@a = 2
end
end
@a
end
end
INPUT
class A
def b
if something
x do
@a = 1
end
else
y do
@a = 2
end
end
(1 or 2)
end
end
OUTPUT
end
def
test_branch_env_is_closed_after_if_statement
assert_output
<<-
'INPUT'
,
<<-
'OUTPUT'
def a
if b
return unless c # this was causing problems
@d = D.find(1)
@d
end
end
INPUT
def a
if b
return unless c
@d = D.find(1)
D.find(1)
end
end
OUTPUT
end
end
test/tests/rails4.rb
浏览文件 @
85b44808
...
...
@@ -88,4 +88,15 @@ class Rails4Tests < Test::Unit::TestCase
:confidence
=>
0
,
:relative_path
=>
"app/controllers/application_controller.rb"
end
def
test_redirect_with_instance_variable_from_block
assert_no_warning
:type
=>
:warning
,
:warning_code
=>
18
,
:fingerprint
=>
"e024f0cf67432409ec4afc80216fb2f6c9929fbbd32c2421e8867cd254f22d04"
,
:warning_type
=>
"Redirect"
,
:line
=>
12
,
:message
=>
/^Possible\ unprotected\ redirect/
,
:confidence
=>
0
,
:relative_path
=>
"app/controllers/friendly_controller.rb"
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录