{"path":"tests/detect.test.js","size":1859,"locked":false,"binary":false,"truncated":false,"content":"import { test } from 'node:test';\nimport assert from 'node:assert/strict';\nimport { mkdtempSync, writeFileSync, rmSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { join } from 'node:path';\nimport { detectFramework } from '../lib/detect.js';\n\nfunction makeProject(deps) {\n  const dir = mkdtempSync(join(tmpdir(), 'anchr-test-'));\n  writeFileSync(join(dir, 'package.json'), JSON.stringify({ dependencies: deps }, null, 2));\n  return dir;\n}\n\ntest('detects vite projects', () => {\n  const dir = makeProject({ vite: '^5.0.0' });\n  const result = detectFramework(dir);\n  assert.equal(result.framework, 'vite');\n  assert.equal(result.outputDir, 'dist');\n  rmSync(dir, { recursive: true, force: true });\n});\n\ntest('detects next.js projects and flags static export requirement', () => {\n  const dir = makeProject({ next: '^14.0.0' });\n  const result = detectFramework(dir);\n  assert.equal(result.framework, 'next');\n  assert.equal(result.outputDir, 'out');\n  assert.ok(result.note, 'expected a note about output: \"export\"');\n  rmSync(dir, { recursive: true, force: true });\n});\n\ntest('detects create-react-app projects', () => {\n  const dir = makeProject({ 'react-scripts': '^5.0.0' });\n  const result = detectFramework(dir);\n  assert.equal(result.framework, 'cra');\n  assert.equal(result.outputDir, 'build');\n  rmSync(dir, { recursive: true, force: true });\n});\n\ntest('throws on unsupported framework', () => {\n  const dir = makeProject({ 'some-other-framework': '^1.0.0' });\n  assert.throws(() => detectFramework(dir), /Could not detect a supported framework/);\n  rmSync(dir, { recursive: true, force: true });\n});\n\ntest('throws when no package.json exists', () => {\n  const dir = mkdtempSync(join(tmpdir(), 'anchr-empty-'));\n  assert.throws(() => detectFramework(dir), /No package\\.json found/);\n  rmSync(dir, { recursive: true, force: true });\n});\n"}