34 lines
1.8 KiB
JavaScript
34 lines
1.8 KiB
JavaScript
import { mkdir, mkdtemp, writeFile } from 'node:fs/promises';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import sharp from 'sharp';
|
|
|
|
// Builds a small content directory in /tmp so the tests don't depend on the real content.
|
|
export async function createFixture() {
|
|
const dir = await mkdtemp(path.join(os.tmpdir(), 'site-content-'));
|
|
const write = async (file, text) => {
|
|
await mkdir(path.dirname(path.join(dir, file)), { recursive: true });
|
|
await writeFile(path.join(dir, file), text);
|
|
};
|
|
|
|
await write('site.yml', 'name: Test\npronouns:\n de: alle Pronomen\n en: any pronouns\nemail: test@example.org\n');
|
|
await write('home.yml', 'lead:\n de: Hallo\n en: Hello\nareas:\n - visual: homelab\n title: Homelab\n link: homelab\n');
|
|
await write('journey.yml', 'entries:\n - title: Live\n from: 2024\n - title: Hidden\n from: 2023\n draft: true\n');
|
|
await write('homelab.yml', 'draft: true\nservices:\n - group: Web\n items:\n - name: nginx\n');
|
|
await write('pages/journey.de.md', '---\ntitle: Werdegang\n---\nÜber mich');
|
|
|
|
await write('projects/alpha/meta.yml', 'date: 2026-05\ntags: [web]\nfeatured: true\ncover: cover.png\nvideo: https://youtu.be/dQw4w9WgXcQ\n');
|
|
await write('projects/alpha/de.md', '---\ntitle: Alpha\nsummary: Erstes Projekt\n---\nText mit Bild\n\n\n');
|
|
await sharp({ create: { width: 1200, height: 750, channels: 3, background: '#c011d7' } })
|
|
.png()
|
|
.toFile(path.join(dir, 'projects/alpha/cover.png'));
|
|
|
|
await write('projects/beta/meta.yml', 'date: 2026-04\ntags: [video]\ndraft: true\n');
|
|
await write('projects/beta/en.md', '---\ntitle: Beta\n---\nDraft');
|
|
|
|
await write('projects/broken/meta.yml', 'tags: [oops\n');
|
|
await write('projects/broken/de.md', '---\ntitle: Kaputt\n---\n');
|
|
|
|
return dir;
|
|
}
|