mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-22 23:25:20 +00:00
add test for exporting with custom basepath
This commit is contained in:
@@ -51,9 +51,10 @@ async function execute(emitter: EventEmitter, {
|
|||||||
const port = await ports.find(3000);
|
const port = await ports.find(3000);
|
||||||
|
|
||||||
const origin = `http://localhost:${port}`;
|
const origin = `http://localhost:${port}`;
|
||||||
|
const root = new URL(basepath || '', origin);
|
||||||
|
|
||||||
emitter.emit('info', {
|
emitter.emit('info', {
|
||||||
message: `Crawling ${origin}`
|
message: `Crawling ${root.href}`
|
||||||
});
|
});
|
||||||
|
|
||||||
const proc = child_process.fork(path.resolve(`${build}/server.js`), [], {
|
const proc = child_process.fork(path.resolve(`${build}/server.js`), [], {
|
||||||
@@ -71,7 +72,8 @@ async function execute(emitter: EventEmitter, {
|
|||||||
const deferreds = new Map();
|
const deferreds = new Map();
|
||||||
|
|
||||||
function get_deferred(pathname: string) {
|
function get_deferred(pathname: string) {
|
||||||
pathname = pathname.replace(`/${basepath}`, '')
|
pathname = pathname.replace(root.pathname, '');
|
||||||
|
|
||||||
if (!deferreds.has(pathname)) {
|
if (!deferreds.has(pathname)) {
|
||||||
deferreds.set(pathname, new Deferred());
|
deferreds.set(pathname, new Deferred());
|
||||||
}
|
}
|
||||||
@@ -108,7 +110,7 @@ async function execute(emitter: EventEmitter, {
|
|||||||
});
|
});
|
||||||
|
|
||||||
async function handle(url: URL) {
|
async function handle(url: URL) {
|
||||||
const pathname = url.pathname || '/';
|
const pathname = (url.pathname.replace(root.pathname, '') || '/');
|
||||||
|
|
||||||
if (seen.has(pathname)) return;
|
if (seen.has(pathname)) return;
|
||||||
seen.add(pathname);
|
seen.add(pathname);
|
||||||
@@ -141,11 +143,7 @@ async function execute(emitter: EventEmitter, {
|
|||||||
return ports.wait(port)
|
return ports.wait(port)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
// TODO all static routes
|
// TODO all static routes
|
||||||
if (basepath) {
|
return handle(root);
|
||||||
return handle(new URL(`/${basepath}/`, origin));
|
|
||||||
} else {
|
|
||||||
return handle(new URL('/', origin));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.then(() => proc.kill());
|
.then(() => proc.kill());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,9 +59,19 @@ describe('sapper', function() {
|
|||||||
basepath: '/custom-basepath'
|
basepath: '/custom-basepath'
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('export', () => {
|
testExport({});
|
||||||
|
|
||||||
|
testExport({ basepath: '/custom-basepath' });
|
||||||
|
});
|
||||||
|
|
||||||
|
function testExport({ basepath = '' }) {
|
||||||
|
describe(basepath ? `export --basepath ${basepath}` : 'export', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
return exec(`node ${cli} export`);
|
if (basepath) {
|
||||||
|
process.env.BASEPATH = basepath;
|
||||||
|
}
|
||||||
|
|
||||||
|
return exec(`node ${cli} export ${basepath ? `--basepath ${basepath}` : ''}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('export all pages', () => {
|
it('export all pages', () => {
|
||||||
@@ -96,7 +106,10 @@ describe('sapper', function() {
|
|||||||
'service-worker.js',
|
'service-worker.js',
|
||||||
'svelte-logo-192.png',
|
'svelte-logo-192.png',
|
||||||
'svelte-logo-512.png',
|
'svelte-logo-512.png',
|
||||||
];
|
].map(file => {
|
||||||
|
return basepath ? path.join(basepath.replace(/^\//, ''), file) : file;
|
||||||
|
});
|
||||||
|
|
||||||
// Client scripts that should show up in the extraction directory.
|
// Client scripts that should show up in the extraction directory.
|
||||||
const expectedClientRegexes = [
|
const expectedClientRegexes = [
|
||||||
/client\/[^/]+\/main(\.\d+)?\.js/,
|
/client\/[^/]+\/main(\.\d+)?\.js/,
|
||||||
@@ -126,7 +139,7 @@ describe('sapper', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
|
|
||||||
function run({ mode, basepath = '' }) {
|
function run({ mode, basepath = '' }) {
|
||||||
describe(`mode=${mode}`, function () {
|
describe(`mode=${mode}`, function () {
|
||||||
|
|||||||
Reference in New Issue
Block a user