Added Required logic if not found, and added better update logic
This commit is contained in:
@@ -3,14 +3,14 @@ import * as fs from 'fs/promises';
|
||||
import * as path from 'path';
|
||||
import * as os from 'os';
|
||||
import { existsSync } from 'fs';
|
||||
import * as luaAddonsManager from '../lua-addons-manager';
|
||||
import { LuaAddonsManager } from '../lua-addons-manager';
|
||||
|
||||
/**
|
||||
* Integration tests for lua-addons-manager
|
||||
* Integration tests for LuaAddonsManager
|
||||
* Uses temporary directories to avoid polluting the file system
|
||||
*/
|
||||
|
||||
suite('lua-addons-manager', () => {
|
||||
suite('LuaAddonsManager', () => {
|
||||
let tempDir: string;
|
||||
|
||||
suiteSetup(async () => {
|
||||
@@ -24,287 +24,232 @@ suite('lua-addons-manager', () => {
|
||||
});
|
||||
|
||||
suite('getExtensionVersion', () => {
|
||||
test('should read version from package.json', async () => {
|
||||
const testDir = path.join(tempDir, 'getExtensionVersion-1');
|
||||
await fs.mkdir(testDir, { recursive: true });
|
||||
const packageJson = path.join(testDir, 'package.json');
|
||||
await fs.writeFile(packageJson, JSON.stringify({ version: '1.2.3' }));
|
||||
test('should return undefined if addon not found', async () => {
|
||||
const extensionDir = path.join(tempDir, 'getExtensionVersion-1');
|
||||
const sourceDir = path.join(tempDir, 'getExtensionVersion-1-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
|
||||
const version = await luaAddonsManager.getExtensionVersion(testDir);
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
const version = await manager.getExtensionVersion('nonexistent');
|
||||
|
||||
assert.strictEqual(version, undefined);
|
||||
});
|
||||
|
||||
test('should return version string for installed addon', async () => {
|
||||
const extensionDir = path.join(tempDir, 'getExtensionVersion-2');
|
||||
const sourceDir = path.join(tempDir, 'getExtensionVersion-2-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'dcs-types.1.2.3'), { recursive: true });
|
||||
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
const version = await manager.getExtensionVersion('dcs-types');
|
||||
|
||||
assert.strictEqual(version, '1.2.3');
|
||||
});
|
||||
|
||||
test('should throw error if package.json not found', async () => {
|
||||
const testDir = path.join(tempDir, 'getExtensionVersion-2');
|
||||
await fs.mkdir(testDir, { recursive: true });
|
||||
test('should return first matching version if multiple versions exist', async () => {
|
||||
const extensionDir = path.join(tempDir, 'getExtensionVersion-3');
|
||||
const sourceDir = path.join(tempDir, 'getExtensionVersion-3-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon.1.0.0'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon.2.0.0'), { recursive: true });
|
||||
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
const version = await manager.getExtensionVersion('addon');
|
||||
|
||||
// Should return one of the versions (first found)
|
||||
assert.match(version!, /^[12]\.0\.0$/);
|
||||
});
|
||||
});
|
||||
|
||||
suite('getPackageVersion', () => {
|
||||
test('should read version from package.json', async () => {
|
||||
const extensionDir = path.join(tempDir, 'getPackageVersion-1');
|
||||
const sourceDir = path.join(tempDir, 'getPackageVersion-1-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
const packageJson = path.join(extensionDir, 'package.json');
|
||||
await fs.writeFile(packageJson, JSON.stringify({ version: '2.1.0' }));
|
||||
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
const version = await manager.getPackageVersion();
|
||||
|
||||
assert.strictEqual(version, '2.1.0');
|
||||
});
|
||||
|
||||
test('should throw error if package.json not found', async () => {
|
||||
const extensionDir = path.join(tempDir, 'getPackageVersion-2');
|
||||
const sourceDir = path.join(tempDir, 'getPackageVersion-2-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await assert.rejects(
|
||||
() => luaAddonsManager.getExtensionVersion(testDir),
|
||||
() => manager.getPackageVersion(),
|
||||
/Failed to read extension version/
|
||||
);
|
||||
});
|
||||
|
||||
test('should throw error if version field missing', async () => {
|
||||
const testDir = path.join(tempDir, 'getExtensionVersion-3');
|
||||
await fs.mkdir(testDir, { recursive: true });
|
||||
const packageJson = path.join(testDir, 'package.json');
|
||||
const extensionDir = path.join(tempDir, 'getPackageVersion-3');
|
||||
const sourceDir = path.join(tempDir, 'getPackageVersion-3-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
const packageJson = path.join(extensionDir, 'package.json');
|
||||
await fs.writeFile(packageJson, JSON.stringify({ name: 'test' }));
|
||||
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await assert.rejects(
|
||||
() => luaAddonsManager.getExtensionVersion(testDir),
|
||||
() => manager.getPackageVersion(),
|
||||
/Version field not found/
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
suite('discoverLuaAddons', () => {
|
||||
test('should discover lua-addons directories', async () => {
|
||||
const testDir = path.join(tempDir, 'discoverLuaAddons-1');
|
||||
const luaAddonsDir = path.join(testDir, 'lua-addons');
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon2'), { recursive: true });
|
||||
suite('removeExtension', () => {
|
||||
test('should remove addon by name', async () => {
|
||||
const extensionDir = path.join(tempDir, 'removeExtension-1');
|
||||
const sourceDir = path.join(tempDir, 'removeExtension-1-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon1.1.0.0'), { recursive: true });
|
||||
|
||||
const addons = await luaAddonsManager.discoverLuaAddons(testDir);
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await manager.removeExtension('addon1');
|
||||
|
||||
assert.strictEqual(addons.size, 2);
|
||||
assert.strictEqual(addons.has('addon1'), true);
|
||||
assert.strictEqual(addons.has('addon2'), true);
|
||||
const remaining = await fs.readdir(extensionDir);
|
||||
assert.strictEqual(remaining.length, 0);
|
||||
});
|
||||
|
||||
test('should return empty map if lua-addons directory does not exist', async () => {
|
||||
const testDir = path.join(tempDir, 'discoverLuaAddons-2');
|
||||
await fs.mkdir(testDir, { recursive: true });
|
||||
test('should not affect other addons', async () => {
|
||||
const extensionDir = path.join(tempDir, 'removeExtension-2');
|
||||
const sourceDir = path.join(tempDir, 'removeExtension-2-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon1.1.0.0'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon2.1.0.0'), { recursive: true });
|
||||
|
||||
const addons = await luaAddonsManager.discoverLuaAddons(testDir);
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await manager.removeExtension('addon1');
|
||||
|
||||
assert.strictEqual(addons.size, 0);
|
||||
});
|
||||
|
||||
test('should ignore non-directory entries', async () => {
|
||||
const testDir = path.join(tempDir, 'discoverLuaAddons-3');
|
||||
const luaAddonsDir = path.join(testDir, 'lua-addons');
|
||||
await fs.mkdir(luaAddonsDir, { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1'), { recursive: true });
|
||||
await fs.writeFile(path.join(luaAddonsDir, 'file.txt'), 'test');
|
||||
|
||||
const addons = await luaAddonsManager.discoverLuaAddons(testDir);
|
||||
|
||||
assert.strictEqual(addons.size, 1);
|
||||
assert.strictEqual(addons.has('addon1'), true);
|
||||
const remaining = await fs.readdir(extensionDir);
|
||||
assert.strictEqual(remaining.length, 1);
|
||||
assert.strictEqual(remaining[0], 'addon2.1.0.0');
|
||||
});
|
||||
});
|
||||
|
||||
suite('getWorkspaceLuaAddonsDir', () => {
|
||||
test('should return correct .vscode/lua-addons path', () => {
|
||||
const workspaceRoot = '/path/to/workspace';
|
||||
const result = luaAddonsManager.getWorkspaceLuaAddonsDir(workspaceRoot);
|
||||
suite('removeAllExtensions', () => {
|
||||
test('should remove multiple addons by name', async () => {
|
||||
const extensionDir = path.join(tempDir, 'removeAllExtensions-1');
|
||||
const sourceDir = path.join(tempDir, 'removeAllExtensions-1-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon1.1.0.0'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon2.1.0.0'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon3.1.0.0'), { recursive: true });
|
||||
|
||||
assert.strictEqual(result, path.join(workspaceRoot, '.vscode', 'lua-addons'));
|
||||
});
|
||||
});
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await manager.removeAllExtensions(['addon1', 'addon2']);
|
||||
|
||||
suite('getInstalledVersions', () => {
|
||||
test('should parse installed addon versions from folder names', async () => {
|
||||
const testDir = path.join(tempDir, 'getInstalledVersions-1');
|
||||
const luaAddonsDir = path.join(testDir, '.vscode', 'lua-addons');
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'dcs-types.0.0.5'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'mission-utils.1.2.3'), { recursive: true });
|
||||
|
||||
const installed = await luaAddonsManager.getInstalledVersions(testDir);
|
||||
|
||||
assert.strictEqual(installed.size, 2);
|
||||
assert.strictEqual(installed.has('dcs-types'), true);
|
||||
assert.strictEqual(installed.has('mission-utils'), true);
|
||||
assert.strictEqual(installed.get('dcs-types')?.version, '0.0.5');
|
||||
assert.strictEqual(installed.get('mission-utils')?.version, '1.2.3');
|
||||
const remaining = await fs.readdir(extensionDir);
|
||||
assert.deepStrictEqual(remaining.sort(), ['addon3.1.0.0']);
|
||||
});
|
||||
|
||||
test('should return empty map if directory does not exist', async () => {
|
||||
const testDir = path.join(tempDir, 'getInstalledVersions-2');
|
||||
await fs.mkdir(testDir, { recursive: true });
|
||||
test('should delete all versions of matching addons', async () => {
|
||||
const extensionDir = path.join(tempDir, 'removeAllExtensions-2');
|
||||
const sourceDir = path.join(tempDir, 'removeAllExtensions-2-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon1.0.0.1'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon1.0.0.2'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon1.0.0.3'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon2.1.0.0'), { recursive: true });
|
||||
|
||||
const installed = await luaAddonsManager.getInstalledVersions(testDir);
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await manager.removeAllExtensions(['addon1']);
|
||||
|
||||
assert.strictEqual(installed.size, 0);
|
||||
const remaining = await fs.readdir(extensionDir);
|
||||
assert.deepStrictEqual(remaining.sort(), ['addon2.1.0.0']);
|
||||
});
|
||||
|
||||
test('should ignore folders with invalid version format', async () => {
|
||||
const testDir = path.join(tempDir, 'getInstalledVersions-3');
|
||||
const luaAddonsDir = path.join(testDir, '.vscode', 'lua-addons');
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'dcs-types.0.0.5'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'invalid-addon'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'bad-format.v1'), { recursive: true });
|
||||
const extensionDir = path.join(tempDir, 'removeAllExtensions-3');
|
||||
const sourceDir = path.join(tempDir, 'removeAllExtensions-3-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'addon1.1.0.0'), { recursive: true });
|
||||
await fs.mkdir(path.join(extensionDir, 'invalid-folder'), { recursive: true });
|
||||
|
||||
const installed = await luaAddonsManager.getInstalledVersions(testDir);
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await manager.removeAllExtensions(['addon1']);
|
||||
|
||||
assert.strictEqual(installed.size, 1);
|
||||
assert.strictEqual(installed.has('dcs-types'), true);
|
||||
assert.strictEqual(installed.has('invalid-addon'), false);
|
||||
assert.strictEqual(installed.has('bad-format'), false);
|
||||
const remaining = await fs.readdir(extensionDir);
|
||||
assert.deepStrictEqual(remaining.sort(), ['invalid-folder']);
|
||||
});
|
||||
|
||||
test('should not throw if addon does not exist', async () => {
|
||||
const extensionDir = path.join(tempDir, 'removeAllExtensions-4');
|
||||
const sourceDir = path.join(tempDir, 'removeAllExtensions-4-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
// Should not throw
|
||||
await manager.removeAllExtensions(['nonexistent']);
|
||||
});
|
||||
});
|
||||
|
||||
suite('copyLuaAddons', () => {
|
||||
test('should copy addons with versioned folder names', async () => {
|
||||
const testDir = path.join(tempDir, 'copyLuaAddons-1');
|
||||
const sourceAddon1 = path.join(testDir, 'source-addons', 'addon1');
|
||||
await fs.mkdir(sourceAddon1, { recursive: true });
|
||||
await fs.writeFile(path.join(sourceAddon1, 'file1.lua'), 'content1');
|
||||
suite('installExtension', () => {
|
||||
test('should copy addon from source to target', async () => {
|
||||
const extensionDir = path.join(tempDir, 'installExtension-1');
|
||||
const sourceDir = path.join(tempDir, 'installExtension-1-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
const sourceAddon = path.join(sourceDir, 'addon1');
|
||||
await fs.mkdir(sourceAddon, { recursive: true });
|
||||
await fs.writeFile(path.join(sourceAddon, 'file.lua'), 'content');
|
||||
|
||||
const addonsToCopy = new Map<string, string>([
|
||||
['addon1', sourceAddon1]
|
||||
]);
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await manager.installExtension('addon1');
|
||||
|
||||
const result = await luaAddonsManager.copyLuaAddons(
|
||||
testDir,
|
||||
testDir,
|
||||
'1.0.0',
|
||||
addonsToCopy
|
||||
);
|
||||
|
||||
assert.strictEqual(result.size, 1);
|
||||
const copiedPath = result.get('addon1');
|
||||
assert.strictEqual(copiedPath !== undefined, true);
|
||||
if (copiedPath) {
|
||||
assert.strictEqual(copiedPath.includes('addon1.1.0.0'), true);
|
||||
assert.strictEqual(existsSync(path.join(copiedPath, 'file1.lua')), true);
|
||||
}
|
||||
const targetAddon = path.join(extensionDir, 'addon1');
|
||||
assert.strictEqual(existsSync(targetAddon), true);
|
||||
assert.strictEqual(existsSync(path.join(targetAddon, 'file.lua')), true);
|
||||
});
|
||||
|
||||
test('should create .vscode directory if it does not exist', async () => {
|
||||
const testDir = path.join(tempDir, 'copyLuaAddons-2');
|
||||
const sourceAddon = path.join(testDir, 'source', 'addon1');
|
||||
await fs.mkdir(sourceAddon, { recursive: true });
|
||||
test('should throw error if source directory does not exist', async () => {
|
||||
const extensionDir = path.join(tempDir, 'installExtension-2');
|
||||
const sourceDir = path.join(tempDir, 'installExtension-2-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
|
||||
const addonsToCopy = new Map<string, string>([
|
||||
['addon1', sourceAddon]
|
||||
]);
|
||||
|
||||
await luaAddonsManager.copyLuaAddons(
|
||||
testDir,
|
||||
testDir,
|
||||
'1.0.0',
|
||||
addonsToCopy
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await assert.rejects(
|
||||
() => manager.installExtension('nonexistent'),
|
||||
/Source extension folder not found/
|
||||
);
|
||||
|
||||
const vscodeDir = path.join(testDir, '.vscode');
|
||||
assert.strictEqual(existsSync(vscodeDir), true);
|
||||
});
|
||||
|
||||
test('should copy nested directories recursively', async () => {
|
||||
const testDir = path.join(tempDir, 'copyLuaAddons-3');
|
||||
const sourceAddon = path.join(testDir, 'source', 'addon1');
|
||||
const extensionDir = path.join(tempDir, 'installExtension-3');
|
||||
const sourceDir = path.join(tempDir, 'installExtension-3-source');
|
||||
await fs.mkdir(extensionDir, { recursive: true });
|
||||
await fs.mkdir(sourceDir, { recursive: true });
|
||||
const sourceAddon = path.join(sourceDir, 'addon1');
|
||||
await fs.mkdir(path.join(sourceAddon, 'subdir'), { recursive: true });
|
||||
await fs.writeFile(path.join(sourceAddon, 'file.lua'), 'root');
|
||||
await fs.writeFile(path.join(sourceAddon, 'subdir', 'file.lua'), 'nested');
|
||||
|
||||
const addonsToCopy = new Map<string, string>([
|
||||
['addon1', sourceAddon]
|
||||
]);
|
||||
const manager = new LuaAddonsManager(extensionDir, sourceDir);
|
||||
await manager.installExtension('addon1');
|
||||
|
||||
const result = await luaAddonsManager.copyLuaAddons(
|
||||
testDir,
|
||||
testDir,
|
||||
'1.0.0',
|
||||
addonsToCopy
|
||||
);
|
||||
|
||||
const copiedPath = result.get('addon1')!;
|
||||
assert.strictEqual(existsSync(path.join(copiedPath, 'file.lua')), true);
|
||||
assert.strictEqual(existsSync(path.join(copiedPath, 'subdir', 'file.lua')), true);
|
||||
});
|
||||
});
|
||||
|
||||
suite('deleteOldVersions', () => {
|
||||
test('should delete old versions of an addon', async () => {
|
||||
const testDir = path.join(tempDir, 'deleteOldVersions-1');
|
||||
const luaAddonsDir = path.join(testDir, '.vscode', 'lua-addons');
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1.0.0.1'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1.0.0.2'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1.0.0.3'), { recursive: true });
|
||||
|
||||
await luaAddonsManager.deleteOldVersions(testDir, 'addon1', '0.0.3');
|
||||
|
||||
const remaining = await fs.readdir(luaAddonsDir);
|
||||
assert.deepStrictEqual(remaining.sort(), ['addon1.0.0.3']);
|
||||
});
|
||||
|
||||
test('should not delete other addons', async () => {
|
||||
const testDir = path.join(tempDir, 'deleteOldVersions-2');
|
||||
const luaAddonsDir = path.join(testDir, '.vscode', 'lua-addons');
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1.0.0.1'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1.0.0.2'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon2.0.0.1'), { recursive: true });
|
||||
|
||||
await luaAddonsManager.deleteOldVersions(testDir, 'addon1', '0.0.2');
|
||||
|
||||
const remaining = await fs.readdir(luaAddonsDir);
|
||||
assert.strictEqual(remaining.includes('addon1.0.0.2'), true);
|
||||
assert.strictEqual(remaining.includes('addon2.0.0.1'), true);
|
||||
assert.strictEqual(remaining.includes('addon1.0.0.1'), false);
|
||||
});
|
||||
|
||||
test('should handle missing directory gracefully', async () => {
|
||||
const testDir = path.join(tempDir, 'deleteOldVersions-3');
|
||||
await fs.mkdir(testDir, { recursive: true });
|
||||
|
||||
// Should not throw
|
||||
await luaAddonsManager.deleteOldVersions(testDir, 'addon1', '0.0.1');
|
||||
});
|
||||
});
|
||||
|
||||
suite('deleteAllVersionsOfAddon', () => {
|
||||
test('should delete all versions of an addon', async () => {
|
||||
const testDir = path.join(tempDir, 'deleteAllVersionsOfAddon-1');
|
||||
const luaAddonsDir = path.join(testDir, '.vscode', 'lua-addons');
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1.0.0.1'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon1.0.0.2'), { recursive: true });
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'addon2.0.0.1'), { recursive: true });
|
||||
|
||||
await luaAddonsManager.deleteAllVersionsOfAddon(testDir, 'addon1');
|
||||
|
||||
const remaining = await fs.readdir(luaAddonsDir);
|
||||
assert.deepStrictEqual(remaining.sort(), ['addon2.0.0.1']);
|
||||
});
|
||||
});
|
||||
|
||||
suite('requiresUpdate', () => {
|
||||
test('should return true if no version installed', () => {
|
||||
const result = luaAddonsManager.requiresUpdate(undefined, '1.0.0');
|
||||
|
||||
assert.strictEqual(result, true);
|
||||
});
|
||||
|
||||
test('should return true if versions do not match', () => {
|
||||
const result = luaAddonsManager.requiresUpdate('1.0.0', '1.0.1');
|
||||
|
||||
assert.strictEqual(result, true);
|
||||
});
|
||||
|
||||
test('should return false if versions match', () => {
|
||||
const result = luaAddonsManager.requiresUpdate('1.0.0', '1.0.0');
|
||||
|
||||
assert.strictEqual(result, false);
|
||||
});
|
||||
});
|
||||
|
||||
suite('getInstalledAddons', () => {
|
||||
test('should return installed addon information', async () => {
|
||||
const testDir = path.join(tempDir, 'getInstalledAddons-1');
|
||||
const luaAddonsDir = path.join(testDir, '.vscode', 'lua-addons');
|
||||
await fs.mkdir(path.join(luaAddonsDir, 'dcs-types.0.0.5'), { recursive: true });
|
||||
|
||||
const installed = await luaAddonsManager.getInstalledAddons(testDir);
|
||||
|
||||
assert.strictEqual(installed.size, 1);
|
||||
const addonInfo = installed.get('dcs-types');
|
||||
assert.strictEqual(addonInfo !== undefined, true);
|
||||
if (addonInfo) {
|
||||
assert.strictEqual(addonInfo.name, 'dcs-types');
|
||||
assert.strictEqual(addonInfo.version, '0.0.5');
|
||||
assert.strictEqual(addonInfo.path.includes('dcs-types.0.0.5'), true);
|
||||
}
|
||||
const targetAddon = path.join(extensionDir, 'addon1');
|
||||
assert.strictEqual(existsSync(path.join(targetAddon, 'file.lua')), true);
|
||||
assert.strictEqual(existsSync(path.join(targetAddon, 'subdir', 'file.lua')), true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user