From 703b9b144c5b1ed5bc5057c9277c85f00e801d78 Mon Sep 17 00:00:00 2001 From: Luflosi Date: Wed, 14 Jul 2021 18:04:05 +0200 Subject: [PATCH] nodePackages.postcss-cli: add passthru.tests --- pkgs/development/node-packages/default.nix | 5 +++ .../package-tests/postcss-cli.nix | 45 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 pkgs/development/node-packages/package-tests/postcss-cli.nix diff --git a/pkgs/development/node-packages/default.nix b/pkgs/development/node-packages/default.nix index c25f3a801ff..498f41bc1b3 100644 --- a/pkgs/development/node-packages/default.nix +++ b/pkgs/development/node-packages/default.nix @@ -276,6 +276,11 @@ let --prefix NODE_PATH : ${self.postcss}/lib/node_modules \ --prefix NODE_PATH : ${self.autoprefixer}/lib/node_modules ''; + passthru.tests = { + simple-execution = pkgs.callPackage ./package-tests/postcss-cli.nix { + inherit (self) postcss-cli; + }; + }; meta.mainProgram = "postcss"; }; diff --git a/pkgs/development/node-packages/package-tests/postcss-cli.nix b/pkgs/development/node-packages/package-tests/postcss-cli.nix new file mode 100644 index 00000000000..521509e7f43 --- /dev/null +++ b/pkgs/development/node-packages/package-tests/postcss-cli.nix @@ -0,0 +1,45 @@ +{ runCommand, postcss-cli }: + +let + inherit (postcss-cli) packageName version; +in + +runCommand "${packageName}-tests" { meta.timeout = 60; } + '' + # get version of installed program and compare with package version + claimed_version="$(${postcss-cli}/bin/postcss --version)" + if [[ "$claimed_version" != "${version}" ]]; then + echo "Error: program version does not match package version ($claimed_version != ${version})" + exit 1 + fi + + # run basic help command + ${postcss-cli}/bin/postcss --help > /dev/null + + # basic autoprefixer test + config_dir="$(mktemp -d)" + clean_up() { + rm -rf "$config_dir" + } + trap clean_up EXIT + echo " + module.exports = { + plugins: { + 'autoprefixer': { overrideBrowserslist: 'chrome 40' }, + }, + } + " > "$config_dir/postcss.config.js" + input='a{ user-select: none; }' + expected_output='a{ -webkit-user-select: none; user-select: none; }' + actual_output="$(echo $input | ${postcss-cli}/bin/postcss --no-map --config $config_dir)" + if [[ "$actual_output" != "$expected_output" ]]; then + echo "Error: autoprefixer did not output the correct CSS:" + echo "$actual_output" + echo "!=" + echo "$expected_output" + exit 1 + fi + + # needed for Nix to register the command as successful + touch $out + ''