diff --git a/bun.lock b/bun.lock index 8cb74b92..48ce19f5 100644 --- a/bun.lock +++ b/bun.lock @@ -26,6 +26,7 @@ "@types/bun": "latest", "@types/qrcode": "^1.5.6", "commitizen": "4.3.1", + "conventional-changelog-conventionalcommits": "10.4.0", "cz-conventional-changelog": "3.3.0", "husky": "^9.1.7", "prettier": "3.7.4", @@ -40,11 +41,11 @@ }, "packages/cli": { "name": "@hack/cli", - "version": "2.5.1", + "version": "3.5.2", }, "packages/db": { "name": "@hack/db", - "version": "2.5.1", + "version": "3.5.2", "dependencies": { "@neondatabase/serverless": "^1.0.1", "drizzle-orm": "^0.44.5", @@ -138,6 +139,8 @@ "@commitlint/types": ["@commitlint/types@19.8.1", "", { "dependencies": { "@types/conventional-commits-parser": "^5.0.0", "chalk": "^5.3.0" } }, "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw=="], + "@conventional-changelog/template": ["@conventional-changelog/template@1.4.0", "", {}, "sha512-aalGyl7dbB5PArRebDIX43ZvBlXrYm9uWzGJ26t+4SzJVPsOuvfILGGbw5X4yX7i50YEmJ8zvbiWnqH/AAnZqg=="], + "@dimforge/rapier2d-simd-compat": ["@dimforge/rapier2d-simd-compat@0.17.3", "", {}, "sha512-bijvwWz6NHsNj5e5i1vtd3dU2pDhthSaTUZSh14DUGGKJfw8eMnlWZsxwHBxB/a3AXVNDjL9abuHw1k9FGR+jg=="], "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], @@ -526,7 +529,7 @@ "conventional-changelog-angular": ["conventional-changelog-angular@8.1.0", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w=="], - "conventional-changelog-conventionalcommits": ["conventional-changelog-conventionalcommits@7.0.2", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w=="], + "conventional-changelog-conventionalcommits": ["conventional-changelog-conventionalcommits@10.4.0", "", { "dependencies": { "@conventional-changelog/template": "^1.4.0" } }, "sha512-Rriac6ZrAlVm6cy9Bz4NSp+WMHpwNXoPIYex+HjCgduAVUSbnew29DQjQw0C4g9u3HtSYzGiGY+pdBXAZo+4aA=="], "conventional-changelog-writer": ["conventional-changelog-writer@8.2.0", "", { "dependencies": { "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", "meow": "^13.0.0", "semver": "^7.5.2" }, "bin": { "conventional-changelog-writer": "dist/cli/index.js" } }, "sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw=="], @@ -1422,6 +1425,8 @@ "@actions/http-client/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + "@commitlint/config-conventional/conventional-changelog-conventionalcommits": ["conventional-changelog-conventionalcommits@7.0.2", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w=="], + "@commitlint/format/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], "@commitlint/load/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], diff --git a/package.json b/package.json index b34603bb..33e8ae00 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "@types/bun": "latest", "@types/qrcode": "^1.5.6", "commitizen": "4.3.1", + "conventional-changelog-conventionalcommits": "10.4.0", "cz-conventional-changelog": "3.3.0", "husky": "^9.1.7", "prettier": "3.7.4", diff --git a/tests/release-config.test.ts b/tests/release-config.test.ts new file mode 100644 index 00000000..ebbba65a --- /dev/null +++ b/tests/release-config.test.ts @@ -0,0 +1,34 @@ +import { expect, test } from "bun:test"; + +test("release config recognizes bang syntax as a breaking change", async () => { + const analyzer = Bun.spawn({ + cmd: [ + process.execPath, + "-e", + ` + import { analyzeCommits } from "@semantic-release/commit-analyzer"; + const releaseConfig = await Bun.file(".releaserc.json").json(); + const analyzerConfig = releaseConfig.plugins[0][1]; + const logger = { log() {} }; + const releaseType = await analyzeCommits(analyzerConfig, { + commits: [{ hash: "breaking-commit", message: "feat!: remove a retired surface" }], + cwd: process.cwd(), + logger, + }); + console.log(releaseType); + `, + ], + cwd: process.cwd(), + stderr: "pipe", + stdout: "pipe", + }); + const [exitCode, stdout, stderr] = await Promise.all([ + analyzer.exited, + new Response(analyzer.stdout).text(), + new Response(analyzer.stderr).text(), + ]); + + expect(stderr).toBe(""); + expect(exitCode).toBe(0); + expect(stdout.trim()).toBe("major"); +});