Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
vnotepad
Exa
提交
45e1cb77
E
Exa
项目概览
vnotepad
/
Exa
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
Exa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
45e1cb77
编写于
7月 26, 2017
作者:
B
Benjamin Sago
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Streamline parser tests
上级
2d1f462b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
34 addition
and
34 deletion
+34
-34
src/options/parser.rs
src/options/parser.rs
+34
-34
未找到文件。
src/options/parser.rs
浏览文件 @
45e1cb77
...
...
@@ -316,11 +316,11 @@ mod parse_test {
use
super
::
*
;
macro_rules!
test
{
(
$name:ident
:
$input:expr
=>
$result:expr
)
=>
{
(
$name:ident
:
$input
s
:expr
=>
$result:expr
)
=>
{
#[test]
fn
$name
()
{
let
bits
=
$input
;
let
results
=
parse
(
&
Args
(
TEST_ARGS
),
bits
.i
nto_i
ter
());
let
bits
=
$input
s
.as_ref
()
.into_iter
()
.map
(|
&
o
|
os
(
o
))
.collect
::
<
Vec
<
OsString
>>
()
;
let
results
=
parse
(
&
Args
(
TEST_ARGS
),
bits
.iter
());
assert_eq!
(
results
,
$result
);
}
};
...
...
@@ -334,52 +334,52 @@ mod parse_test {
// Just filenames
test!
(
empty
:
[]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[]
}));
test!
(
one_arg
:
[
os
(
"exa"
)
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"exa"
)
],
flags
:
vec!
[]
}));
test!
(
empty
:
[]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[]
}));
test!
(
one_arg
:
[
"exa"
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"exa"
)
],
flags
:
vec!
[]
}));
// Dashes and double dashes
test!
(
one_dash
:
[
os
(
"-"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"-"
)
],
flags
:
vec!
[]
}));
test!
(
two_dashes
:
[
os
(
"--"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[]
}));
test!
(
two_file
:
[
os
(
"--"
),
os
(
"file"
)
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"file"
)
],
flags
:
vec!
[]
}));
test!
(
two_arg_l
:
[
os
(
"--"
),
os
(
"--long"
)
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"--long"
)
],
flags
:
vec!
[]
}));
test!
(
two_arg_s
:
[
os
(
"--"
),
os
(
"-l"
)
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"-l"
)
],
flags
:
vec!
[]
}));
test!
(
one_dash
:
[
"-"
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"-"
)
],
flags
:
vec!
[]
}));
test!
(
two_dashes
:
[
"--"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[]
}));
test!
(
two_file
:
[
"--"
,
"file"
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"file"
)
],
flags
:
vec!
[]
}));
test!
(
two_arg_l
:
[
"--"
,
"--long"
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"--long"
)
],
flags
:
vec!
[]
}));
test!
(
two_arg_s
:
[
"--"
,
"-l"
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"-l"
)
],
flags
:
vec!
[]
}));
// Long args
test!
(
long
:
[
os
(
"--long"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"long"
),
None
)
]
}));
test!
(
long_then
:
[
os
(
"--long"
),
os
(
"4"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"4"
)
],
flags
:
vec!
[
(
Flag
::
Long
(
"long"
),
None
)
]
}));
test!
(
long_two
:
[
os
(
"--long"
),
os
(
"--verbose"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"long"
),
None
),
(
Flag
::
Long
(
"verbose"
),
None
)
]
}));
test!
(
long
:
[
"--long"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"long"
),
None
)
]
}));
test!
(
long_then
:
[
"--long"
,
"4"
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&
os
(
"4"
)
],
flags
:
vec!
[
(
Flag
::
Long
(
"long"
),
None
)
]
}));
test!
(
long_two
:
[
"--long"
,
"--verbose"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"long"
),
None
),
(
Flag
::
Long
(
"verbose"
),
None
)
]
}));
// Long args with values
test!
(
bad_equals
:
[
os
(
"--long=equals"
)]
=>
Err
(
ParseError
::
ForbiddenValue
{
flag
:
Flag
::
Long
(
"long"
)
}));
test!
(
no_arg
:
[
os
(
"--count"
)]
=>
Err
(
ParseError
::
NeedsValue
{
flag
:
Flag
::
Long
(
"count"
)
}));
test!
(
arg_equals
:
[
os
(
"--count=4"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"count"
),
Some
(
&*
os
(
"4"
)))
]
}));
test!
(
arg_then
:
[
os
(
"--count"
),
os
(
"4"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"count"
),
Some
(
&*
os
(
"4"
)))
]
}));
test!
(
bad_equals
:
[
"--long=equals"
]
=>
Err
(
ParseError
::
ForbiddenValue
{
flag
:
Flag
::
Long
(
"long"
)
}));
test!
(
no_arg
:
[
"--count"
]
=>
Err
(
ParseError
::
NeedsValue
{
flag
:
Flag
::
Long
(
"count"
)
}));
test!
(
arg_equals
:
[
"--count=4"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"count"
),
Some
(
&*
os
(
"4"
)))
]
}));
test!
(
arg_then
:
[
"--count"
,
"4"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Long
(
"count"
),
Some
(
&*
os
(
"4"
)))
]
}));
// Short args
test!
(
short
:
[
os
(
"-l"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
)
]
}));
test!
(
short_then
:
[
os
(
"-l"
),
os
(
"4"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[
&*
os
(
"4"
)
],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
)
]
}));
test!
(
short_two
:
[
os
(
"-lv"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'v'
),
None
)
]
}));
test!
(
mixed
:
[
os
(
"-v"
),
os
(
"--long"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'v'
),
None
),
(
Flag
::
Long
(
"long"
),
None
)
]
}));
test!
(
short
:
[
"-l"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
)
]
}));
test!
(
short_then
:
[
"-l"
,
"4"
]
=>
Ok
(
Matches
{
frees
:
vec!
[
&*
os
(
"4"
)
],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
)
]
}));
test!
(
short_two
:
[
"-lv"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'v'
),
None
)
]
}));
test!
(
mixed
:
[
"-v"
,
"--long"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'v'
),
None
),
(
Flag
::
Long
(
"long"
),
None
)
]
}));
// Short args with values
test!
(
bad_short
:
[
os
(
"-l=equals"
)]
=>
Err
(
ParseError
::
ForbiddenValue
{
flag
:
Flag
::
Short
(
b
'l'
)
}));
test!
(
short_none
:
[
os
(
"-c"
)]
=>
Err
(
ParseError
::
NeedsValue
{
flag
:
Flag
::
Short
(
b
'c'
)
}));
test!
(
short_arg_eq
:
[
os
(
"-c=4"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"4"
)))
]
}));
test!
(
short_arg_then
:
[
os
(
"-c"
),
os
(
"4"
)
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"4"
)))
]
}));
test!
(
short_two_together
:
[
os
(
"-lctwo"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"two"
)))
]
}));
test!
(
short_two_equals
:
[
os
(
"-lc=two"
)]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"two"
)))
]
}));
test!
(
short_two_next
:
[
os
(
"-lc"
),
os
(
"two"
)
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"two"
)))
]
}));
test!
(
bad_short
:
[
"-l=equals"
]
=>
Err
(
ParseError
::
ForbiddenValue
{
flag
:
Flag
::
Short
(
b
'l'
)
}));
test!
(
short_none
:
[
"-c"
]
=>
Err
(
ParseError
::
NeedsValue
{
flag
:
Flag
::
Short
(
b
'c'
)
}));
test!
(
short_arg_eq
:
[
"-c=4"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"4"
)))
]
}));
test!
(
short_arg_then
:
[
"-c"
,
"4"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"4"
)))
]
}));
test!
(
short_two_together
:
[
"-lctwo"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"two"
)))
]
}));
test!
(
short_two_equals
:
[
"-lc=two"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"two"
)))
]
}));
test!
(
short_two_next
:
[
"-lc"
,
"two"
]
=>
Ok
(
Matches
{
frees
:
vec!
[],
flags
:
vec!
[
(
Flag
::
Short
(
b
'l'
),
None
),
(
Flag
::
Short
(
b
'c'
),
Some
(
&*
os
(
"two"
)))
]
}));
// Unknown args
test!
(
unknown_long
:
[
os
(
"--quiet"
)
]
=>
Err
(
ParseError
::
UnknownArgument
{
attempt
:
os
(
"quiet"
)
}));
test!
(
unknown_long_eq
:
[
os
(
"--quiet=shhh"
)
]
=>
Err
(
ParseError
::
UnknownArgument
{
attempt
:
os
(
"quiet"
)
}));
test!
(
unknown_short
:
[
os
(
"-q"
)
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
test!
(
unknown_short_2nd
:
[
os
(
"-lq"
)
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
test!
(
unknown_short_eq
:
[
os
(
"-q=shhh"
)
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
test!
(
unknown_short_2nd_eq
:
[
os
(
"-lq=shhh"
)
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
test!
(
unknown_long
:
[
"--quiet"
]
=>
Err
(
ParseError
::
UnknownArgument
{
attempt
:
os
(
"quiet"
)
}));
test!
(
unknown_long_eq
:
[
"--quiet=shhh"
]
=>
Err
(
ParseError
::
UnknownArgument
{
attempt
:
os
(
"quiet"
)
}));
test!
(
unknown_short
:
[
"-q"
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
test!
(
unknown_short_2nd
:
[
"-lq"
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
test!
(
unknown_short_eq
:
[
"-q=shhh"
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
test!
(
unknown_short_2nd_eq
:
[
"-lq=shhh"
]
=>
Err
(
ParseError
::
UnknownShortArgument
{
attempt
:
b
'q'
}));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录