From cdc93bddcf7d318f2569c2352dc39de9b666e332 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Tue, 14 Jan 2020 14:56:34 -0800 Subject: [PATCH] test: add test coverage for npm_package_bin configuration_env_vars And test coverage for using --action_env=FOO=BAR to pass env variables to npm_package_bin & nodejs_binary --- .bazelrc | 1 + .circleci/config.yml | 2 +- internal/node/test/BUILD.bazel | 6 +++++- internal/node/test/define.spec.js | 8 ++++++++ internal/node/test/expand_variables.golden | 3 ++- internal/node/test/expand_variables.js | 1 + internal/npm_install/test/bazel_bin_test.sh | 5 +++-- tools/npm_packages/testy/index.js | 2 +- tools/npm_packages/testy/package.json | 2 +- 9 files changed, 23 insertions(+), 7 deletions(-) diff --git a/.bazelrc b/.bazelrc index 106e26158a..8b41665a72 100644 --- a/.bazelrc +++ b/.bazelrc @@ -24,6 +24,7 @@ build --noincompatible_no_support_tools_in_action_inputs # Define environment value used by some tests such as //internal/npm_install/test:bazel_bin_test build --define=SOME_TEST_ENV=some_value test --define=SOME_TEST_ENV=some_value +build --action_env=SOME_OTHER_ENV=some_other_value ############################### # Remote Build Execution support diff --git a/.circleci/config.yml b/.circleci/config.yml index 0250baa413..34b5925a2d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -10,7 +10,7 @@ ## IMPORTANT # If you change the `default_docker_image` version, also change the `cache_key` version var_1: &default_docker_image circleci/node:10.16 -var_3: &cache_key node-0.16-{{ checksum "yarn.lock" }} +var_3: &cache_key node-0.16-{{ checksum "yarn.lock" }}-v2 var_4: &init_environment run: diff --git a/internal/node/test/BUILD.bazel b/internal/node/test/BUILD.bazel index aa6784f409..52c4f29da8 100644 --- a/internal/node/test/BUILD.bazel +++ b/internal/node/test/BUILD.bazel @@ -70,7 +70,10 @@ nodejs_binary( nodejs_test( name = "define_var", - configuration_env_vars = ["SOME_TEST_ENV"], + configuration_env_vars = [ + "SOME_TEST_ENV", + "SOME_OTHER_ENV", + ], data = glob(["*.spec.js"]), entry_point = ":define.spec.js", ) @@ -271,6 +274,7 @@ npm_package_bin( "$@", "$(SOME_TEST_ENV)", ], + configuration_env_vars = ["SOME_OTHER_ENV"], tool = ":expand_variables", ) diff --git a/internal/node/test/define.spec.js b/internal/node/test/define.spec.js index 96e31d6921..92fa093305 100644 --- a/internal/node/test/define.spec.js +++ b/internal/node/test/define.spec.js @@ -6,3 +6,11 @@ if (process.env['SOME_TEST_ENV'] !== 'some_value') { console.error('should accept vars; must be run with --define=SOME_TEST_ENV=some_value'); process.exitCode = 1; } + +// Similar to above but testing another env variable that is expected to be specified with +// `--action_env=SOME_OTHER_ENV=some_other_value`. +if (process.env['SOME_OTHER_ENV'] !== 'some_other_value') { + console.error( + 'should accept vars; must be run with --action_env=SOME_OTHER_ENV=some_other_value'); + process.exitCode = 1; +} diff --git a/internal/node/test/expand_variables.golden b/internal/node/test/expand_variables.golden index a01ce16d0c..365138a739 100644 --- a/internal/node/test/expand_variables.golden +++ b/internal/node/test/expand_variables.golden @@ -1,3 +1,4 @@ [ - "some_value" + "some_value", + "some_other_value" ] \ No newline at end of file diff --git a/internal/node/test/expand_variables.js b/internal/node/test/expand_variables.js index 99754db7ca..60831552f6 100644 --- a/internal/node/test/expand_variables.js +++ b/internal/node/test/expand_variables.js @@ -1,4 +1,5 @@ const fs = require('fs'); const args = process.argv.slice(2); const outfile = args.shift(); +args.push(process.env['SOME_OTHER_ENV']); fs.writeFileSync(outfile, JSON.stringify(args, null, 2), 'utf-8'); diff --git a/internal/npm_install/test/bazel_bin_test.sh b/internal/npm_install/test/bazel_bin_test.sh index 181bac736c..77d3f20bbc 100755 --- a/internal/npm_install/test/bazel_bin_test.sh +++ b/internal/npm_install/test/bazel_bin_test.sh @@ -12,8 +12,9 @@ source "${RUNFILES_DIR:-/dev/null}/$f" 2>/dev/null || \ # --- end runfiles.bash initialization v2 --- readonly OUT=$($(rlocation "npm/testy/bin/testy.sh")) +readonly EXPECTED="Hello some_value && some_other_value" -if [ "$OUT" != "Hello some_value" ]; then - echo "Expected output 'Hello world' but was '$OUT'" +if [ "${OUT}" != "${EXPECTED}" ]; then + echo "Expected output '${EXPECTED}' but was '${OUT}'" exit 1 fi diff --git a/tools/npm_packages/testy/index.js b/tools/npm_packages/testy/index.js index 59b585b450..cd7f678976 100755 --- a/tools/npm_packages/testy/index.js +++ b/tools/npm_packages/testy/index.js @@ -1 +1 @@ -console.log(`Hello ${process.env['SOME_TEST_ENV']}`); +console.log(`Hello ${process.env['SOME_TEST_ENV']} && ${process.env['SOME_OTHER_ENV']}`); diff --git a/tools/npm_packages/testy/package.json b/tools/npm_packages/testy/package.json index 00e7c80a89..7be0d1e41a 100644 --- a/tools/npm_packages/testy/package.json +++ b/tools/npm_packages/testy/package.json @@ -7,7 +7,7 @@ "bazelBin": { "testy": { "additionalAttributes": { - "configuration_env_vars": "[\"SOME_TEST_ENV\"]" + "configuration_env_vars": "[\"SOME_TEST_ENV\", \"SOME_OTHER_ENV\"]" } } }