{"id":16376505,"url":"https://github.com/bengl/imhotap","last_synced_at":"2025-07-11T14:36:42.359Z","repository":{"id":57272668,"uuid":"201885198","full_name":"bengl/imhotap","owner":"bengl","description":"A meta-test-framwork. It runs a bunch of files.","archived":false,"fork":false,"pushed_at":"2024-01-12T04:33:50.000Z","size":36,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-30T01:07:19.239Z","etag":null,"topics":["runner","tap","tap-producer","test","test-anything-protocol","test-runner"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bengl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-12T08:03:19.000Z","updated_at":"2024-05-06T11:33:31.000Z","dependencies_parsed_at":"2024-01-12T09:02:04.692Z","dependency_job_id":null,"html_url":"https://github.com/bengl/imhotap","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/bengl/imhotap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fimhotap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fimhotap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fimhotap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fimhotap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bengl","download_url":"https://codeload.github.com/bengl/imhotap/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengl%2Fimhotap/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264833288,"owners_count":23670617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["runner","tap","tap-producer","test","test-anything-protocol","test-runner"],"created_at":"2024-10-11T03:24:55.691Z","updated_at":"2025-07-11T14:36:42.335Z","avatar_url":"https://github.com/bengl.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# imhotap\n\nThis is a meta-test-framework. Point it at a set of test files and see the\noutput summarized for each file!\n\nBy default, `imhotap` will find files matching the glob `test/**/test*.js`, and\nwill run each file individually. Each file that exits with a non-zero code will\nbe considered a test failure. The output is presented in TAP, but you can also\nuse whatever reporter you'd like.\n\nNo assumptions are made about what underlying test framework is used in each of\nthe files. If your tests produce TAP in either stdout or stderr, the output of\nthe first of those two streams that looks like TAP data will be treated as a\nsubtest. If neither stream looks like TAP data, both streams will be displayed\ninside a YAML block.\n\nSome test frameworks that should work well with `imhotap` are:\n\n* [`pitesti`](https://npm.im/pitesti)\n* [`tape`](https://npm.im/tape)\n* [`node-tap`](https://npm.im/tap)\n* [Any other TAP producer](https://testanything.org/producers.html)\n\n## Usage\n\n```\n$ imhotap --help\nOptions:\n  --version          Show version number                               [boolean]\n  --help             Show help                                         [boolean]\n  -f, --files        glob pattern for while files to run\n                                           [array] [default: \"test/**/test*.js\"]\n  -c, --concurrency  how many test files to run in parallel (0 == Infinity)\n                                                          [number] [default: 23]\n  -r, --reporter     which tap reporter to use, or just `tap`\n                                                       [string] [default: \"tap\"]\n  -q, --quieter      whether or not to include subtests on success\n                                                      [boolean] [default: false]\n  -R, --runner       a script runner for running test files (e.g. tsnode, etc.)\n                                                                        [string]\n  -e, --test-env     set an environment variable to the test file and runner\n                                                                         [array]\n  -s, --stream       stream to expect TAP output from test files\n                               [choices: \"stdout\", \"stderr\"] [default: \"stdout\"]\n```\n\nWithout any additional options, `imhotap` will run with all the defaults.\n\n### Selecting which files to run\n\nThe `-f/--files` options can be used to specify which files are run, using a\nglob (i.e. minimatch/fnmatch) pattern. For example, to match any files in your\n`test` directory, and subdirectories, ending in `.spec.js`, you might use the\noption `-f test/**/*.spec.js`.\n\nIf matching files end in `.js`, they will be executed with `node`, otherwise (if\n`-R/--runner` is not set) the matching files must be executable.\n\n### Concurrency\n\nIt's expected that your test files can be run as separate process at the same\ntime. If that's not the case, or there's too much load on your computer, you can\nadjust the the the number of simultaneous processes `imhotap` will spawn. For\nexample, `-c 1` will tell `imhotap` to run only 1 file at a time. The default\nis 1 less than the available CPU cores on your computer.\n\n### Reporting\n\nWhile the default is to just output TAP, you can format it using any of the\nvarious reporter tools that convert TAP into more pleasant output using `stdin`\nand `stdout`. Many can be found\n[here](https://github.com/sindresorhus/awesome-tap#reporters).\n\nTo specify a reporter, use the `-r/--reporter` option. If a named reporter can't\nbe found on the $PATH, `imhotap` will attempt to run it using `npx`.\n\n### Runner\n\nYou may want to use a different runner than `node` for executing your files. If\n`-R/--runner` is set to some script runner name, that runner will be used to\nexecute your test files.\n\nFor example, if your test files are written in TypeScript, you may want to use\n`tsnode` to execute your files. In that case, you can pass `-R tsnode` to\n`imhotap`.\n\n### Setting environment variables for test files\n\nIt can be useful to set environment variables that apply to test files, but\n*not* to `imhotap` itself. You can use the `-e/--test-env` option to set one or\nmore environment variables.\n\nFor example, to set `FOO=bar` and `BAZ=bux` in the test environment, you can\npass `-e FOO=bar BAZ=bux` to `imhotap`.\n\n### Verbosity\n\nBy default, `imhotap` will show subtest data from either stdout or stderr as\ndescribed above, or just output the streams in a YAML block if no TAP output is\nfound. In either case, if you'd like more terse output, you can use the\n`-q/--quieter` option to hide all but the top-level TAP produced by `imhotap`.\n\n### Config in `package.json`\n\nYou can also provide config in `package.json` using the `\"imhotap\"` property.\nFor example, to set the file pattern, to `test-*.js`, your package.json can look\nlike this:\n\n```js\n{\n  \"name\": \"myapp\",\n  \"scripts\": {\n    \"test\": \"imhotap\"\n  },\n  // ...\n  \"dependencies\": {\n    // ...\n  },\n  \"devDependencies\": {\n    \"imhotap\": \"*\"\n  },\n  \"imhotap\": {\n    \"files\": \"test-*.js\"\n  }\n}\n```\n\n## License\n\nMIT License. See LICENSE.txt.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengl%2Fimhotap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbengl%2Fimhotap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengl%2Fimhotap/lists"}