Home / File/ config-validate.test.js — astro Source File

config-validate.test.js — astro Source File

Architecture documentation for config-validate.test.js, a javascript file in the astro codebase. 9 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2["config-validate.test.js"]
  cde41887_fe2b_3406_32b7_6c30f3ec917b["../../../dist/assets/fonts/providers/index.js"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> cde41887_fe2b_3406_32b7_6c30f3ec917b
  6eaaf986_6263_58dd_a0fd_b4e8607782d5["../../../dist/assets/fonts/providers/local.js"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> 6eaaf986_6263_58dd_a0fd_b4e8607782d5
  ef38726d_6880_e84e_7900_90c0b06e793b["../../../dist/core/config/validate.js"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> ef38726d_6880_e84e_7900_90c0b06e793b
  7716cc54_6e59_c65d_be33_aa6b30097bf2["../../../dist/core/messages.js"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> 7716cc54_6e59_c65d_be33_aa6b30097bf2
  89a03732_ed6f_dc39_c26d_305e066b44b7["../../../dist/env/config.js"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> 89a03732_ed6f_dc39_c26d_305e066b44b7
  e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607["strict"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607
  6b0635f9_51ea_77aa_767b_7857878e98a6["node:test"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> 6b0635f9_51ea_77aa_767b_7857878e98a6
  b4a76fc8_3591_85b4_7b57_55ab21d1030d["node:util"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> b4a76fc8_3591_85b4_7b57_55ab21d1030d
  f8c9251e_f535_6281_2118_9e79a4155212["v4"]
  3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 --> f8c9251e_f535_6281_2118_9e79a4155212
  style 3c9a7cf8_2838_e8af_0d24_6ff15dd9b7f2 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

// @ts-check
import * as assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { stripVTControlCharacters } from 'node:util';
import * as z from 'zod/v4';
import { fontProviders } from '../../../dist/assets/fonts/providers/index.js';
import { LocalFontProvider } from '../../../dist/assets/fonts/providers/local.js';
import { validateConfig as _validateConfig } from '../../../dist/core/config/validate.js';
import { formatConfigErrorMessage } from '../../../dist/core/messages.js';
import { envField } from '../../../dist/env/config.js';

/**
 *
 * @param {any} userConfig
 */
async function validateConfig(userConfig) {
	return _validateConfig(userConfig, process.cwd(), '');
}

describe('Config Validation', () => {
	it('empty user config is valid', async () => {
		assert.doesNotThrow(() => validateConfig({}).catch((err) => err));
	});

	it('Zod errors are returned when invalid config is used', async () => {
		const configError = await validateConfig({ site: 42 }).catch((err) => err);
		assert.equal(configError instanceof z.ZodError, true);
	});

	it('A validation error can be formatted correctly', async () => {
		const configError = await validateConfig({ site: 42 }).catch((err) => err);
		assert.equal(configError instanceof z.ZodError, true);
		const formattedError = stripVTControlCharacters(formatConfigErrorMessage(configError));
		assert.equal(
			formattedError,
			`[config] Astro found issue(s) with your configuration:

! site: Expected type "string", received "number"`,
		);
	});

	it('Multiple validation errors can be formatted correctly', async () => {
		const veryBadConfig = {
			integrations: [42],
			build: { format: 'invalid' },
		};
		const configError = await validateConfig(veryBadConfig).catch((err) => err);
		assert.equal(configError instanceof z.ZodError, true);
		const formattedError = stripVTControlCharacters(formatConfigErrorMessage(configError));
		assert.equal(
			formattedError,
			`[config] Astro found issue(s) with your configuration:

! integrations.0: Expected type "object", received "number"

! build.format: Did not match union.
  > Expected type "file" | "directory" | "preserve"
  > Received "invalid"`,
		);
	});
// ... (571 more lines)

Subdomains

Functions

Dependencies

  • ../../../dist/assets/fonts/providers/index.js
  • ../../../dist/assets/fonts/providers/local.js
  • ../../../dist/core/config/validate.js
  • ../../../dist/core/messages.js
  • ../../../dist/env/config.js
  • node:test
  • node:util
  • strict
  • v4

Frequently Asked Questions

What does config-validate.test.js do?
config-validate.test.js is a source file in the astro codebase, written in javascript. It belongs to the IntegrationAdapters domain, SsrAdapters subdomain.
What functions are defined in config-validate.test.js?
config-validate.test.js defines 1 function(s): validateConfig.
What does config-validate.test.js depend on?
config-validate.test.js imports 9 module(s): ../../../dist/assets/fonts/providers/index.js, ../../../dist/assets/fonts/providers/local.js, ../../../dist/core/config/validate.js, ../../../dist/core/messages.js, ../../../dist/env/config.js, node:test, node:util, strict, and 1 more.
Where is config-validate.test.js in the architecture?
config-validate.test.js is located at packages/astro/test/units/config/config-validate.test.js (domain: IntegrationAdapters, subdomain: SsrAdapters, directory: packages/astro/test/units/config).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free