SlideShare a Scribd company logo
Testing PHP extension
                  on Travis CI
                                               hnw
                        第4回闇PHP勉強会 (2013/03/02) 発表資料




13年3月3日日曜日
自己紹介

         @hnw

         カレーとバグが大好物

         好きな境界値:2^53+1
         (doubleで表現できない最小の自然数)

         最近はHaskellでProject Euler解いてます



13年3月3日日曜日
今日おはなしすること

         PHP extension作った!

         もちろんCIしたいですよね

             でも自分で環境作るとかダルいし

             そこでTravis CIですよ

         テストの書き方も少しだけ紹介します



13年3月3日日曜日
Travis CIとは

         GitHubと連携しているCIサービス

             CI=勝手にテスト回す仕組み

             各種プログラミング言語に対応

         git pushするだけでPHP5.2から5.5でテストが走る

         普通はPHPプログラムのテストに使います



13年3月3日日曜日
ExtensionもCIできる!
         Travis CIではテストコマンドを自由に記述できる

             「phpize && ./configure && make test」




13年3月3日日曜日
make testのオプション
         NO_INTERACTION=1

             テスト結果をメールするかどうか聞かない

             Travis CIでテストするときは必須

         TESTS=--show-all

             テストの経過を標準出力に全て表示

             環境のログイン権限がないので、情報は多い方がいい

13年3月3日日曜日
Travis CIの不満な点


         ZTSなPHPが無い

         --enable-debugつきのPHPが無い

         FPMなPHPが無い

                  まあ仕方ないよね…(́・ω・`)




13年3月3日日曜日
テストの書き方


         make testの仕組みに乗っかります

             tests/*.phptがテスト対象

             でも*.phptってあんまり書いたことないですよね




13年3月3日日曜日
*.phptの記法

         ext/*/tests/*.phptを参考にすればいいと思うよ!

         便利なブロックを少し紹介

             SKIPIF:テストをスキップする条件をPHPで書ける

             INI:このテストだけで有効なiniの内容を書ける

             ENV:このテストだけで有効な環境変数を書ける



13年3月3日日曜日
*.phptの例
13年3月3日日曜日
まとめ


         Travis CIでPHP Extensionのテストもできるよ!

         Extensionのテストは*.phptを書くだけだよ!

         テスト書いとくと安心感が違うよ!




13年3月3日日曜日
ご静聴
              ありがとう
             ございました



13年3月3日日曜日

More Related Content

What's hot

第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会masayoshi shiraishi
 
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてFuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてTetsuji Koyama
 
Predefを使ったsqlのトレース
Predefを使ったsqlのトレースPredefを使ったsqlのトレース
Predefを使ったsqlのトレース悠滋 山本
 
結婚式の画像がどうしてもほしかった話
結婚式の画像がどうしてもほしかった話結婚式の画像がどうしてもほしかった話
結婚式の画像がどうしてもほしかった話Daijirou Yamada
 
PHPべんちまーく
PHPべんちまーくPHPべんちまーく
PHPべんちまーくchichi1091
 
5分でわかる静的解析入門
5分でわかる静的解析入門5分でわかる静的解析入門
5分でわかる静的解析入門Kenta USAMI
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)Kenichiro MATOHARA
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptKazufumi Ohkawa
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作slankdev
 
第一回サーバー勉強友の会
第一回サーバー勉強友の会第一回サーバー勉強友の会
第一回サーバー勉強友の会Takahashi Tomohiko
 
プログラミング作法
プログラミング作法プログラミング作法
プログラミング作法Kota Uchida
 
第二回サーバー勉強友の会
第二回サーバー勉強友の会第二回サーバー勉強友の会
第二回サーバー勉強友の会Takahashi Tomohiko
 
例外のlogを快適に
例外のlogを快適に例外のlogを快適に
例外のlogを快適にTakashi Kawachi
 
Linux で写真を操作 - 写真の管理、現像、投稿 -
Linux で写真を操作 - 写真の管理、現像、投稿 -Linux で写真を操作 - 写真の管理、現像、投稿 -
Linux で写真を操作 - 写真の管理、現像、投稿 -Kenichiro MATOHARA
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみたShohei Tai
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケットTakaaki Hoyo
 
ほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxgion_XY
 

What's hot (20)

第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会
 
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみてFuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
 
Php非同期の技法
Php非同期の技法Php非同期の技法
Php非同期の技法
 
Predefを使ったsqlのトレース
Predefを使ったsqlのトレースPredefを使ったsqlのトレース
Predefを使ったsqlのトレース
 
結婚式の画像がどうしてもほしかった話
結婚式の画像がどうしてもほしかった話結婚式の画像がどうしてもほしかった話
結婚式の画像がどうしてもほしかった話
 
PHPべんちまーく
PHPべんちまーくPHPべんちまーく
PHPべんちまーく
 
PHP With Windows binary
PHP With Windows binaryPHP With Windows binary
PHP With Windows binary
 
5分でわかる静的解析入門
5分でわかる静的解析入門5分でわかる静的解析入門
5分でわかる静的解析入門
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
Nltk for biginer
Nltk for biginerNltk for biginer
Nltk for biginer
 
libpgenでパケット操作
libpgenでパケット操作libpgenでパケット操作
libpgenでパケット操作
 
第一回サーバー勉強友の会
第一回サーバー勉強友の会第一回サーバー勉強友の会
第一回サーバー勉強友の会
 
プログラミング作法
プログラミング作法プログラミング作法
プログラミング作法
 
第二回サーバー勉強友の会
第二回サーバー勉強友の会第二回サーバー勉強友の会
第二回サーバー勉強友の会
 
例外のlogを快適に
例外のlogを快適に例外のlogを快適に
例外のlogを快適に
 
Linux で写真を操作 - 写真の管理、現像、投稿 -
Linux で写真を操作 - 写真の管理、現像、投稿 -Linux で写真を操作 - 写真の管理、現像、投稿 -
Linux で写真を操作 - 写真の管理、現像、投稿 -
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 
ほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linuxほんとはこわくない Gentoo Linux
ほんとはこわくない Gentoo Linux
 

Viewers also liked

zval をダイエットしてみた
zval をダイエットしてみたzval をダイエットしてみた
zval をダイエットしてみたYoshio Hanawa
 
SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策Akishige TAKEKOSHI
 
php7's ast
php7's astphp7's ast
php7's astdo_aki
 
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するphp-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するYoshio Hanawa
 
Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話Satoru Yoshida
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情Yoshio Hanawa
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたYoshio Hanawa
 
Laungage Update PHP編
Laungage Update PHP編Laungage Update PHP編
Laungage Update PHP編Yoshio Hanawa
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックYoshio Hanawa
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るYoshio Hanawa
 
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るPHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るYoshio Hanawa
 
PHP7はなぜ速いのか
PHP7はなぜ速いのかPHP7はなぜ速いのか
PHP7はなぜ速いのかYoshio Hanawa
 
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちはYoshio Hanawa
 
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイントPHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイントYoshio Hanawa
 

Viewers also liked (15)

zval をダイエットしてみた
zval をダイエットしてみたzval をダイエットしてみた
zval をダイエットしてみた
 
PHPNGの動向
PHPNGの動向PHPNGの動向
PHPNGの動向
 
SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策
 
php7's ast
php7's astphp7's ast
php7's ast
 
php-buildがいかに便利かを力説する
php-buildがいかに便利かを力説するphp-buildがいかに便利かを力説する
php-buildがいかに便利かを力説する
 
Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話
 
PHP7の拡張モジュール事情
PHP7の拡張モジュール事情PHP7の拡張モジュール事情
PHP7の拡張モジュール事情
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
 
Laungage Update PHP編
Laungage Update PHP編Laungage Update PHP編
Laungage Update PHP編
 
PHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニックPHP7の内部実装から学ぶ性能改善テクニック
PHP7の内部実装から学ぶ性能改善テクニック
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
 
PHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作るPHPの拡張モジュールをGoで作る
PHPの拡張モジュールをGoで作る
 
PHP7はなぜ速いのか
PHP7はなぜ速いのかPHP7はなぜ速いのか
PHP7はなぜ速いのか
 
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは偶然にも500万個のSSH公開鍵を手に入れた俺たちは
偶然にも500万個のSSH公開鍵を手に入れた俺たちは
 
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイントPHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7で変わること ——言語仕様とエンジンの改善ポイント
 

More from Yoshio Hanawa

自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみたYoshio Hanawa
 
Zend VMにおける例外の実装
Zend VMにおける例外の実装Zend VMにおける例外の実装
Zend VMにおける例外の実装Yoshio Hanawa
 
Zend VMにおける例外の実装
Zend VMにおける例外の実装Zend VMにおける例外の実装
Zend VMにおける例外の実装Yoshio Hanawa
 
ぼくのかんがえる
さいきょうの銀行振込
ぼくのかんがえる
さいきょうの銀行振込ぼくのかんがえる
さいきょうの銀行振込
ぼくのかんがえる
さいきょうの銀行振込Yoshio Hanawa
 
「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」Yoshio Hanawa
 
浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話Yoshio Hanawa
 
PHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったことPHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったことYoshio Hanawa
 
GitHubからお金をもらった話
GitHubからお金をもらった話GitHubからお金をもらった話
GitHubからお金をもらった話Yoshio Hanawa
 
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べたiOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べたYoshio Hanawa
 
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係Yoshio Hanawa
 
家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそうYoshio Hanawa
 
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話Yoshio Hanawa
 
PHPの正規表現と最長一致
PHPの正規表現と最長一致PHPの正規表現と最長一致
PHPの正規表現と最長一致Yoshio Hanawa
 
浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版Yoshio Hanawa
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみたYoshio Hanawa
 
PHPエクステンションの開発tips
PHPエクステンションの開発tipsPHPエクステンションの開発tips
PHPエクステンションの開発tipsYoshio Hanawa
 
PHPで時間旅行をする方法
PHPで時間旅行をする方法PHPで時間旅行をする方法
PHPで時間旅行をする方法Yoshio Hanawa
 

More from Yoshio Hanawa (17)

自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた自宅の消費電力をリアルタイムに グラフ化してみた
自宅の消費電力をリアルタイムに グラフ化してみた
 
Zend VMにおける例外の実装
Zend VMにおける例外の実装Zend VMにおける例外の実装
Zend VMにおける例外の実装
 
Zend VMにおける例外の実装
Zend VMにおける例外の実装Zend VMにおける例外の実装
Zend VMにおける例外の実装
 
ぼくのかんがえる
さいきょうの銀行振込
ぼくのかんがえる
さいきょうの銀行振込ぼくのかんがえる
さいきょうの銀行振込
ぼくのかんがえる
さいきょうの銀行振込
 
「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」「OKグーグル! 銀行振込1000円」
「OKグーグル! 銀行振込1000円」
 
浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話浮動小数点数とOSSのバグの話
浮動小数点数とOSSのバグの話
 
PHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったことPHP拡張をPECLに登録してわかったこと
PHP拡張をPECLに登録してわかったこと
 
GitHubからお金をもらった話
GitHubからお金をもらった話GitHubからお金をもらった話
GitHubからお金をもらった話
 
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べたiOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
 
realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係realpathキャッシュと OPcacheの面倒すぎる関係
realpathキャッシュと OPcacheの面倒すぎる関係
 
家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう家庭用ブロードバンドルータ上でWordPressを動かそう
家庭用ブロードバンドルータ上でWordPressを動かそう
 
GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話GitHubにバグ報告して賞金$500を頂いた話
GitHubにバグ報告して賞金$500を頂いた話
 
PHPの正規表現と最長一致
PHPの正規表現と最長一致PHPの正規表現と最長一致
PHPの正規表現と最長一致
 
浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版浮動小数点数の話 2013年度版
浮動小数点数の話 2013年度版
 
php-timecopを実戦投入してみた
php-timecopを実戦投入してみたphp-timecopを実戦投入してみた
php-timecopを実戦投入してみた
 
PHPエクステンションの開発tips
PHPエクステンションの開発tipsPHPエクステンションの開発tips
PHPエクステンションの開発tips
 
PHPで時間旅行をする方法
PHPで時間旅行をする方法PHPで時間旅行をする方法
PHPで時間旅行をする方法
 

Testing PHP extension on Travis CI

  • 1. Testing PHP extension on Travis CI hnw 第4回闇PHP勉強会 (2013/03/02) 発表資料 13年3月3日日曜日
  • 2. 自己紹介 @hnw カレーとバグが大好物 好きな境界値:2^53+1 (doubleで表現できない最小の自然数) 最近はHaskellでProject Euler解いてます 13年3月3日日曜日
  • 3. 今日おはなしすること PHP extension作った! もちろんCIしたいですよね でも自分で環境作るとかダルいし そこでTravis CIですよ テストの書き方も少しだけ紹介します 13年3月3日日曜日
  • 4. Travis CIとは GitHubと連携しているCIサービス CI=勝手にテスト回す仕組み 各種プログラミング言語に対応 git pushするだけでPHP5.2から5.5でテストが走る 普通はPHPプログラムのテストに使います 13年3月3日日曜日
  • 5. ExtensionもCIできる! Travis CIではテストコマンドを自由に記述できる 「phpize && ./configure && make test」 13年3月3日日曜日
  • 6. make testのオプション NO_INTERACTION=1 テスト結果をメールするかどうか聞かない Travis CIでテストするときは必須 TESTS=--show-all テストの経過を標準出力に全て表示 環境のログイン権限がないので、情報は多い方がいい 13年3月3日日曜日
  • 7. Travis CIの不満な点 ZTSなPHPが無い --enable-debugつきのPHPが無い FPMなPHPが無い まあ仕方ないよね…(́・ω・`) 13年3月3日日曜日
  • 8. テストの書き方 make testの仕組みに乗っかります tests/*.phptがテスト対象 でも*.phptってあんまり書いたことないですよね 13年3月3日日曜日
  • 9. *.phptの記法 ext/*/tests/*.phptを参考にすればいいと思うよ! 便利なブロックを少し紹介 SKIPIF:テストをスキップする条件をPHPで書ける INI:このテストだけで有効なiniの内容を書ける ENV:このテストだけで有効な環境変数を書ける 13年3月3日日曜日
  • 11. まとめ Travis CIでPHP Extensionのテストもできるよ! Extensionのテストは*.phptを書くだけだよ! テスト書いとくと安心感が違うよ! 13年3月3日日曜日
  • 12. ご静聴 ありがとう ございました 13年3月3日日曜日