Skip to content

Commit 77e4056

Browse files
committed
chore: include release info in Sentry
We include the hardhat version already, but by passing it as a release we leverage Sentries release tracking. Resolves #7011
1 parent 2288e14 commit 77e4056

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

v-next/hardhat/src/internal/cli/telemetry/sentry/anonymizer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export class Anonymizer {
5555
const result: Event = {
5656
event_id: event.event_id,
5757
platform: event.platform,
58+
release: event.release,
5859
timestamp: event.timestamp,
5960
extra: event.extra,
6061
};

v-next/hardhat/src/internal/cli/telemetry/sentry/init.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { createGetModuleFromFilename } from "./vendor/utils/module.js";
3030
interface InitOptions {
3131
dsn: string;
3232
transport: (transportOptions: BaseTransportOptions) => Transport;
33+
release?: string;
3334
serverName?: string;
3435
integrations?: (integrations: Integration[]) => Integration[];
3536
}

v-next/hardhat/src/internal/cli/telemetry/sentry/reporter.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class Reporter {
6868
"./vendor/integrations/contextlines.js"
6969
);
7070

71+
const hardhatVersion = await getHardhatVersion();
7172
const { init } = await import("./init.js");
7273

7374
const linkedErrorsIntegrationInstance = linkedErrorsIntegration({
@@ -79,14 +80,15 @@ class Reporter {
7980
await init({
8081
dsn: SENTRY_DSN,
8182
transport: makeSubprocessTransport,
83+
release: `hardhat@${hardhatVersion}`,
8284
integrations: () => [
8385
linkedErrorsIntegrationInstance,
8486
contextLinesIntegrationInstance,
8587
],
8688
});
8789

8890
setExtra("nodeVersion", process.version);
89-
setExtra("hardhatVersion", await getHardhatVersion());
91+
setExtra("hardhatVersion", hardhatVersion);
9092

9193
return this.#instance;
9294
}

v-next/hardhat/test/internal/cli/telemetry/sentry/anonymizer.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { Event } from "@sentry/core";
2+
13
import assert from "node:assert/strict";
24
import path from "node:path";
35
import { describe, it } from "node:test";
@@ -17,6 +19,29 @@ class MockedAnonymizer extends Anonymizer {
1719
}
1820

1921
describe("Anonymizer", () => {
22+
it("should clone key information from an anonymized event", async () => {
23+
const originalEvent: Event = {
24+
event_id: "my-event",
25+
platform: "platform1",
26+
release: "release1",
27+
timestamp: 1754398906,
28+
extra: {
29+
another: "example",
30+
},
31+
};
32+
33+
const anonymizer = new Anonymizer();
34+
35+
const result = await anonymizer.anonymize(originalEvent);
36+
37+
if (!result.success) {
38+
assert.fail("The event should anonymize without issue");
39+
return;
40+
}
41+
42+
assert.deepEqual(result.event, originalEvent);
43+
});
44+
2045
it("should anonymize paths of the user's project", async () => {
2146
const anonymizer = new Anonymizer();
2247
const anonymizationResult = await anonymizer.anonymizeFilename(

0 commit comments

Comments
 (0)