From 43d1618fa362b53bed82c4d81eac7eb92f9d8df5 Mon Sep 17 00:00:00 2001 From: Adrien Cacciaguerra Date: Mon, 31 Jul 2023 16:36:20 +0200 Subject: [PATCH 1/2] feat(tinybench-plugin): support afterAll, afterEach, beforeAll and beforeEach --- packages/tinybench-plugin/src/index.ts | 19 ++++++++++++ .../tests/index.integ.test.ts | 30 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/packages/tinybench-plugin/src/index.ts b/packages/tinybench-plugin/src/index.ts index 4ad18be8..1d19508c 100644 --- a/packages/tinybench-plugin/src/index.ts +++ b/packages/tinybench-plugin/src/index.ts @@ -47,6 +47,15 @@ export function withCodSpeed(bench: Bench): Bench { setupCore(); console.log(`[CodSpeed] running with @codspeed/tinybench v${__VERSION__}`); for (const task of bench.tasks) { + // run before hooks + if (task.opts.beforeAll != null) { + await task.opts.beforeAll.call(task); + } + if (task.opts.beforeEach != null) { + await task.opts.beforeEach.call(task); + } + + // run the actual benchmark, with instrumentation const uri = isCodSpeedBenchOptions(task.opts) ? task.opts.uri : `${rootCallingFile}::${task.name}`; @@ -56,6 +65,16 @@ export function withCodSpeed(bench: Bench): Bench { await task.fn(); Measurement.stopInstrumentation(uri); })(); + + // run after hooks + if (task.opts.afterEach != null) { + await task.opts.afterEach.call(task); + } + if (task.opts.afterAll != null) { + await task.opts.afterAll.call(task); + } + + // print results console.log(` ✔ Measured ${uri}`); } console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`); diff --git a/packages/tinybench-plugin/tests/index.integ.test.ts b/packages/tinybench-plugin/tests/index.integ.test.ts index 3c2a156f..ffae47ae 100644 --- a/packages/tinybench-plugin/tests/index.integ.test.ts +++ b/packages/tinybench-plugin/tests/index.integ.test.ts @@ -131,4 +131,34 @@ describe("Benchmark.Suite", () => { ); } ); + + it("should run before and after hooks", async () => { + mockCore.isInstrumented.mockReturnValue(true); + const beforeAll = jest.fn(); + const beforeEach = jest.fn(); + const afterEach = jest.fn(); + const afterAll = jest.fn(); + + await withCodSpeed(new Bench()) + .add( + "RegExp", + function () { + /o/.test("Hello World!"); + }, + { afterAll, afterEach, beforeAll, beforeEach } + ) + .add( + "RegExp2", + () => { + /o/.test("Hello World!"); + }, + { afterAll, afterEach, beforeAll, beforeEach } + ) + .run(); + + expect(beforeAll).toHaveBeenCalledTimes(2); + expect(beforeEach).toHaveBeenCalledTimes(2); + expect(afterEach).toHaveBeenCalledTimes(2); + expect(afterAll).toHaveBeenCalledTimes(2); + }); }); From 9c3d572c07c44823e37660be769a03651f1764fa Mon Sep 17 00:00:00 2001 From: Adrien Cacciaguerra Date: Mon, 31 Jul 2023 17:13:14 +0200 Subject: [PATCH 2/2] v2.1.0 --- lerna.json | 2 +- packages/benchmark.js-plugin/package.json | 4 +- packages/core/package.json | 2 +- packages/tinybench-plugin/package.json | 4 +- pnpm-lock.yaml | 230 +--------------------- 5 files changed, 14 insertions(+), 228 deletions(-) diff --git a/lerna.json b/lerna.json index b60734a8..0a500211 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "useWorkspaces": true, "packages": ["packages/*"], "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "2.0.0" + "version": "2.1.0" } diff --git a/packages/benchmark.js-plugin/package.json b/packages/benchmark.js-plugin/package.json index 9cefb22e..52c1857c 100644 --- a/packages/benchmark.js-plugin/package.json +++ b/packages/benchmark.js-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@codspeed/benchmark.js-plugin", - "version": "2.0.0", + "version": "2.1.0", "description": "Benchmark.js compatibility layer for CodSpeed", "keywords": [ "codspeed", @@ -28,7 +28,7 @@ "jest-mock-extended": "^3.0.4" }, "dependencies": { - "@codspeed/core": "workspace:^2.0.0", + "@codspeed/core": "workspace:^2.1.0", "find-up": "^6.3.0", "lodash": "^4.17.10", "stack-trace": "1.0.0-pre2" diff --git a/packages/core/package.json b/packages/core/package.json index ade251c3..dcfb6767 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@codspeed/core", - "version": "2.0.0", + "version": "2.1.0", "description": "The core Node library used to integrate with Codspeed runners", "keywords": [ "codspeed", diff --git a/packages/tinybench-plugin/package.json b/packages/tinybench-plugin/package.json index 8562a2fd..c6995004 100644 --- a/packages/tinybench-plugin/package.json +++ b/packages/tinybench-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@codspeed/tinybench-plugin", - "version": "2.0.0", + "version": "2.1.0", "description": "tinybench compatibility layer for CodSpeed", "keywords": [ "codspeed", @@ -25,7 +25,7 @@ "tinybench": "^2.4.0" }, "dependencies": { - "@codspeed/core": "workspace:^2.0.0", + "@codspeed/core": "workspace:^2.1.0", "find-up": "^6.3.0", "stack-trace": "1.0.0-pre2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84a57654..eb59792b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: "6.0" +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + importers: .: devDependencies: @@ -211,7 +215,7 @@ importers: packages/benchmark.js-plugin: dependencies: "@codspeed/core": - specifier: workspace:^2.0.0 + specifier: workspace:^2.1.0 version: link:../core find-up: specifier: ^6.3.0 @@ -264,7 +268,7 @@ importers: packages/tinybench-plugin: dependencies: "@codspeed/core": - specifier: workspace:^2.0.0 + specifier: workspace:^2.1.0 version: link:../core find-up: specifier: ^6.3.0 @@ -2591,51 +2595,6 @@ packages: slash: 3.0.0 dev: true - /@jest/core@29.5.0: - resolution: - { - integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/console": 29.5.0 - "@jest/reporters": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/transform": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.15.11 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.15.11) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - /@jest/core@29.5.0(ts-node@10.9.1): resolution: { @@ -6347,7 +6306,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 7.32.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0) get-tsconfig: 4.5.0 globby: 13.1.4 @@ -6394,38 +6353,6 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0): - resolution: - { - integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: "*" - eslint-import-resolver-node: "*" - eslint-import-resolver-typescript: "*" - eslint-import-resolver-webpack: "*" - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - "@typescript-eslint/parser": 5.58.0(eslint@7.32.0)(typescript@4.9.4) - debug: 3.2.7 - eslint: 7.32.0 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-plugin-import@2.27.5)(eslint@7.32.0) - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@7.32.0): resolution: { @@ -8340,37 +8267,6 @@ packages: - supports-color dev: true - /jest-cli@29.5.0: - resolution: - { - integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.5.0 - "@jest/test-result": 29.5.0 - "@jest/types": 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.1 - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - /jest-cli@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: { @@ -8402,89 +8298,6 @@ packages: - ts-node dev: true - /jest-config@29.5.0: - resolution: - { - integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - dependencies: - "@babel/core": 7.21.4 - "@jest/test-sequencer": 29.5.0 - "@jest/types": 29.5.0 - babel-jest: 29.5.0(@babel/core@7.21.4) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config@29.5.0(@types/node@18.15.11): - resolution: - { - integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - dependencies: - "@babel/core": 7.21.4 - "@jest/test-sequencer": 29.5.0 - "@jest/types": 29.5.0 - "@types/node": 18.15.11 - babel-jest: 29.5.0(@babel/core@7.21.4) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-config@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: { @@ -8661,7 +8474,7 @@ packages: jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - jest: 29.5.0 + jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) ts-essentials: 7.0.3(typescript@5.1.3) typescript: 5.1.3 dev: true @@ -8891,29 +8704,6 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.5.0: - resolution: - { - integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.5.0 - "@jest/types": 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0 - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - /jest@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: { @@ -13320,7 +13110,3 @@ packages: integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==, } engines: { node: ">=12.20" } - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy