diff --git a/pkgs/development/node-packages/default.nix b/pkgs/development/node-packages/default.nix index c25f3a801ff2..498f41bc1b3f 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 000000000000..521509e7f43b --- /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 + ''