{"id":16624299,"url":"https://github.com/dcramer/kleenex","last_synced_at":"2025-07-17T06:04:54.684Z","repository":{"id":1958994,"uuid":"2889419","full_name":"dcramer/kleenex","owner":"dcramer","description":"A Nose plugin designed to detect coverage and only run the tests that matter.","archived":false,"fork":false,"pushed_at":"2012-01-05T02:06:50.000Z","size":204,"stargazers_count":18,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-08T22:56:33.288Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://code.disqus.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dcramer.png","metadata":{"files":{"readme":"README.rst","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":"2011-12-01T07:30:16.000Z","updated_at":"2023-09-08T16:31:22.000Z","dependencies_parsed_at":"2022-08-29T08:40:54.430Z","dependency_job_id":null,"html_url":"https://github.com/dcramer/kleenex","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/dcramer/kleenex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fkleenex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fkleenex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fkleenex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fkleenex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcramer","download_url":"https://codeload.github.com/dcramer/kleenex/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fkleenex/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265571185,"owners_count":23790035,"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":[],"created_at":"2024-10-12T03:45:52.884Z","updated_at":"2025-07-17T06:04:54.663Z","avatar_url":"https://github.com/dcramer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"kleenex\n=======\n\n**Under Development!**\n\nkleenex attempts to stop the pain associated with a large test suite by\nonly running the tests applicable to the changes in your [git] branch.\n\nAbout\n-----\n\nAssuming ``--with-kleenex``, kleenex is fully active on all test runs. What this means, is it will attempt\nto connect to a coverage database (sqlite:///coverage.db by default) and determine which tests it needs to run\nbased on the code changes. If data for a test is missing in the database (e.g. the test is new), it will include\nthat test in the suite automatically. This is fine for prototyping but not generally useful in the real world.\n\nKleenex also checks for missing coverage along the way. By default it will raise an error when it hits a code\nchange that has no test coverage. To disable this functionality, you should set ``skip_missing`` in your config.\n\n\nReal World Usage\n----------------\n\nKleenex is designed to work in CI environments. Generally, you would setup your CI server to run it in record\nmode (with ``record``), and your clients (yourself, other developers) would simply connect to this\ndatabase to discover coverage. This ensures that the installation stays aware of your parent branch (e.g. master)\nand doesn't record data from children.\n\n\nConfiguration\n-------------\n\nAll configuration for Kleenex is read from your ``setup.cfg``. By default it reads from the [kleenex] section,\nwhich can be changed by passing ``--kleenex-config-section=foo``.\n\nExample configuration for a master postgres CI server::\n\n    # nosetests --with-kleenex --kleenex-config-section=kleenex:master\n\n    # setup.cfg\n    [kleenex:master]\n    record = true\n    skip_missing = true\n    parent = origin/master\n    db = postgres://postgres@localhost:5432/kleenex\n    test_missing = true\n    report = false\n    discover = false\n\nYou can also change the file which is read (setup.cfg by default) using ``--kleenex-config``.\n\nOptions\n=======\n\nThe following options are recognized by Kleenex::\n\ndb\n  SQLAlchemy compatible DSN to connect to the database.\n\ntest_missing\n  Run tests which are missing coverage (generally they are new).\n\ndiscover\n  Discover tests to run using database.\n\nskip_missing\n  Allow missing coverage in discovery mode.\n\nparent\n  Parent commit that your branch was based from.\n\nreport\n  Generate a coverage report against your diff.\n\nreport_output\n  Location to output report. If provided will record as JSON. For stdout/stderr you can use stream://stderr.\n\nrecord\n  Record test coverage to database.\n\nmax_distance\n  Maximum distance from plugin integration of test for it to be recorded\n\nmax_revisions\n  Maximum number of revisions (ordered by commit_date) to maintain coverage for. Defaults to 100.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcramer%2Fkleenex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcramer%2Fkleenex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcramer%2Fkleenex/lists"}