添加测试以检查所有文件的格式是否正确到 Karma \ Travis

Tha*_*guy 5 javascript testing formatting travis-ci karma-runner

我正在本地使用 karma 为我的项目实现一些测试,并使用 Travis 进行github测试集成(除非所有测试都通过,否则无法合并拉取请求)

我真的很想对代码格式化做同样的事情。我使用jscsgulp来检查代码。

我考虑过为Travis添加一个测试,以便在 PR 格式不正确时使测试失败。

有这样做的标准方法吗?目前,我考虑了两个选择:在我的测试套件中添加一个测试来检查格式。如果返回任何错误,则使测试失败。另一种选择是仅在Travis上运行任务,但我不能使Travis构建在 lint 任务上失败。

我看到有一个 karma 预处理器,但据我检查,如果发现任何 jscs 错误,它不会使 travis 失败。

对此有更好的做法吗?

我在互联网上找不到任何内容,因为<TEST_FRAMEWORK> test file formatting只返回了很多有关如何正确格式化测试的结果(可读性)

Tha*_*guy 4

由于看起来没有任何标准方法可以执行此操作,因此我将列出执行此类操作的两个选项:

在一切之前

您需要让 gulp/grunt 任务返回非零值才能使其失败。如果任务失败,Travis会将其视为构建失败,这将表明 PR 测试失败。在gulpjscs中,我是这样做的:

gulp.task('lint-js', function() {
  return gulp.src(FILES.JS_ALL)
      .pipe(cache('linting'))
      .pipe(jscs())
      .pipe(jscs.reporter())
      .pipe(jscs.reporter('fail'));
});
Run Code Online (Sandbox Code Playgroud)

大多数短绒检查员都有一名记者。如果您.reporter('fail')在最后使用管道 a,如果您的 linter 返回任何 lint 错误,它将返回非零。

对于Grunt,由@Nocomm回答,如果发现任何 lint 错误,看起来 grunt 会自动返回非零。

1)如果文件未格式化,则使您的测试任务失败

您可以将您的lint任务添加为您test任务的依赖项。如果你像这样添加它:

gulp.task('test', ['lint-js'], function() {//...
Run Code Online (Sandbox Code Playgroud)

Travis开始运行测试时,它将首先检查所有文件的格式是否正确。如果不是,Travis会将非零返回视为失败,并在GitHub上正确报告

2) 将 gulp lint 任务添加到 Travis 的 before_script 中

现在,您的 lint 任务因 lint 警告而失败,您可以将该任务添加到.travis.yml before_script运行测试之前运行的命令列表中。只需将其添加到列表末尾,以便在测试之前运行它(为什么要在因格式化而失败的 PR 上运行测试?),并在安装运行此类任务所需的所有内容之后立即运行。

Travis日志文件中: 在此输入图像描述