{
"info": {
"author": "Julian Berman",
"author_email": "Julian@GrayVines.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.1",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy"
],
"description": "======\nIvoire\n======\n\n.. image:: https://secure.travis-ci.org/Julian/Ivoire.png\n :alt: Travis CI Build Status\n\n``ivoire`` is an `RSpec `_-like testing framework for\nPython. It aims to bring a few minor constructs over to Python in a way that\nisn't overwhelmingly disruptive or counterculture.\n\nIn case you've never heard of RSpec, it's a Ruby\n`BDD `_ framework\nthat is fairly widely used, and whose tests have a style unique from xUnit's.\n\n\nInstallation\n------------\n\nIvoire is on `PyPi `_ and can be installed\nvia ``pip install ivoire`` (or via your preferred installation method).\n\nAt this point you should consider Ivoire to be experimental, and there are\nlikely plenty of bugs to address, so please file them as you run into them on\nthe `issue tracker `_.\n\n\nA Small Example\n---------------\n\nTo write specs using Ivoire, simply import and use ``ivoire.describe``. You can\nthen execute the spec using the included ``ivoire`` test runner.\n\nHere's an example of what a specification looks like.\n\n.. code:: python\n\n from ivoire import describe, context\n\n\n class Calculator(object):\n def add(self, x, y):\n return x + y\n\n def divide(self, x, y):\n return x / y\n\n\n with describe(Calculator) as it:\n @it.before\n def before(test):\n test.calc = Calculator()\n\n with it(\"adds two numbers\") as test:\n test.assertEqual(test.calc.add(2, 4), 6)\n\n with it(\"multiplies two numbers\") as test:\n test.assertEqual(test.calc.multiply(2, 3), 6)\n\n with context(Calculator.divide):\n with it(\"divides two numbers\") as test:\n test.assertEqual(test.calc.divide(8, 4), 2)\n\n with it(\"doesn't divide by zero\") as test:\n with test.assertRaises(ZeroDivisionError):\n test.calc.divide(8, 0)\n\n\nYou can find this example at ``examples/calculator_spec.py``, alongside a few\nothers.\n\nAfter installing Ivoire, running the example above with \n``ivoire examples/calculator_spec.py`` should produce:\n\n.. image:: https://github.com/Julian/Ivoire/raw/master/examples/img/calculator_spec_output.png\n :alt: spec output\n :align: center\n\nIf you'd like a more verbose output, try passing the ``-v`` command line flag.\n\nAt some point in the (hopefully very near) future, when I've sorted out an\nimport hook, Ivoire will also be able to be run as\n``ivoire transform `which nosetests` --testmatch='(?:^|[\\b_\\./-])[Ss]pec'``,\nwhich will transform specs automatically into normal ``unittest.TestCase``\\s.\nWork on this is in progress.\n\n\nRunning the Test Suite\n----------------------\n\nIvoire's test suite is currently written mostly in itself, but it still has a\nsmall section that is written using the standard ``unittest`` test cases.\n\nYou can run Ivoire's test suite by running ``tox`` in the root of the\nrepository checkout after installing ``tox`` via your package manager or with\n``pip install tox``. This will run both parts of the suite.\n\n\nContributing\n------------\n\nI'm Julian Berman.\n\nYou can find me on Freenode in ``#python-testing`` and various other channels\n(nick: ``tos9``) if you'd like to chat, or if there's enough interest in such a\nthing, in ``##ivoire``.\n\nIvoire is developed on `GitHub `_.\n\nFeel free to fork and submit patches or feature requests. Your contributions\nare most welcome!\n\nIf you'd like the best chance for them to be merged quickly try to include\ntests with your pull request, and adhere to general Python coding standards and\nyour own common sense :).",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://github.com/Julian/Ivoire",
"keywords": null,
"license": "MIT/X",
"maintainer": null,
"maintainer_email": null,
"name": "ivoire",
"package_url": "https://pypi.org/project/ivoire/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/ivoire/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://github.com/Julian/Ivoire"
},
"release_url": "https://pypi.org/project/ivoire/0.2/",
"requires_dist": null,
"requires_python": null,
"summary": "A simple RSpec-like testing framework.",
"version": "0.2"
},
"last_serial": 793520,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "a0872a49ca92c05fc73a360c5928181d",
"sha256": "a81043112e20bb78c96061fe8f3009ae1993c9221c170cf834b5d55534fe3b42"
},
"downloads": -1,
"filename": "ivoire-0.1.tar.gz",
"has_sig": false,
"md5_digest": "a0872a49ca92c05fc73a360c5928181d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18546,
"upload_time": "2012-09-27T03:54:14",
"url": "https://files.pythonhosted.org/packages/1b/80/042849edd61b2df236c16d78643d296e0772d86a78078670b8cb6d85545f/ivoire-0.1.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "d4501b15468c671cbb8de7e7b1d0195b",
"sha256": "4e5b455eea115db5bd44effb71aad7861029448cd6b65aba8c76ffd04e75267f"
},
"downloads": -1,
"filename": "ivoire-0.1.zip",
"has_sig": false,
"md5_digest": "d4501b15468c671cbb8de7e7b1d0195b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29786,
"upload_time": "2012-09-27T03:54:16",
"url": "https://files.pythonhosted.org/packages/53/e8/92889f41d836016918b796aa96d0377bc12d7f994e45a2fbcc7165ce49a5/ivoire-0.1.zip"
}
],
"0.1dev": [],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "6902d3bfebad2f04717872437efbac79",
"sha256": "50b138ef8fae58c724c2798ea54630eb5c55dff2d7a8cb85656cd480081ca843"
},
"downloads": -1,
"filename": "ivoire-0.2.tar.gz",
"has_sig": false,
"md5_digest": "6902d3bfebad2f04717872437efbac79",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20256,
"upload_time": "2012-11-28T02:00:55",
"url": "https://files.pythonhosted.org/packages/04/2e/e5545566e8f8b4f81e63f87fbb0254b8d226fcf31710839323d0d3bc0241/ivoire-0.2.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "7e2a14bb4be3f41a43d39213bcd1f970",
"sha256": "20fb9499f57872238741db6cedc64748dde688bde6db410d616ca20d6ebc449e"
},
"downloads": -1,
"filename": "ivoire-0.2.zip",
"has_sig": false,
"md5_digest": "7e2a14bb4be3f41a43d39213bcd1f970",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 32552,
"upload_time": "2012-11-28T02:00:58",
"url": "https://files.pythonhosted.org/packages/b2/a3/0b981c406bbd59e2ba2a4b4671b424360fe534911ef442154c4bc91db732/ivoire-0.2.zip"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "6902d3bfebad2f04717872437efbac79",
"sha256": "50b138ef8fae58c724c2798ea54630eb5c55dff2d7a8cb85656cd480081ca843"
},
"downloads": -1,
"filename": "ivoire-0.2.tar.gz",
"has_sig": false,
"md5_digest": "6902d3bfebad2f04717872437efbac79",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20256,
"upload_time": "2012-11-28T02:00:55",
"url": "https://files.pythonhosted.org/packages/04/2e/e5545566e8f8b4f81e63f87fbb0254b8d226fcf31710839323d0d3bc0241/ivoire-0.2.tar.gz"
},
{
"comment_text": "",
"digests": {
"md5": "7e2a14bb4be3f41a43d39213bcd1f970",
"sha256": "20fb9499f57872238741db6cedc64748dde688bde6db410d616ca20d6ebc449e"
},
"downloads": -1,
"filename": "ivoire-0.2.zip",
"has_sig": false,
"md5_digest": "7e2a14bb4be3f41a43d39213bcd1f970",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 32552,
"upload_time": "2012-11-28T02:00:58",
"url": "https://files.pythonhosted.org/packages/b2/a3/0b981c406bbd59e2ba2a4b4671b424360fe534911ef442154c4bc91db732/ivoire-0.2.zip"
}
]
}