-
Notifications
You must be signed in to change notification settings - Fork 774
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add sanitised error messages to wrangler telemetry collection (#…
…7856) * initial * feedback and some more examples * loads of tests + fixups * changeset + update telemetry docs * update tests
- Loading branch information
1 parent
50b13f6
commit 2b6f149
Showing
15 changed files
with
300 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
"wrangler": minor | ||
--- | ||
|
||
feat: add sanitised error messages to Wrangler telemetry | ||
|
||
Error messages that have been audited for potential inclusion of personal information, and explicitly opted-in, are now included in Wrangler's telemetry collection. Collected error messages will not include any filepaths, user input or any other potentially private content. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.