Compare commits

...

1 Commits

Author SHA1 Message Date
Daniel Dietzler e17f12ca5c feat: vitest 4 2026-03-18 20:29:04 +01:00
9 changed files with 755 additions and 525 deletions
+2 -2
View File
@@ -54,8 +54,8 @@
"typescript": "^5.3.3", "typescript": "^5.3.3",
"typescript-eslint": "^8.28.0", "typescript-eslint": "^8.28.0",
"utimes": "^5.2.1", "utimes": "^5.2.1",
"vite-tsconfig-paths": "^6.1.1", "vite": "8.0.0",
"vitest": "^4.0.0" "vitest": "^4.1.0"
}, },
"volta": { "volta": {
"node": "24.13.1" "node": "24.13.1"
+3 -2
View File
@@ -1,4 +1,3 @@
import tsconfigPaths from 'vite-tsconfig-paths';
import { defineConfig } from 'vitest/config'; import { defineConfig } from 'vitest/config';
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true'; const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
@@ -24,5 +23,7 @@ export default defineConfig({
maxWorkers: 1, maxWorkers: 1,
isolate: false, isolate: false,
}, },
plugins: [tsconfigPaths()], resolve: {
tsconfigPaths: true,
},
}); });
+3 -2
View File
@@ -1,4 +1,3 @@
import tsconfigPaths from 'vite-tsconfig-paths';
import { defineConfig } from 'vitest/config'; import { defineConfig } from 'vitest/config';
const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true'; const skipDockerSetup = process.env.VITEST_DISABLE_DOCKER_SETUP === 'true';
@@ -24,5 +23,7 @@ export default defineConfig({
maxWorkers: 1, maxWorkers: 1,
isolate: false, isolate: false,
}, },
plugins: [tsconfigPaths()], resolve: {
tsconfigPaths: true,
},
}); });
+720 -489
View File
File diff suppressed because it is too large Load Diff
+6 -7
View File
@@ -4,6 +4,7 @@
"description": "", "description": "",
"author": "", "author": "",
"private": true, "private": true,
"type": "commonjs",
"license": "GNU Affero General Public License version 3", "license": "GNU Affero General Public License version 3",
"scripts": { "scripts": {
"build": "nest build", "build": "nest build",
@@ -18,9 +19,9 @@
"check": "tsc --noEmit", "check": "tsc --noEmit",
"check:code": "pnpm run format && pnpm run lint && pnpm run check", "check:code": "pnpm run format && pnpm run lint && pnpm run check",
"check:all": "pnpm run check:code && pnpm run test:cov", "check:all": "pnpm run check:code && pnpm run test:cov",
"test": "vitest --config test/vitest.config.mjs", "test": "vitest --config test/vitest.config.ts",
"test:cov": "vitest --config test/vitest.config.mjs --coverage", "test:cov": "vitest --config test/vitest.config.mjs --coverage",
"test:medium": "vitest --config test/vitest.config.medium.mjs", "test:medium": "vitest --config test/vite.config.medium.ts",
"typeorm": "typeorm", "typeorm": "typeorm",
"migrations:debug": "sql-tools -u ${DB_URL:-postgres://postgres:postgres@localhost:5432/immich} migrations generate --debug", "migrations:debug": "sql-tools -u ${DB_URL:-postgres://postgres:postgres@localhost:5432/immich} migrations generate --debug",
"migrations:generate": "sql-tools -u ${DB_URL:-postgres://postgres:postgres@localhost:5432/immich} migrations generate", "migrations:generate": "sql-tools -u ${DB_URL:-postgres://postgres:postgres@localhost:5432/immich} migrations generate",
@@ -121,7 +122,6 @@
"@nestjs/cli": "^11.0.2", "@nestjs/cli": "^11.0.2",
"@nestjs/schematics": "^11.0.0", "@nestjs/schematics": "^11.0.0",
"@nestjs/testing": "^11.0.4", "@nestjs/testing": "^11.0.4",
"@swc/core": "^1.4.14",
"@types/archiver": "^7.0.0", "@types/archiver": "^7.0.0",
"@types/async-lock": "^1.4.2", "@types/async-lock": "^1.4.2",
"@types/bcrypt": "^6.0.0", "@types/bcrypt": "^6.0.0",
@@ -146,7 +146,7 @@
"@types/supertest": "^6.0.0", "@types/supertest": "^6.0.0",
"@types/ua-parser-js": "^0.7.36", "@types/ua-parser-js": "^0.7.36",
"@types/validator": "^13.15.2", "@types/validator": "^13.15.2",
"@vitest/coverage-v8": "^3.0.0", "@vitest/coverage-v8": "^4.1.0",
"eslint": "^10.0.0", "eslint": "^10.0.0",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^5.1.3",
@@ -163,9 +163,8 @@
"testcontainers": "^11.0.0", "testcontainers": "^11.0.0",
"typescript": "^5.9.2", "typescript": "^5.9.2",
"typescript-eslint": "^8.28.0", "typescript-eslint": "^8.28.0",
"unplugin-swc": "^1.4.5", "vite": "^8.0.0",
"vite-tsconfig-paths": "^6.0.0", "vitest": "^4.1.0"
"vitest": "^3.0.0"
}, },
"volta": { "volta": {
"node": "24.13.1" "node": "24.13.1"
+10 -12
View File
@@ -1,9 +1,5 @@
import { Kysely } from 'kysely'; import { Migrator } from '@immich/sql-tools';
import { ConfigRepository } from 'src/repositories/config.repository'; import { join } from 'node:path';
import { DatabaseRepository } from 'src/repositories/database.repository';
import { LoggingRepository } from 'src/repositories/logging.repository';
import { DB } from 'src/schema';
import { getKyselyConfig } from 'src/utils/database';
import { GenericContainer, Wait } from 'testcontainers'; import { GenericContainer, Wait } from 'testcontainers';
const globalSetup = async () => { const globalSetup = async () => {
@@ -40,13 +36,15 @@ const globalSetup = async () => {
process.env.IMMICH_TEST_POSTGRES_URL = postgresUrl; process.env.IMMICH_TEST_POSTGRES_URL = postgresUrl;
const db = new Kysely<DB>(getKyselyConfig({ connectionType: 'url', url: postgresUrl })); const migrator = new Migrator({
allowUnorderedMigrations: false,
connectionParams: { connectionType: 'url', url: postgresUrl },
// eslint-disable-next-line unicorn/prefer-module
migrationFolder: join(__dirname, '../../src/schema/migrations'),
});
await migrator.runMigrations();
const configRepository = new ConfigRepository(); await migrator.destroy();
const logger = LoggingRepository.create();
await new DatabaseRepository(db, logger, configRepository).runMigrations();
await db.destroy();
}; };
export default globalSetup; export default globalSetup;
+7 -8
View File
@@ -1,15 +1,12 @@
import { dirname, resolve } from 'node:path'; /// <reference types="vitest/config" />
import { fileURLToPath } from 'node:url'; import { defineConfig } from 'vite';
import swc from 'unplugin-swc';
import tsconfigPaths from 'vite-tsconfig-paths';
import { defineConfig } from 'vitest/config';
const serverRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..'); // const serverRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
export default defineConfig({ export default defineConfig({
test: { test: {
name: 'server:medium', name: 'server:medium',
root: serverRoot, // root: serverRoot,
globals: true, globals: true,
include: ['test/medium/**/*.spec.ts'], include: ['test/medium/**/*.spec.ts'],
globalSetup: ['test/medium/globalSetup.ts'], globalSetup: ['test/medium/globalSetup.ts'],
@@ -19,5 +16,7 @@ export default defineConfig({
}, },
}, },
}, },
plugins: [swc.vite(), tsconfigPaths()], resolve: {
tsconfigPaths: true,
},
}); });
+3 -3
View File
@@ -1,12 +1,13 @@
import { dirname, resolve } from 'node:path'; import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
import swc from 'unplugin-swc';
import tsconfigPaths from 'vite-tsconfig-paths';
import { defineConfig } from 'vitest/config'; import { defineConfig } from 'vitest/config';
const serverRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..'); const serverRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
export default defineConfig({ export default defineConfig({
resolve: {
tsconfigPaths: true,
},
test: { test: {
name: 'server:unit', name: 'server:unit',
root: serverRoot, root: serverRoot,
@@ -31,5 +32,4 @@ export default defineConfig({
TZ: 'UTC', TZ: 'UTC',
}, },
}, },
plugins: [swc.vite(), tsconfigPaths()],
}); });
+1
View File
@@ -25,5 +25,6 @@
"types": ["vitest/globals"], "types": ["vitest/globals"],
"noErrorTruncation": true "noErrorTruncation": true
}, },
"include": ["src", "test"],
"exclude": ["dist", "node_modules", "upload"] "exclude": ["dist", "node_modules", "upload"]
} }