test-bump-version.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  4. REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
  5. SCRIPT_SOURCE="$REPO_ROOT/scripts/bump-version.sh"
  6. TEST_ROOT="$(mktemp -d)"
  7. cleanup() {
  8. rm -rf "$TEST_ROOT"
  9. }
  10. trap cleanup EXIT
  11. fail() {
  12. echo "FAIL: $*" >&2
  13. exit 1
  14. }
  15. make_fixture() {
  16. local repo="$1"
  17. local yaml_body="$2"
  18. mkdir -p "$repo/scripts" "$repo/.hermes-plugin"
  19. cp "$SCRIPT_SOURCE" "$repo/scripts/bump-version.sh"
  20. cat >"$repo/.version-bump.json" <<'JSON'
  21. {
  22. "files": [
  23. { "path": "package.json", "field": "version" },
  24. { "path": ".hermes-plugin/plugin.yaml", "field": "version" }
  25. ],
  26. "audit": { "exclude": [] }
  27. }
  28. JSON
  29. cat >"$repo/package.json" <<'JSON'
  30. {
  31. "name": "fixture",
  32. "version": "1.2.3"
  33. }
  34. JSON
  35. printf '%s\n' "$yaml_body" >"$repo/.hermes-plugin/plugin.yaml"
  36. }
  37. happy_repo="$TEST_ROOT/happy"
  38. make_fixture "$happy_repo" $'name: superpowers\nversion: 1.2.3'
  39. /bin/bash "$happy_repo/scripts/bump-version.sh" --check >"$TEST_ROOT/check.out"
  40. /bin/bash "$happy_repo/scripts/bump-version.sh" --audit >"$TEST_ROOT/audit.out"
  41. /bin/bash "$happy_repo/scripts/bump-version.sh" 2.3.4 >"$TEST_ROOT/bump.out"
  42. [[ "$(jq -r '.version' "$happy_repo/package.json")" == "2.3.4" ]] \
  43. || fail "JSON manifest was not bumped"
  44. [[ "$(yq -r '.version' "$happy_repo/.hermes-plugin/plugin.yaml")" == "2.3.4" ]] \
  45. || fail "YAML manifest was not bumped"
  46. jq -e '
  47. any(.files[];
  48. .path == ".hermes-plugin/plugin.yaml" and .field == "version")
  49. ' "$REPO_ROOT/.version-bump.json" >/dev/null \
  50. || fail "Hermes manifest is not registered"
  51. invalid_repo="$TEST_ROOT/invalid"
  52. make_fixture "$invalid_repo" $'name: superpowers\nversion: 123'
  53. cp "$invalid_repo/package.json" "$TEST_ROOT/package.before"
  54. cp "$invalid_repo/.hermes-plugin/plugin.yaml" "$TEST_ROOT/plugin.before"
  55. if /bin/bash "$invalid_repo/scripts/bump-version.sh" 2.3.4 \
  56. >"$TEST_ROOT/invalid.out" 2>&1; then
  57. fail "bump accepted a non-string YAML version"
  58. fi
  59. cmp -s "$TEST_ROOT/package.before" "$invalid_repo/package.json" \
  60. || fail "JSON manifest changed before YAML validation failed"
  61. cmp -s "$TEST_ROOT/plugin.before" "$invalid_repo/.hermes-plugin/plugin.yaml" \
  62. || fail "invalid YAML manifest changed"
  63. echo "Version-bump tests passed"