我正在尝试使用grunt-exec通过传入的已部署链接变量运行javascript测试运行程序。

我试图通过使用grunt.option('link')设置环境变量exec:setLink来做到这一点。在我的test_runner.js中,用process.env.TEST_LINK抓取变量。不幸的是,似乎grunt-exec不会运行bash命令,例如export(?)

真的,我不在乎变量如何到达我的test_runner.js,因此欢迎其他任何想法。

exec: {

  // DOESN'T WORK: Sets env variable with link for selenium tests
  setLink: {
    cmd: function () {
      return "export TEST_LINK=" + "'" + grunt.option('link') + "'";
    }
  },
  // Integration tests, needs TEST_LINK
  selenium: {
    cmd: function () {
      return "node test/runner/jasmine_runner.js";
    }
  }

最佳答案

使用grunt-exec,可以在env option中指定子进程的环境变量:

exec: {
  selenium: {
    cmd: function () {
      return "node test/runner/jasmine_runner.js";
    },
    options: {
      env: {
        'TEST_LINK': grunt.option('link')
      }
    }
  }
}


要记住的一件事是,如果在TEST_LINK选项中仅指定env,则它将是子进程的唯一环境变量。如果您也希望传递当前进程的环境变量,则可以执行以下操作:

exec: {
  selenium: {
    cmd: function () {
      return "node test/runner/jasmine_runner.js";
    },
    options: {
      env: Object.assign({}, process.env, { 'TEST_LINK': grunt.option('link') })
    }
  }
}

07-25 21:48
查看更多