{"_id":"@benmerckx/suite","_rev":"3-8d3ef044e302ab46825ae35b8dafd998","name":"@benmerckx/suite","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@benmerckx/suite","version":"0.1.0","_id":"@benmerckx/suite@0.1.0","maintainers":[{"name":"benmerckx","email":"ben@codeurs.be"}],"dist":{"shasum":"6892f6ef29b0b5f8f73ab56eca1f91cb0a9cfe95","tarball":"https://registry.npmjs.org/@benmerckx/suite/-/suite-0.1.0.tgz","fileCount":4,"integrity":"sha512-EtkxuqRlodvCkbCgzO6uEDAGYj2RkOmbH3+P5wQ5F9mrKKXGxoIbH/Oz6gVupI0ZfgHi/a4vKfyEjVH2+GQmmg==","signatures":[{"sig":"MEQCIGoi/YzKJ6TIPAOwczxquV24QJ6+U02bWTM955LJYLY5AiARZ5EJNSEPXcLKghvNjL8tJPYp90wUec+QbWOlbS5+TA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5549},"type":"module","module":"suite.js","gitHead":"bff0a9d7f8b79119a655326efed76a33f942a34c","scripts":{"test":"node --test && deno test && bun test","publish":"npm publish && npx jsr publish"},"_npmUser":{"name":"benmerckx","email":"ben@codeurs.be"},"_npmVersion":"10.2.4","description":"Describe tests that run in the native test runners of Node.js, Deno and Bun.","directories":{},"_nodeVersion":"20.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/suite_0.1.0_1717680585767_0.2125127123668673","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@benmerckx/suite","version":"0.2.0","_id":"@benmerckx/suite@0.2.0","maintainers":[{"name":"benmerckx","email":"ben@codeurs.be"}],"dist":{"shasum":"64426aa7687f7d787800ddd0d068d7ffd182bfee","tarball":"https://registry.npmjs.org/@benmerckx/suite/-/suite-0.2.0.tgz","fileCount":4,"integrity":"sha512-oKRmh8hg89URE1uPMaBw5FSMMIwaJ5vtx82H6m9ghMi99M1eesNn4a2qNvcCAhfBfHdpWOAprUL4DEiNgsV8lQ==","signatures":[{"sig":"MEQCIHNBespLrfwKGC2WVcaj1reWX6mC28bOVSgGuMs72SZGAiBdV+ZlfIp+EOyMmKZFjtQL5bOFn4DfI8L/qZ1CaJ3XyA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5736},"type":"module","types":"suite.d.ts","module":"suite.js","gitHead":"cb6829ea28e82c4f3424b56c5c477fe1443a151f","scripts":{"test":"node --test && deno test && bun test","deploy":"npm publish && npx jsr publish"},"_npmUser":{"name":"benmerckx","email":"ben@codeurs.be"},"_npmVersion":"10.2.4","description":"[![NPM Version](https://img.shields.io/npm/v/@benmerckx/suite)](https://www.npmjs.com/package/@benmerckx/suite)\r [![JSR](https://jsr.io/badges/@benmerckx/suite)](https://jsr.io/@benmerckx/suite)","directories":{},"_nodeVersion":"20.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/suite_0.2.0_1717682591868_0.574395672730776","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@benmerckx/suite","version":"0.3.0","_id":"@benmerckx/suite@0.3.0","maintainers":[{"name":"benmerckx","email":"ben@codeurs.be"}],"dist":{"shasum":"912af27b8e0819653a69f14056d82e4468aaa283","tarball":"https://registry.npmjs.org/@benmerckx/suite/-/suite-0.3.0.tgz","fileCount":7,"integrity":"sha512-3xO7leNM3kNtkjg61LiL639FF0m34GC0MbwK9kaHtyv/k085/KDKySA4NguYYzYLy2eyFYR75lSqo4Ct9babuQ==","signatures":[{"sig":"MEYCIQDp2Nb5rmCgwS/qg8uZpsxYpOgyLTjI9IdZnUpSD1PwSwIhAMBtQrSYJwvnbCDZMUPZUubA59JaP7slGKbdeNGWLx+q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14174},"type":"module","types":"suite.d.ts","module":"suite.js","exports":{".":{"bun":"./src/suite.bun.js","deno":"./dist/suite.deno.js","node":"./src/suite.node.js","types":"./src/suite.d.ts"},"./package.json":"./package.json"},"gitHead":"7604b65326e677c87c62a8aea3b294e862a527a3","imports":{"#suite":{"bun":"./src/suite.bun.js","node":"./src/suite.node.js","types":"./src/suite.d.ts"}},"scripts":{"test":"node --test && deno test && bun test","build":"bun build src/suite.deno.js --outdir=dist --minify","deploy":"npm publish && npx jsr publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"benmerckx","email":"ben@codeurs.be"},"_npmVersion":"9.6.7","description":"[![NPM Version](https://img.shields.io/npm/v/@benmerckx/suite)](https://www.npmjs.com/package/@benmerckx/suite) [![JSR](https://jsr.io/badges/@benmerckx/suite)](https://jsr.io/@benmerckx/suite)","directories":{},"_nodeVersion":"18.17.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@jsr/std__assert":"^0.225.2"},"peerDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/suite_0.3.0_1718794325962_0.6544797272162937","host":"s3://npm-registry-packages"}},"0.3.1":{"version":"0.3.1","name":"@benmerckx/suite","types":"./src/suite.d.ts","type":"module","devDependencies":{"@jsr/std__assert":"^0.225.2","@types/bun":"latest"},"peerDependencies":{"typescript":"^5.0.0"},"scripts":{"build":"bun build src/suite.deno.js --outdir=dist --minify","test":"node --test && deno test && bun test","deploy":"npm publish && npx jsr publish","prepublishOnly":"bun run build"},"publishConfig":{"access":"public"},"exports":{".":{"deno":"./dist/suite.deno.js","bun":"./src/suite.bun.js","node":"./src/suite.node.js","types":"./src/suite.d.ts"},"./package.json":"./package.json"},"imports":{"#suite":{"bun":"./src/suite.bun.js","node":"./src/suite.node.js","types":"./src/suite.d.ts"}},"_id":"@benmerckx/suite@0.3.1","gitHead":"7d3980cf06997406fee9ee99fe0dcead489eeecf","description":"[![NPM Version](https://img.shields.io/npm/v/@benmerckx/suite)](https://www.npmjs.com/package/@benmerckx/suite) [![JSR](https://jsr.io/badges/@benmerckx/suite)](https://jsr.io/@benmerckx/suite)","_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-1CHNYY6qquBpVZHbj0Y5lK4Ve8nQpKuKtznm/Te/RVfbX5PTXnBF7k7GGbjHI0q6fciyNQfTqOX9dbgroLDkdQ==","shasum":"77c92d6e3e9173c63867854751c0f55cc6b2e91f","tarball":"https://registry.npmjs.org/@benmerckx/suite/-/suite-0.3.1.tgz","fileCount":7,"unpackedSize":14115,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCLILGd+EXPYCZ+r1mhuYd4/2mUjF/CT1aIENJAXOVFQIhANd49xeP+iqnaTLlk8Xd9/7+H96QD1Kl7VWp4JDVhg9X"}]},"_npmUser":{"name":"benmerckx","email":"ben@codeurs.be"},"directories":{},"maintainers":[{"name":"benmerckx","email":"ben@codeurs.be"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/suite_0.3.1_1724927299431_0.1906144630141009"},"_hasShrinkwrap":false}},"time":{"created":"2024-06-06T13:29:45.679Z","modified":"2024-08-29T10:28:19.836Z","0.1.0":"2024-06-06T13:29:45.890Z","0.2.0":"2024-06-06T14:03:12.025Z","0.3.0":"2024-06-19T10:52:06.113Z","0.3.1":"2024-08-29T10:28:19.624Z"},"description":"[![NPM Version](https://img.shields.io/npm/v/@benmerckx/suite)](https://www.npmjs.com/package/@benmerckx/suite) [![JSR](https://jsr.io/badges/@benmerckx/suite)](https://jsr.io/@benmerckx/suite)","maintainers":[{"name":"benmerckx","email":"ben@codeurs.be"}],"readme":"# suite\n\n[![NPM Version](https://img.shields.io/npm/v/@benmerckx/suite)](https://www.npmjs.com/package/@benmerckx/suite)\n[![JSR](https://jsr.io/badges/@benmerckx/suite)](https://jsr.io/@benmerckx/suite)\n\nDescribe tests that run in the native test runners of Node.js, Deno and Bun.\n\n## example\n\n````ts\n// example.test.js\nimport {suite} from '@benmerckx/suite'\n\nsuite(import.meta, test => {\n  test('is', () => {\n    test.is(1, 1)\n  })\n\n  test('deep equal', () => {\n    test.equal({a: 1}, {a: 1})\n  })\n\n  test('async', async () => {\n    await new Promise(resolve => setTimeout(resolve, 100))\n    test.ok(true)\n  })\n\n  test('throws', () => {\n    test.throws(() => {\n      throw new Error('test')\n    }, 'test')\n  })\n\n  test.skip('skip', () => {\n    test.ok(false)\n  })\n})\n````\n\nRun with:\n- `node --test`\n- `bun test`\n- `deno test`\n\n## api\n\n````ts\n/** Define a test suite */\nexport function suite(meta: ImportMeta, define: (test: DefineTest) => void): void\n\n/** Describe a test */\nexport type Describe =\n  (name: string, run: () => void | Promise<void>): void\n\n/** Define a test suite */\nexport interface DefineTest extends Describe {\n  /** Skip the test */\n  skip: Describe\n  /** Only run this test */\n  only: Describe\n  /** Assert that actual is a truthy value */\n  ok(actual: any): void\n  /** Assert that actual strictly equals (===) the expects value */\n  is(actual: any, expects: any): void\n  /** Assert that actual is deeply equal to the expects value */\n  equal(actual: any, expects: any): void\n  /** Assert that the fn function throws an Error */\n  throws(fn: () => void, messageIncludes?: string): void\n  /** Assert inverse */\n  not: {\n    /** Assert that actual is a falsy value */\n    ok(actual: any): void\n    /** Assert that actual does not strictly equal (===) the expects value */\n    is(actual: any, expects: any): void\n    /** Assert that actual is not deeply equal to the expects value */\n    equal(actual: any, expects: any): void\n  }\n}\n````\n","readmeFilename":"README.md"}