Skip to content
This repository was archived by the owner on Mar 1, 2026. It is now read-only.

Commit a1c7b9c

Browse files
committed
test(cli): add MySQL support to test utility helpers
Extends the testing infrastructure to support MySQL databases. Adds MySQL configuration defaults and environment variable overrides. Updates the prelude generation logic to handle MySQL connection strings and provider types, enabling broader database integration testing across the CLI.
1 parent 89eb50a commit a1c7b9c

1 file changed

Lines changed: 24 additions & 6 deletions

File tree

packages/cli/test/utils.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ const TEST_PG_CONFIG = {
1212
password: process.env['TEST_PG_PASSWORD'] ?? 'postgres',
1313
};
1414

15+
const TEST_MYSQL_CONFIG = {
16+
host: process.env['TEST_MYSQL_HOST'] ?? 'localhost',
17+
port: process.env['TEST_MYSQL_PORT'] ? parseInt(process.env['TEST_MYSQL_PORT']) : 3306,
18+
user: process.env['TEST_MYSQL_USER'] ?? 'root',
19+
password: process.env['TEST_MYSQL_PASSWORD'] ?? 'root',
20+
};
21+
1522
function getTestDbName(provider: string) {
1623
if (provider === 'sqlite') {
1724
return './test.db';
@@ -34,13 +41,24 @@ function getTestDbName(provider: string) {
3441
);
3542
}
3643

37-
export function getDefaultPrelude(options?: { provider?: 'sqlite' | 'postgresql' }) {
44+
export function getDefaultPrelude(options?: { provider?: 'sqlite' | 'postgresql' | 'mysql' }) {
3845
const provider = (options?.provider || getTestDbProvider()) ?? 'sqlite';
3946
const dbName = getTestDbName(provider);
40-
const dbUrl =
41-
provider === 'sqlite'
42-
? `file:${dbName}`
43-
: `postgres://${TEST_PG_CONFIG.user}:${TEST_PG_CONFIG.password}@${TEST_PG_CONFIG.host}:${TEST_PG_CONFIG.port}/${dbName}`;
47+
let dbUrl: string;
48+
49+
switch (provider) {
50+
case 'sqlite':
51+
dbUrl = `file:${dbName}`;
52+
break;
53+
case 'postgresql':
54+
dbUrl = `postgres://${TEST_PG_CONFIG.user}:${TEST_PG_CONFIG.password}@${TEST_PG_CONFIG.host}:${TEST_PG_CONFIG.port}/${dbName}`;
55+
break;
56+
case 'mysql':
57+
dbUrl = `mysql://${TEST_MYSQL_CONFIG.user}:${TEST_MYSQL_CONFIG.password}@${TEST_MYSQL_CONFIG.host}:${TEST_MYSQL_CONFIG.port}/${dbName}`;
58+
break;
59+
default:
60+
throw new Error(`Unsupported provider: ${provider}`);
61+
}
4462

4563
const ZMODEL_PRELUDE = `datasource db {
4664
provider = "${provider}"
@@ -52,7 +70,7 @@ export function getDefaultPrelude(options?: { provider?: 'sqlite' | 'postgresql'
5270

5371
export function createProject(
5472
zmodel: string,
55-
options?: { customPrelude?: boolean; provider?: 'sqlite' | 'postgresql' },
73+
options?: { customPrelude?: boolean; provider?: 'sqlite' | 'postgresql' | 'mysql' },
5674
) {
5775
const workDir = createTestProject();
5876
fs.mkdirSync(path.join(workDir, 'zenstack'), { recursive: true });

0 commit comments

Comments
 (0)