【问题标题】:emacs compile for Javascript testsemacs 为 Javascript 测试编译
【发布时间】:2015-09-15 19:42:06
【问题描述】:

我正在使用 emacs 开发 javascript (Node.js)。用于测试的摩卡。我用 make 运行 mocha,这是我的 Makefile:

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 编译它可以很好地运行测试,但输出如下:

  #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?

【问题讨论】:

  • 那些[0G 可能是发送到 Emacs 的转义序列的一部分,错误假设 mocha 在终端仿真器中运行,但事实并非如此。您可能可以安排编译缓冲区识别这些转义序列并删除它们。这就是说,为什么你的MOCHA_OPTS 中有--colors?这可能是 mocha 发送这些转义序列的原因。
  • 我认为这些是 ansi 转义序列,您正在寻找的是:stackoverflow.com/questions/13397737/…
  • --colors 没问题,我给编译缓冲区上色。那些转义序列是问题所在。我想我必须手动摆脱它们。

标签: javascript emacs makefile mocha.js


【解决方案1】:

Mocha 尝试检测它是否使用 tty 运行,如果是,它将允许报告器输出 ANSI 序列。将 --colors 更改为 --no-colors 会有所帮助,但只是部分帮助。事实是,一些记者试图移动 tty 光标,即使关闭颜色,仍然会输出 ANSI 序列。没有标志可以强制 Mocha 将其输出视为非 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)

INSIDE_EMACS 由 Emacs 定义。

【讨论】:

  • 这工作完美。一个问题。此测试由团队运行,这里没有人使用 emacs,有没有办法识别当前在 emacs 中调用 make 并仅在 emacs 中添加 | cat 过滤器?谢谢你的回答。
  • 我已经编辑了我的答案。请注意,我之前的回答有一个错误:--color 强制 Mocha 输出颜色,即使您使用 | cat。上面的 makefile 通过更改 MOCHA_OPTS 来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多