testMigrateRefusesANewerFormat

tcmts.cli.test.e2e.migrate.testMigrateRefusesANewerFormat · #qq42bhu2 · term

A codebase in a newer format than this tcm's is refused, and left as it is.

import { tcmIn } from "#codebase/tcmts/cli/test/e2e/harness";
import { v1Codebase } from "#codebase/tcmts/cli/test/e2e/migrate";
import assert from "node:assert/strict";
import fs from "node:fs";
import path from "node:path";
import { DatabaseSync } from "node:sqlite";

export const testMigrateRefusesANewerFormat = () => {
  const dir = v1Codebase("migrate newer");
  const file = path.join(dir, ".tcm", "codebase.sqlite");
  const db = new DatabaseSync(file);
  db.exec("UPDATE components SET ir_version = 99");
  db.close();
  const before = fs.readFileSync(file);
  const r = tcmIn(dir, "migrate");
  assert.notEqual(r.status, 0);
  assert.match(r.out, /hash format v99, newer than this tcm's \(v2\): use a newer tcm/);
  assert.ok(fs.readFileSync(file).equals(before));
}

uses