{ 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
  ''
