Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion scripts/bench/subset.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ const text = fs.readFileSync(src, "utf8");
const lines = text.split("\n");

// 前缀块原样保留:切掉它文件就解析不了
const prefixEnd = lines.findIndex((l) => l.startsWith("@prefix") === false && l.trim() && !l.startsWith("#"));
const firstStatement = lines.findIndex((l) => l.startsWith("@prefix") === false && l.trim() && !l.startsWith("#"));
const prefixEnd = firstStatement < 0 ? lines.length : firstStatement;
const prefixes = lines.slice(0, prefixEnd).join("\n");

// 按空行分块,但**必须知道自己在不在三引号字符串里**。
Expand Down
17 changes: 17 additions & 0 deletions scripts/bench/subset.subset-prefix-only.test.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import test from "node:test";
import assert from "node:assert/strict";
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { spawnSync } from "node:child_process";
const script = new URL("./subset.mjs", import.meta.url);
function subset(text, n) {
const dir=fs.mkdtempSync(path.join(os.tmpdir(), "utopia-subset-"));
try { const src=path.join(dir,"schema.ttl"); fs.writeFileSync(src,text); return spawnSync(process.execPath,[script.pathname,src,n],{encoding:"utf8"}); }
finally {fs.rmSync(dir,{recursive:true,force:true});}
}
test("prefix-only ontology retains its final declaration",()=>{
const text="@prefix schema: <https://schema.org/> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .";
const r=subset(text,"1"); assert.equal(r.status,0,r.stderr); assert.ok(r.stdout.includes(text),r.stdout);
});
test("empty source remains valid",()=>assert.equal(subset("","1").status,0));
Loading