ci-phpunit-testのCodeIgniter 3.1.4対応

ci-phpunit-testをCodeIgniter 3.1.4に対応させた作業メモです。

現状の変更点の把握

CodeIgniterを更新する前に以下を実行します。

$ cd ci-app-for-ci-phpunit-test/
$ cd vendor/kenjis/ci-phpunit-test/
$ bin/check-diff.sh > ci-phpunit-test-ci313.diff

以下のファイルの変更点が確認できます。

  • tests/Bootstrap.php
  • tests/_ci_phpunit_test/replacing/core/CodeIgniter.php
  • tests/_ci_phpunit_test/replacing/core/Input.php
  • tests/_ci_phpunit_test/replacing/core/Loader.php
  • tests/_ci_phpunit_test/replacing/libraries/Upload.php

新バージョン(3.1.4)での変更点の把握

ci-phpunit-testフォルダにCodeIgniter-3.1.3.zipおよびCodeIgniter-3.1.4.zipを配置しておきます。

$ bin/check-ci-diff.sh CodeIgniter-3.1.3.zip CodeIgniter-3.1.4.zip

以下のファイルが作成されます。

  • CodeIgniter-3.1.3-CodeIgniter-3.1.4.ci-phpunit-test-only.diff
  • CodeIgniter-3.1.3-CodeIgniter-3.1.4.diff

変更ファイル一覧

ci-phpunit-testで変更しているCodeIgniterのファイルは以下の通りです(https://github.com/kenjis/ci-phpunit-test/blob/master/docs/HowToWriteTests.md#can-and-cant 参照)。

index.php                          → tests/Bootstrap.php
system/core/CodeIgniter.php        → tests/_ci_phpunit_test/replacing/core/CodeIgniter.php
system/core/Common.php             → tests/_ci_phpunit_test/replacing/core/Common.php
system/core/Input.php              → tests/_ci_phpunit_test/replacing/core/Input.php
system/core/Loader.php             → tests/_ci_phpunit_test/replacing/core/Loader.php
system/helpers/download_helper.php → tests/_ci_phpunit_test/replacing/helper/download_helper.php
system/helpers/url_helper.php      → tests/_ci_phpunit_test/replacing/helper/url_helper.php
system/libraries/Upload.php        → tests/_ci_phpunit_test/replacing/libraries/Upload.php

既存バージョンのファイルのバックアップ

$ cd application/tests/_ci_phpunit_test/replacing/
$ ./mv-current.sh 3.1.3

必要なファイルのアップデート

作成した

  • ci-phpunit-test-ci313.diff
  • CodeIgniter-3.1.3-CodeIgniter-3.1.4.ci-phpunit-test-only.diff
  • CodeIgniter-3.1.3-CodeIgniter-3.1.4.diff

を確認し、必要なファイルをアップデートします。

更新したバージョンのファイルのリンクの作成

$ ./make-links.sh 3.1.4

CodeIgniterのアップデート

ci-app-for-ci-phpunit-testフォルダでcomposer updateします。

アップデート内容の確認

$ bin/check-diff.sh

変更点を確認します。

関連

Tags: codeigniter, phpunit

PHPフレームワークの開発に貢献している日本人はどれくらいいるのか?

メジャーなPHPフレームワークの開発に貢献している日本人がどれくらいいるのかを調べてみました。

調査方法は、主なフレームワークのメインとなるGitHubリポジトリのContributors 100位の中に日本人(っぽい人)がどれだけいるかです(もし抜けや誤りがあれば、お知らせいただけるとありがたいです)。

フレームワーク 日本人の割合
FuelPHP 10.0%
CakePHP 4.0%
CodeIgniter 3.0%
Symfony 2.0%
Laravel 0.0%
平均 3.8%

上記の5フレームワークの平均は3.8%でした。日本人の人口は世界の2%に満たないですので、それと比較すると多いです。しかし、世界のインターネット人口は2016年で34億9千万人らしいので、それだと人口比でそんなに多くはないですね。

詳細

CakePHP

https://github.com/cakephp/cakephp/graphs/contributors

  • chinpei215
  • waterada
  • nojimage
  • suzuki

8 commits(100位のContributorのコミット数)

CodeIgniter

https://github.com/bcit-ci/CodeIgniter/graphs/contributors

  • kenjis
  • katsew
  • TakayukiSakai

5 commits

FuelPHP

https://github.com/fuel/core/graphs/contributors

  • TOYOZUMIKouichi
  • kenjis
  • KenjiOhtsuka
  • Onuma0519
  • mamor
  • takano32
  • kanonji
  • kousuke
  • omoon
  • itcom

2 commits

Laravel

https://github.com/laravel/framework/graphs/contributors

  • 日本人はいない

7 commits

Symfony

https://github.com/symfony/symfony/graphs/contributors

  • hidenorigoto
  • issei-m

15 commits

関連

Tags: codeigniter, cakephp, symfony, fuelphp, laravel, php

3分でCodeIgniter 3.xからPHPUnit 6.0を使う

PHPUnit 6.0がリリースされたわけですが、CodeIgniter 3.xでももちろん使えます。

なお、PHPUnit 6.0を使うにはPHP 7.0以上が必要です。

CodeIgniterのインストール

ComposerからCodeIgniter 3.xの最新版をインストールします。

$ composer create-project kenjis/codeigniter-composer-installer ci31

以下のように、現在だとCodeIgniter 3.1.3がインストールされます。

Installing kenjis/codeigniter-composer-installer (v0.4.6)
  - Installing kenjis/codeigniter-composer-installer (v0.4.6)
    Loading from cache

Created project in ci31
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing codeigniter/framework (3.1.3)
    Loading from cache

kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-cli (A command-line tool for CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/ci-phpunit-test (An easier way to use PHPUnit with CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-ss-twig (A Simple and Secure Twig integration for CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-doctrine (A simple Doctrine integration for CodeIgniter 3.0)
kenjis/codeigniter-composer-installer suggests installing kenjis/codeigniter-deployer (A Deployment Tool for CodeIgniter 3.0)
codeigniter/framework suggests installing paragonie/random_compat (Provides better randomness in PHP 5.x)
Writing lock file
Generating autoload files
> Kenjis\CodeIgniter\Installer::postInstall
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mikey179/vfsstream (v1.1.0)
    Loading from cache

Writing lock file
Generating autoload files
==================================================
`public/.htaccess` was installed. If you don't need it, please remove it.
If you want to install translations for system messages or some third party libraries,
$ cd <codeigniter_project_folder>
$ php bin/install.php
Above command will show help message.
See <https://github.com/kenjis/codeigniter-composer-installer> for details
==================================================

PHPUnit 6.0のインストール

ComposerからPHPUnit 6.0をインストールします。

$ cd ci31/
$ composer require phpunit/phpunit:6.0.*

以下のように、現在だとPHPUnit 6.0.6がインストールされます。

./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing sebastian/version (2.0.1)
    Loading from cache

  - Installing sebastian/resource-operations (1.0.0)
    Loading from cache

  - Installing sebastian/recursion-context (2.0.0)
    Loading from cache

  - Installing sebastian/object-enumerator (2.0.0)
    Loading from cache

  - Installing sebastian/global-state (1.1.1)
    Loading from cache

  - Installing sebastian/exporter (2.0.0)
    Loading from cache

  - Installing sebastian/environment (2.0.0)
    Loading from cache

  - Installing sebastian/diff (1.4.1)
    Loading from cache

  - Installing sebastian/comparator (1.2.4)
    Loading from cache

  - Installing doctrine/instantiator (1.0.5)
    Loading from cache

  - Installing phpunit/php-text-template (1.2.1)
    Loading from cache

  - Installing phpunit/phpunit-mock-objects (4.0.0)
    Loading from cache

  - Installing phpunit/php-timer (1.0.8)
    Loading from cache

  - Installing phpunit/php-file-iterator (1.4.2)
    Loading from cache

  - Installing sebastian/code-unit-reverse-lookup (1.0.0)
    Loading from cache

  - Installing phpunit/php-token-stream (1.4.9)
    Loading from cache

  - Installing phpunit/php-code-coverage (5.0.0)
    Loading from cache

  - Installing webmozart/assert (1.2.0)
    Loading from cache

  - Installing phpdocumentor/reflection-common (1.0)
    Loading from cache

  - Installing phpdocumentor/type-resolver (0.2.1)
    Loading from cache

  - Installing phpdocumentor/reflection-docblock (3.1.1)
    Loading from cache

  - Installing phpspec/prophecy (v1.6.2)
    Loading from cache

  - Installing myclabs/deep-copy (1.6.0)
    Loading from cache

  - Installing phpunit/phpunit (6.0.6)
    Loading from cache

sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating autoload files

ci-phpunit-testのインストール

CodeIgniterからPHPUnitを簡単に使うために、ci-phpunit-testをインストールします。なお、PHPUnit 6.0を使うためには、ci-phpunit-test 0.14.0以上が必要です。

$ composer require kenjis/ci-phpunit-test --dev

以下のように、現在だとci-phpunit-test 0.14.0がインストールされます。

Using version ^0.14.0 for kenjis/ci-phpunit-test
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing nikic/php-parser (v3.0.4)
    Downloading: 100%         

  - Installing kenjis/ci-phpunit-test (v0.14.0)
    Downloading: 100%         

Writing lock file
Generating autoload files

実はこれだけではまだインストールが完了しません。以下のコマンドを実行します。

$ php vendor/kenjis/ci-phpunit-test/install.php

これで、ci-phpunit-testがインストールされました。

PHPUnitの実行

$ vendor/bin/phpunit -c application/tests/ --debug

以下のように、ci-phpunit-testに付属しているサンプルのテストが実行されます。

PHPUnit 6.0.6 by Sebastian Bergmann and contributors.

Error:         No code coverage driver is available


Starting test 'Welcome_test::test_index'.
.
Starting test 'Welcome_test::test_method_404'.
.
Starting test 'Welcome_test::test_APPPATH'.
.                                                                 3 / 3 (100%)

Time: 80 ms, Memory: 4.00MB

OK (3 tests, 3 assertions)

関連

Tags: codeigniter, phpunit, testing