2011-06-29
■SQL文をテストする
書いたSQLのシンタックスチェックを自動化する
スキーマを書くときにはSQLを書くわけですが、作る過程では変更後のシンタックスが正しいか確認するのが意外と手間だったりします。
カンマ付け忘れや typo は自動でチェックしたいですね。
そんな時は Test::mysqld を使うと手軽に CREATE TABLE 文の文法チェックをテストに含めておけるので、
下記のようなテストを準備しておくとよさそうです。
t/sql/01_create_table.t
use strict; use warnings; use Test::mysqld; use Test::More; use DBI; # debian installs mysqld into /usr/sbin $ENV{PATH} = $ENV{PATH} . ':/usr/sbin'; my $mysqld = Test::mysqld->new( my_cnf => { 'skip-networking' => '' } ) or plan skip_all => $Test::mysqld::errstr; my $dbh = DBI->connect( $mysqld->dsn ); for my $file (glob "schema/*") { my @sqls = (sub { open my $fh, "<", $file or die $!; grep { not /^\s?$/ } split /;/, do{ local $/; <$fh> }; })->(); for my $sql (@sqls) { note $sql; ok $dbh->do($sql), 'CREATE TABLE'; } } done_testing;
トラックバック - http://d.hatena.ne.jp/punitan/20110629/1309347529
リンク元
- 126 http://pipes.yahoo.com/pipes/pipe.info?_id=tDfBdGWF3RGl9XNm1L3fcQ
- 31 http://pipes.yahoo.com/pipes/pipe.info?_id=12e453e301454b799b3ac6642aa089b5
- 28 http://pipes.yahoo.com/pipes/pipe.info?_id=1f1b8390cf34894315eeffd0e3187470
- 25 http://twitter.com/
- 17 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http://d.hatena.ne.jp/punitan/20110420/1303309151&rct=j&q=daemontools run export&ei=kjoLTvroPMafmQWjuYWmAQ&usg=AFQjCNEKF2izndCxhNqrJPGQ7iUtMUQ6hg
- 13 http://reader.livedoor.com/reader/
- 11 http://t.co/ceDFsSr
- 10 http://linknode.net/tepco.html
- 9 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http://d.hatena.ne.jp/punitan/20101222/1293045593&rct=j&q=plack session fixation&ei=fr8STtnQBOrxmAXt8LTzBw&usg=AFQjCNGl0GaXS1pgOOz9FoufLJ2m6N9d8w
- 7 http://blog.monoweb.info/archives/category/javascript
