我有这样的剧本:
#!/var/home/cherry/opt/perl
use Test::More;
use DBI;
use Test::mysqld;
use Data::Dumper;
my $mysqld = Test::mysqld->new(
base_dir => '/tmp/test_mysqls',
my_cnf => {
'skip-networking' => '', # no TCP socket
}
) or plan skip_all => $Test::mysqld::errstr;
my $dbh = DBI->connect(
$mysqld->dsn(dbname => 'test'),
);
warn Dumper($mysqld);
done_testing();当我运行这个程序时,我得到的输出如下:
prove -lv t/test.t
t/test.t .. $VAR1 = bless( {
'_owner_pid' => 21854,
'base_dir' => '/tmp/test_mysqls',
'pid' => 21918,
'mysql_install_db' => '/usr/bin/mysql_install_db',
'auto_start' => 2,
'my_cnf' => {
'tmpdir' => '/tmp/test_mysqls/tmp',
'pid-file' => '/tmp/test_mysqls/tmp/mysqld.pid',
'skip-networking' => '',
'datadir' => '/tmp/test_mysqls/var',
'socket' => '/tmp/test_mysqls/tmp/mysql.sock'
},
'mysqld' => '/usr/sbin/mysqld'
}, 'Test::mysqld' );
1..0测试永远不会完成。脚本永远在换行符上等待,永远不会退出--当我执行ps aux时,即使在执行ctrl + c之后,我也可以看到mysqld实例在运行。我甚至不知道从哪里开始解决这个问题。有什么暗示吗?
发布于 2012-06-22 21:00:54
尝试添加一个do {}并调用$ mysqld ->停止在eval {}中关闭mysqld。
my $mysqld = Test::mysqld->new(
base_dir => '/tmp/test_mysqls',
my_cnf => {
'skip-networking' => '', # no TCP socket
}
) or do {
eval { $mysqld->stop };
plan skip_all => $Test::mysqld::errstr;
};https://stackoverflow.com/questions/11163177
复制相似问题