{"id":46795169,"url":"https://github.com/cgalvarez/atom-coverage","last_synced_at":"2026-03-10T04:01:18.707Z","repository":{"id":54367315,"uuid":"121103961","full_name":"cgalvarez/atom-coverage","owner":"cgalvarez","description":"Add code coverage to your ES6 Atom package","archived":false,"fork":false,"pushed_at":"2021-02-23T02:39:01.000Z","size":4511,"stargazers_count":3,"open_issues_count":38,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-17T10:39:12.973Z","etag":null,"topics":["atom","coverage","istanbul","mocha","nyc","testing"],"latest_commit_sha":null,"homepage":null,"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/cgalvarez.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-11T08:48:16.000Z","updated_at":"2021-05-31T10:37:24.000Z","dependencies_parsed_at":"2022-08-13T13:31:18.796Z","dependency_job_id":null,"html_url":"https://github.com/cgalvarez/atom-coverage","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/cgalvarez/atom-coverage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgalvarez%2Fatom-coverage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgalvarez%2Fatom-coverage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgalvarez%2Fatom-coverage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgalvarez%2Fatom-coverage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cgalvarez","download_url":"https://codeload.github.com/cgalvarez/atom-coverage/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgalvarez%2Fatom-coverage/sbom","scorecard":{"id":272286,"data":{"date":"2025-08-11","repo":{"name":"github.com/cgalvarez/atom-coverage","commit":"c0f9f621bad474079f809b56b532ab2f4004c151"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/6 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"103 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-hr2v-3952-633q","Warn: Project is vulnerable to: GHSA-h6ch-v84p-w6p9","Warn: Project is vulnerable to: GHSA-ff7x-qrg7-qggm","Warn: Project is vulnerable to: GHSA-qrmc-fj45-qfc2","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-xf7w-r453-m56c","Warn: Project is vulnerable to: GHSA-4q6p-r6v2-jvc5","Warn: Project is vulnerable to: GHSA-q42p-pg8m-cqh6","Warn: Project is vulnerable to: GHSA-w457-6q6x-cgp9","Warn: Project is vulnerable to: GHSA-62gr-4qp9-h98f","Warn: Project is vulnerable to: GHSA-f52g-6jhx-586p","Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv","Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8","Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65","Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-44pw-h2cw-w3vq","Warn: Project is vulnerable to: GHSA-jp4x-w63m-7wgm","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-pc5p-h8pf-mvwp","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-675m-85rw-j3w4","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-fvqr-27wr-82fm","Warn: Project is vulnerable to: GHSA-4xc9-xhrj-v574","Warn: Project is vulnerable to: GHSA-x5rq-j2xg-h7qm","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-h726-x36v-rx45","Warn: Project is vulnerable to: GHSA-779f-wgxg-qr8f","Warn: Project is vulnerable to: GHSA-p9wx-2529-fp83","Warn: Project is vulnerable to: GHSA-5v2h-r2cx-5xgj","Warn: Project is vulnerable to: GHSA-rrrm-qjm4-v8hf","Warn: Project is vulnerable to: GHSA-xf5p-87ch-gxw2","Warn: Project is vulnerable to: GHSA-4xcv-9jjx-gfj3","Warn: Project is vulnerable to: GHSA-f9cm-qmx5-m98h","Warn: Project is vulnerable to: GHSA-7wpw-2hjm-89gp","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-hxm2-r34f-qmc5","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-fhjf-83wg-r2j9","Warn: Project is vulnerable to: GHSA-r683-j2x4-v87g","Warn: Project is vulnerable to: GHSA-w7rc-rwvf-8q5r","Warn: Project is vulnerable to: GHSA-4p35-cfcx-8653","Warn: Project is vulnerable to: GHSA-7f3x-x4pr-wqhj","Warn: Project is vulnerable to: GHSA-jpp7-7chh-cf67","Warn: Project is vulnerable to: GHSA-q6wq-5p59-983w","Warn: Project is vulnerable to: GHSA-j9fq-vwqv-2fm2","Warn: Project is vulnerable to: GHSA-pqw5-jmp5-px4v","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-g6ww-v8xp-vmwg","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-6g33-f262-xjp4","Warn: Project is vulnerable to: GHSA-mvjj-gqq2-p4hw","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-r2j6-p67h-q639","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-2m39-62fm-q8r3","Warn: Project is vulnerable to: GHSA-mf6x-7mm4-x2g7","Warn: Project is vulnerable to: GHSA-mxhp-79qh-mcx6","Warn: Project is vulnerable to: GHSA-j44m-qm6p-hp7m","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-38fc-wpqx-33j7","Warn: Project is vulnerable to: GHSA-662x-fhqg-9p8v","Warn: Project is vulnerable to: GHSA-394c-5j6w-4xmx","Warn: Project is vulnerable to: GHSA-78cj-fxph-m83p","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-cf4h-3jhx-xvhq","Warn: Project is vulnerable to: GHSA-qgmg-gppg-76g5","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T13:40:55.930Z","repository_id":54367315,"created_at":"2025-08-17T13:40:55.931Z","updated_at":"2025-08-17T13:40:55.931Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30324185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["atom","coverage","istanbul","mocha","nyc","testing"],"created_at":"2026-03-10T04:00:43.052Z","updated_at":"2026-03-10T04:01:18.691Z","avatar_url":"https://github.com/cgalvarez.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eAtomCoverage\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003eAdd code coverage to your Atom package\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://nodei.co/npm/atom-coverage/\"\u003e\n    \u003cimg src=\"https://nodei.co/npm/atom-coverage.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003ePACKAGE\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/atom-coverage.svg\" alt=\"NPM package version\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"http://semver.org/spec/v2.0.0.html\"\u003e\n    \u003cimg src=\"http://img.shields.io/SemVer/2.0.0.png\"\n      alt=\"Semantic Versioning 2.0.0\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://travis-ci.org/cgalvarez/atom-coverage\"\u003e\n    \u003cimg src=\"https://img.shields.io/travis/cgalvarez/atom-coverage/master.svg?label=TravisCI%20build\u0026logo=travis\"\n      alt=\"Build Status\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eVCS\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"http://makeapullrequest.com\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat\u0026logo=github\"\n      alt=\"Pull requests welcome!\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"http://commitizen.github.io/cz-cli/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=flat\"\n      alt=\"Commitizen friendly\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://semantic-release.gitbooks.io/semantic-release/content/\"\u003e\n    \u003cimg\n      src=\"https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\"\n      alt=\"Semantic release\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://github.com/cgalvarez/atom-coverage/blob/master/CODE_OF_CONDUCT.md\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-blue.svg?style=flat\"\n      alt=\"Code of conduct\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/follow-angular%20commit%20convention-blue.svg\"\n      alt=\"Follow angular commit convention\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eSECURITY\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://greenkeeper.io/\"\u003e\n    \u003cimg src=\"https://badges.greenkeeper.io/cgalvarez/atom-coverage.svg\" alt=\"Greenkeeper enabled\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://snyk.io/test/github/cgalvarez/atom-coverage\"\u003e\n    \u003cimg src=\"https://snyk.io/test/github/cgalvarez/atom-coverage/badge.svg\"\n      alt=\"Known Vulnerabilities\"\n      data-canonical-src=\"https://snyk.io/test/github/cgalvarez/atom-coverage\"\n      style=\"max-width:100%;\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://nodesecurity.io/orgs/cgalvarez/projects/66ddebfd-8788-43ae-ae77-171c8414c74a\"\u003e\n    \u003cimg src=\"https://nodesecurity.io/orgs/cgalvarez/projects/66ddebfd-8788-43ae-ae77-171c8414c74a/badge\"\n      alt=\"NSP Status\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://www.bithound.io/github/cgalvarez/atom-coverage/master/dependencies/npm\"\u003e\n    \u003cimg src=\"https://www.bithound.io/github/cgalvarez/atom-coverage/badges/dependencies.svg\"\n      alt=\"bitHound Dependencies\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.bithound.io/github/cgalvarez/atom-coverage/master/dependencies/npm\"\u003e\n    \u003cimg src=\"https://www.bithound.io/github/cgalvarez/atom-coverage/badges/devDependencies.svg\"\n      alt=\"bitHound Dev Dependencies\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eQUALITY\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://www.bithound.io/github/cgalvarez/atom-coverage\"\u003e\n    \u003cimg src=\"https://www.bithound.io/github/cgalvarez/atom-coverage/badges/score.svg\"\n      alt=\"bitHound Overall Score\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.bithound.io/github/cgalvarez/atom-coverage\"\u003e\n    \u003cimg src=\"https://www.bithound.io/github/cgalvarez/atom-coverage/badges/code.svg\"\n      alt=\"bitHound Code\" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://codeclimate.com/github/cgalvarez/atom-coverage/maintainability\"\u003e\n    \u003cimg src=\"https://api.codeclimate.com/v1/badges/dd177b97982f224495c4/maintainability\"\n      alt=\"CodeClimate maintainability score\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codeclimate.com/github/cgalvarez/atom-coverage/test_coverage\"\u003e\n    \u003cimg src=\"https://api.codeclimate.com/v1/badges/dd177b97982f224495c4/test_coverage\"\n      alt=\"CodeClimate test coverage \" /\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://codeclimate.com/github/cgalvarez/atom-coverage/issues\"\u003e\n    \u003cimg src =\"https://img.shields.io/codeclimate/issues/github/cgalvarez/atom-coverage.svg?label=Code%20Climate%20issues\"\n      alt=\"Code Climate issues\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/cgalvarez/atom-coverage\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/cgalvarez/atom-coverage/branch/master/graph/badge.svg\"\n      alt=\"codecov\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://inch-ci.org/github/cgalvarez/atom-coverage\"\u003e\n    \u003cimg src=\"http://inch-ci.org/github/cgalvarez/atom-coverage.svg?branch=master\u0026style=shields\"\n      alt=\"InchCI docs coverage\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eLEGAL\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://opensource.org/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Open%20Source-♥-ff69b4.svg?style=flat\"\n      alt=\"Love open source\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg?style=flat\"\n      alt=\"MIT license\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nCurrently **only** the following languages/frameworks are supported:\n\n- Languages:\n  - ES6 (ECMAScript2015)\n- Testing frameworks:\n  - [`mocha`](https://mochajs.org/)\n  (through [`atom-mocha`](https://www.npmjs.com/package/atom-mocha))\n- Coverage frameworks:\n  - [`nyc`](https://istanbul.js.org/)\n\n[Feel free (and encouraged!) to contribute](#faq) and improve this package to\nwork with other languages/frameworks!\n\n## Quickstart\n\n```shell\n$ cd your-atom-pkg\n$ npm install babel-cli babel-core babel-plugin-istanbul \\\n  babel-preset-env nyc atom-mocha atom-coverage --save-dev\n$ npm run test:coverage\n```\n\nAfter installing, you'll have two new NPM scripts (won't be overwritten if\nalready present):\n\n- `test:coverage`: runs your specs and generates code coverage reports on\n  finish.\n- `check:coverage`: checks if your coverage is above your thresholds. Read\n  [how to configure thresholds with `nyc`](https://github.com/istanbuljs/nyc#checking-coverage).\n\nI strongly recommend you to define your tests script as\n`cross-env NODE_ENV=test atom --test spec/*.spec.js spec/**/*.spec.js`.\n`apm test` does not allow for subdirectories, as opposed to `atom --test`.\nHaving subfolders allows a clearer, properly scoped structure for your\ntests/specs.\n\n\u003e **NOTE**: `atom --test spec/*.js` will fail if no `.js` files present at\n`spec/`, and `atom --test spec/**/*.js` will fail if no `.js` files present in\nany subfolder under `spec/`. This has nothing to do with AtomMocha, but Atom\nitself, so define your `test` script congruently/coherently with your project\nstructure.\n\n## Configuration files\n\n`atom-coverage` uses the config files of the involved frameworks if present.\nIf any of them is missing or has an incorrect configuration, it will\nautomatically create them or solve the conflicts for you (*to some extent, of\ncourse*).\n\nAssuming `atom-pkg/` is the root folder of your Atom package, let's dig into\neach config file...\n\n### `atom-pkg/.atom-coverage(.(json|yaml|yml))?`\n\nThis is the configuration file for `atom-coverage` itself. You can also provide\nthis configuration through the property `atomCoverage` inside your Atom\npackage's `package.json`.\n\nThe list of currently supported options are:\n\nOption|Type|Description|Default|Valid\n-|-|-|-|-\n`instrumenter`|String|The coverage framework to use|`nyc`|`nyc`\n`transpiler`|String|The transpiler to use|`babel`|`babel`\n`sourcesRoot`|String|The relative path to the root of your Atom package's source files|`lib/`\u003cbr /\u003e`src/`|-\n`testScript`|Script|The NPM script to execute your tests and get them covered with the configured `instrumenter`|`test`|-\n\n### [`atom-pkg/.babelrc`](https://babeljs.io/docs/usage/babelrc/)\n\nThis is the configuration file for [`babel`](http://babeljs.io/), which\n`atom-coverage` uses to transpile your ES6 code into ES5 that `nyc` understands.\nThe minimum required configuration is:\n\n```javascript\n{\n  \"env\": {\n    \"test\": {\n      \"plugins\": [\n        // You must install as devDep any babel plugin that your Atom package\n        // requires to get successfully transpiled, and include it here\n        \"...\",\n        \"istanbul\"\n      ],\n      \"sourceMaps\": \"inline\"\n    }\n  },\n  \"presets\": [\"env\"]\n}\n```\n\nHelpful links:\n\n- [`.babelrc` reference](https://babeljs.io/docs/usage/babelrc/)\n- [Babel plugins reference](https://babeljs.io/docs/plugins/)\n\n\u003e **NOTE 1**: The order of the Babel plugins **matters**, so you must find the\n\u003e correct order for your code to get transpiled, **being `istanbul` always the\n\u003e last one** (AtomCoverage enforces this).\n\u003e\n\u003e **NOTE 2**: `atom-coverage` does **NOT** currently support Babel config in\n\u003e `package.json`.\n\n### `atom-pkg/.nycrc(.json)?`\n\nThis is the configuration file for [`nyc`](https://istanbul.js.org/), which\n`atom-coverage` uses to analyze the code coverage of your pre-instrumented files.\n\nSome `nyc` options don't work when pre-instrumenting source files. You don't\nneed to care about this, since `atom-coverage` fixes them for you! The list of\nfixed options includes (but is not limited to, since I haven't thoroughly tested\nall options):\n\n- `include: String[]`: array of\n  [`glob`-compliant](https://www.npmjs.com/package/glob#glob-primer) strings.\n  If you provide a folder instead of a glob (i.e., `lib` or `lib/`), it\n  will be extended to recursively get all JavaScript files in that folder\n  (previous example would be extended to `lib/**/*.js`).\n- `all: boolean`: set `all=true` inside your `nyc` config file to recursively,\n  automagically get all your source files under `sourcesRoot` folder included\n  and covered.\n\nHelpful links:\n\n- [`nyc` official site](https://istanbul.js.org/)\n- [`nyc` code](https://github.com/istanbuljs/nyc/blob/master/lib/config-util.js)\n  for its settings API\n\n\u003e **NOTE**: `atom-coverage` does **NOT** currently support `nyc` config in\n\u003e `package.json`.\n\n## `testquire(uutPath: string, requireIt: boolean = true)`\n\nWe will refer to you files/modules as *UUT* (*Units Under Test*) from here on.\n\nAtomCoverage wraps your NPM test command to analyze the code coverage based on\nyour package tests. It doesn't make any magic to infer how to test your specs.\nYou must define that in an NPM script, given by the option `testScript` (which\ndefaults to `test` script if not provided).\n\nYou need to `require()` your pre-instrumented files instead your source files\ninside your tests/specs for the code coverage to work, but this would break your\ntests when running without coverage (in that case you should only request your\nsource files). That's why this package exports an alternative `require()` called\n`testquire()`, which loads your source files or the pre-instrumented ones,\ndepending if you request code coverage (thus loading pre-instrumented files) or\nnot (thus loading source files). You don't need to configure anything. It\nresolves both cases automatically for you. The only thing you need inside your\ntests/specs is:\n\n```javascript\nconst { testquire } = require('atom-coverage');\nconst uut = testquire('path/relative/to/sources/root/for/uut');\n```\n\n\u003e **NOTE**: You don't need to care about the depth level of your source/test\n\u003e files! `atom-coverage` automatically takes charge of that for you too!\n\n### Example\n\nLet's assume you keep your source files under `lib/`, and you want\nto load a file placed at `lib/folder1/folder2/file.js`. Then you require it\ninside your test/spec as:\n\n```javascript\nconst { testquire } = require('atom-coverage');\nconst uut = testquire('folder1/folder2/file');\n```\n\nIf you run `npm test`, `testquire()` will require your source file at\n`lib/folder1/folder2/file.js`.\n\nIf you run `npm run test:coverage`, `testquire()` will require your instrumented\nfile at `coverage/.instrumented/folder1/folder2/file.js` (assuming that you're\nusing the default options for `nyc` and `atom-coverage`).\n\n### Stubbing your UUT's dependencies\n\nWhat if you want to stub some of your files/modules inside your instrumented\nfiles? You can do that with the awesome\n[`proxyquire`](https://www.npmjs.com/package/proxyquire) package.\n\nYou need to feed `proxyquire()` with the path to your instrumented files to\ninject your stubs, but hardcoding the paths would be unmaintainable (and it\nwould break running only your specs, in addition). That's why you can pass a\nsecond parameter `requireIt` to `testquire()`, which manages whether (1) to\nrequire the file and return it (`requireIt=true`) or (2) not (`requireIt=false`).\nSo you could use `proxyquire` as follows:\n\n```javascript\nconst { testquire } = require('atom-coverage');\nconst proxyquire = require('proxyquire');\nconst uutPath = testquire('folder1/folder2/file', false);\nconst uutDepStub = {};\nconst uut = proxyquire(uutPath, {\n  'path/to/dep/exactly/as/required/inside/uut': uutDepStub,\n});\n```\n\n\u003e **NOTE**: Requiring NodeJS core modules or external dependencies is done\nas usual (i.e., `require('fs')` or `require('npmPackage')`).\n\n## Contributing\n\nIf you would like to contribute to `projects`, please, read carefully the\n[`semantic-release` contributing guidelines](https://github.com/semantic-release/semantic-release/blob/caribou/CONTRIBUTING.md),\nwhich I adhere to, and do the following:\n\n```shell\n# 01. Clone your fork of this repository into a local folder.\n$ git clone git@github.com:your-user/atom-coverage.git\n# 02. Enter the cloned package.\n$ cd ./atom-coverage\n# 03. Assign the original repo to a remote called \"upstream\".\n$ git remote add upstream https://github.com/cgalvarez/atom-coverage\n# 04. Create a new topic branch off the master branch that describe\n#     what your PR does and use it.\n$ git checkout -b 'your-pr-topic'\n# 05. Choose on command to install the package dependencies based on\n#     your package manager.\n$ (yarn|npm) install\n# 06. Make your changes and write specs to test them.\n# 07. Ensure that your changes pass the project requirements\n#     (linting, tests, coverage...).\n$ (yarn|npm) run check\n# 08. Once you've finished, commit your changes with commitizen.\n$ (yarn|npm) run semantic-commit\n# 09. Send a pull request describing what you have done.\n```\n\n## FAQ\n\n### Does/will this package support my desired testing/coverage framework?\n\nIf you want to support a different testing/coverage framework, please, help\nother developers with the same needs/preferences/desires as you :blush:, help\nthe open source community :heart: and contribute to the project by making an\nawesome pull request! :sparkles:\n\n## Author\n\n\u0026#169; 2018 Carlos García ([@cgalvarez](https://github.com/cgalvarez)),\nAll rights reserved.\n\n## License\n\nAtomCoverage is released under the [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgalvarez%2Fatom-coverage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcgalvarez%2Fatom-coverage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgalvarez%2Fatom-coverage/lists"}