项目中用到了lua的单元测试框架busted,根据需求需要对busted源码进行分析,这次主要分析一下outputHandlers模块。
项目的地址见:点击打开链接;
默认busted的输出见runner.lua:如下两行代码。
options = tablex.update(require 'busted.options',options or {})
options.output = options.output or (isatty and 'utfTerminal' or 'plainTerminal')
options是命令行读进来的一些参数。如果命令行参数为空,options.output 则会返回(isatty and 'utfTerminal' or 'plainTerminal')
isatty简单来说就是检测给定的文件描述符是否链接到一个终端,因为lua中的io库中io.stdin、io.stdout以及io.stderr是默认提供的预定义的句柄,所以isatty为true,那么最终的options.output就会取utfTerminal或者plainTerminal。
tablex.updata可以在 /usr/local/share/lua/5.3/pl/tablex.lua中看到,其实就是表拷贝的过程,ta