diff --git a/lib/adapters/AbstractAdapter.js b/lib/adapters/AbstractAdapter.js index e2c52a25..e870a130 100644 --- a/lib/adapters/AbstractAdapter.js +++ b/lib/adapters/AbstractAdapter.js @@ -27,6 +27,9 @@ class AbstractAdapter extends AbstractReaderWriter { throw new TypeError("Class 'AbstractAdapter' is abstract"); } super(); + if (!virBasePath.endsWith("/")) { + throw new Error(`Virtual base path must end with a slash: ${virBasePath}`); + } this._virBasePath = virBasePath; this._virBaseDir = virBasePath.slice(0, -1); this._excludes = excludes; diff --git a/test/lib/adapters/Memory_read.js b/test/lib/adapters/Memory_read.js index d3da89ae..3df4ef31 100644 --- a/test/lib/adapters/Memory_read.js +++ b/test/lib/adapters/Memory_read.js @@ -62,7 +62,7 @@ test("glob resources from application.a w/o virtual base path prefix", async (t) test("glob virtual directory w/o virtual base path prefix", async (t) => { // TODO: Add similar test (globbing on empty directory) for FS RL const readerWriter = resourceFactory.createAdapter({ - virBasePath: "/app/one/two" + virBasePath: "/app/one/two/" }); const resources = await readerWriter.byGlob("/*", {nodir: false}); @@ -72,7 +72,7 @@ test("glob virtual directory w/o virtual base path prefix", async (t) => { test("glob virtual directory w/o virtual base path prefix and multiple patterns", async (t) => { // TODO: Add similar test (globbing on empty directory) for FS RL const readerWriter = resourceFactory.createAdapter({ - virBasePath: "/app/one/two" + virBasePath: "/app/one/two/" }); const resources = await readerWriter.byGlob([ @@ -94,7 +94,7 @@ test("glob virtual directory w/ virtual base path prefix", async (t) => { test("glob virtual directory w/o virtual base path prefix and nodir: true", async (t) => { const readerWriter = resourceFactory.createAdapter({ - virBasePath: "/app/one/two" + virBasePath: "/app/one/two/" }); const resources = await readerWriter.byGlob("/*", {nodir: true});