aboutsummaryrefslogtreecommitdiff
path: root/tests/drivers/ext_cache_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/drivers/ext_cache_test.js')
-rw-r--r--tests/drivers/ext_cache_test.js15
1 files changed, 13 insertions, 2 deletions
diff --git a/tests/drivers/ext_cache_test.js b/tests/drivers/ext_cache_test.js
index f389fcc..93caf94 100644
--- a/tests/drivers/ext_cache_test.js
+++ b/tests/drivers/ext_cache_test.js
@@ -5,14 +5,25 @@
// starts; a change to an included file is checked again; putting it back is
// answered from the cache.
//
-// node tests/drivers/ext_cache_test.js
+// node tests/drivers/ext_cache_test.js [server-dir]
+//
+// the server directory holds what the packaged extension carries in server/:
+// lsp.wasm, or tinyvm.js, layout.js, lsp.json and lsp.bin (the default is
+// build/editors/vscode/server, which src/tools/mkvsix.sh fills). the extension is
+// copied with that server into a scratch directory, since the tree has none.
const fs = require('fs');
const os = require('os');
const path = require('path');
const Module = require('module');
-const client = path.join(__dirname, '..', '..', 'editors', 'vscode', 'client');
+const serverDir = path.resolve(process.argv[2] || path.join(__dirname, '..', '..', 'build', 'editors', 'vscode', 'server'));
+if (!fs.existsSync(serverDir)) { console.log('FAIL no server directory at ' + serverDir); process.exit(1); }
+const staged = fs.mkdtempSync(path.join(os.tmpdir(), 'zc-extension-'));
+fs.cpSync(path.join(__dirname, '..', '..', 'editors', 'vscode'), staged, { recursive: true });
+fs.cpSync(serverDir, path.join(staged, 'server'), { recursive: true });
+process.on('exit', () => fs.rmSync(staged, { recursive: true, force: true }));
+const client = path.join(staged, 'client');
// the vscode module, as far as the client uses it
const world = { lines: [], sets: [], listeners: {}, watchers: [], textDocuments: [], saved: undefined, root: '' };