emacs编译用于Javascript测试
我正在使用emacs开发javascript(Node.js)。测试用摩卡咖啡。我用make运行摩卡,这是我的make文件:emacs编译用于Javascript测试,javascript,emacs,makefile,mocha.js,Javascript,Emacs,Makefile,Mocha.js,我正在使用emacs开发javascript(Node.js)。测试用摩卡咖啡。我用make运行摩卡,这是我的make文件: REPORTER=spec MOCHA_OPTS=--ui bdd --timeout 2000 --colors test: @NODE_ENV=test \ ./node_modules/mocha/bin/mocha \ --reporter $(REPORTER) \ $(MOCHA_OPTS) \ test/*.js
REPORTER=spec
MOCHA_OPTS=--ui bdd --timeout 2000 --colors
test:
@NODE_ENV=test \
./node_modules/mocha/bin/mocha \
--reporter $(REPORTER) \
$(MOCHA_OPTS) \
test/*.js
使用emacs compile,它可以很好地运行测试,但输出如下:
#Category API
[0G ✓ should create a category (378ms)
[0G ✓ should get category list (282ms)
[0G ✓ should get category (213ms)
[0G ✓ should verify category permissions (211ms)
[0G ✓ should edit category (454ms)
[0G ✓ should verify category (218ms)
[0G ✓ should remove category (242ms)
有没有办法去掉那些难看的东西[0G来自输出?摩卡试图检测它是否使用tty运行,如果是,它将允许报告器输出ANSI序列。将
--colors
更改为--no colors
将有所帮助,但只能部分帮助。事实上,一些报告器尝试移动tty光标,即使使用tty,仍然会输出ANSI序列颜色关闭了,没有任何标志迫使摩卡认为它的输出是非TTY。但是,你可以得到同样的结果:
$ mocha | cat
如果您想要一个在Emacs内部调用时不会输出ANSI序列但在外部“正常”工作的Makefile,您可以这样做:
REPORTER=spec
MOCHA_OPTS=--ui bdd --timeout 2000 $(if $(INSIDE_EMACS),--no-colors,--colors)
.PHONY: test
test:
@NODE_ENV=test \
./node_modules/mocha/bin/mocha \
--reporter $(REPORTER) \
$(MOCHA_OPTS) \
test/*.js $(and $(INSIDE_EMACS),| cat)
内部\u EMACS
由EMACS定义。那些[0G
可能是发送到Emacs的转义序列的一部分,但不正确的假设是mocha正在终端仿真器中运行,事实并非如此。您可能会安排编译缓冲区来识别这些转义序列并删除它们。也就是说,您的mocha\u选项中为什么有--Color
e> 这可能就是mocha发送这些转义序列的原因。我认为这些是ansi转义序列,您要查找的是:--colors
不是问题,我给编译缓冲区上色。这些转义序列是问题所在。我想我必须手动清除它们。这很好。不过有一个问题。这测试由团队运行,这里没有人使用emacs,有没有办法识别make当前在emacs中被调用,并且只在emacs中添加|cat
过滤器?感谢您的回答。我编辑了我的答案。请注意,我之前的答案有一个错误:--color
强制摩卡输出颜色,即使您需要使用| cat
。上面的makefile通过更改摩卡咖啡选项来解决这个问题。