# test.build/core/persistence/asset.fixture.ts

> 30 lines of code and 6 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-build-core-persistence-asset-fixture-ts
Source text: https://banes-lab.com/source/testing/test.build/core/persistence/asset.fixture.ts.txt

Listed in [test.build/core/persistence](https://banes-lab.com/api/source/testing/test.build/core/persistence.md), before [test.build/core/persistence/asset.persistence.test.ts](https://banes-lab.com/source/testing/test.build/core/persistence/asset.persistence.test.ts.md).

## Definitions

- `PREFIX` (lexical_declaration, line 6)
- `FILES` (lexical_declaration, line 8)
- `UNREFERENCED` (lexical_declaration, line 24, exported)
- `builtOutput` (lexical_declaration, line 26, exported)
- `outDir` (lexical_declaration, line 27, exported)
- `target` (lexical_declaration, line 29, exported)

## Contained in

- [test.build/core/persistence](https://banes-lab.com/anatomy/testing/folder-testing-test-build-core-persistence.md)

## Source

```typescript
import { mkdirSync, mkdtempSync } from "node:fs";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";

const PREFIX = "govlab-prune-";

const FILES: readonly (readonly [string, string])[] = [
    ["index.html", '<script src="/assets/app.js"></script><img src="/assets/hero.png">'],
    ["assets/app.js", 'fetch("/assets/data/index.json");import("./page.js");import("../json/home.json")'],
    ["assets/app.js.gz", ""],
    ["assets/page.js", 'import{a}from"./shared.js"'],
    ["assets/shared.js", "export const a = 1;"],
    ["assets/stale.js", "export const b = 2;"],
    ["assets/data/index.json", '{"url":"/assets/data/files/one.txt"}'],
    ["assets/data/files/one.txt", "one"],
    ["assets/data/files/two.txt", "two"],
    ["assets/hero.png", "png"],
    ["assets/orphan.mp4", "mp4"],
    ["json/home.json", "{}"],
    ["robots.txt", "User-agent: *"],
];

export const UNREFERENCED: readonly string[] = ["assets/data/files/two.txt", "assets/orphan.mp4", "assets/stale.js"];

export const builtOutput = function builtOutput(): string {
    const outDir = mkdtempSync(join(tmpdir(), PREFIX));
    for (const [path, content] of FILES) {
        const target = join(outDir, ...path.split("/"));
        mkdirSync(join(target, ".."), { recursive: true });
        writeVerbatim(target, content);
    }
    return outDir;
};
```
