用于开发测试Armstrong的工具
项目描述
用于处理Armstrong应用程序开发的工具和类似工具
此包包含执行Armstrong包开发工作所需的一些各种辅助工具。如果您没有积极开发,或者使用Armstrong的开发版本,您可能不需要此包。
安装和配置
如果您只是对一个组件进行测试,Tox将获取它需要的所有内容,包括ArmDev。
pip install tox 并运行 tox
否则
pip install armstrong.dev invoke
Invoke不是严格必需的。ArmDev尽可能地保持精简,以支持快速创建虚拟环境,从而使多环境测试工具如TravisCI和Tox能够尽快完成。
许多Invoke任务都有自己的包要求,并且如果需要安装某些依赖项,它们会很好地通知您。
此组件支持Python 2.6和2.7上的Django 1.3、1.4、1.5、1.6和1.7。
用法
大多数Armstrong组件已经具有使用这些开发工具所需的配置。具体来说,组件需要tasks.py和env_settings.py文件。假设它们都存在
- invoke --list
查看所有可用命令的列表
- invoke --help <cmd>
查看特定命令的帮助
一些任务接受可选的--extra参数,这被用作将任意参数传递给底层命令的通用方式。Invoke无法处理任意参数(如Fabric 1.x所能),因此这是我们的解决方案。两个一般规则:1) 将多个参数用引号括起来 2) kwargs需要使用“=”而不带空格(这是我们的限制,不是Invoke的限制)。例如:invoke test --extra "--verbosity=2" <path.to.app.test1> <path.to.app.test2>"
- invoke install [--editable]
将组件“pip install”为可编辑安装,默认情况下。对于常规安装,使用--no-editable或--editable=False。
- invoke test [--extra ...]
运行测试,其中–extra处理Django“manage.py test”命令接受的任何内容。
- invoke coverage [--reportdir=<directory>] [--extra ...]
运行测试覆盖率。–extra的作用与“invoke test”相同,将任意参数传递给底层测试命令。–reportdir是HTML报告将创建的位置;默认情况下,该目录名为“htmlcov”或由.coveragerc文件设置的任何内容。
- invoke managepy <cmd> [--extra ...]
运行任何Django“manage.py”命令,其中–extra处理任何任意参数。例如:invoke managepy shell或invoke managepy runserver --extra 9001
- invoke create_migration [--initial]
为组件创建South迁移(在Django <1.7)。如果不使用–initial标志,则默认为“自动”迁移。
还有其他命令,但这些都是最有用的。请记住,各个组件可能还提供额外的Invoke任务。因此,运行invoke --list以发现它们。
组件设置
如果您正在创建一个新的Armstrong组件或更新一个使用2.0之前ArmDev的组件,您将需要创建(或移植到)以下两个文件
创建一个tasks.py并添加以下内容
from armstrong.dev.tasks import * # any additional Invoke commands # ...
创建一个env_settings.py并添加以下内容
from armstrong.dev.default_settings import * # any additional settings # it's likely you'll need to extend the list of INSTALLED_APPS # ...
虽然不是必需的,但只要您正在检查事物的总体状态,也要注意这些!
审查requirements文件
审查TravisCI配置
删除Lettuce测试和需求
添加一个tox.ini文件
审查README文本和setup.py元数据
使用Setuptools并修复任何不正确的命名空间
将测试/移动到根目录以停止发送测试
如果组件使用日志记录,请考虑使用logger = logging.getLogger(__name__)对其进行命名空间划分。
添加一个CHANGES.rst文件并将其包含在MANIFEST中
审查.gitignore。您可能希望忽略这些
.tox/ coverage*/ *.egg-info
2.0中的显著变化
现在明确使用/要求 Setuptools 而不是 Distutils。
Invoke 替代了 Fabric,以实现更精简的安装,无需 SSH 和加密内容。Invoke 仍处于 1.0 版本之前,因此我们可能需要在以后进行一些调整。
本版本提供了一种更简单、更标准的方式来运行 Django 环境,使用组件特定的设置,无论是通过命令行还是通过导入。
它提供了一种“按需”需求方法。这意味着如果您运行一个需要尚未安装的包的 Invoke 命令,它将提示您安装它,而不是一开始就要求所有内容。这允许创建虚拟环境更快(这在测试中节省了大量时间),并且不会将您不使用的功能包污染虚拟环境。
测试 和 覆盖率 将与自动化测试工具(如 TravisCI 和 Tox)配合得更好。这些命令现在也像 Django 的原生测试命令一样工作,因此您可以为运行选择性测试或更改输出详细程度传递参数。
设置现在在 env_settings.py 文件中以正常的 Django 风格定义,而不是在任务文件中的字典中。它不被称为“settings.py”,以使其更清晰,这些设置是为此组件的开发和测试而设置的,不一定是可以复制/粘贴以将组件合并到其他项目的值。
完整的更改列表和向后不兼容性列表可在 CHANGES.rst 中找到。
贡献
开发在 Github 上进行。欢迎参与!
发现了错误?在 Github Issues 上提交。请提供尽可能多的细节,并确保列出特定组件,因为我们使用集中式、项目范围的错误跟踪器。
有代码要提交?Fork 存储库,在主题分支上合并您的更改,并创建一个 pull request。
有问题、需要帮助、讨论?使用我们的 Google Group 邮件列表。
项目状态
Armstrong 是一个开源新闻平台,对任何组织都是免费提供的。它是德克萨斯州论坛(Texas Tribune)和调查报道中心(The Center for Investigative Reporting)合作的结果,并获得了约翰·S. 和詹姆斯·L. 基特基金会(John S. and James L. Knight Foundation)的资助。Armstrong 可作为完整的捆绑包和单独的独立组件提供。