{"id":16624271,"url":"https://github.com/dcramer/quickunit","last_synced_at":"2025-03-21T15:31:09.671Z","repository":{"id":2384712,"uuid":"3350340","full_name":"dcramer/quickunit","owner":"dcramer","description":"A Nose plugin which enables determining which tests to run based on the current git diff","archived":false,"fork":false,"pushed_at":"2013-07-29T21:32:55.000Z","size":123,"stargazers_count":33,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-15T15:17:41.306Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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":"2012-02-04T02:47:48.000Z","updated_at":"2024-11-28T16:29:38.000Z","dependencies_parsed_at":"2022-09-05T09:40:52.666Z","dependency_job_id":null,"html_url":"https://github.com/dcramer/quickunit","commit_stats":null,"previous_names":["dcramer/nose-quickunit"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fquickunit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fquickunit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fquickunit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcramer%2Fquickunit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcramer","download_url":"https://codeload.github.com/dcramer/quickunit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244822614,"owners_count":20516137,"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:44.823Z","updated_at":"2025-03-21T15:31:09.332Z","avatar_url":"https://github.com/dcramer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"quickunit\n=========\n\nGiven standard test setup, will determine which tests need to run against a given diff.\n\nFor example, say you're working in your branch called my-new-sexy-feature, which modifies the following files:\n\n::\n\n    src/foo/bar/__init__.py\n    src/foo/bar/baz.py\n    src/foo/biz.py\n\nIf you're using a traditional test layout, we'll automatically add the following rule for you:\n\n::\n\n    tests/{path}/test_{filename}\n\nOtherwise you can add rules using regular expression syntax in combination with the path and filename formatters.\n\nNow if we run with the default options, ``nosetests --with-quickunit``, it will look for tests (by default) in\nthe following base directories:\n\n::\n\n    tests/src/foo/bar/test_baz.py\n    tests/src/foo/test_biz.py\n\n(It does this by analyzing the diff against master, and determining which files you've changed\nare tests, including them, and which files containing test coverage in a parallel directory.)\n\nConfig\n------\n\nIf you want to support multiple directories for searching (let's say you break up unittests from integration tests)\nyou can do that as well:\n\n::\n\n    --quickunit-rule=tests/{path}/test_{filename} --quickunit-rule=tests/{path}/{basename}/tests.py\n\nOr, if you'd prefer, via ``setup.cfg``:\n\n::\n\n    quickunit-rule = tests/{path}/test_{filename}\n                     tests/{path}/{basename}/tests.py\n\nRules\n-----\n\nRules are a combination of simple formatting a regular expressions.\n\nThe following formatted variables are available within a rule:\n\n{path}\n  The base path of the filename (e.g. foo/bar)\n{filename}\n  The filename excluding the path (e.g. baz.py)\n{basename}\n  The filename excluding the extension (e.g. baz)\n\nA rule is first formatted (using ``.format(params)``) and then compiled into a regular expression on top of each changed file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcramer%2Fquickunit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcramer%2Fquickunit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcramer%2Fquickunit/lists"}