メモ」カテゴリーアーカイブ

PHPUnitで複数のアサーションを実行して最後に失敗があったか確認する

投稿日:

題目の通りなのですが、PHPUnitで複数のアサーションを実行して最後に失敗があったか確認する方法をメモしておきます。

本来(なるべく)なら1テスト1アサーションがいいのでしょうけど、とりあえず簡単なアサーションをざぁーーーっと流して最後に失敗したものだけを確認したいこともあるのではないのでしょうか。

そんな要求を満たすには以下の方法もあるのではないかという話です。
※すいません、これ以外やったことありませn

方法

以下の例外をキャッチする。

\PHPUnit_Framework_ExpectationFailedException

はい、これだけです。
続きを読んでみようかな…

【メモ】NetBeansでのファイル内移動ショートカット

投稿日:

自分はふだんNetBeansを使って開発しているのですが、数千行ある巨大なファイルでファイルの先頭に飛んだり、最後に飛んだりするショートカットを地味に知らなかったのでメモしておきます。

えぇ、今まではマウスホイールとかグルグルグルグルしてました。

Mac

ファイルの先頭に移動

Command (⌘) + ↑

  • 地味に移動しないときがあるのでそんな時はさらに
  • イメージとしては、Command (⌘) + ↑ + ←

続きを読んでみようかな…

Lumenでログを出力する

投稿日:

LumenでちょっとAPIを書いてみようと思い、とりあえずログにでも吐き出すかなぁとLog::info('Hello Lumen!!');と書いてみたら見事に怒られました。
まぁいちおう対応をしたわけですが、その際にLumenでログを吐き出すまでに行ったことをメモとして残しておきます。
(ちょっと素人の匂いが漂う内容かもしれません。。)

bootstrap/app.php$app->withFacades();を有効にするパターンと、コメントアウトのままログを吐き出すパターンを書いてみます。※Monologを直接使うパターンも

なお、Lumenのバージョンは

Lumen (5.3.2) (Laravel Components 5.3.*)

です。
続きを読んでみようかな…

Composerを久々にダウンロードしようとしたらちょっとハマった

投稿日:

もう田舎は寒いですよ。

Composerを久々にダウンロードしようとしたらちょっとハマったのでメモしておきます。

2017-06-02 ここから追記

下にうだうだ書いていますが、

$ curl -sS https://getcomposer.org/installer | php

でダウンロードできるはずです。
もしダウンロードできなかった場合、続きに何か参考となる情報があるかもしれません。

2017-06-02 ここまで追記

前提条件

ローカル(Mac)での話です。
PHPのバージョンはPHP 5.6.24 (cli) (built: Aug 8 2016 16:58:37)です。

発端

Download Composer に書いてある通り(こんなにコマンドあったっけ?と思いつつ)以下をッターンしたんですが、

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

最初のphp -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"でこんなんでました。

Warning: copy(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in Command line code on line 1

Warning: copy(): Failed to enable crypto in Command line code on line 1

Warning: copy(https://getcomposer.org/installer): failed to open stream: operation failed in Command line code on line 1

え、ちょっとまってこんなの知らない。挫けずにちょっとググってみると
ComposerからLaravelを導入しようとしてOpenSSL周りのエラーで困った件 – Qiita
を発見しました。
でも何かphp.iniとかに設定を書くのは気が引けます。

2016-10-26 ここから追記
もう少し調べてみると、SSL通信時に発生する証明書エラーで結構知られているようですね。
※ クライアント側の証明書がちゃんと正しいかどうか(有効期限切れとか)

ですので、上記サイトの通りルート証明書ファイル(CA)を取得して設定するのもよさそうです。
SSL認証を無視させる方法もあるみたいですが。。

SSL認証を無視させる

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php', stream_context_create(
    array(
      'ssl' => array (
        'verify_peer' => false,
        'verify_peer_name' => false)
      )
    )
  );"

こうすればエラーにならないんですけど、
参考 : Quick Fix – SSL operation failed with code 1. OpenSSL Error messages

I know disabling SSL verification isn’t the best thing to do but I was running out of time because we had to ship quickly.

とある通り出来ればあまり真似しないほうがよさそうです。

でも大体curlでエラーになるっていう情報で溢れているんですが、

$ curl -sS https://getcomposer.org/installer | php

(いつもやっていた)これは動くんですよねぇ。。なんなんだろ。。
2016-10-26 ここまで追記

他の方法

他に方法は無いかなぁと探してみると冒頭の Download Composerhow to install Composer programmatically なるリンクがあるので見てみます。
うん。シェルが書いてありますね。
続きを読んでみようかな…

PHPUnitとPHPのバージョン対応表

投稿日:

そこにペチパー(PHPer)が100人いたら97人はPHPUnitでテストを書く。
と言われている位(適当です)、PHPでは珍しくデファクトとなっているPHPUnit。

なにそうなのか!?と、いざ導入しようとしてwget https://phar.phpunit.de/phpunit.pharから入れたらPHPのバージョンが合っていなくて挫けそうになった経験。あると思います。

何故なら、PHPUnitの最新バージョンはPHP5.6PHP 7以上を求めているからです。
※ 上記のwget 〜 では最新のPHPUnitが取得されます

そして恐らく、みんながみんなPHPのバージョンは最新では無いはずです。
(一番マシなのが5.5系でヘタすれば未だに5.3系なんてとこも??5.2系使っていたら頭おかしい)

え、じゃあ僕は5.5系使っているんだけど、どうしたらいいの?私は5.4系よ、どうしたらいいの?という事になりますが結論を先に書くと、


PHP5.6以上の人 => PHPUnitは 最新 のものでOK (今のところ)
PHP5.5以下の人 => PHPUnitは 4.8系 を使う (pharファイルはphpunit-4.8.35.phar)

PHP7.0以上の人 => PHPUnitは 最新 のものでOK (今のところ)
PHP5.6の人 => PHPUnitは 5.7系 のものでOK (pharファイルはphpunit-5.7.21.phar)
PHP5.5以下の人 => PHPUnitは 4.8系 を使う (pharファイルはphpunit-4.8.36.phar)

という事になります。
※ 最新の PHPUnit (6.0.0) から PHP5.6 のサポートを止めたようです
Release Announcement for PHPUnit 6.0.0 · sebastianbergmann/phpunit Wiki · GitHub

つまり、それぞれこんな感じでインストールすればOKです。

  • PHP5.5以下 ( >= ) の人はこんな感じでバージョン指定する
$ wget https://phar.phpunit.de/phpunit-4.8.27.phar
$ chmod +x phpunit-4.8.27.phar
$ sudo mv phpunit-4.8.27.phar /usr/local/bin/phpunit
  • Chefだとこんな感じ(上のバージョン指定)

続きを読んでみようかな…

【FuelPHP】Twigでテンプレートのキャッシュファイルを作りたくない場合

投稿日:

こんばんわー。今深夜1時半ですがめっちゃセミ鳴いています。
メモでーす。

Twigをそのまま使っていると、fuel/app/cache/twigにコンパイル後のテンプレートファイルがキャッシュされますが、何かしらの理由でキャッシュファイルを作成したくない場合、fuel/packages/parser/config/parser.phpを以下の様にします。

View_Twig.environment.cacheの値をfalseにする

<?php
/**
 * Fuel
 *
 * Fuel is a fast, lightweight, community driven PHP5 framework.
 *
 * @package    Fuel
 * @version    1.7
 * @author     Fuel Development Team
 * @license    MIT License
 * @copyright  2010 - 2014 Fuel Development Team
 * @link       http://fuelphp.com

/**
 * NOTICE:
 *
 * If you need to make modifications to the default configuration, copy
 * this file to your app/config folder, and make them in there.
 *
 * This will allow you to upgrade fuel without losing your custom config.
 */

return array(
    // ----- 抜粋 -----
    
    // TWIG ( http://www.twig-project.org/documentation )
    // ------------------------------------------------------------------------
    'View_Twig' => array(
        'auto_encode' => true,
        'views_paths' => array(APPPATH.'views'),
        'delimiters' => array(
            'tag_block'     => array('left' => '{%', 'right' => '%}'),
            'tag_comment'   => array('left' => '{#', 'right' => '#}'),
            'tag_variable'  => array('left' => '{{', 'right' => '}}'),
        ),
        'environment' => array(
            'debug'                => false,
            'charset'              => 'utf-8',
            'base_template_class'  => 'Twig_Template',
            'cache'                => false, // falseにする
            'auto_reload'          => true,
            'strict_variables'     => false,
            'autoescape'           => false,
            'optimizations'        => -1,
        ),
        'extensions' => array(
            'Twig_Fuel_Extension'
        ),
    ),
    
    // ----- 抜粋 -----
);

このようにすればTwigのキャッシュファイルは作成されません。

環境ごとに設定を分けたい場合、fuel/app/config/{環境変数}/parser.phpに上記のView_Twigの部分を書けばOKです。環境変数はFuel::$envの値です。
fuel/packages/parser/config/parser.phpに記載した設定は元に戻しておきます。

以上です。他に方法あったら教えて下さい。