| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // web-admin/scripts/app-build-meta.test.ts
- import assert from 'node:assert/strict'
- import fs from 'node:fs'
- import os from 'node:os'
- import path from 'node:path'
- import { describe, it } from 'node:test'
- import {
- createAppBuildMeta,
- readGitShort,
- versionJsonText,
- writeVersionJson
- } from './app-build-meta.ts'
- describe('createAppBuildMeta', () => {
- it('joins git short hash and timestamp', () => {
- assert.deepEqual(createAppBuildMeta('3.0.2', 1730000000000, 'a1b2c3d'), {
- version: '3.0.2',
- buildId: 'a1b2c3d-1730000000000'
- })
- })
- it('uses nogit when the hash is empty', () => {
- assert.equal(createAppBuildMeta('3.0.2', 5, ' ').buildId, 'nogit-5')
- })
- it('changes buildId when the timestamp changes', () => {
- const a = createAppBuildMeta('3.0.2', 1, 'abc')
- const b = createAppBuildMeta('3.0.2', 2, 'abc')
- assert.notEqual(a.buildId, b.buildId)
- })
- })
- describe('readGitShort', () => {
- it('trims command output', () => {
- assert.equal(readGitShort(() => 'abc123\n'), 'abc123')
- })
- it('returns nogit when the command throws or is blank', () => {
- assert.equal(
- readGitShort(() => {
- throw new Error('no git')
- }),
- 'nogit'
- )
- assert.equal(readGitShort(() => ' '), 'nogit')
- })
- })
- describe('version.json', () => {
- it('writes pretty json with a trailing newline', () => {
- const text = versionJsonText({ version: '3.0.2', buildId: 'abc-1' })
- assert.equal(text, '{\n "version": "3.0.2",\n "buildId": "abc-1"\n}\n')
- })
- it('writes dist/version.json', () => {
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'app-ver-'))
- writeVersionJson(dir, { version: '3.0.3', buildId: 'def-9' })
- const raw = fs.readFileSync(path.join(dir, 'version.json'), 'utf8')
- assert.deepEqual(JSON.parse(raw), { version: '3.0.3', buildId: 'def-9' })
- })
- })
|