{ "info": { "author": "Lancaster Wu, Spencer Huang, Carson Quigley, Patrick Palad, Paul Livingston", "author_email": "wuj@allegheny.edu, huangs@allegheny.edu, quigleyc@allegheny.edu, paladp@allegheny.edu, livingstonp@allegheny.edu", "bugtrack_url": null, "classifiers": [], "description": "# pytest-blame\n\n![logo](https://github.com/inTestiGator/pytest-blame/blob/master/.github/blame-icon.png?raw=true)\n\n---\n\n[![Build Status](https://api.travis-ci.com/inTestiGator/pytest-blame.svg?branch=master)](\nhttps://travis-ci.com/inTestiGator/pytest-blame)\n[![codecov.io](https://img.shields.io/codecov/c/github/inTestiGator/pytest-blame/master.svg)](\nhttp://codecov.io/github/inTestiGator/pytest-blame?branch=master)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/891cced8c49c477f8ce46f4532eba718)](https://www.codacy.com/app/wuj/pytest-blame?utm_source=github.com&utm_medium=referral&utm_content=inTestiGator/pytest-blame&utm_campaign=Badge_Grade)\n[![made-with-python](http://img.shields.io/badge/Made%20with-Python-blue.svg)](\nhttps://www.python.org/)\n[![PyPI version](https://img.shields.io/pypi/v/pytest-blame.svg)](https://pypi.org/project/pytest-blame/)\n[](https://github.com/inTestiGator/pytest-blame/releases)\n[![gitter-join-chat](https://badges.gitter.im/Join%20Chat.svg)](\nhttps://gitter.im/pytest-blame/community)\n\nA pytest plugin that helps developers build successful test cases by providing\nthem with GitHub commit information when their test cases fail.\n\n## A Python Plugin for Tracking Test Case Status\n\n---\n\nEveryone uses pytest. Or at least, everyone should. It's a super useful testing\nprogram with an easy-to-use syntax. Pytest Blame is a pytest plugin that allows\npytest to do a quick check to Github to make sure the most recent commit is\npassing your cases. If somebody broke your cases, ``pytest-blame`` will display\nall the commits pushed since the build broke as well as who pushed each commit.\nThis keeps team workflow transparent and allows for semi-realtime updates from\nGithub without having to open a browser. Since ``pytest-blame`` can check up on\nthe online repository as frequently as every time you run your test suite, there\nis less risk of a broken commit going unnoticed until a merge conflict occurs.\n\n## Installation\n\n---\n\nTo install ``pytest-blame`` you will need to clone this github repository. Once\nthe repository has been cloned you will need to run the install script to update\nyour pytest configuration:\n\n```\npipenv run python setup.py install\n```\n\nAfter ``pytest-blame`` has been successfully installed you will need to generate\na Github User Token.\n\n*This can be found under ``Settings`` in your github profile:*\n\n\n\n\"key1\n\nThen, find ``Developer Settings`` in the dashboard on the left and navigate to\n``Personal Access Tokens``.\n\n\"key2\n\nFinally, when generating the key for ``pytest-blame`` make sure to include\nrights to ``repo`` and ``hooks``\n\n\"key3\n\n\nNow that you have a user token, you will need to paste it into the location where\nyour terminal is sourced from. For example: Ubuntu uses ``bash``, so the default\nterminal source for ubuntu is ``.bashrc``.\n\nYou should put the following code in dot files to set up environment variable:\n\n```shell\nexport GITHUB_OAUTH_TOKEN = \"YOUR_TOKEN\"\n```\n\nIf you are using Windows, you can go to `Control Panel -> System and Security ->\nSystem -> Advanced system settings -> Advanced -> Environment Variables` to\nset it up.\n\n## Usage\n\nYou can run pytest with the ``--track`` option and you will see a report\ncontaining GitHub information at the top of your pytest report.\n``pytest-blame`` will display the most recent commit that is passing CI\ncheck, and all commits that did not pass CI check between the most\nrecent commit and the most recent passing commit.\n\nTo run:\n``pytest --track tests/`` will invoke ``pytest-blame``, displaying the current\nstatus of your working branch in the pytest header.\n\n## Sample output\n\n---\n\nA successful ``pytest-blame`` run will look something like this:\n\n```\npytest --track tests/\n```\n\nOutput:\n\n```\nThe most recent commit is passing: https://github.com/inTestiGator/pytest-blame/commit/88ebf4107bc88d247a137d98ec9b45f6ae2658d3\nLancaster Wu : Delete index.md\n```\n\nor\n\n```\nMost recent passing commit: https://github.com/inTestiGator/pytest-blame/commit/4d4c5cb72cc86cfe35fb19e7630699f405677c69\n\nPatrick Palad: Disable pylint check\n\n--------------------------------\nFailing commit: https://github.com/inTestiGator/pytest-blame/commit/9d5d00bc8276d1efefb6beed39186b1bd9c64946\nSpencer Huang: return to passing commit\n\nFailing commit: https://github.com/inTestiGator/pytest-blame/commit/03c68b6ff910ab46407c01ce382c7161f5906d43\nSpencer Huang: failing commit\n\nFailing commit: https://github.com/inTestiGator/pytest-blame/commit/aab2684e748be41a73213861d1cedc4b5842f81a\nSpencer Huang: failling commit\n\nFailing commit: https://github.com/inTestiGator/pytest-blame/commit/4d4c5cb72cc86cfe35fb19e7630699f405677c69\nSpencer Huang: fail test\n\nThe last one is the most recent commit\n```\n\nYou may also recieve messages telling you that `can not find passing commits` when\nall commits are currently failing or pending.\n\n## Failing Travis build\n\nThe master branch is failing Travis because one of our test cases requires\nTravis to have access to our test repository and currently and it doesn't,\nso it cannot perform the actual testing. This test case passes locally.\n\n## The Team\n\nCheck out the Pytest Blame Team!\n\n\n \n \n \n \n \n \n
\n \n \n

Carson Quigley

\n
\n \n \n

Lancaster Wu

\n
\n \n \n

Spencer Huang

\n
\n \n \n

Patrick Palad

\n
\n \n \n

Paul Livingston

\n
\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/inTestiGator/pytest-blame", "keywords": "", "license": "GNU", "maintainer": "", "maintainer_email": "", "name": "pytest-blame", "package_url": "https://pypi.org/project/pytest-blame/", "platform": "any", "project_url": "https://pypi.org/project/pytest-blame/", "project_urls": { "Homepage": "https://github.com/inTestiGator/pytest-blame" }, "release_url": "https://pypi.org/project/pytest-blame/0.1.7/", "requires_dist": [ "pygithub", "pytest (>=4.4.0)", "gitpython", "requests" ], "requires_python": "", "summary": "A pytest plugin helps developers to debug by providing useful commits history.", "version": "0.1.7" }, "last_serial": 5224330, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "f7926350213d2ae2408fe955d560832b", "sha256": "5fffe89a951e5647eb73902228a4b804cda0b087cc5c59e6341898d4a677864b" }, "downloads": -1, "filename": "pytest_blame-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f7926350213d2ae2408fe955d560832b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17296, "upload_time": "2019-04-23T20:35:40", "url": "https://files.pythonhosted.org/packages/92/4d/3feb2ebb8787782d8635e863d73f5ba94ff99ad199231edcecab1859e8cc/pytest_blame-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f772816aee88305b5d89dddbaf857ebb", "sha256": "84a915949e542621c06843a00333f8931228586ac5d348a525bee0fa5696b82f" }, "downloads": -1, "filename": "pytest-blame-0.0.1.tar.gz", "has_sig": false, "md5_digest": "f772816aee88305b5d89dddbaf857ebb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3852, "upload_time": "2019-04-23T20:35:47", "url": "https://files.pythonhosted.org/packages/6e/25/4e8d99d038787eb29a260a0ab1c82495c4705b72714c6668a178c582329c/pytest-blame-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "eb842e90138e1ade6e7a62e596cfebb9", "sha256": "30600ee2c3db3b03bacbf449512e6ea24a34fdf8cbe6b813616f0376ee69f888" }, "downloads": -1, "filename": "pytest_blame-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "eb842e90138e1ade6e7a62e596cfebb9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16860, "upload_time": "2019-04-23T20:35:42", "url": "https://files.pythonhosted.org/packages/03/7c/d5d3c086d3b8bd40be45ae945b8e2e56314a24c7268e47255a8123a54e9c/pytest_blame-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5524262715c736ded5cbbccbfd8e6c03", "sha256": "e456dede0d5757f273469262540001e425e313737ad537581c1508948c7aaf16" }, "downloads": -1, "filename": "pytest-blame-0.1.0.tar.gz", "has_sig": false, "md5_digest": "5524262715c736ded5cbbccbfd8e6c03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3567, "upload_time": "2019-04-23T20:35:48", "url": "https://files.pythonhosted.org/packages/6f/c9/8fa2db1e9c790fe51e194ffd2fde59c4654576d43bd3f66cbb65eaf90511/pytest-blame-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "93c476ea13d83ba69e42b2d44b3c0336", "sha256": "83e35abbf6e95c7949573b3657a4e50dd574a462138c35afe66264114b7200eb" }, "downloads": -1, "filename": "pytest_blame-0.1.1-py3.6.egg", "has_sig": false, "md5_digest": "93c476ea13d83ba69e42b2d44b3c0336", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 6006, "upload_time": "2019-04-23T20:35:50", "url": "https://files.pythonhosted.org/packages/8f/a2/804469e27fe6bcbfb881b58772c5f005eba23c8ed7d8c6172185add4e1ac/pytest_blame-0.1.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "3e148c2c1fce98fdac577856f4f0e198", "sha256": "45da3885d4b700a58ee15103df61925a9d5f9dda13e72bc200ce4dae737089b9" }, "downloads": -1, "filename": "pytest_blame-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3e148c2c1fce98fdac577856f4f0e198", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18680, "upload_time": "2019-04-23T20:35:44", "url": "https://files.pythonhosted.org/packages/c7/8f/e5b3e3f044c8621a3d550f7f1f3f793e9a61b369154441fdfcd2a85cc4ed/pytest_blame-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ede1853cbf49feceacb4fd9284e767a6", "sha256": "b79467e667387f83174a9f88e8543aa5083e53ca694f550f610c67cc56427c46" }, "downloads": -1, "filename": "pytest-blame-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ede1853cbf49feceacb4fd9284e767a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4031, "upload_time": "2019-04-23T20:35:51", "url": "https://files.pythonhosted.org/packages/ca/45/ff0012b3ac96814f2cb7da79ae5283f970afc55c1354d2b7931a665b315c/pytest-blame-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "645e871d54899aa4f073873858c90e56", "sha256": "04d6c6689eb9fe64f90d86989455580bd67e9a0dbb6030405e95e6c1b90124a7" }, "downloads": -1, "filename": "pytest_blame-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "645e871d54899aa4f073873858c90e56", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18735, "upload_time": "2019-04-23T20:35:45", "url": "https://files.pythonhosted.org/packages/eb/66/5393008fc1308d575c93442416bc3f260a0063ce1d327d781f2aea0d7e87/pytest_blame-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43d74ee0fb43ce28dfd508ab0021b3b6", "sha256": "f18b1c3188352ff6ab93cbc6ed45d599c5b5aae370adda33296baa66e0dfe113" }, "downloads": -1, "filename": "pytest-blame-0.1.2.tar.gz", "has_sig": false, "md5_digest": "43d74ee0fb43ce28dfd508ab0021b3b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4383, "upload_time": "2019-04-23T20:35:52", "url": "https://files.pythonhosted.org/packages/38/43/8c5709c57751734791486965edd48f4c78754f28d88201f66d5e3f0e5c0f/pytest-blame-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "7592c242164cd6762fc06c988c431e43", "sha256": "8bc25235d21f98a104af163ea12bef9294743fbfcb6ce48232c50ba0ccdfb0c6" }, "downloads": -1, "filename": "pytest_blame-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7592c242164cd6762fc06c988c431e43", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18778, "upload_time": "2019-04-23T20:35:46", "url": "https://files.pythonhosted.org/packages/18/86/f5e76716fd1793d4dfe070a3b5beec367317f88fee3f68743225da54ee76/pytest_blame-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b77432c1fe089294f026fab8368182c", "sha256": "cb15322ce77c37d87a28cb9b29eeaafb703612fd5e04bbfaf788c8060f0efd22" }, "downloads": -1, "filename": "pytest-blame-0.1.3.tar.gz", "has_sig": false, "md5_digest": "6b77432c1fe089294f026fab8368182c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4476, "upload_time": "2019-04-23T20:35:53", "url": "https://files.pythonhosted.org/packages/9b/6f/d1ce1e882f9f90522314b137e7fd590561255e6f491962705858ed3d4cca/pytest-blame-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b939a10e9998f2a9b8cf3a16eaf4199c", "sha256": "3c21761e27f571fcb0dda7f0117cf7a3a190199be1a0b9e5ce3218874a6c73d2" }, "downloads": -1, "filename": "pytest_blame-0.1.4-py3.6.egg", "has_sig": false, "md5_digest": "b939a10e9998f2a9b8cf3a16eaf4199c", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 6224, "upload_time": "2019-05-04T00:54:39", "url": "https://files.pythonhosted.org/packages/72/0e/06e78badbeab2aae358e5e1a52f7f1fe699b68d6e62ccd8981a629b5a415/pytest_blame-0.1.4-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "83760deeeb0a057c8e3f39b4111159d3", "sha256": "6b7a73b1cbd48b5adfcf5de338e7a3ea161b8f8b27724b0579b9f8ed0684cebf" }, "downloads": -1, "filename": "pytest_blame-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "83760deeeb0a057c8e3f39b4111159d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18892, "upload_time": "2019-04-23T20:43:59", "url": "https://files.pythonhosted.org/packages/5d/18/c1c04c560557762bd8ccb79fd5a9c661b962eb7f5d27646186fb2fd28963/pytest_blame-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24a4abd4766e6f2617cfd62434e23923", "sha256": "09ee1b918c1609025aa188fff887ebc550beb778ff0868f67fc5544b5f67bae9" }, "downloads": -1, "filename": "pytest-blame-0.1.4.tar.gz", "has_sig": false, "md5_digest": "24a4abd4766e6f2617cfd62434e23923", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4618, "upload_time": "2019-04-23T20:44:04", "url": "https://files.pythonhosted.org/packages/dd/a0/2c726055844f3d9ccf607557beb95dbee3ab51fabc2f61d5dd768c8f44d8/pytest-blame-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "4b20d7819ec0bf27b43e6b2659089de8", "sha256": "346625e822fbd9a1dd49de930c6174a00833479d4b0e6900cfa4ef0c5f4476f2" }, "downloads": -1, "filename": "pytest_blame-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "4b20d7819ec0bf27b43e6b2659089de8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19427, "upload_time": "2019-04-23T21:50:51", "url": "https://files.pythonhosted.org/packages/27/5b/6f6cf2a50521988df4ccde3d66dbe3c76ca855b13fa11362834c9c1f9cdf/pytest_blame-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea2b91551e012e7a668ad3d7d014c2a3", "sha256": "d63177cf2055c195bc47eba03a6f371b3d64f3cfa24fb508bc39d2226e6d7cee" }, "downloads": -1, "filename": "pytest-blame-0.1.5.tar.gz", "has_sig": false, "md5_digest": "ea2b91551e012e7a668ad3d7d014c2a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5189, "upload_time": "2019-04-23T21:50:52", "url": "https://files.pythonhosted.org/packages/8d/e6/b816e5df1142d6548803e9715ebdd38247907a5e095437b2ea032a5b5ab3/pytest-blame-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "3a7cdab45f56c2554876b32fb890a28c", "sha256": "1e1de3370f667902d9f6807de1c887791b8fc6927f4c86d75b6378279c68862c" }, "downloads": -1, "filename": "pytest_blame-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "3a7cdab45f56c2554876b32fb890a28c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19752, "upload_time": "2019-04-24T17:38:47", "url": "https://files.pythonhosted.org/packages/48/06/66a1629338156894b13cc4d2733f3a4e6493ff85f0e4887b4e8502bb6049/pytest_blame-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a97bd9a3908fda562eb7d205abf0933f", "sha256": "10b492048d3690cdb0ca34d7363cf002d6a2759a456269e299cff7146a499c96" }, "downloads": -1, "filename": "pytest-blame-0.1.6.tar.gz", "has_sig": false, "md5_digest": "a97bd9a3908fda562eb7d205abf0933f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5627, "upload_time": "2019-04-24T17:38:48", "url": "https://files.pythonhosted.org/packages/94/6b/a9315dce393322f5a5e7f5b6811c277e808d4e5d1774cf821d321c77b53a/pytest-blame-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "3327a4be95d4909073444400f989c1f2", "sha256": "7b00339fed0be405bc34db6529e3a35f33a5dd982120e19c3576c6a52a060c5c" }, "downloads": -1, "filename": "pytest_blame-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "3327a4be95d4909073444400f989c1f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20707, "upload_time": "2019-05-04T00:54:37", "url": "https://files.pythonhosted.org/packages/55/12/ed27bc0b25f0fa83df32558bf39407742250012ddecf549047549749dbaa/pytest_blame-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09cd7e6fbfd395b7ecad3cd9defffd88", "sha256": "e5e8d754505b643abeaf80042421d26be974b389d6b3406d8726dac6c3453bc5" }, "downloads": -1, "filename": "pytest-blame-0.1.7.tar.gz", "has_sig": false, "md5_digest": "09cd7e6fbfd395b7ecad3cd9defffd88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6839, "upload_time": "2019-05-04T00:54:41", "url": "https://files.pythonhosted.org/packages/3c/cd/c2e393611298efaeeab636a56d4dae933d150e05e01c77e5f040aa403d5e/pytest-blame-0.1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3327a4be95d4909073444400f989c1f2", "sha256": "7b00339fed0be405bc34db6529e3a35f33a5dd982120e19c3576c6a52a060c5c" }, "downloads": -1, "filename": "pytest_blame-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "3327a4be95d4909073444400f989c1f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20707, "upload_time": "2019-05-04T00:54:37", "url": "https://files.pythonhosted.org/packages/55/12/ed27bc0b25f0fa83df32558bf39407742250012ddecf549047549749dbaa/pytest_blame-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09cd7e6fbfd395b7ecad3cd9defffd88", "sha256": "e5e8d754505b643abeaf80042421d26be974b389d6b3406d8726dac6c3453bc5" }, "downloads": -1, "filename": "pytest-blame-0.1.7.tar.gz", "has_sig": false, "md5_digest": "09cd7e6fbfd395b7ecad3cd9defffd88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6839, "upload_time": "2019-05-04T00:54:41", "url": "https://files.pythonhosted.org/packages/3c/cd/c2e393611298efaeeab636a56d4dae933d150e05e01c77e5f040aa403d5e/pytest-blame-0.1.7.tar.gz" } ] }