emacs编译用于Javascript测试

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

我正在使用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
使用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通过更改
摩卡咖啡选项来解决这个问题。