Skip to content

Commit

Permalink
Integration test refactor (cloudflare#27)
Browse files Browse the repository at this point in the history
* wire up workerd/miniflare logs to Vite

* refactor: make integration tests their own workspace packages

* fixup! refactor: make integration tests their own workspace packages

* fixup! refactor: make integration tests their own workspace packages
  • Loading branch information
petebacondarwin authored Oct 15, 2024
1 parent 9b2361d commit ff017ad
Show file tree
Hide file tree
Showing 61 changed files with 428 additions and 164 deletions.
8 changes: 2 additions & 6 deletions .github/workflows/pull-request-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,9 @@ jobs:
shell: bash
run: pnpm install --frozen-lockfile

- name: Check formatting
- name: Running checks
shell: bash
run: pnpm prettier:check

- name: Check types
shell: bash
run: pnpm types:check
run: pnpm check

- name: Run tests
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion examples/multi-worker/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"dev": "vite dev"
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20240919.0",
"@cloudflare/workers-types": "^4.20241004.0",
"@flarelabs-net/vite-plugin-cloudflare": "workspace:*",
"@vite-plugin-cloudflare/typescript-config": "workspace:*",
"vite": "6.0.0-beta.2",
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
"types:check": "pnpm -r types:check",
"prettier:check": "prettier --check .",
"prettier:fix": "prettier --write .",
"check": "pnpm run types:check && pnpm run prettier:check",
"fix": "pnpm run prettier:fix",
"test": "pnpm -r test",
"postinstall": "pnpm -r build"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/vite-plugin-cloudflare/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"build": "tsup",
"watch": "tsup --watch",
"test": "vitest run --passWithNoTests",
"types:check": "tsc --build --noEmit"
"types:check": "tsc --build"
},
"peerDependencies": {
"vite": "6.0.0-beta.2",
Expand Down
44 changes: 44 additions & 0 deletions packages/vite-plugin-cloudflare/src/miniflare-options.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { Log, LogLevel } from 'miniflare';
import * as vite from 'vite';
import { unstable_getMiniflareWorkerOptions } from 'wrangler';
import { Response as MiniflareResponse } from 'miniflare';
Expand Down Expand Up @@ -155,7 +156,13 @@ export function getMiniflareOptions(
invariant(devEnvironment, 'First worker dev environment not found');
const resolveId = getResolveId(viteConfig, devEnvironment);

const logger = new ViteMiniflareLogger(viteConfig);
return {
log: logger,
handleRuntimeStdio(stdout, stderr) {
stdout.forEach((data) => logger.info(data));
stderr.forEach((error) => logger.error(error));
},
...getPersistence(normalizedPluginConfig.persistPath),
workers: workers.map((workerOptions) => {
const wrappers = [
Expand Down Expand Up @@ -255,3 +262,40 @@ export function getMiniflareOptions(
unsafeModuleFallbackService: getModuleFallbackHandler(resolveId),
};
}

/**
* A Miniflare logger that forwards messages onto a Vite logger.
*/
class ViteMiniflareLogger extends Log {
private logger: vite.Logger;
constructor(config: vite.ResolvedConfig) {
super(miniflareLogLevelFromViteLogLevel(config.logLevel));
this.logger = config.logger;
}

override logWithLevel(level: LogLevel, message: string) {
switch (level) {
case LogLevel.ERROR:
return this.logger.error(message);
case LogLevel.WARN:
return this.logger.warn(message);
case LogLevel.INFO:
return this.logger.info(message);
}
}
}

function miniflareLogLevelFromViteLogLevel(
level: vite.LogLevel = 'info',
): LogLevel {
switch (level) {
case 'error':
return LogLevel.ERROR;
case 'warn':
return LogLevel.WARN;
case 'info':
return LogLevel.INFO;
case 'silent':
return LogLevel.NONE;
}
}
130 changes: 104 additions & 26 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
packages:
- 'packages/*'
- 'examples/*'
- 'tests/*'
- 'tests/integration/packages/*'
- 'tests/integration/*'
Loading

0 comments on commit ff017ad

Please sign in to comment.