获取bash自动完成的输出以进行测试

时间:2012-08-01 05:32:26

标签: unit-testing bash

我想进行单元测试,测试bash自动完成脚本是否正确扩展了某个字符串(让我们假设光标在最后)。

(我认为)我希望能够输入一个字符串并捕获COMPREPLY的输出。

例如,假设我在git b<TAB><TAB>提供bisect blame branch bundle时提供测试。如何从bash函数中获取输出?

如果令人困惑,我希望能够做到这样的事情:

output=$(get_compreply "git b")
echo "$output"
> bisect   blame    branch   bundle

2 个答案:

答案 0 :(得分:1)

你在这里:

compgen -c YOUR_INPUT_BEFORE_TAB

答案 1 :(得分:1)

首先,您是否为git定义了完成? (运行complete -p的输出是什么?)

此页面描述了构建compspecs:http://www.debian-administration.org/article/An_introduction_to_bash_completion_part_2

这是一个简化的例子: -

$ output=$(compgen -W "bisect blame branch bundle" b)
$ echo $output
bisect blame branch bundle