我有一个Symfony Console命令,它迭代一个可能很大的项目集合,并为每个项目执行任务.由于集合可能很大,因此命令可能需要很长时间才能运行(小时).命令完成后,它会显示一些统计信息.
我想以一种很好的方式中止命令.现在,如果我中止它(即在CLI中使用ctrl + c),则没有统计摘要,也无法输出恢复命令所需的参数.另一个问题是命令可能在处理项目的过程中被终止 - 如果它只能在处理项之间终止,那就更好了.
那么有没有办法告诉命令"尽快中止",或者将ctrl + c命令解释为这样?
我尝试使用该ConsoleEvents::TERMINATE事件,虽然这个处理程序只在命令完成时被触发,而不是当我按ctrl + c时.而且我无法找到有关制作此类可恢复命令的更多信息.
我有一个变量如下
local armies = {
[1] = "ARMY_1",
[2] = "ARMY_3",
[3] = "ARMY_6",
[4] = "ARMY_7",
}
Run Code Online (Sandbox Code Playgroud)
现在我想为每个值做一个动作.循环这些值的最佳方法是什么?我在互联网上找到的典型事情是这样的:
for i, armyName in pairs(armies) do
doStuffWithArmyName(armyName)
end
Run Code Online (Sandbox Code Playgroud)
我不喜欢它,因为它导致一个未使用的变量i.以下方法避免了这种情况,并且是我目前正在使用的方法:
for i in pairs(armies) do
doStuffWithArmyName(armies[i])
end
Run Code Online (Sandbox Code Playgroud)
然而,这仍然不像我想的那样可读和简单,因为这是迭代密钥然后使用密钥获取值(相当必要).我对这两种方法的另一个好处pairs就是需要.在这里循环的值是我可以控制的值,我希望它可以尽可能容易地循环.
如果我只关心这些值,有没有更好的方法来做这样的循环?有没有办法解决我列出的问题?
我正在使用Lua 5.0(对语言来说很新)
我很高兴PHP 7.1引入了iterable伪类型.
现在虽然这只是循环遍历这种类型的参数很好,但是当你需要将它传递给只接受一个array或只是一个的PHP函数时,我不清楚该怎么做Traversable.例如,如果你想做一个array_diff,而你的iterable是a Traversable,你会得到一个array.相反,如果你调用一个带有Iterator的函数,如果iterable是一个,你会得到一个错误array.
有没有iterable_to_array(NOT :) iterator_to_array和iterable_to_traversable?
我正在寻找一种解决方案,避免我的函数中的条件只是为了处理这种差异,而这并不取决于我定义自己的全局函数.
使用PHP 7.1
我怀疑之前已经问过这个问题,尽管我所能找到的只是相似而且截然不同的问题,或者说只有解决方案对我不起作用的问题.
在GitHub上有一个我无法控制并想要镜像的存储库.使用镜像我的意思是有一个自动更新的克隆.我希望这个镜像也在GitHub上.优选地,任何解决方案都不会涉及我方的许多配置或设置工作.但是,如果需要,我可以在某个VPS上使用cron运行脚本.
我可以纯粹通过GitHub创建这样的镜像吗?如果没有,是否准备好使用脚本来执行此操作?
我试图在python中创建一个具有数据提供程序的单元测试.由于unittest库不支持这个诞生,我使用的是unittest_data_provider包.我收到一个错误,我不知道它来自哪里(我是python的新手).
我的代码
import unittest
from wikibase.dataModel.item_id import ItemId
from unittest_data_provider import data_provider
class TestItemId(unittest.TestCase):
itemIds = lambda: (
( 'q42' ),
( 'Q42' ),
( 'Q1' ),
( 'Q1000' ),
( 'Q31337' ),
)
@data_provider(itemIds)
def test_constructor(self, itemString):
itemId = ItemId(itemString)
self.assertEqual(itemId.getSerialization(), itemString)
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
文件"/usr/local/lib/python3.3/dist-packages/unittest_data_provider/ INIT py"为7行,在REPL FN(个体,*I)类型错误:test_constructor()采用2的位置参数,但被给予4
这是使用python 3.3.
我有一个直接派生自PHPUnit_Framework_TestCase的PHPUnit测试用例.在这个类的测试中,我需要获得一些服务对象的模拟.此服务对象是由抽象基类定义的类型.该基类包含具体和抽象方法.我想得到一个完整的模拟事物(即所有方法被嘲笑).我的问题是如何做到这一点.
- > getMock给我一个错误,因为抽象方法没有被模拟,只有具体的
- > getMockForAbstractClass模拟抽象方法,但不是具体方法
我该如何嘲笑他们?
(我正在使用PHPUnit 3.7.13)
我目前有以下PHP:
$directoryIterator = new RecursiveDirectoryIterator( __DIR__ . '/tests/phpunit/' );
/**
* @var SplFileInfo $fileInfo
*/
foreach ( new RecursiveIteratorIterator( $directoryIterator ) as $fileInfo ) {
if ( substr( $fileInfo->getFilename(), -8 ) === 'Test.php' ) {
$files[] = $fileInfo->getPathname();
}
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个数组,其中包含以/ tests/phpunit中以Test.php结尾的文件的路径.工作得很好,很好.但是现在我还想在/ tests/integration中注册东西.(/ tests中有更多东西,所以我不能简单地浏览整个目录.)我可以复制代码,但那是蹩脚的.所以现在我想弄清楚如何循环两个RecursiveDirectoryIterator实例.这有可能是一种理智的方式吗?
难道assertEqual(actual, expected)还是assertEqual(expected, actual)?
一方面我看到很多代码使用assertEqual(actual, expected).这包括在单元测试文档的例子和在Django文档的例子.
但是,这个测试assertEqual('foo', 'bar')给了我输出
- foo
+ bar
Run Code Online (Sandbox Code Playgroud)
这恰好与PHPUnit测试相同 assertEquals( 'foo', 'bar' );
-'foo'
+'bar'
Run Code Online (Sandbox Code Playgroud)
PHPUnit $expected作为第一个参数,后跟$actual.这种差异也是我所期望的expected, actual.
所有这些Python代码我看到做错了吗?
我检查了unittest方法的定义,尽管它有非常有用的first, second参数名称.
出于安全原因,我希望默认情况下禁用 git hooks。
更具体地说,当我在我的 (Kubuntu) 操作系统帐户上的任何 git 存储库中运行 git 命令时,不应执行任何 git 钩子,除非以某种方式指定。
在 Vagrant 或 Docker 中运行我的所有代码时,我想避免的攻击是虚拟机中的恶意代码写入 git hooks 目录,从而将自身带到主机上的攻击。默认情况下禁用 git hooks 是一种防线。
我正在寻找一种不需要每个存储库工作和状态的解决方案。在我的搜索中,我遇到了这个脚本,它打破了这两个要求。
理想情况下,有一个简单的解决方案,例如将其放入.bash_aliases:
alias git='/usr/bin/git --no-hooks'
Run Code Online (Sandbox Code Playgroud) 我有一组 PHP 项目,其中一些依赖于其他项目。都有 PHPUnit 测试。所有这些都可以通过 Composer 安装,并使用 composer.json 文件指定它们的依赖项。每个项目的根目录下都有一个 phpunit.xml.dist 文件,它指向一个 bootsrap 文件。
现在我有这个项目 Foo,它有许多直接依赖项和几个间接依赖项。对于 Foo 的 CI,我想运行它的所有测试,以及它的所有依赖项。
这是否可以通过 Composer 完成?如果没有,是否有一些标准的干净方法来做到这一点?
php ×5
git ×2
iterator ×2
phpunit ×2
python ×2
testing ×2
unit-testing ×2
arrays ×1
composer-php ×1
console ×1
dataprovider ×1
django ×1
githooks ×1
github ×1
loops ×1
lua ×1
mirror ×1
mocking ×1
php-7 ×1
php-7.1 ×1
python-3.3 ×1
python-3.x ×1
readability ×1
security ×1
symfony ×1