@hydranium/conformance 1.0.0-next.271 → 1.0.0-next.273
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/data/index.d.ts +7 -6
- package/lib/data/index.d.ts.map +1 -1
- package/lib/data/index.js +116 -9
- package/lib/data/index.js.map +1 -1
- package/package.json +3 -3
- package/src/data/index.ts +142 -13
package/lib/data/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
import { type TransferDiagnostic, type TransferElement } from '@hydranium/protocol';
|
|
10
|
-
import type { DataServerProtocol, ReferenceServerProtocol, TransferDocumentsBuiltEvent, TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
|
|
10
|
+
import type { DataServerProtocol, ReferenceServerProtocol, TransferDocumentDeletedEvent, TransferDocumentsBuiltEvent, TransferDocumentUpdatedEvent } from '@hydranium/protocol/data';
|
|
11
11
|
import { type Harness } from '@hydranium/protocol/testing';
|
|
12
12
|
import type { ConformanceCheck } from '../conformance-suite.js';
|
|
13
13
|
import { type LanguageFixture } from '../model.js';
|
|
@@ -16,8 +16,8 @@ import { type LanguageFixture } from '../model.js';
|
|
|
16
16
|
* through its protocol-native proxy plus the captured client-side
|
|
17
17
|
* notifications. The kit names only `@hydranium/protocol` types, so a
|
|
18
18
|
* `DataServerHarness` satisfies the port structurally (it has `proxy` +
|
|
19
|
-
* `events`, `builds` and `dispose`) with NO adapter.
|
|
20
|
-
* universal `dispose()` teardown.
|
|
19
|
+
* `events`, `builds`, `deletions` and `dispose`) with NO adapter.
|
|
20
|
+
* `extends Harness` gives the kit the universal `dispose()` teardown.
|
|
21
21
|
*
|
|
22
22
|
* The kit seeds documents purely through the proxy, as client sessions: it
|
|
23
23
|
* registers one with `createSession`, opens the document, or creates it with
|
|
@@ -32,6 +32,8 @@ export interface DataConformanceDriver<TTransfer extends TransferElement, TDiagn
|
|
|
32
32
|
readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
|
|
33
33
|
/** Captured `onDocumentsBuilt` events, append order — the cascade check's observation target. */
|
|
34
34
|
readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
|
|
35
|
+
/** Captured `onDocumentDeleted` events, append order. */
|
|
36
|
+
readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
|
|
35
37
|
/**
|
|
36
38
|
* The opt-in reference surface, when the head serves it.
|
|
37
39
|
*
|
|
@@ -50,9 +52,8 @@ export interface DataConformanceOptions<TTransfer extends TransferElement, TDiag
|
|
|
50
52
|
* adopter must initialise the workspace before returning, so `waitForReady`
|
|
51
53
|
* resolves rather than hanging.
|
|
52
54
|
*
|
|
53
|
-
* Some checks save documents beside each fixture's `valid`,
|
|
54
|
-
*
|
|
55
|
-
* write to and throw away.
|
|
55
|
+
* Some checks save and delete documents beside each fixture's `valid`, so
|
|
56
|
+
* give each check a workspace the kit may write to and throw away.
|
|
56
57
|
*/
|
|
57
58
|
readonly connect: () => DataConformanceDriver<TTransfer, TDiagnostic> | Promise<DataConformanceDriver<TTransfer, TDiagnostic>>;
|
|
58
59
|
/** Per-language fixtures; the grammar-bearing checks run once per language. */
|
package/lib/data/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAWlF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAWlF,OAAO,EAaJ,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACT,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAAW,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAiC,MAAM,aAAa,CAAC;AAElF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB,CACnC,SAAS,SAAS,eAAe,EACjC,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,CAC5D,SAAQ,OAAO;IACd,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3D,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IACrF,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC5D,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAChE;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,uBAAuB,CAAC;CAChD;AAED,wCAAwC;AACxC,MAAM,WAAW,sBAAsB,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,SAAS,kBAAkB,GAAG,kBAAkB;IACnI;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/H,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACnD;;;;;;;;;OASG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CACf,MAAM,EAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,KACnD,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5G,iEAAiE;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC/B;AA6HD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,SAAS,eAAe,EAAE,WAAW,SAAS,kBAAkB,GAAG,kBAAkB,EAC3H,OAAO,EAAE,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,GACvD,gBAAgB,EAAE,CAmkCpB"}
|
package/lib/data/index.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* the port structurally with no adapter.
|
|
15
15
|
*/
|
|
16
16
|
import assert from 'node:assert/strict';
|
|
17
|
-
import { asModelVersion, FRAMEWORK_CLIENT_IDS, isConflictError, isDocumentNotOpenError, isDuplicateClientIdError, isReservedClientIdError, isSessionClosedError, ReferenceSource, SyntheticStep, SystemClock, TransferDocument, UNKNOWN_CLIENT_ID } from '@hydranium/protocol';
|
|
17
|
+
import { asModelVersion, FRAMEWORK_CLIENT_IDS, isConflictError, isDocumentNotOpenError, isDuplicateClientIdError, isReservedClientIdError, isSessionClosedError, randomUuid, ReferenceSource, SyntheticStep, SystemClock, TransferDocument, UNKNOWN_CLIENT_ID } from '@hydranium/protocol';
|
|
18
18
|
import { waitFor } from '@hydranium/protocol/testing';
|
|
19
19
|
import { resolveDeferred, resolveModel } from '../model.js';
|
|
20
20
|
/** Client id the kit subscribes under; a watch needs no session. */
|
|
@@ -25,7 +25,7 @@ const SUBSCRIBER = 'conformance-subscriber';
|
|
|
25
25
|
* earlier check failed before ending its session.
|
|
26
26
|
*/
|
|
27
27
|
function sessionId(label = 'conformance-session') {
|
|
28
|
-
return `${label}#${
|
|
28
|
+
return `${label}#${randomUuid()}`;
|
|
29
29
|
}
|
|
30
30
|
/** Register a session under a fresh id labelled `label`, and answer the id. */
|
|
31
31
|
async function startSession(driver, label) {
|
|
@@ -433,7 +433,7 @@ export function buildDataChecks(options) {
|
|
|
433
433
|
const model = resolveModel(valid);
|
|
434
434
|
await seed(driver, model);
|
|
435
435
|
const clientId = await startSession(driver, 'conformance-session');
|
|
436
|
-
const createdUri = siblingOf(model.uri,
|
|
436
|
+
const createdUri = siblingOf(model.uri, `conformance-created-${randomUuid()}-`);
|
|
437
437
|
const created = await driver.proxy.createModelDocument({ uri: createdUri, clientId, text: model.text });
|
|
438
438
|
const { model: createdModel } = TransferDocument.assertLoaded(created);
|
|
439
439
|
// Written without an open: only the create can have opened it.
|
|
@@ -480,7 +480,7 @@ export function buildDataChecks(options) {
|
|
|
480
480
|
const driver = await connect();
|
|
481
481
|
try {
|
|
482
482
|
const model = resolveModel(valid);
|
|
483
|
-
const uri = siblingOf(model.uri,
|
|
483
|
+
const uri = siblingOf(model.uri, `conformance-unsaved-${randomUuid()}-`);
|
|
484
484
|
const clientId = await startSession(driver, 'conformance-session');
|
|
485
485
|
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
486
486
|
// Served before the close, so an envelope without a model after
|
|
@@ -498,6 +498,113 @@ export function buildDataChecks(options) {
|
|
|
498
498
|
}
|
|
499
499
|
}
|
|
500
500
|
});
|
|
501
|
+
checks.push({
|
|
502
|
+
title: `deleting a saved document removes it ${tag}`,
|
|
503
|
+
body: async () => {
|
|
504
|
+
const driver = await connect();
|
|
505
|
+
try {
|
|
506
|
+
const model = resolveModel(valid);
|
|
507
|
+
const uri = siblingOf(model.uri, `conformance-deleted-${randomUuid()}-`);
|
|
508
|
+
const clientId = await startSession(driver, 'conformance-session');
|
|
509
|
+
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
510
|
+
const saved = await driver.proxy.saveModelDocument({ uri, clientId, model: model.text, baseVersion: 'any' });
|
|
511
|
+
await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(saved).model.version });
|
|
512
|
+
// Once the delete answers, with no wait: the protocol answers a
|
|
513
|
+
// URI with no document with an envelope that has no model.
|
|
514
|
+
const read = await driver.proxy.getModelDocument({ uri });
|
|
515
|
+
assert.ok(!TransferDocument.isLoaded(read), `${uri} was still served with a model after its delete answered`);
|
|
516
|
+
await driver.proxy.closeSession({ clientId });
|
|
517
|
+
}
|
|
518
|
+
finally {
|
|
519
|
+
driver.dispose();
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
checks.push({
|
|
524
|
+
title: `a delete on a stale base version conflicts and deletes nothing ${tag}`,
|
|
525
|
+
body: async () => {
|
|
526
|
+
const driver = await connect();
|
|
527
|
+
try {
|
|
528
|
+
const model = resolveModel(valid);
|
|
529
|
+
const uri = siblingOf(model.uri, `conformance-kept-${randomUuid()}-`);
|
|
530
|
+
const clientId = await startSession(driver, 'conformance-session');
|
|
531
|
+
const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
532
|
+
await driver.proxy.updateModelDocument({ uri, clientId, model: `${model.text}\n`, baseVersion: 'any' });
|
|
533
|
+
const stale = await rejectionOf(driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(created).model.version }));
|
|
534
|
+
assert.ok(isConflictError(stale), `deleting ${uri} on a stale base version did not conflict: ${String(stale)}`);
|
|
535
|
+
TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri }));
|
|
536
|
+
await driver.proxy.closeSession({ clientId });
|
|
537
|
+
}
|
|
538
|
+
finally {
|
|
539
|
+
driver.dispose();
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
});
|
|
543
|
+
checks.push({
|
|
544
|
+
title: `a session deletes only a document it has open ${tag}`,
|
|
545
|
+
body: async () => {
|
|
546
|
+
const driver = await connect();
|
|
547
|
+
try {
|
|
548
|
+
const model = resolveModel(valid);
|
|
549
|
+
const seeder = await seed(driver, model);
|
|
550
|
+
const stranger = await startSession(driver, 'conformance-stranger');
|
|
551
|
+
const refusal = await rejectionOf(driver.proxy.deleteModelDocument({ uri: model.uri, clientId: stranger, baseVersion: 'any' }));
|
|
552
|
+
assert.ok(isDocumentNotOpenError(refusal), `a delete without an open did not fail as not open: ${String(refusal)}`);
|
|
553
|
+
TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri: model.uri }));
|
|
554
|
+
await driver.proxy.closeSession({ clientId: stranger });
|
|
555
|
+
await driver.proxy.closeSession({ clientId: seeder });
|
|
556
|
+
}
|
|
557
|
+
finally {
|
|
558
|
+
driver.dispose();
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
checks.push({
|
|
563
|
+
title: `a delete closes another session's open and names the deleting session ${tag}`,
|
|
564
|
+
body: async () => {
|
|
565
|
+
const driver = await connect();
|
|
566
|
+
try {
|
|
567
|
+
const model = resolveModel(valid);
|
|
568
|
+
const uri = siblingOf(model.uri, `conformance-shared-${randomUuid()}-`);
|
|
569
|
+
const deleter = await startSession(driver, 'conformance-deleter');
|
|
570
|
+
await driver.proxy.createModelDocument({ uri, clientId: deleter, text: model.text });
|
|
571
|
+
await driver.proxy.saveModelDocument({ uri, clientId: deleter, model: model.text, baseVersion: 'any' });
|
|
572
|
+
const other = await openAs(driver, uri, 'conformance-other');
|
|
573
|
+
await driver.proxy.deleteModelDocument({ uri, clientId: deleter, baseVersion: 'any' });
|
|
574
|
+
const write = await rejectionOf(driver.proxy.updateModelDocument({ uri, clientId: other, model: model.text, baseVersion: 'any' }));
|
|
575
|
+
assert.ok(isDocumentNotOpenError(write), `another session's open of ${uri} survived its delete: ${String(write)}`);
|
|
576
|
+
await waitFor(() => driver.deletions.some(event => event.uri === uri), {
|
|
577
|
+
message: `no onDocumentDeleted event for ${uri} after its delete`
|
|
578
|
+
});
|
|
579
|
+
const told = driver.deletions.filter(event => event.uri === uri).map(event => event.sourceClientId);
|
|
580
|
+
assert.deepStrictEqual(told, [deleter], `the deletion of ${uri} named ${told.join(', ')}, not the deleting session`);
|
|
581
|
+
await driver.proxy.closeSession({ clientId: other });
|
|
582
|
+
await driver.proxy.closeSession({ clientId: deleter });
|
|
583
|
+
}
|
|
584
|
+
finally {
|
|
585
|
+
driver.dispose();
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
});
|
|
589
|
+
checks.push({
|
|
590
|
+
title: `a delete removes a created document never saved ${tag}`,
|
|
591
|
+
body: async () => {
|
|
592
|
+
const driver = await connect();
|
|
593
|
+
try {
|
|
594
|
+
const model = resolveModel(valid);
|
|
595
|
+
const uri = siblingOf(model.uri, `conformance-unsaved-deleted-${randomUuid()}-`);
|
|
596
|
+
const clientId = await startSession(driver, 'conformance-session');
|
|
597
|
+
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
598
|
+
await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: 'any' });
|
|
599
|
+
const read = await driver.proxy.getModelDocument({ uri });
|
|
600
|
+
assert.ok(!TransferDocument.isLoaded(read), `${uri}, created and never saved, was still served with a model after its delete`);
|
|
601
|
+
await driver.proxy.closeSession({ clientId });
|
|
602
|
+
}
|
|
603
|
+
finally {
|
|
604
|
+
driver.dispose();
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
});
|
|
501
608
|
checks.push({
|
|
502
609
|
title: `a document is dirty while its text differs from its file, and clean once saved ${tag}`,
|
|
503
610
|
body: async () => {
|
|
@@ -506,7 +613,7 @@ export function buildDataChecks(options) {
|
|
|
506
613
|
const model = resolveModel(valid);
|
|
507
614
|
// Only `dirty` is asserted, so any second text serves.
|
|
508
615
|
const unsaved = resolveDeferred(invalid.text);
|
|
509
|
-
const uri = siblingOf(model.uri, `conformance-saved-${
|
|
616
|
+
const uri = siblingOf(model.uri, `conformance-saved-${randomUuid()}-`);
|
|
510
617
|
const clientId = await startSession(driver, 'conformance-session');
|
|
511
618
|
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
512
619
|
const saved = await driver.proxy.saveModelDocument({ uri, clientId, model: model.text, baseVersion: 'any' });
|
|
@@ -532,7 +639,7 @@ export function buildDataChecks(options) {
|
|
|
532
639
|
// Trailing blank lines no serialiser writes, so a head that
|
|
533
640
|
// persists a re-serialised model rather than the text shows.
|
|
534
641
|
const held = `${model.text}\n\n`;
|
|
535
|
-
const uri = siblingOf(model.uri, `conformance-persisted-${
|
|
642
|
+
const uri = siblingOf(model.uri, `conformance-persisted-${randomUuid()}-`);
|
|
536
643
|
const writer = await startSession(driver, 'conformance-writer');
|
|
537
644
|
const created = await driver.proxy.createModelDocument({ uri, clientId: writer, text: model.text });
|
|
538
645
|
const written = await driver.proxy.updateModelDocument({ uri, clientId: writer, model: held, baseVersion: 'any' });
|
|
@@ -570,7 +677,7 @@ export function buildDataChecks(options) {
|
|
|
570
677
|
const model = resolveModel(valid);
|
|
571
678
|
// Only the text is compared, so any second text serves.
|
|
572
679
|
const other = resolveDeferred(invalid.text);
|
|
573
|
-
const uri = siblingOf(model.uri, `conformance-hashed-${
|
|
680
|
+
const uri = siblingOf(model.uri, `conformance-hashed-${randomUuid()}-`);
|
|
574
681
|
const clientId = await startSession(driver, 'conformance-session');
|
|
575
682
|
const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
576
683
|
const edited = await driver.proxy.updateModelDocument({ uri, clientId, model: other, baseVersion: 'any' });
|
|
@@ -583,7 +690,7 @@ export function buildDataChecks(options) {
|
|
|
583
690
|
const read = await driver.proxy.getModelDocument({ uri });
|
|
584
691
|
assert.strictEqual(read.text?.hash, restored.text?.hash, `a read of ${uri} hashed its text as ${String(read.text?.hash)}`);
|
|
585
692
|
const absent = await driver.proxy.getModelDocument({
|
|
586
|
-
uri: siblingOf(model.uri, `conformance-absent-${
|
|
693
|
+
uri: siblingOf(model.uri, `conformance-absent-${randomUuid()}-`)
|
|
587
694
|
});
|
|
588
695
|
assert.strictEqual(absent.text, undefined, `an envelope with no document carried text ${JSON.stringify(absent.text)}`);
|
|
589
696
|
await driver.proxy.closeSession({ clientId });
|
|
@@ -729,7 +836,7 @@ export function buildDataChecks(options) {
|
|
|
729
836
|
try {
|
|
730
837
|
const model = resolveModel(valid);
|
|
731
838
|
const edited = resolveDeferred(edit.to);
|
|
732
|
-
const uri = siblingOf(model.uri, `conformance-reverted-${
|
|
839
|
+
const uri = siblingOf(model.uri, `conformance-reverted-${randomUuid()}-`);
|
|
733
840
|
const writer = await startSession(driver, 'conformance-writer');
|
|
734
841
|
// Created with the edit, so that going back to the created
|
|
735
842
|
// text instead of the saved one shows.
|
package/lib/data/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydranium/conformance",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.273",
|
|
4
4
|
"description": "Protocol conformance kit (TCK) for hydranium adopters. Per-head slices (/data, /lsp, /glsp) of fixture-parameterized, protocol-only smoke checks an adopter runs against its own server.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"conformance",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"watch": "tsc -b -w --preserveWatchOutput"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
78
|
+
"@hydranium/protocol": "1.0.0-next.273",
|
|
79
79
|
"@jest/globals": "^29.7.0",
|
|
80
80
|
"@types/jest": "^29.5.12",
|
|
81
81
|
"esbuild": "^0.28.0",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"vscode-jsonrpc": "9.0.0"
|
|
87
87
|
},
|
|
88
88
|
"peerDependencies": {
|
|
89
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
89
|
+
"@hydranium/protocol": "1.0.0-next.273",
|
|
90
90
|
"@jest/globals": "^29.0.0",
|
|
91
91
|
"vitest": "^4.0.0",
|
|
92
92
|
"vscode-jsonrpc": "^9.0.0"
|
package/src/data/index.ts
CHANGED
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
isDuplicateClientIdError,
|
|
25
25
|
isReservedClientIdError,
|
|
26
26
|
isSessionClosedError,
|
|
27
|
+
randomUuid,
|
|
27
28
|
ReferenceSource,
|
|
28
29
|
SyntheticStep,
|
|
29
30
|
SystemClock,
|
|
@@ -35,6 +36,7 @@ import {
|
|
|
35
36
|
import type {
|
|
36
37
|
DataServerProtocol,
|
|
37
38
|
ReferenceServerProtocol,
|
|
39
|
+
TransferDocumentDeletedEvent,
|
|
38
40
|
TransferDocumentsBuiltEvent,
|
|
39
41
|
TransferDocumentUpdatedEvent
|
|
40
42
|
} from '@hydranium/protocol/data';
|
|
@@ -47,8 +49,8 @@ import { type LanguageFixture, resolveDeferred, resolveModel } from '../model.js
|
|
|
47
49
|
* through its protocol-native proxy plus the captured client-side
|
|
48
50
|
* notifications. The kit names only `@hydranium/protocol` types, so a
|
|
49
51
|
* `DataServerHarness` satisfies the port structurally (it has `proxy` +
|
|
50
|
-
* `events`, `builds` and `dispose`) with NO adapter.
|
|
51
|
-
* universal `dispose()` teardown.
|
|
52
|
+
* `events`, `builds`, `deletions` and `dispose`) with NO adapter.
|
|
53
|
+
* `extends Harness` gives the kit the universal `dispose()` teardown.
|
|
52
54
|
*
|
|
53
55
|
* The kit seeds documents purely through the proxy, as client sessions: it
|
|
54
56
|
* registers one with `createSession`, opens the document, or creates it with
|
|
@@ -66,6 +68,8 @@ export interface DataConformanceDriver<
|
|
|
66
68
|
readonly events: ReadonlyArray<TransferDocumentUpdatedEvent<TTransfer, TDiagnostic>>;
|
|
67
69
|
/** Captured `onDocumentsBuilt` events, append order — the cascade check's observation target. */
|
|
68
70
|
readonly builds: ReadonlyArray<TransferDocumentsBuiltEvent>;
|
|
71
|
+
/** Captured `onDocumentDeleted` events, append order. */
|
|
72
|
+
readonly deletions: ReadonlyArray<TransferDocumentDeletedEvent>;
|
|
69
73
|
/**
|
|
70
74
|
* The opt-in reference surface, when the head serves it.
|
|
71
75
|
*
|
|
@@ -85,9 +89,8 @@ export interface DataConformanceOptions<TTransfer extends TransferElement, TDiag
|
|
|
85
89
|
* adopter must initialise the workspace before returning, so `waitForReady`
|
|
86
90
|
* resolves rather than hanging.
|
|
87
91
|
*
|
|
88
|
-
* Some checks save documents beside each fixture's `valid`,
|
|
89
|
-
*
|
|
90
|
-
* write to and throw away.
|
|
92
|
+
* Some checks save and delete documents beside each fixture's `valid`, so
|
|
93
|
+
* give each check a workspace the kit may write to and throw away.
|
|
91
94
|
*/
|
|
92
95
|
readonly connect: () => DataConformanceDriver<TTransfer, TDiagnostic> | Promise<DataConformanceDriver<TTransfer, TDiagnostic>>;
|
|
93
96
|
/** Per-language fixtures; the grammar-bearing checks run once per language. */
|
|
@@ -125,7 +128,7 @@ const SUBSCRIBER = 'conformance-subscriber';
|
|
|
125
128
|
* earlier check failed before ending its session.
|
|
126
129
|
*/
|
|
127
130
|
function sessionId(label = 'conformance-session'): string {
|
|
128
|
-
return `${label}#${
|
|
131
|
+
return `${label}#${randomUuid()}`;
|
|
129
132
|
}
|
|
130
133
|
|
|
131
134
|
/** Register a session under a fresh id labelled `label`, and answer the id. */
|
|
@@ -606,7 +609,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
606
609
|
const model = resolveModel(valid);
|
|
607
610
|
await seed(driver, model);
|
|
608
611
|
const clientId = await startSession(driver, 'conformance-session');
|
|
609
|
-
const createdUri = siblingOf(model.uri,
|
|
612
|
+
const createdUri = siblingOf(model.uri, `conformance-created-${randomUuid()}-`);
|
|
610
613
|
|
|
611
614
|
const created = await driver.proxy.createModelDocument({ uri: createdUri, clientId, text: model.text });
|
|
612
615
|
const { model: createdModel } = TransferDocument.assertLoaded(created);
|
|
@@ -655,7 +658,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
655
658
|
const driver = await connect();
|
|
656
659
|
try {
|
|
657
660
|
const model = resolveModel(valid);
|
|
658
|
-
const uri = siblingOf(model.uri,
|
|
661
|
+
const uri = siblingOf(model.uri, `conformance-unsaved-${randomUuid()}-`);
|
|
659
662
|
const clientId = await startSession(driver, 'conformance-session');
|
|
660
663
|
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
661
664
|
// Served before the close, so an envelope without a model after
|
|
@@ -678,6 +681,132 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
678
681
|
}
|
|
679
682
|
});
|
|
680
683
|
|
|
684
|
+
checks.push({
|
|
685
|
+
title: `deleting a saved document removes it ${tag}`,
|
|
686
|
+
body: async () => {
|
|
687
|
+
const driver = await connect();
|
|
688
|
+
try {
|
|
689
|
+
const model = resolveModel(valid);
|
|
690
|
+
const uri = siblingOf(model.uri, `conformance-deleted-${randomUuid()}-`);
|
|
691
|
+
const clientId = await startSession(driver, 'conformance-session');
|
|
692
|
+
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
693
|
+
const saved = await driver.proxy.saveModelDocument({ uri, clientId, model: model.text, baseVersion: 'any' });
|
|
694
|
+
|
|
695
|
+
await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(saved).model.version });
|
|
696
|
+
|
|
697
|
+
// Once the delete answers, with no wait: the protocol answers a
|
|
698
|
+
// URI with no document with an envelope that has no model.
|
|
699
|
+
const read = await driver.proxy.getModelDocument({ uri });
|
|
700
|
+
assert.ok(!TransferDocument.isLoaded(read), `${uri} was still served with a model after its delete answered`);
|
|
701
|
+
await driver.proxy.closeSession({ clientId });
|
|
702
|
+
} finally {
|
|
703
|
+
driver.dispose();
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
});
|
|
707
|
+
|
|
708
|
+
checks.push({
|
|
709
|
+
title: `a delete on a stale base version conflicts and deletes nothing ${tag}`,
|
|
710
|
+
body: async () => {
|
|
711
|
+
const driver = await connect();
|
|
712
|
+
try {
|
|
713
|
+
const model = resolveModel(valid);
|
|
714
|
+
const uri = siblingOf(model.uri, `conformance-kept-${randomUuid()}-`);
|
|
715
|
+
const clientId = await startSession(driver, 'conformance-session');
|
|
716
|
+
const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
717
|
+
await driver.proxy.updateModelDocument({ uri, clientId, model: `${model.text}\n`, baseVersion: 'any' });
|
|
718
|
+
|
|
719
|
+
const stale = await rejectionOf(
|
|
720
|
+
driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: TransferDocument.assertLoaded(created).model.version })
|
|
721
|
+
);
|
|
722
|
+
|
|
723
|
+
assert.ok(isConflictError(stale), `deleting ${uri} on a stale base version did not conflict: ${String(stale)}`);
|
|
724
|
+
TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri }));
|
|
725
|
+
await driver.proxy.closeSession({ clientId });
|
|
726
|
+
} finally {
|
|
727
|
+
driver.dispose();
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
});
|
|
731
|
+
|
|
732
|
+
checks.push({
|
|
733
|
+
title: `a session deletes only a document it has open ${tag}`,
|
|
734
|
+
body: async () => {
|
|
735
|
+
const driver = await connect();
|
|
736
|
+
try {
|
|
737
|
+
const model = resolveModel(valid);
|
|
738
|
+
const seeder = await seed(driver, model);
|
|
739
|
+
const stranger = await startSession(driver, 'conformance-stranger');
|
|
740
|
+
|
|
741
|
+
const refusal = await rejectionOf(
|
|
742
|
+
driver.proxy.deleteModelDocument({ uri: model.uri, clientId: stranger, baseVersion: 'any' })
|
|
743
|
+
);
|
|
744
|
+
|
|
745
|
+
assert.ok(isDocumentNotOpenError(refusal), `a delete without an open did not fail as not open: ${String(refusal)}`);
|
|
746
|
+
TransferDocument.assertLoaded(await driver.proxy.getModelDocument({ uri: model.uri }));
|
|
747
|
+
await driver.proxy.closeSession({ clientId: stranger });
|
|
748
|
+
await driver.proxy.closeSession({ clientId: seeder });
|
|
749
|
+
} finally {
|
|
750
|
+
driver.dispose();
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
});
|
|
754
|
+
|
|
755
|
+
checks.push({
|
|
756
|
+
title: `a delete closes another session's open and names the deleting session ${tag}`,
|
|
757
|
+
body: async () => {
|
|
758
|
+
const driver = await connect();
|
|
759
|
+
try {
|
|
760
|
+
const model = resolveModel(valid);
|
|
761
|
+
const uri = siblingOf(model.uri, `conformance-shared-${randomUuid()}-`);
|
|
762
|
+
const deleter = await startSession(driver, 'conformance-deleter');
|
|
763
|
+
await driver.proxy.createModelDocument({ uri, clientId: deleter, text: model.text });
|
|
764
|
+
await driver.proxy.saveModelDocument({ uri, clientId: deleter, model: model.text, baseVersion: 'any' });
|
|
765
|
+
const other = await openAs(driver, uri, 'conformance-other');
|
|
766
|
+
|
|
767
|
+
await driver.proxy.deleteModelDocument({ uri, clientId: deleter, baseVersion: 'any' });
|
|
768
|
+
|
|
769
|
+
const write = await rejectionOf(
|
|
770
|
+
driver.proxy.updateModelDocument({ uri, clientId: other, model: model.text, baseVersion: 'any' })
|
|
771
|
+
);
|
|
772
|
+
assert.ok(isDocumentNotOpenError(write), `another session's open of ${uri} survived its delete: ${String(write)}`);
|
|
773
|
+
await waitFor(() => driver.deletions.some(event => event.uri === uri), {
|
|
774
|
+
message: `no onDocumentDeleted event for ${uri} after its delete`
|
|
775
|
+
});
|
|
776
|
+
const told = driver.deletions.filter(event => event.uri === uri).map(event => event.sourceClientId);
|
|
777
|
+
assert.deepStrictEqual(told, [deleter], `the deletion of ${uri} named ${told.join(', ')}, not the deleting session`);
|
|
778
|
+
await driver.proxy.closeSession({ clientId: other });
|
|
779
|
+
await driver.proxy.closeSession({ clientId: deleter });
|
|
780
|
+
} finally {
|
|
781
|
+
driver.dispose();
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
});
|
|
785
|
+
|
|
786
|
+
checks.push({
|
|
787
|
+
title: `a delete removes a created document never saved ${tag}`,
|
|
788
|
+
body: async () => {
|
|
789
|
+
const driver = await connect();
|
|
790
|
+
try {
|
|
791
|
+
const model = resolveModel(valid);
|
|
792
|
+
const uri = siblingOf(model.uri, `conformance-unsaved-deleted-${randomUuid()}-`);
|
|
793
|
+
const clientId = await startSession(driver, 'conformance-session');
|
|
794
|
+
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
795
|
+
|
|
796
|
+
await driver.proxy.deleteModelDocument({ uri, clientId, baseVersion: 'any' });
|
|
797
|
+
|
|
798
|
+
const read = await driver.proxy.getModelDocument({ uri });
|
|
799
|
+
assert.ok(
|
|
800
|
+
!TransferDocument.isLoaded(read),
|
|
801
|
+
`${uri}, created and never saved, was still served with a model after its delete`
|
|
802
|
+
);
|
|
803
|
+
await driver.proxy.closeSession({ clientId });
|
|
804
|
+
} finally {
|
|
805
|
+
driver.dispose();
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
});
|
|
809
|
+
|
|
681
810
|
checks.push({
|
|
682
811
|
title: `a document is dirty while its text differs from its file, and clean once saved ${tag}`,
|
|
683
812
|
body: async () => {
|
|
@@ -686,7 +815,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
686
815
|
const model = resolveModel(valid);
|
|
687
816
|
// Only `dirty` is asserted, so any second text serves.
|
|
688
817
|
const unsaved = resolveDeferred(invalid.text);
|
|
689
|
-
const uri = siblingOf(model.uri, `conformance-saved-${
|
|
818
|
+
const uri = siblingOf(model.uri, `conformance-saved-${randomUuid()}-`);
|
|
690
819
|
const clientId = await startSession(driver, 'conformance-session');
|
|
691
820
|
await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
692
821
|
|
|
@@ -725,7 +854,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
725
854
|
// Trailing blank lines no serialiser writes, so a head that
|
|
726
855
|
// persists a re-serialised model rather than the text shows.
|
|
727
856
|
const held = `${model.text}\n\n`;
|
|
728
|
-
const uri = siblingOf(model.uri, `conformance-persisted-${
|
|
857
|
+
const uri = siblingOf(model.uri, `conformance-persisted-${randomUuid()}-`);
|
|
729
858
|
const writer = await startSession(driver, 'conformance-writer');
|
|
730
859
|
const created = await driver.proxy.createModelDocument({ uri, clientId: writer, text: model.text });
|
|
731
860
|
const written = await driver.proxy.updateModelDocument({ uri, clientId: writer, model: held, baseVersion: 'any' });
|
|
@@ -771,7 +900,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
771
900
|
const model = resolveModel(valid);
|
|
772
901
|
// Only the text is compared, so any second text serves.
|
|
773
902
|
const other = resolveDeferred(invalid.text);
|
|
774
|
-
const uri = siblingOf(model.uri, `conformance-hashed-${
|
|
903
|
+
const uri = siblingOf(model.uri, `conformance-hashed-${randomUuid()}-`);
|
|
775
904
|
const clientId = await startSession(driver, 'conformance-session');
|
|
776
905
|
const created = await driver.proxy.createModelDocument({ uri, clientId, text: model.text });
|
|
777
906
|
const edited = await driver.proxy.updateModelDocument({ uri, clientId, model: other, baseVersion: 'any' });
|
|
@@ -793,7 +922,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
793
922
|
const read = await driver.proxy.getModelDocument({ uri });
|
|
794
923
|
assert.strictEqual(read.text?.hash, restored.text?.hash, `a read of ${uri} hashed its text as ${String(read.text?.hash)}`);
|
|
795
924
|
const absent = await driver.proxy.getModelDocument({
|
|
796
|
-
uri: siblingOf(model.uri, `conformance-absent-${
|
|
925
|
+
uri: siblingOf(model.uri, `conformance-absent-${randomUuid()}-`)
|
|
797
926
|
});
|
|
798
927
|
assert.strictEqual(absent.text, undefined, `an envelope with no document carried text ${JSON.stringify(absent.text)}`);
|
|
799
928
|
await driver.proxy.closeSession({ clientId });
|
|
@@ -961,7 +1090,7 @@ export function buildDataChecks<TTransfer extends TransferElement, TDiagnostic e
|
|
|
961
1090
|
try {
|
|
962
1091
|
const model = resolveModel(valid);
|
|
963
1092
|
const edited = resolveDeferred(edit.to);
|
|
964
|
-
const uri = siblingOf(model.uri, `conformance-reverted-${
|
|
1093
|
+
const uri = siblingOf(model.uri, `conformance-reverted-${randomUuid()}-`);
|
|
965
1094
|
const writer = await startSession(driver, 'conformance-writer');
|
|
966
1095
|
// Created with the edit, so that going back to the created
|
|
967
1096
|
// text instead of the saved one shows.
|