{"id":18041328,"url":"https://github.com/ligurio/testres-db","last_synced_at":"2025-09-14T05:12:52.028Z","repository":{"id":44632430,"uuid":"236444649","full_name":"ligurio/testres-db","owner":"ligurio","description":"is a tool to import test results into SQLite database","archived":false,"fork":false,"pushed_at":"2022-08-02T13:23:01.000Z","size":3034,"stargazers_count":6,"open_issues_count":28,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T16:55:43.656Z","etag":null,"topics":["ci","continuous-integration","quality-assurance","quality-metrics","software-testing","software-testing-tools","test-automation","testing","testres-db"],"latest_commit_sha":null,"homepage":"","language":"Go","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/ligurio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-27T08:12:01.000Z","updated_at":"2025-04-06T09:57:23.000Z","dependencies_parsed_at":"2022-09-05T12:50:44.151Z","dependency_job_id":null,"html_url":"https://github.com/ligurio/testres-db","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ligurio/testres-db","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligurio%2Ftestres-db","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligurio%2Ftestres-db/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligurio%2Ftestres-db/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligurio%2Ftestres-db/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ligurio","download_url":"https://codeload.github.com/ligurio/testres-db/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ligurio%2Ftestres-db/sbom","scorecard":{"id":589456,"data":{"date":"2025-08-11","repo":{"name":"github.com/ligurio/testres-db","commit":"e7f739d24e308cbc1257ac384ee34f7490b79177"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/21 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/testing.yml:1","Info: no jobLevel write permissions found"],"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":"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/testing.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/ligurio/testres-db/testing.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 goCommand dependencies pinned"],"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":"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 2 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":"13 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0236 / GHSA-h86h-8ppg-mxmh","Warn: Project is vulnerable to: GO-2021-0238 / GHSA-83g2-8m93-v3w7","Warn: Project is vulnerable to: GO-2022-0288","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw"],"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-20T21:27:58.630Z","repository_id":44632430,"created_at":"2025-08-20T21:27:58.630Z","updated_at":"2025-08-20T21:27:58.630Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275062966,"owners_count":25398888,"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-09-14T02:00:10.474Z","response_time":75,"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":["ci","continuous-integration","quality-assurance","quality-metrics","software-testing","software-testing-tools","test-automation","testing","testres-db"],"created_at":"2024-10-30T15:09:10.862Z","updated_at":"2025-09-14T05:12:51.979Z","avatar_url":"https://github.com/ligurio.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# testres-db\n\nis a tool and library to import test results to a single SQLite database\nfor further analysis your efficiency of testing, find bottlenecks,\nimprove test execution and get better vizualization of a testing\nprocess in your project.\n\nYou might consider using one of these three tools:\n\n- [Command Line Shell For SQLite](https://sqlite.org/cli.html)\n- [Datasette](https://datasette.io/)\n- [The Jupyter Notebook](https://jupyter.org/)\n\nBelow there are some examples of queries:\n\n```sql\n~$ sqlite testres-db.sqlite\nSQLite version 2.8.17\nEnter \".help\" for instructions\nsqlite\u003e SELECT * FROM testrun TR JOIN test T ON TR.test_id = T.test_id JOIN status ST ON TR.status_id = ST.status_id WHERE ST.name = 'PASSED';\nsqlite\u003e SELECT * FROM testrun TR JOIN test T ON TR.test_id = T.test_id JOIN suite S ON T.suite_id = S.suite_id JOIN report R ON TR.report_id = R.report_id JOIN status ST ON TR.status_id = ST.status_id WHERE ST.name = 'PASSED';\n```\n\n## Building\n\n```\n$ go get ./...\n$ go test -v ./...\n$ go build ./...\n```\n\n## How-To Use\n\nThere is a way to obtain test results from continuous integration services and\ntest results systems. Unfortunately not all such systems supports such ability.\n\nFirst of all you should make sure test reports is available after every build\non continuous integration. For example GitLab CI\n[allows](https://docs.gitlab.com/ee/ci/junit_test_reports.html) to store JUnit\nreports as artifacts when Travis CI is not.\n\nSecondly you should describe configuration file in YAML format which contains\ninformation about your project.\n\n```yaml\nprojects:\n- name: criu\n  backends:\n   - type: jenkins\n     branch: master\n     pipeline: \"\"\n     base: https://ci.openvz.org/\n     username: anonymous\n     secret: anonymous\n```\n\nBy default `testres-db` uses `testres-db.yaml` as a configuration file and\n`testres.sqlite` as an SQLite database file. You can change default values\nusing command-line options.\n\n```sh\n$ testres-db -init -db testres.sqlite\n$ testres-db -import -db testres.sqlite -config testres-db.yaml\n```\n\n## Supported backends\n\n### Azure DevOps\n\nGenerate access token in\n[profile](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops\u0026tabs=preview-page).\n\n### Circle CI\n\nCircle CI\n[supports](https://circleci.com/docs/2.0/configuration-reference/#store_test_results)\nstoring test results in two formats: JUnit XML and Cucumber JSON. Access token\nis not required to query info for public projects, to access to a private\nprojects follow steps in\n[documentation](https://circleci.com/docs/api/#add-an-api-token) to obtain API\ntoken.\n\nExample of configuration file for [Helios project](https://github.com/spotify/helios):\n\n```yaml\nprojects:\n- name: helios\n  backends:\n   - type: circleci\n     branch: master\n     base: https://circleci.com/\n     project: spotify/helios\n     username: \u003cusername\u003e\n     secret: \u003ctoken\u003e\n```\n### Cirrus CI\n\nCirrus CI allows to [store test report\nfiles](https://cirrus-ci.org/guide/writing-tasks/#artifacts-instruction) in\nJUnit formats. Access to Cirrus CI API may require access token. You can\ngenerate it in [profile](https://cirrus-ci.com/settings/profile/).\nNote: by default [Cirrus CI persists caches and logs for 90 days](https://cirrus-ci.org/faq/).\n\n### GitLab\n\nGitlab supports publishing JUnit reports. Follow [instructions in\ndocumentation](https://docs.gitlab.com/ee/ci/junit_test_reports.html) to setup\nit up. In general case to enable the JUnit reports in merge requests, you need\nto add `artifacts:reports:junit` in `.gitlab-ci.yml`, and specify the path(s)\nof the generated test reports. Access to Gitlab API may require access token\nwith `api` capability. To generate access token please refer to\n[documentation](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html).\n`expire_in`\n[allows](https://docs.gitlab.com/ce/ci/yaml/README.html#artifactsexpire_in) you\nto specify how long artifacts should live before they expire and therefore\ndeleted, counting from the time they are uploaded and stored on GitLab. If the\nexpiry time is not defined, it defaults to the instance wide setting (30 days\nby default, forever on GitLab.com).\n\nExample of configuration file for a [Gitlab project](https://gitlab.com/ligurio/test-project):\n\n```yaml\nprojects:\n- name: test-project\n  backends:\n   - type: gitlab\n     branch: master\n     base: https://gitlab.com/\n     project: ligurio/test-project\n     username: \u003cusername\u003e\n     secret: \u003ctoken\u003e\n```\n\n### Jenkins\n\nJenkins supports publishing test results in JUnit format, but not all Jenkins\ninstances supports it. To check this you may point your browser to a link\n`\u003cJenkins URL\u003e/job/\u003cJob Name\u003e/lastCompletedBuild/testReport/api/xml`. Browser\nwill show XML document in case of success. Access to Jenkins API may require\naccess token, please refer to\n[documentation](https://jenkins.io/doc/book/using/using-credentials/) to obtain\nit.\n\n## See also\n\n- [resultsdb](https://github.com/release-engineering/resultsdb)\n- [TestArchiver](https://github.com/salabs/TestArchiver) - tools for\n  serialising test results to SQL database.\n- [testmine](https://github.com/bbc/testmine) - test result aggregator and\n  analysis tool.\n- [res](https://github.com/bbc/res) - intermediate representation for test\n  results.\n\n## Contribution\n\nThere are numerous awesome [Continuous Integration\nservices](https://github.com/ligurio/awesome-ci) which are not integrated with\n`testres-db`. Feel free to make a patches and bring support for them.\n\n## Authors\n\nDeveloped with passion by [Sergey Bronnikov](https://bronevichok.ru/) and great\nopen source [contributors](https://github.com/ligurio/testres-db/contributors).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fligurio%2Ftestres-db","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fligurio%2Ftestres-db","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fligurio%2Ftestres-db/lists"}