Skip to content

Commit

Permalink
loads of tests + fixups
Browse files Browse the repository at this point in the history
  • Loading branch information
emily-shen committed Jan 27, 2025
1 parent e1f5f1b commit 5a04c25
Show file tree
Hide file tree
Showing 2 changed files with 140 additions and 9 deletions.
135 changes: 135 additions & 0 deletions packages/wrangler/src/__tests__/errors.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
import {
CommandLineArgsError,
DeprecationError,
FatalError,
MissingConfigError,
UserError,
} from "../errors";
import { APIError, ParseError } from "../parse";

describe("errors", () => {
describe("UserError", () => {
it("takes a custom telemetry message", () => {
const error = new UserError("message", { telemetryMessage: "telemetry" });
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("telemetry");
});
it("can set telemetryMessage to equal the main message", () => {
const error = new UserError("message", { telemetryMessage: true });
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("message");
});
});

describe("DeprecationError", () => {
it("takes a custom telemetry message", () => {
const error = new DeprecationError("message", {
telemetryMessage: "telemetry",
});
expect(error.message).toBe("Deprecation:\nmessage");
expect(error.telemetryMessage).toBe("telemetry");
});
it("can set telemetryMessage to equal the main message", () => {
const error = new DeprecationError("message", { telemetryMessage: true });
expect(error.message).toBe("Deprecation:\nmessage");
expect(error.telemetryMessage).toBe("Deprecation:\nmessage");
});
});

describe("FatalError", () => {
it("takes a custom telemetry message", () => {
const error = new FatalError("message", undefined, {
telemetryMessage: "telemetry",
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("telemetry");
expect(error.code).toBeUndefined();
});
it("can set telemetryMessage to equal the main message", () => {
const error = new FatalError("message", 1, { telemetryMessage: true });
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("message");
expect(error.code).toBe(1);
});
});

describe("CommandLineArgsError", () => {
it("takes a custom telemetry message", () => {
const error = new CommandLineArgsError("message", {
telemetryMessage: "telemetry",
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("telemetry");
});
it("can set telemetryMessage to equal the main message", () => {
const error = new CommandLineArgsError("message", {
telemetryMessage: true,
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("message");
});
});

describe("JsonFriendlyFatalError", () => {
it("takes a custom telemetry message", () => {
const error = new FatalError("message", undefined, {
telemetryMessage: "telemetry",
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("telemetry");
expect(error.code).toBeUndefined();
});
it("can set telemetryMessage to equal the main message", () => {
const error = new FatalError("message", 1, { telemetryMessage: true });
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("message");
expect(error.code).toBe(1);
});
});

describe("MissingConfigError", () => {
it("just sets the telemetry message as the main message", () => {
const error = new MissingConfigError("message");
expect(error.message).toBe("Missing config value for message");
expect(error.telemetryMessage).toBe("Missing config value for message");
});
});

describe("ParseError", () => {
it("takes a custom telemetry message", () => {
const error = new ParseError({
text: "message",
telemetryMessage: "telemetry",
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("telemetry");
});
it("can set telemetryMessage to equal the main message", () => {
const error = new ParseError({
text: "message",
telemetryMessage: true,
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("message");
});
});

describe("APIError", () => {
it("takes a custom telemetry message", () => {
const error = new APIError({
text: "message",
telemetryMessage: "telemetry",
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("telemetry");
});
it("can set telemetryMessage to equal the main message", () => {
const error = new APIError({
text: "message",
telemetryMessage: true,
});
expect(error.message).toBe("message");
expect(error.telemetryMessage).toBe("message");
});
});
});
14 changes: 5 additions & 9 deletions packages/wrangler/src/errors.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* This is used to provide telemetry with a sanitised error
* message that could not have any user-identifying information.
* Use "*" as shorthand to duplicate `message`.
* message that could not have any user-identifying information.
* Set to `true` to duplicate `message`.
* */
export type TelemetryMessage = {
telemetryMessage?: string | true;
Expand All @@ -28,8 +28,8 @@ export class UserError extends Error {
}

export class DeprecationError extends UserError {
constructor(message: string) {
super(`Deprecation:\n${message}`);
constructor(message: string, options?: TelemetryMessage) {
super(`Deprecation:\n${message}`, options);
}
}

Expand All @@ -43,11 +43,7 @@ export class FatalError extends UserError {
}
}

export class CommandLineArgsError extends UserError {
constructor(message: string, options?: { telemetryMessage?: string | true }) {
super(message, options);
}
}
export class CommandLineArgsError extends UserError {}

/**
* JsonFriendlyFatalError is used to output JSON when wrangler crashes, useful for --json mode.
Expand Down

0 comments on commit 5a04c25

Please sign in to comment.