mirror of
https://github.com/withastro/astro.git
synced 2025-02-03 22:29:08 -05:00
Move createBasicEnvironment as test-util (#7560)
This commit is contained in:
parent
917f25cffe
commit
c459b81785
14 changed files with 71 additions and 79 deletions
|
@ -1,8 +1,7 @@
|
||||||
import type { MarkdownRenderingOptions } from '@astrojs/markdown-remark';
|
import type { MarkdownRenderingOptions } from '@astrojs/markdown-remark';
|
||||||
import type { RuntimeMode, SSRLoadedRenderer } from '../../@types/astro';
|
import type { RuntimeMode, SSRLoadedRenderer } from '../../@types/astro';
|
||||||
import { getDefaultClientDirectives } from '../client-directive/default.js';
|
|
||||||
import type { LogOptions } from '../logger/core.js';
|
import type { LogOptions } from '../logger/core.js';
|
||||||
import { RouteCache } from './route-cache.js';
|
import type { RouteCache } from './route-cache.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An environment represents the static parts of rendering that do not change
|
* An environment represents the static parts of rendering that do not change
|
||||||
|
@ -42,27 +41,3 @@ export type CreateEnvironmentArgs = Environment;
|
||||||
export function createEnvironment(options: CreateEnvironmentArgs): Environment {
|
export function createEnvironment(options: CreateEnvironmentArgs): Environment {
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type CreateBasicEnvironmentArgs = Partial<Environment> & {
|
|
||||||
logging: CreateEnvironmentArgs['logging'];
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Only used in tests
|
|
||||||
*/
|
|
||||||
export function createBasicEnvironment(options: CreateBasicEnvironmentArgs): Environment {
|
|
||||||
const mode = options.mode ?? 'development';
|
|
||||||
return createEnvironment({
|
|
||||||
...options,
|
|
||||||
markdown: {
|
|
||||||
...(options.markdown ?? {}),
|
|
||||||
},
|
|
||||||
mode,
|
|
||||||
renderers: options.renderers ?? [],
|
|
||||||
clientDirectives: getDefaultClientDirectives(),
|
|
||||||
resolve: options.resolve ?? ((s: string) => Promise.resolve(s)),
|
|
||||||
routeCache: new RouteCache(options.logging, mode),
|
|
||||||
ssr: options.ssr ?? true,
|
|
||||||
streaming: options.streaming ?? true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,6 +2,6 @@ export { createRenderContext } from './context.js';
|
||||||
export type { RenderContext } from './context.js';
|
export type { RenderContext } from './context.js';
|
||||||
export { renderPage } from './core.js';
|
export { renderPage } from './core.js';
|
||||||
export type { Environment } from './environment';
|
export type { Environment } from './environment';
|
||||||
export { createBasicEnvironment, createEnvironment } from './environment.js';
|
export { createEnvironment } from './environment.js';
|
||||||
export { getParamsAndProps } from './params-and-props.js';
|
export { getParamsAndProps } from './params-and-props.js';
|
||||||
export { loadRenderer, loadRenderers } from './renderer.js';
|
export { loadRenderer, loadRenderers } from './renderer.js';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { expect } from 'chai';
|
import { expect } from 'chai';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import { defaultLogging as logging } from '../../test-utils.js';
|
import { defaultLogging } from '../test-utils.js';
|
||||||
import { openConfig } from '../../../dist/core/config/index.js';
|
import { openConfig } from '../../../dist/core/config/index.js';
|
||||||
|
|
||||||
const cwd = fileURLToPath(new URL('../../fixtures/config-host/', import.meta.url));
|
const cwd = fileURLToPath(new URL('../../fixtures/config-host/', import.meta.url));
|
||||||
|
@ -11,7 +11,7 @@ describe('config.server', () => {
|
||||||
cwd: flags.root || cwd,
|
cwd: flags.root || cwd,
|
||||||
flags,
|
flags,
|
||||||
cmd: 'dev',
|
cmd: 'dev',
|
||||||
logging,
|
logging: defaultLogging,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,7 @@ import { expect } from 'chai';
|
||||||
|
|
||||||
import { runInContainer } from '../../../dist/core/dev/index.js';
|
import { runInContainer } from '../../../dist/core/dev/index.js';
|
||||||
import { openConfig, createSettings } from '../../../dist/core/config/index.js';
|
import { openConfig, createSettings } from '../../../dist/core/config/index.js';
|
||||||
import { createFs } from '../test-utils.js';
|
import { createFs, defaultLogging } from '../test-utils.js';
|
||||||
import { defaultLogging } from '../../test-utils.js';
|
|
||||||
|
|
||||||
const root = new URL('../../fixtures/tailwindcss-ts/', import.meta.url);
|
const root = new URL('../../fixtures/tailwindcss-ts/', import.meta.url);
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,7 @@ import { fileURLToPath } from 'url';
|
||||||
import { validateConfig } from '../../../dist/core/config/config.js';
|
import { validateConfig } from '../../../dist/core/config/config.js';
|
||||||
import { createSettings } from '../../../dist/core/config/index.js';
|
import { createSettings } from '../../../dist/core/config/index.js';
|
||||||
import { sync as _sync } from '../../../dist/core/sync/index.js';
|
import { sync as _sync } from '../../../dist/core/sync/index.js';
|
||||||
import { defaultLogging } from '../../test-utils.js';
|
import { createFsWithFallback, defaultLogging } from '../test-utils.js';
|
||||||
import { createFsWithFallback } from '../test-utils.js';
|
|
||||||
|
|
||||||
const root = new URL('../../fixtures/content-mixed-errors/', import.meta.url);
|
const root = new URL('../../fixtures/content-mixed-errors/', import.meta.url);
|
||||||
const logging = defaultLogging;
|
const logging = defaultLogging;
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
import { expect } from 'chai';
|
import { expect } from 'chai';
|
||||||
import * as cheerio from 'cheerio';
|
import * as cheerio from 'cheerio';
|
||||||
|
import os from 'os';
|
||||||
|
|
||||||
import { runInContainer } from '../../../dist/core/dev/index.js';
|
import { runInContainer } from '../../../dist/core/dev/index.js';
|
||||||
import { createFsWithFallback, createRequestAndResponse } from '../test-utils.js';
|
import { createFsWithFallback, createRequestAndResponse } from '../test-utils.js';
|
||||||
import { isWindows } from '../../test-utils.js';
|
|
||||||
import mdx from '../../../../integrations/mdx/dist/index.js';
|
import mdx from '../../../../integrations/mdx/dist/index.js';
|
||||||
import { attachContentServerListeners } from '../../../dist/content/server-listeners.js';
|
import { attachContentServerListeners } from '../../../dist/content/server-listeners.js';
|
||||||
|
|
||||||
const root = new URL('../../fixtures/content/', import.meta.url);
|
const root = new URL('../../fixtures/content/', import.meta.url);
|
||||||
|
|
||||||
const describe = isWindows ? global.describe.skip : global.describe;
|
const describe = os.platform() === 'win32' ? global.describe.skip : global.describe;
|
||||||
|
|
||||||
async function runInContainerWithContentListeners(params, callback) {
|
async function runInContainerWithContentListeners(params, callback) {
|
||||||
return await runInContainer(params, async (container) => {
|
return await runInContainer(params, async (container) => {
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
import { expect } from 'chai';
|
import { expect } from 'chai';
|
||||||
|
|
||||||
import { runInContainer } from '../../../dist/core/dev/index.js';
|
import { runInContainer } from '../../../dist/core/dev/index.js';
|
||||||
import { createFs, createRequestAndResponse } from '../test-utils.js';
|
import { createFs, createRequestAndResponse, silentLogging } from '../test-utils.js';
|
||||||
import svelte from '../../../../integrations/svelte/dist/index.js';
|
import svelte from '../../../../integrations/svelte/dist/index.js';
|
||||||
import { defaultLogging } from '../../test-utils.js';
|
|
||||||
|
|
||||||
const root = new URL('../../fixtures/alias/', import.meta.url);
|
const root = new URL('../../fixtures/alias/', import.meta.url);
|
||||||
|
|
||||||
|
@ -33,11 +32,7 @@ describe('dev container', () => {
|
||||||
{
|
{
|
||||||
fs,
|
fs,
|
||||||
root,
|
root,
|
||||||
logging: {
|
logging: silentLogging,
|
||||||
...defaultLogging,
|
|
||||||
// Error is expected in this test
|
|
||||||
level: 'silent',
|
|
||||||
},
|
|
||||||
userConfig: {
|
userConfig: {
|
||||||
integrations: [svelte()],
|
integrations: [svelte()],
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,9 +7,13 @@ import {
|
||||||
isStarted,
|
isStarted,
|
||||||
startContainer,
|
startContainer,
|
||||||
} from '../../../dist/core/dev/index.js';
|
} from '../../../dist/core/dev/index.js';
|
||||||
import { createFs, createRequestAndResponse, triggerFSEvent } from '../test-utils.js';
|
import {
|
||||||
|
createFs,
|
||||||
|
createRequestAndResponse,
|
||||||
|
defaultLogging,
|
||||||
|
triggerFSEvent,
|
||||||
|
} from '../test-utils.js';
|
||||||
import { createSettings, openConfig } from '../../../dist/core/config/index.js';
|
import { createSettings, openConfig } from '../../../dist/core/config/index.js';
|
||||||
import { defaultLogging } from '../../test-utils.js';
|
|
||||||
|
|
||||||
const root = new URL('../../fixtures/alias/', import.meta.url);
|
const root = new URL('../../fixtures/alias/', import.meta.url);
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,8 @@ import { expect } from 'chai';
|
||||||
import * as cheerio from 'cheerio';
|
import * as cheerio from 'cheerio';
|
||||||
|
|
||||||
import { runInContainer } from '../../../dist/core/dev/index.js';
|
import { runInContainer } from '../../../dist/core/dev/index.js';
|
||||||
import { createFs, createRequestAndResponse } from '../test-utils.js';
|
import { createFs, createRequestAndResponse, silentLogging } from '../test-utils.js';
|
||||||
import svelte from '../../../../integrations/svelte/dist/index.js';
|
import svelte from '../../../../integrations/svelte/dist/index.js';
|
||||||
import { defaultLogging } from '../../test-utils.js';
|
|
||||||
|
|
||||||
const root = new URL('../../fixtures/alias/', import.meta.url);
|
const root = new URL('../../fixtures/alias/', import.meta.url);
|
||||||
|
|
||||||
|
@ -33,11 +32,7 @@ describe('core/render components', () => {
|
||||||
{
|
{
|
||||||
fs,
|
fs,
|
||||||
root,
|
root,
|
||||||
logging: {
|
logging: silentLogging,
|
||||||
...defaultLogging,
|
|
||||||
// Error is expected in this test
|
|
||||||
level: 'silent',
|
|
||||||
},
|
|
||||||
userConfig: {
|
userConfig: {
|
||||||
integrations: [svelte()],
|
integrations: [svelte()],
|
||||||
},
|
},
|
||||||
|
|
|
@ -9,12 +9,8 @@ import {
|
||||||
renderHead,
|
renderHead,
|
||||||
Fragment,
|
Fragment,
|
||||||
} from '../../../dist/runtime/server/index.js';
|
} from '../../../dist/runtime/server/index.js';
|
||||||
import {
|
import { createRenderContext, renderPage } from '../../../dist/core/render/index.js';
|
||||||
createBasicEnvironment,
|
import { createBasicEnvironment } from '../test-utils.js';
|
||||||
createRenderContext,
|
|
||||||
renderPage,
|
|
||||||
} from '../../../dist/core/render/index.js';
|
|
||||||
import { defaultLogging as logging } from '../../test-utils.js';
|
|
||||||
import * as cheerio from 'cheerio';
|
import * as cheerio from 'cheerio';
|
||||||
|
|
||||||
const createAstroModule = (AstroComponent) => ({ default: AstroComponent });
|
const createAstroModule = (AstroComponent) => ({ default: AstroComponent });
|
||||||
|
@ -23,10 +19,7 @@ describe('core/render', () => {
|
||||||
describe('Injected head contents', () => {
|
describe('Injected head contents', () => {
|
||||||
let env;
|
let env;
|
||||||
before(async () => {
|
before(async () => {
|
||||||
env = createBasicEnvironment({
|
env = createBasicEnvironment();
|
||||||
logging,
|
|
||||||
renderers: [],
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Multi-level layouts and head injection, with explicit head', async () => {
|
it('Multi-level layouts and head injection, with explicit head', async () => {
|
||||||
|
|
|
@ -6,14 +6,9 @@ import {
|
||||||
renderSlot,
|
renderSlot,
|
||||||
} from '../../../dist/runtime/server/index.js';
|
} from '../../../dist/runtime/server/index.js';
|
||||||
import { jsx } from '../../../dist/jsx-runtime/index.js';
|
import { jsx } from '../../../dist/jsx-runtime/index.js';
|
||||||
import {
|
import { createRenderContext, renderPage, loadRenderer } from '../../../dist/core/render/index.js';
|
||||||
createBasicEnvironment,
|
|
||||||
createRenderContext,
|
|
||||||
renderPage,
|
|
||||||
loadRenderer,
|
|
||||||
} from '../../../dist/core/render/index.js';
|
|
||||||
import { createAstroJSXComponent, renderer as jsxRenderer } from '../../../dist/jsx/index.js';
|
import { createAstroJSXComponent, renderer as jsxRenderer } from '../../../dist/jsx/index.js';
|
||||||
import { defaultLogging as logging } from '../../test-utils.js';
|
import { createBasicEnvironment } from '../test-utils.js';
|
||||||
|
|
||||||
const createAstroModule = (AstroComponent) => ({ default: AstroComponent });
|
const createAstroModule = (AstroComponent) => ({ default: AstroComponent });
|
||||||
const loadJSXRenderer = () => loadRenderer(jsxRenderer, { import: (s) => import(s) });
|
const loadJSXRenderer = () => loadRenderer(jsxRenderer, { import: (s) => import(s) });
|
||||||
|
@ -23,7 +18,6 @@ describe('core/render', () => {
|
||||||
let env;
|
let env;
|
||||||
before(async () => {
|
before(async () => {
|
||||||
env = createBasicEnvironment({
|
env = createBasicEnvironment({
|
||||||
logging,
|
|
||||||
renderers: [await loadJSXRenderer()],
|
renderers: [await loadJSXRenderer()],
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
// @ts-check
|
// @ts-check
|
||||||
import { createFs, createRequestAndResponse } from '../test-utils.js';
|
import { createFs, createRequestAndResponse, defaultLogging } from '../test-utils.js';
|
||||||
import { createRouteManifest, matchAllRoutes } from '../../../dist/core/routing/index.js';
|
import { createRouteManifest, matchAllRoutes } from '../../../dist/core/routing/index.js';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import { defaultLogging } from '../../test-utils.js';
|
|
||||||
import { createViteLoader } from '../../../dist/core/module-loader/vite.js';
|
import { createViteLoader } from '../../../dist/core/module-loader/vite.js';
|
||||||
import { createDevelopmentEnvironment } from '../../../dist/core/render/dev/environment.js';
|
import { createDevelopmentEnvironment } from '../../../dist/core/render/dev/environment.js';
|
||||||
import { expect } from 'chai';
|
import { expect } from 'chai';
|
||||||
|
|
|
@ -5,6 +5,22 @@ import realFS from 'node:fs';
|
||||||
import npath from 'path';
|
import npath from 'path';
|
||||||
import { fileURLToPath } from 'url';
|
import { fileURLToPath } from 'url';
|
||||||
import { unixify } from './correct-path.js';
|
import { unixify } from './correct-path.js';
|
||||||
|
import { getDefaultClientDirectives } from '../../dist/core/client-directive/index.js';
|
||||||
|
import { createEnvironment } from '../../dist/core/render/index.js';
|
||||||
|
import { RouteCache } from '../../dist/core/render/route-cache.js';
|
||||||
|
import { nodeLogDestination } from '../../dist/core/logger/node.js';
|
||||||
|
|
||||||
|
/** @type {import('../../src/core/logger/core').LogOptions} */
|
||||||
|
export const defaultLogging = {
|
||||||
|
dest: nodeLogDestination,
|
||||||
|
level: 'error',
|
||||||
|
};
|
||||||
|
|
||||||
|
/** @type {import('../../src/core/logger/core').LogOptions} */
|
||||||
|
export const silentLogging = {
|
||||||
|
dest: nodeLogDestination,
|
||||||
|
level: 'error',
|
||||||
|
};
|
||||||
|
|
||||||
class VirtualVolume extends Volume {
|
class VirtualVolume extends Volume {
|
||||||
#root = '';
|
#root = '';
|
||||||
|
@ -151,3 +167,25 @@ export function buffersToString(buffers) {
|
||||||
|
|
||||||
// A convenience method for creating an astro module from a component
|
// A convenience method for creating an astro module from a component
|
||||||
export const createAstroModule = (AstroComponent) => ({ default: AstroComponent });
|
export const createAstroModule = (AstroComponent) => ({ default: AstroComponent });
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Partial<import('../../src/core/render/environment.js').CreateEnvironmentArgs>} options
|
||||||
|
* @returns {import('../../src/core/render/environment.js').Environment}
|
||||||
|
*/
|
||||||
|
export function createBasicEnvironment(options = {}) {
|
||||||
|
const mode = options.mode ?? 'development';
|
||||||
|
return createEnvironment({
|
||||||
|
...options,
|
||||||
|
markdown: {
|
||||||
|
...(options.markdown ?? {}),
|
||||||
|
},
|
||||||
|
mode,
|
||||||
|
renderers: options.renderers ?? [],
|
||||||
|
clientDirectives: getDefaultClientDirectives(),
|
||||||
|
resolve: options.resolve ?? ((s) => Promise.resolve(s)),
|
||||||
|
routeCache: new RouteCache(options.logging, mode),
|
||||||
|
logging: options.logging ?? defaultLogging,
|
||||||
|
ssr: options.ssr ?? true,
|
||||||
|
streaming: options.streaming ?? true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -2,18 +2,19 @@ import { expect } from 'chai';
|
||||||
|
|
||||||
import { createDefaultDevSettings } from '../../../dist/core/config/index.js';
|
import { createDefaultDevSettings } from '../../../dist/core/config/index.js';
|
||||||
import { createLoader } from '../../../dist/core/module-loader/index.js';
|
import { createLoader } from '../../../dist/core/module-loader/index.js';
|
||||||
import { createBasicEnvironment } from '../../../dist/core/render/index.js';
|
|
||||||
import { createRouteManifest } from '../../../dist/core/routing/index.js';
|
import { createRouteManifest } from '../../../dist/core/routing/index.js';
|
||||||
import { createComponent, render } from '../../../dist/runtime/server/index.js';
|
import { createComponent, render } from '../../../dist/runtime/server/index.js';
|
||||||
import { createController, handleRequest } from '../../../dist/vite-plugin-astro-server/index.js';
|
import { createController, handleRequest } from '../../../dist/vite-plugin-astro-server/index.js';
|
||||||
import { defaultLogging as logging } from '../../test-utils.js';
|
import {
|
||||||
import { createAstroModule, createFs, createRequestAndResponse } from '../test-utils.js';
|
createAstroModule,
|
||||||
|
createBasicEnvironment,
|
||||||
|
createFs,
|
||||||
|
createRequestAndResponse,
|
||||||
|
defaultLogging,
|
||||||
|
} from '../test-utils.js';
|
||||||
|
|
||||||
async function createDevEnvironment(overrides = {}) {
|
async function createDevEnvironment(overrides = {}) {
|
||||||
const env = createBasicEnvironment({
|
const env = createBasicEnvironment();
|
||||||
logging,
|
|
||||||
renderers: [],
|
|
||||||
});
|
|
||||||
env.settings = await createDefaultDevSettings({}, '/');
|
env.settings = await createDefaultDevSettings({}, '/');
|
||||||
env.settings.renderers = [];
|
env.settings.renderers = [];
|
||||||
env.loader = createLoader();
|
env.loader = createLoader();
|
||||||
|
@ -48,7 +49,7 @@ describe('vite-plugin-astro-server', () => {
|
||||||
fsMod: fs,
|
fsMod: fs,
|
||||||
settings: env.settings,
|
settings: env.settings,
|
||||||
},
|
},
|
||||||
logging
|
defaultLogging
|
||||||
);
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Add table
Reference in a new issue