Chore/fix semver * fix semver versioning * fix semver versioning * Merge branch 'chore/fix-semver' of bitbucket.org:scandic-swap/web into chore/fix-semver * Merge branch 'master' of bitbucket.org:scandic-swap/web into chore/fix-semver * reset to master Approved-by: Linus Flood
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest"
|
|
|
|
import { getSemver } from "./getSemver"
|
|
|
|
describe("getSemver", () => {
|
|
it("should return undefined if version is undefined", () => {
|
|
expect(getSemver(undefined, "master")).toBeUndefined()
|
|
})
|
|
|
|
it("should return undefined if version is not a string", () => {
|
|
// @ts-expect-error Testing invalid input
|
|
expect(getSemver(123, "master")).toBeUndefined()
|
|
})
|
|
|
|
it("should strip 'v' prefix from version", () => {
|
|
expect(getSemver("v1.0.0", "master")).toBe("1.0.0")
|
|
})
|
|
|
|
it("should return undefined if version format is invalid", () => {
|
|
expect(getSemver("invalid-version", "master")).toBeUndefined()
|
|
})
|
|
|
|
it("should return the version as-is for named branches", () => {
|
|
expect(getSemver("1.0.0", "release")).toBe("1.0.0")
|
|
expect(getSemver("1.0.0", "master")).toBe("1.0.0")
|
|
expect(getSemver("1.0.0", "test")).toBe("1.0.0")
|
|
expect(getSemver("1.0.0", "stage")).toBe("1.0.0")
|
|
expect(getSemver("1.0.0", "prod")).toBe("1.0.0")
|
|
})
|
|
|
|
it("should append cleaned branch name for non-named branches", () => {
|
|
expect(getSemver("1.0.0", "feature/my-feature")).toBe(
|
|
"1.0.0-feature-my-feature"
|
|
)
|
|
})
|
|
|
|
it("should handle special characters in non-named branches", () => {
|
|
expect(getSemver("1.0.0", "fix/bug#123")).toBe("1.0.0-fix-bug-123")
|
|
})
|
|
|
|
it("should lowercase and trim non-named branches", () => {
|
|
expect(getSemver("1.0.0", " MY-BRANCH ")).toBe("1.0.0-my-branch")
|
|
})
|
|
|
|
it("should truncate long branch names", () => {
|
|
expect(
|
|
getSemver("1.0.0", "feature/very-long-branch-name-that-exceeds-limit")
|
|
).toBe("1.0.0-feature-very-long-br")
|
|
})
|
|
})
|