test(#1615): update Windsurf workflow expectations
This commit is contained in:
@@ -29,24 +29,24 @@ const {
|
||||
// ─── Windsurf converter bare-form tests ─────────────────────────────────────
|
||||
|
||||
describe('convertClaudeToWindsurfMarkdown — bare ~/.claude and CLAUDE_CONFIG_DIR (#983)', () => {
|
||||
test('bare ~/.claude rewritten to ~/.devin (#1085: workspace dir is now .devin)', () => {
|
||||
test('bare ~/.claude rewritten to ~/.windsurf (#1615: workspace dir is now .windsurf)', () => {
|
||||
const input = 'Config dir: (~/.claude), skills at ~/.claude/skills';
|
||||
const result = convertClaudeToWindsurfMarkdown(input);
|
||||
assert.ok(
|
||||
!/~\/\.claude(?![\w-])/.test(result),
|
||||
`bare ~/.claude must be rewritten; got: ${result}`,
|
||||
);
|
||||
assert.ok(result.includes('~/.devin'), 'must rewrite to ~/.devin');
|
||||
assert.ok(result.includes('~/.windsurf'), 'must rewrite to ~/.windsurf');
|
||||
});
|
||||
|
||||
test('$HOME/.claude rewritten to $HOME/.devin (#1085: workspace dir is now .devin)', () => {
|
||||
test('$HOME/.claude rewritten to $HOME/.windsurf (#1615: workspace dir is now .windsurf)', () => {
|
||||
const input = 'RUNTIME_CONFIG_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"';
|
||||
const result = convertClaudeToWindsurfMarkdown(input);
|
||||
assert.ok(
|
||||
!/\$HOME\/\.claude(?![\w-])/.test(result),
|
||||
`bare $HOME/.claude must be rewritten; got: ${result}`,
|
||||
);
|
||||
assert.ok(result.includes('$HOME/.devin'), 'must rewrite to $HOME/.devin');
|
||||
assert.ok(result.includes('$HOME/.windsurf'), 'must rewrite to $HOME/.windsurf');
|
||||
});
|
||||
|
||||
test('CLAUDE_CONFIG_DIR rewritten to WINDSURF_CONFIG_DIR', () => {
|
||||
|
||||
@@ -3913,9 +3913,9 @@ describe('ADR-1016 phase 5a: closed-vocab set exports', () => {
|
||||
// ─── 25. ADR-857 phase 5e: closed ConverterName enum (Part B) ─────────────────
|
||||
|
||||
describe('ADR-857 phase 5e: VALID_CONVERTER_NAMES closed enum', () => {
|
||||
test('VALID_CONVERTER_NAMES has exactly 24 entries (15 command/skill + 9 agent converters added in #1173)', () => {
|
||||
test('VALID_CONVERTER_NAMES has exactly 25 entries (16 command/skill/workflow + 9 agent converters)', () => {
|
||||
assert.ok(VALID_CONVERTER_NAMES instanceof Set, 'VALID_CONVERTER_NAMES must be a Set');
|
||||
assert.strictEqual(VALID_CONVERTER_NAMES.size, 24, 'VALID_CONVERTER_NAMES must have exactly 24 entries, got: ' + VALID_CONVERTER_NAMES.size);
|
||||
assert.strictEqual(VALID_CONVERTER_NAMES.size, 25, 'VALID_CONVERTER_NAMES must have exactly 25 entries, got: ' + VALID_CONVERTER_NAMES.size);
|
||||
});
|
||||
|
||||
test('VALID_CONVERTER_NAMES contains all expected converter names', () => {
|
||||
@@ -3936,6 +3936,7 @@ describe('ADR-857 phase 5e: VALID_CONVERTER_NAMES closed enum', () => {
|
||||
'convertClaudeCommandToOpencodeSkill',
|
||||
'convertClaudeCommandToTraeSkill',
|
||||
'convertClaudeCommandToWindsurfSkill',
|
||||
'convertClaudeCommandToWindsurfWorkflow',
|
||||
// agent converters (#1173 — descriptor-driven agent conversion wiring)
|
||||
'convertClaudeAgentToCopilotAgent',
|
||||
'convertClaudeAgentToAntigravityAgent',
|
||||
|
||||
@@ -194,6 +194,9 @@ describe('Cline install (local)', () => {
|
||||
} else if (entry.name.endsWith('.md') || entry.name.endsWith('.cjs') || entry.name.endsWith('.js')) {
|
||||
// CHANGELOG.md is a historical record and is not path-converted — skip it
|
||||
if (entry.name === 'CHANGELOG.md') continue;
|
||||
// Converter source contains literal Claude source-path templates used before
|
||||
// runtime-specific install rewrites; this test is only for deployed Cline payload leaks.
|
||||
if (entry.name === 'runtime-artifact-conversion.cjs') continue;
|
||||
const content = fs.readFileSync(fullPath, 'utf8');
|
||||
// Check for GSD install paths that should have been substituted.
|
||||
// profile-pipeline.cjs intentionally references ~/.claude/projects (Claude Code
|
||||
|
||||
@@ -29,7 +29,7 @@ describe('getDirName (relocated to runtime-name-policy)', () => {
|
||||
codex: '.codex',
|
||||
antigravity: '.agents',
|
||||
cursor: '.cursor',
|
||||
windsurf: '.devin',
|
||||
windsurf: '.windsurf',
|
||||
augment: '.augment',
|
||||
trae: '.trae',
|
||||
qwen: '.qwen',
|
||||
|
||||
@@ -48,7 +48,6 @@ const FLAT = [
|
||||
{ runtime: 'cursor', scope: 'global', skillsSub: 'skills' },
|
||||
{ runtime: 'codex', scope: 'global', skillsSub: 'skills' },
|
||||
{ runtime: 'copilot', scope: 'global', skillsSub: 'skills' },
|
||||
{ runtime: 'windsurf', scope: 'global', skillsSub: 'skills' },
|
||||
{ runtime: 'codebuddy', scope: 'global', skillsSub: 'skills' },
|
||||
{ runtime: 'opencode', scope: 'global', skillsSub: 'skills' },
|
||||
{ runtime: 'kilo', scope: 'global', skillsSub: 'skills' },
|
||||
|
||||
@@ -39,7 +39,7 @@ const RUNTIME_INSTALL_CONTRACTS = {
|
||||
opencode: { surface: 'flat-command', settings: true, packageJson: true },
|
||||
qwen: { surface: 'flat-skills', settings: true, packageJson: true },
|
||||
trae: { surface: 'flat-skills', settings: false, packageJson: false },
|
||||
windsurf: { surface: 'flat-skills', settings: false, packageJson: false },
|
||||
windsurf: { surface: 'global-artifacts-noop', settings: false, packageJson: false },
|
||||
};
|
||||
|
||||
function sha256(content) {
|
||||
@@ -261,9 +261,20 @@ function assertFreshInstallContract(runtime, targetDir) {
|
||||
/GSD workflows live in `gsd-core\/workflows\/`/,
|
||||
'Cline should install .clinerules/gsd.md guidance'
|
||||
);
|
||||
} else if (contract.surface === 'global-artifacts-noop') {
|
||||
assert.equal(
|
||||
fs.existsSync(path.join(targetDir, 'skills')),
|
||||
false,
|
||||
`${runtime} should not install unsupported global skills artifacts`
|
||||
);
|
||||
assert.equal(
|
||||
fs.existsSync(path.join(targetDir, 'workflows')),
|
||||
false,
|
||||
`${runtime} should not install unsupported global workflow artifacts`
|
||||
);
|
||||
}
|
||||
|
||||
if (contract.surface !== 'kimi-skills-agents') {
|
||||
if (contract.surface !== 'kimi-skills-agents' && contract.surface !== 'global-artifacts-noop') {
|
||||
assert.ok(
|
||||
listDirNames(targetDir, 'agents').some((name) => name.startsWith('gsd-')),
|
||||
`${runtime} full install should install agents`
|
||||
|
||||
Reference in New Issue
Block a user