mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-12 21:23:02 +00:00
* PSD write recipes: keep every exported candidate and pin the base file A case that failed after export dropped out of manifest.json, losing the file a reference-editor check most needs. The CLI also reopened the corpus path after the hash was taken. - Keep the candidate and its hash once export succeeds. - Run the CLI on a copy of the hashed bytes, so it never opens the corpus. - Compare numbers by value, so 17 equals 17.0. - tracking-split also checks runs 0 and 2 and all three run lengths. Part of #6130. * PSD write recipes: compare large integers exactly, reject case-only id clashes Converting to f64 made 9007199254740993 equal 9007199254740992. Ids that differ only by letter case name one output directory on a case-insensitive filesystem, so they are now rejected as duplicates. * PSD write recipes: test that the CLI receives the hashed bytes * PSD write recipes: reject the contour library commands Their path param can read or write any file, including the pinned base and the corpus, and they edit no document.
195 lines
4.3 KiB
JSON
195 lines
4.3 KiB
JSON
{
|
|
"version": 1,
|
|
"corpus_revision": "f5b1178cab15309e05b7b504545df3c701f6d8fd",
|
|
"cases": [
|
|
{
|
|
"id": "control-1",
|
|
"base": "text/antialias-none.psd",
|
|
"base_sha256": "8d03faba9e0c0bf8b416669eababff8060bd2601c89932769088401da241f62c",
|
|
"target": {
|
|
"kind": "Type"
|
|
},
|
|
"checks": [
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/text"
|
|
},
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/antialias"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "control-2",
|
|
"base": "text/paragraph-justify-left.psd",
|
|
"base_sha256": "15f2e504f7c06bcc6df4ec1e17215babf300230af5575e18221705c86da383c0",
|
|
"target": {
|
|
"kind": "Type"
|
|
},
|
|
"checks": [
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/text"
|
|
},
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/antialias"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "control-3",
|
|
"base": "text/tracking-plus200.psd",
|
|
"base_sha256": "110e0c73f1dba131eaae97ac828001f347e957a2a0e4b81eb9b146af3c211829",
|
|
"target": {
|
|
"kind": "Type"
|
|
},
|
|
"checks": [
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/text"
|
|
},
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/antialias"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "text-antialias-crisp",
|
|
"base": "text/antialias-none.psd",
|
|
"base_sha256": "8d03faba9e0c0bf8b416669eababff8060bd2601c89932769088401da241f62c",
|
|
"target": {
|
|
"kind": "Type"
|
|
},
|
|
"commands": [
|
|
{
|
|
"command": "type.antiAlias.crisp",
|
|
"params": {}
|
|
}
|
|
],
|
|
"checks": [
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/text"
|
|
},
|
|
{
|
|
"op": "changed_to",
|
|
"path": "/text/antialias",
|
|
"value": "Crisp"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "paragraph-justify-all",
|
|
"base": "text/paragraph-justify-left.psd",
|
|
"base_sha256": "15f2e504f7c06bcc6df4ec1e17215babf300230af5575e18221705c86da383c0",
|
|
"target": {
|
|
"kind": "Type"
|
|
},
|
|
"commands": [
|
|
{
|
|
"command": "type.setStyle",
|
|
"params": {
|
|
"align": "justifyAll"
|
|
}
|
|
}
|
|
],
|
|
"checks": [
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/text"
|
|
},
|
|
{
|
|
"op": "changed_to",
|
|
"path": "/text/paragraphs/0/style/align",
|
|
"value": "JustifyAll"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "tracking-split",
|
|
"base": "text/tracking-plus200.psd",
|
|
"base_sha256": "110e0c73f1dba131eaae97ac828001f347e957a2a0e4b81eb9b146af3c211829",
|
|
"target": {
|
|
"kind": "Type"
|
|
},
|
|
"commands": [
|
|
{
|
|
"command": "type.setStyle",
|
|
"params": {
|
|
"range": [
|
|
1,
|
|
3
|
|
],
|
|
"tracking": -60
|
|
}
|
|
}
|
|
],
|
|
"checks": [
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/text"
|
|
},
|
|
{
|
|
"op": "changed_to",
|
|
"path": "/text/runs/1/style/tracking",
|
|
"value": -60.0
|
|
},
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/runs/0/style/tracking"
|
|
},
|
|
{
|
|
"op": "equals",
|
|
"path": "/text/runs/2/style/tracking",
|
|
"value": 200.0
|
|
},
|
|
{
|
|
"op": "equals",
|
|
"path": "/text/runs/0/len",
|
|
"value": 1
|
|
},
|
|
{
|
|
"op": "equals",
|
|
"path": "/text/runs/1/len",
|
|
"value": 2
|
|
},
|
|
{
|
|
"op": "equals",
|
|
"path": "/text/runs/2/len",
|
|
"value": 5
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "text-drop-shadow",
|
|
"base": "text/antialias-none.psd",
|
|
"base_sha256": "8d03faba9e0c0bf8b416669eababff8060bd2601c89932769088401da241f62c",
|
|
"target": {
|
|
"kind": "Type"
|
|
},
|
|
"commands": [
|
|
{
|
|
"command": "layer.layerStyle.dropShadow",
|
|
"params": {
|
|
"distance": 17
|
|
}
|
|
}
|
|
],
|
|
"checks": [
|
|
{
|
|
"op": "unchanged",
|
|
"path": "/text/text"
|
|
},
|
|
{
|
|
"op": "changed_to",
|
|
"path": "/effects/data/0/DropShadow/distance",
|
|
"value": 17.0
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|