diff --git a/unity-cursor-toolkit/package-lock.json b/unity-cursor-toolkit/package-lock.json index 19d4f92..ed26f9e 100644 --- a/unity-cursor-toolkit/package-lock.json +++ b/unity-cursor-toolkit/package-lock.json @@ -2564,9 +2564,9 @@ } }, "node_modules/fast-uri": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", - "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", + "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", "dev": true, "funding": [ { @@ -3192,9 +3192,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", - "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", "dev": true, "funding": [ { @@ -4007,13 +4007,14 @@ } }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.16.0.tgz", + "integrity": "sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -4267,15 +4268,15 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, diff --git a/unity-cursor-toolkit/test/run-tests.js b/unity-cursor-toolkit/test/run-tests.js index 71e8fbe..079365a 100644 --- a/unity-cursor-toolkit/test/run-tests.js +++ b/unity-cursor-toolkit/test/run-tests.js @@ -370,7 +370,7 @@ const outDir = path.join(__dirname, '..', 'out'); function testTypes() { console.log('\n── core/types.ts ──'); - const { safeJsonParse, ConnectionState } = require(path.join(outDir, 'core', 'types')); + const { safeJsonParse } = require(path.join(outDir, 'core', 'types')); test('safeJsonParse: valid object', () => { assert.deepStrictEqual(safeJsonParse('{"command":"ping"}'), { command: 'ping' }); @@ -404,12 +404,6 @@ function testTypes() { assert.throws(() => safeJsonParse('[not,json,]')); }); - test('ConnectionState enum has 4 values', () => { - assert.strictEqual(ConnectionState.Disconnected, 'disconnected'); - assert.strictEqual(ConnectionState.Connecting, 'connecting'); - assert.strictEqual(ConnectionState.Connected, 'connected'); - assert.strictEqual(ConnectionState.Reconnecting, 'reconnecting'); - }); } // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -437,19 +431,6 @@ function testConnectionUnit() { conn.dispose(); }); - test('send when disconnected does not throw', () => { - const conn = new ConnectionManager(); - conn.send('test', { data: 1 }); - conn.dispose(); - }); - - test('pauseHeartbeat / resumeHeartbeat when disconnected does not throw', () => { - const conn = new ConnectionManager(); - conn.pauseHeartbeat(); - conn.resumeHeartbeat(); - conn.dispose(); - }); - test('dispose sets state to Disconnected', () => { const conn = new ConnectionManager(); conn.dispose(); @@ -3316,13 +3297,6 @@ function testDebugAdapter() { session.dispose(); }); - test('messages after dispose are silently ignored', () => { - const session = new UnityDebugSession(); - session.dispose(); - session.handleMessage({ type: 'request', seq: 99, command: 'threads' }); - // No error = pass - }); - test('unknown command returns failure response', () => { const session = new UnityDebugSession(); const messages = []; @@ -3552,6 +3526,7 @@ function testStatusBarController() { assert.ok(connectItem.text.includes('plug') || connectItem.text.includes('Unity Attach'), `Got: ${connectItem.text}`); assert.strictEqual(connectItem.command, 'unity-cursor-toolkit.startConnection'); + assert.strictEqual(connectItem.color, undefined, 'No color when disconnected without project'); ctrl.dispose(); }); @@ -3620,20 +3595,6 @@ function testStatusBarController() { ctrl.dispose(); }); - test('Connected command is NOT startConnection', () => { - const { ctrl, connectItem } = makeController(); - ctrl.update(ConnectionState.Connected, 55500); - assert.notStrictEqual(connectItem.command, 'unity-cursor-toolkit.startConnection'); - ctrl.dispose(); - }); - - test('Disconnected color is NOT ThemeColor (no project)', () => { - const { ctrl, connectItem } = makeController(); - ctrl.update(ConnectionState.Disconnected, null); - assert.strictEqual(connectItem.color, undefined, 'No color when disconnected without project'); - ctrl.dispose(); - }); - test('state transitions update text between calls', () => { const { ctrl, connectItem } = makeController(); @@ -4252,22 +4213,6 @@ async function testConsolePanelLogic() { bridge.dispose(); } -// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -// project/folderTemplates.ts (template data validation) -// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -function testFolderTemplates() { - console.log('\n── project/folderTemplates.ts ──'); - - // Can't call pickAndGenerateTemplate (needs quickPick), but can validate - // the module loads and exports correctly - const mod = require(path.join(outDir, 'project', 'folderTemplates')); - - test('exports pickAndGenerateTemplate function', () => { - assert.strictEqual(typeof mod.pickAndGenerateTemplate, 'function'); - }); -} - // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // viewport/index.ts (webview source guards) // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -4403,8 +4348,6 @@ async function main() { await testProjectMcpTools(); await testConsolePanelLogic(); testViewportWebviewSource(); - testFolderTemplates(); - console.log(`\n${'='.repeat(60)}`); console.log(` ${passed} passed, ${failed} failed, ${passed + failed} total`);