refactor: hard-fork GSD -> MSD (Make Software Done)
Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
This commit is contained in:
@@ -15,7 +15,7 @@ const fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
|
||||
const { findProjectRoot } = require('../gsd-core/bin/lib/project-root.cjs');
|
||||
const { findProjectRoot } = require('../msd-core/bin/lib/project-root.cjs');
|
||||
const { cleanup } = require('./helpers.cjs');
|
||||
|
||||
// ─── helpers ────────────────────────────────────────────────────────────────
|
||||
@@ -36,7 +36,7 @@ describe('findProjectRoot nearest-.planning resolution (#1414)', () => {
|
||||
let savedUserProfile;
|
||||
|
||||
beforeEach(() => {
|
||||
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-pr-test-'));
|
||||
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'msd-pr-test-'));
|
||||
savedHome = process.env.HOME;
|
||||
savedUserProfile = process.env.USERPROFILE;
|
||||
});
|
||||
@@ -156,7 +156,7 @@ describe('findProjectRoot nearest-.planning resolution (#1414)', () => {
|
||||
// .planning/ ← child has its own .planning/ but NO .git (the trap for heuristic 4)
|
||||
// src/
|
||||
// code.js ← startDir (descendant of child)
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-pr-subrepos-'));
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'msd-pr-subrepos-'));
|
||||
try {
|
||||
fs.mkdirSync(path.join(workspaceRoot, '.planning'), { recursive: true });
|
||||
fs.writeFileSync(
|
||||
@@ -189,7 +189,7 @@ describe('findProjectRoot nearest-.planning resolution (#1414)', () => {
|
||||
// .planning/ ← child has own .planning/
|
||||
// .git/ ← child ALSO has own .git/ → was triggering heuristic-3 prematurely
|
||||
// src/ ← startDir
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-pr-subrepos-git-'));
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'msd-pr-subrepos-git-'));
|
||||
try {
|
||||
fs.mkdirSync(path.join(workspaceRoot, '.planning'), { recursive: true });
|
||||
fs.writeFileSync(
|
||||
@@ -214,7 +214,7 @@ describe('findProjectRoot nearest-.planning resolution (#1414)', () => {
|
||||
// REGRESSION (#1422): sub_repos child with .git resolves to parent even when
|
||||
// startDir is nested more than one level inside the child.
|
||||
test('sub_repos child with .git: startDir nested 2+ levels inside child still resolves to parent (#1422)', () => {
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-pr-subrepos-nested-'));
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'msd-pr-subrepos-nested-'));
|
||||
try {
|
||||
fs.mkdirSync(path.join(workspaceRoot, '.planning'), { recursive: true });
|
||||
fs.writeFileSync(
|
||||
@@ -245,7 +245,7 @@ describe('findProjectRoot nearest-.planning resolution (#1414)', () => {
|
||||
// child/
|
||||
// .git/ ← child has its own git repo
|
||||
// src/ ← startDir
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'gsd-pr-multirepo-'));
|
||||
const workspaceRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'msd-pr-multirepo-'));
|
||||
try {
|
||||
fs.mkdirSync(path.join(workspaceRoot, '.planning'), { recursive: true });
|
||||
fs.writeFileSync(
|
||||
@@ -277,25 +277,25 @@ describe('findProjectRoot nearest-.planning resolution (#1414)', () => {
|
||||
});
|
||||
|
||||
// #2843: findProjectRoot must NOT cross a git-repo boundary. A nested child
|
||||
// repo (own .git, no .planning of its own) under an ancestor GSD project must
|
||||
// repo (own .git, no .planning of its own) under an ancestor MSD project must
|
||||
// NOT resolve to the ancestor's root — that would silently return a different
|
||||
// project's identity with exit 0. Pre-fix heuristic (3)'s isInsideGitRepo only
|
||||
// checked "does SOME .git exist between start and the ancestor" — the child's
|
||||
// own .git satisfied it, crossing the boundary.
|
||||
test('#2843 does not resolve to an ancestor project across a nested child .git boundary', () => {
|
||||
// tmpDir/ (plain — not a git repo, not HOME)
|
||||
// parent-gsd/.planning/ ← ancestor GSD project
|
||||
// parent-gsd/child-app/.git ← nested child repo, NO .planning of its own
|
||||
// parent-gsd/child-app/src/ ← startDir
|
||||
const parentGsd = mkDeep(tmpDir, 'parent-gsd');
|
||||
fs.mkdirSync(path.join(parentGsd, '.planning'), { recursive: true });
|
||||
const childApp = mkDeep(parentGsd, 'child-app');
|
||||
// parent-msd/.planning/ ← ancestor MSD project
|
||||
// parent-msd/child-app/.git ← nested child repo, NO .planning of its own
|
||||
// parent-msd/child-app/src/ ← startDir
|
||||
const parentMsd = mkDeep(tmpDir, 'parent-msd');
|
||||
fs.mkdirSync(path.join(parentMsd, '.planning'), { recursive: true });
|
||||
const childApp = mkDeep(parentMsd, 'child-app');
|
||||
fs.mkdirSync(path.join(childApp, '.git'), { recursive: true });
|
||||
const startDir = mkDeep(childApp, 'src');
|
||||
|
||||
const result = findProjectRoot(startDir);
|
||||
assert.notStrictEqual(result, parentGsd,
|
||||
'must NOT cross child-app\'s .git boundary to resolve to the ancestor parent-gsd project');
|
||||
assert.notStrictEqual(result, parentMsd,
|
||||
'must NOT cross child-app\'s .git boundary to resolve to the ancestor parent-msd project');
|
||||
// The child repo has no .planning of its own, so resolution falls back to
|
||||
// the startDir (or a path within child-app) — never the ancestor.
|
||||
assert.ok(
|
||||
|
||||
Reference in New Issue
Block a user