globalとlocalのphpunitバージョンが違う時に出たエラー

phpunit の実行で以下のようなエラーメッセージが出た場合、


PHPUnit 4.5.1 by Sebastian Bergmann and contributors.

PHP Fatal error: Call to undefined method PHPUnit_Framework_TestResult::warningCount() in ~akky\AppData\Roaming\Composer\vendor\phpunit\phpunit\src\TextUI\ResultPrinter.php on line 185

Fatal error: Call to undefined method PHPUnit_Framework_TestResult::warningCount() in ~\akky\AppData\Roaming\Composer\vendor\phpunit\phpunit\src\TextUI\ResultPrinter.php on line 185

これは、composerで定義されたlocalにあるphpunit(./vendor/bin/phpunit)を呼ぶつもりで、globalにインストールされたphpunit(version 5.1.6)を呼んでいるために発生しているエラーのようです。

phpunitのバージョン表記が、なぜかlocal側の4.5.1で出てくるのでちょっと気づかなかったのですが、


$ ./vendor/bin/phpunit

とlocalのphpunitを呼ぶと、エラーは起こらなくなりました。

Laravelプロジェクトでも同様のエラーが報告されていました。globalのphpunitをuninstallすると解消した、というコメントもありますがつまりはそういうことでしょう。

composer.json で新しいphpunitが指定されていればこのトラブルは起こらないのでしょうけど、phpunitを更新するとテストが動かなくなる、ということもあるので、他のプロジェクトを持ってきてテストするとこういうことも起こるでしょう。

[メモ] tracからBitBucketへのチケット移行

Trac 0.10.4 で動いている古い課題管理を、BitBucketへ移行する作業を行いました。以下記録。

チケットデータの入っているDBを用意

Trac リポジトリ中の db/trac.db にチケットが入ってます。

trac.db が sqlite version 2 形式なので、まずこれを 3にコンバートします。

sqlite2, 3 の両方を入れてコマンドラインでコンバートもできます。Windows でツールを入れてたので、SQLiteStudio(3.1.0)にて、sqlite2で開いて、[Database]-[Convert Database Type]で3に変換することでコンバート完了。

Bitbucket形式へ変換

以下のスクリプトが使えます。

https://bitbucket.org/secdev/trac2bitbucket

./hoge/db/trac.db がある状態で、

$ python ticket.py -o exported_issues.zip --tracdir hoge

もし次のエラーが出たら、日本語を含むせいなので(たぶん)

TypeError: write() argument must be str, not bytes

ソース中の open(… “w”)を”wb”に変更してもう一度。

Bitbucketへのインポート

Bitbucket上で新しいリポジトリを作成、課題管理を on に。設定メニューから上記の exported_issues_zip をインポートすると、trac にあったチケットがすべて入ります。

既存のリポジトリにインポートすると既存のチケットは全部消えてしまうので注意。この場合は一旦エクスポートし、二つのzip中の.json の内容をマージして差し戻す。issue ID等が衝突するのでマージはスクリプトを書いての作業が必要。

それから、trac上のユーザー名とBitbucket上のユーザー名が違う場合、各ユーザーについて zip 内 db-1.0.json のユーザー名を置換する必要がある。(やっておかないとどこかの他人にチケットをアサインしてしまう)

Windows 10 + Vagrant + Virtualbox の最新版の組み合わせの問題

アップグレードして Windows 10 に上げたPCで、Vagrant の開発環境を更新した際になんかエラーが出るようになりました。

それぞれのツールを最新版にしたのですが、

  • Vagrant 1.8.1
  • Oracle Virtual Box 5.0.16

次のようなエラーが出てしまいます。


VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)

一つの解決法は Virtual Box を5.0.10に戻すことらしいのですが、古いバージョンに戻すのも(他の修正で直っている箇所もあるだろうから)あまりいい感じがしません。

こちらに載っているやり方で、[コントロール パネル]-[ネットワークとインターネット]-[ネットワーク接続]から、Virtualbox host only network のプロパティを開き、NDIS6 Bridge をオンに。(オフなら問題なく動いてるはず、ということですが、オフにしてオンでも)

すると、理由は良く分からないけど動くようになる、ということです。自分の環境もこれで直りました。

[障害報告] 読んだ4の不具合により、2/19-2/22の間記録の重複が発生していました

2月19日10時~2月22日23:20まで、データ処理の失敗により記録の重複が発生していました。

原因の不具合は修正済で、重複の記録も削除しました。不具合指摘のご連絡をくださったみなさま、ありがとうございました。

TwitterのユーザーIDの桁数が大きくなっており、開発当初は想定していなかった変数で桁あふれを起こしていたのが原因でした。今回の修正で、Twitter社が内部で使っていると思われる桁数まで対応したので、同じトラブルは起こらないだろうと思います。

不具合があった期間の記録も抜けずに反映されているはずですが、もし抜けがあった場合は、お手数ですがもう一度ツイートしなおしてください。

Fallout 4 で再現したサイタマ対ボロス (ワンパンマン)

よく作るなあ。

Fallout 4
定価:¥ 8,618
発売日:2015-12-17