refactor(bgm): use virtual: module specifiers
Rename the plugin's virtual modules to virtual:bgm/packages and virtual:bgm/package/<id> so they read as plugin-provided modules rather than real packages. Update the unit and build integration tests.
This commit is contained in:
@@ -24,16 +24,28 @@ function load(plugin: ReturnType<typeof bgm>, id: string): unknown {
|
||||
}
|
||||
|
||||
describe('bgm vite plugin', () => {
|
||||
it('resolves bgm/ imports to the virtual module', () => {
|
||||
it('resolves bgm imports to the virtual module', () => {
|
||||
const plugin = bgm({ root: gamesRoot });
|
||||
expect(resolveId(plugin, 'bgm/harbor')).toBe('\0bgm:bgm/harbor');
|
||||
expect(resolveId(plugin, 'bgm/nope')).toBe('\0bgm:bgm/nope');
|
||||
expect(resolveId(plugin, 'virtual:bgm/packages')).toBe('\0bgm:virtual:bgm/packages');
|
||||
expect(resolveId(plugin, 'virtual:bgm/package/harbor')).toBe('\0bgm:virtual:bgm/package/harbor');
|
||||
expect(resolveId(plugin, 'virtual:bgm/package/nope')).toBe('\0bgm:virtual:bgm/package/nope');
|
||||
expect(resolveId(plugin, 'other')).toBeUndefined();
|
||||
});
|
||||
|
||||
it('loads every package as a JSON module', () => {
|
||||
const plugin = bgm({ root: gamesRoot });
|
||||
const code = load(plugin, '\0bgm:virtual:bgm/packages');
|
||||
expect(code).toBeDefined();
|
||||
expect(String(code).startsWith('export default ')).toBe(true);
|
||||
const packages = JSON.parse(String(code).slice('export default '.length));
|
||||
expect(packages).toHaveLength(1);
|
||||
expect(packages[0].meta.id).toBe('harbor');
|
||||
expect(packages[0].parts).toHaveProperty('token#wood');
|
||||
});
|
||||
|
||||
it('loads a package as a JSON module', () => {
|
||||
const plugin = bgm({ root: gamesRoot });
|
||||
const code = load(plugin, '\0bgm:bgm/harbor');
|
||||
const code = load(plugin, '\0bgm:virtual:bgm/package/harbor');
|
||||
expect(code).toBeDefined();
|
||||
expect(String(code).startsWith('export default ')).toBe(true);
|
||||
const pkg = JSON.parse(String(code).slice('export default '.length));
|
||||
@@ -44,6 +56,6 @@ describe('bgm vite plugin', () => {
|
||||
|
||||
it('errors on an unknown package', () => {
|
||||
const plugin = bgm({ root: gamesRoot });
|
||||
expect(() => load(plugin, '\0bgm:bgm/unknown')).toThrow(/not found/);
|
||||
expect(() => load(plugin, '\0bgm:virtual:bgm/package/unknown')).toThrow(/not found/);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user