{"id":15859121,"url":"https://github.com/radditude/coveralls-multi","last_synced_at":"2025-08-09T23:07:16.834Z","repository":{"id":65611821,"uuid":"135986939","full_name":"radditude/coveralls-multi","owner":"radditude","description":"A Coveralls client that supports multi-language repos","archived":false,"fork":false,"pushed_at":"2020-06-13T19:54:52.000Z","size":72,"stargazers_count":3,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-24T10:11:09.895Z","etag":null,"topics":["coverage","coveralls","multi-language"],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/coveralls-multi","language":"Ruby","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/radditude.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}},"created_at":"2018-06-04T07:25:45.000Z","updated_at":"2023-01-10T16:29:30.000Z","dependencies_parsed_at":"2023-01-31T18:10:13.301Z","dependency_job_id":null,"html_url":"https://github.com/radditude/coveralls-multi","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/radditude/coveralls-multi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radditude%2Fcoveralls-multi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radditude%2Fcoveralls-multi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radditude%2Fcoveralls-multi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radditude%2Fcoveralls-multi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/radditude","download_url":"https://codeload.github.com/radditude/coveralls-multi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radditude%2Fcoveralls-multi/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269649848,"owners_count":24453541,"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","status":"online","status_checked_at":"2025-08-09T02:00:10.424Z","response_time":111,"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":["coverage","coveralls","multi-language"],"created_at":"2024-10-05T21:04:13.266Z","updated_at":"2025-08-09T23:07:16.800Z","avatar_url":"https://github.com/radditude.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![coveralls-multi](https://img.shields.io/gem/v/coveralls-multi.svg)](https://rubygems.org/gems/coveralls-multi) [![Travis](https://img.shields.io/travis/radditude/coveralls-multi/master.svg)](https://travis-ci.org/radditude/coveralls-multi) [![Coverage Status](https://coveralls.io/repos/github/radditude/coveralls-multi/badge.svg)](https://coveralls.io/github/radditude/coveralls-multi)\n\n# CoverallsMulti\n\nCoverallsMulti is a Coveralls client with support for multi-language repos. Once you've set up coverage tools for all the languages in your repo, specify the paths to your coverage output files in `.coveralls.yml` and let CoverallsMulti handle formatting them, merging them into one big superfile, and posting the result to Coveralls.io.\n\n### Currently supported:\n\n#### Languages \u0026 Output Formats\n\n| _Language_ | _Coverage tool_                                                                    | _Config key_  |\n| ---------- | ---------------------------------------------------------------------------------- | ------------- |\n| Elixir     | [ExCoveralls](https://github.com/parroty/excoveralls) (JSON output)                | `excoveralls` |\n| JavaScript | [nyc](https://github.com/istanbuljs/nyc), or any tool that can output an lcov file | `lcov`        |\n| Ruby       | [SimpleCov](https://github.com/colszowka/simplecov)                                | `simplecov`   |\n\n#### CI Providers\n\n- TravisCI\n\n#### Coming Soon\n\nHave another language, tool, or CI provider you'd like to see supported? [File an issue](https://github.com/radditude/coveralls-multi/issues/new).\n\n## Installation\n\nAdd this line to the test group in your application's Gemfile:\n\n```ruby\ngem 'coveralls-multi'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install coveralls-multi\n\n## Usage\n\n0. Set up coverage measurement for each language. Coveralls-multi is only concerned with formatting \u0026 posting the output files, so choice of tooling is up to you.\n\n1. Once you know where the output files will go, set up your `.coveralls.yml` with the appropriate keys and paths like so (see supported languages above for more details on the supported config keys):\n\n```\nservice_name: travis-ci\nrepo_token: [REPO_TOKEN]\nmulti:\n  simplecov: coverage/.resultset.json\n  lcov: coverage/lcov.info\n  excoveralls: cover/excoveralls.json\n```\n\n2. Run `coveralls-multi` to merge the output files and send them to Coveralls. In a CI environment, you can run `coveralls-multi` as an final step after you run your test commands.\n\n_Note for ExCoveralls:_ Currently, formatting will break if the ExCoveralls output directory is called something other than the default `cover`. You don't need to worry about this unless you've changed the default `output_dir` in your ExCoveralls config.\n\n## Troubleshooting\n\nDebug mode will save and output the merged file so you can take a closer look. To enable debug mode, add the following line to `.coveralls.yml`:\n\n```\ndebug_mode: true\n```\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.\n\nTo install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).\n\nTODO: add better contributing instructions (especially for adding a new formatter)\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/radditude/coveralls-multi. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n## Code of Conduct\n\nEveryone interacting in the CoverallsMulti project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/radditude/coveralls-multi/blob/master/CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradditude%2Fcoveralls-multi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fradditude%2Fcoveralls-multi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradditude%2Fcoveralls-multi/lists"}