mycroft-core 特性:允许使用mycroft-speak和mycroft-say-to执行bash管道操作,

fcipmucu  于 5个月前  发布在  其他
关注(0)|答案(9)|浏览(60)
  • 正在运行mycroft-core
  • Mycroft软件的版本为19.2.4

将|添加到mycroft-speak和mycroft-say-to中,以打开脚本选项。

fruv7luv

fruv7luv1#

遇到了一个问题,那就是创建单元测试。主要的问题是我不清楚bin/脚本的单元测试在哪里。

yvgpqqbh

yvgpqqbh2#

我认为我们还没有为这些脚本编写任何单元测试。
由于这些测试是针对shell脚本的,它们是单元测试还是集成测试?基本上,它们是否可以独立运行,还是需要一个mycroft示例?

uinbv5nw

uinbv5nw3#

我猜集成会更合适(根据我的理解,脚本只是将预先配置的消息发送到消息总线上)。

xt0899hw

xt0899hw4#

是的,它们就是这样工作的。我认为在test/integrationtests文件夹下添加一个目录将是它们最好的位置。

yv5phkfx

yv5phkfx5#

所以类似:
test_mycroft-speak_bash_pipe
test_mycroft-speak_arg
test_mycroft-say-to_bash_pipe
test_mycroft-say-to_arg
说实话,我也不知道如何为与Python交互的bash脚本编写测试。我需要设置一个模拟消息总线来确保消息被正确接收,以及Mycroft正确响应吗?

5tmbdcev

5tmbdcev6#

对于集成测试,它将与正在运行的mycroft消息总线进行交互。我不确定自己实现这个功能的最佳方法是什么。

假设测试将连接到消息总线,监听speak消息。然后作为子进程启动脚本,等待一小段时间,并检查是否收到了预期的消息。

这样做有点复杂。如果你愿意在没有测试的情况下提交更改,那是可以的。但如果为底层的消息总线发送函数编写单元测试,可能会是更好的投资时间。

dpiehjr4

dpiehjr47#

当前,这个命令可以处理来自echo命令的离散消息,但不能处理cat或文本流。

我想实现但目前无法实现的场景:

cat testfile | mycroft-speak
tail -f testfile | mycroft-speak

xargs可能是解决这个问题的方法,但仍然不如简单地使用|来实现。

tkclm6bt

tkclm6bt8#

对于我来说,这个方法是有效的:

$ echo "hello there" > say.txt
$ cat say.txt 
hello there
$ cat say.txt | ./bin/mycroft-speak
kqlmhetl

kqlmhetl9#

这对我来说也行。
这似乎更多地是关于新行字符和其他字符的问题。也许我们需要过滤掉特殊字符?
我的测试文件有:
你好
基诺比将军
以及mycroft-say文件,其中有一个#,这也失败了。

相关问题