aimusic / ComfyUI /custom_nodes /koolook /tests /sidebar /test_snapshot_diff.py
vidfom's picture
Upload folder using huggingface_hub (part 8)
0c85e62 verified
Raw
History Blame Contribute Delete
3.43 kB
from __future__ import annotations
import subprocess
import textwrap
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[2]
def run_node_scenario(source: str) -> subprocess.CompletedProcess[str]:
return subprocess.run(
["node", "--input-type=module"],
input=source,
cwd=REPO_ROOT,
text=True,
capture_output=True,
check=False,
)
def test_diff_picks_partitions_working_comparison_and_shared() -> None:
proc = run_node_scenario(
textwrap.dedent(
"""
import assert from "node:assert/strict";
import { diffPicks } from "./web/sidebar/snapshot_diff.js";
const r = diffPicks(["x", "y"], ["y", "z"]);
assert.deepEqual(r.onlyWorking, ["x"]);
assert.deepEqual(r.onlyComparison, ["z"]);
assert.deepEqual(r.shared, ["y"]);
"""
)
)
assert proc.returncode == 0, proc.stderr
def test_diff_workflows_classifies_comparison_workflows_by_presence() -> None:
proc = run_node_scenario(
textwrap.dedent(
"""
import assert from "node:assert/strict";
import { diffWorkflows } from "./web/sidebar/snapshot_diff.js";
const working = {
directories: {
Basics: { workflows: { txt2img: { graph: { a: 1 } } }, directories: {} },
},
};
const comparison = {
directories: {
Basics: {
workflows: {
txt2img: { graph: { a: 1 } },
img2img: { graph: { b: 2 } },
},
directories: {},
},
},
};
const status = diffWorkflows(working, comparison);
// present only in the comparison -> green/new
assert.equal(status["Basics/img2img"], "new");
// present in both, identical graph -> plain/same
assert.equal(status["Basics/txt2img"], "same");
"""
)
)
assert proc.returncode == 0, proc.stderr
def test_diff_workflows_compares_graph_ignoring_saved_at_and_key_order() -> None:
proc = run_node_scenario(
textwrap.dedent(
"""
import assert from "node:assert/strict";
import { diffWorkflows } from "./web/sidebar/snapshot_diff.js";
const working = { directories: { D: { workflows: {
changed: { graph: { nodes: [1, 2] }, savedAt: "2026-01-01T00:00:00Z" },
unchanged: { graph: { a: 1, b: 2 }, savedAt: "2026-01-01T00:00:00Z" },
}, directories: {} } } };
const comparison = { directories: { D: { workflows: {
changed: { graph: { nodes: [1, 2, 3] }, savedAt: "2026-05-29T00:00:00Z" },
unchanged: { graph: { b: 2, a: 1 }, savedAt: "2026-05-29T12:34:56Z" },
}, directories: {} } } };
const status = diffWorkflows(working, comparison);
// graph content differs -> red/diff
assert.equal(status["D/changed"], "diff");
// only savedAt + key order differ -> plain/same (savedAt is volatile)
assert.equal(status["D/unchanged"], "same");
"""
)
)
assert proc.returncode == 0, proc.stderr