1#! /usr/bin/perl 2 3use Test::More tests => 18; 4use FindBin; 5 6use Sphinx::Config; 7 8my $filename = $FindBin::Bin . "/sphinx.conf.dist"; 9my $c = Sphinx::Config->new; 10ok($c, "new"); 11$c->parse($filename); 12ok($c->config, "parse"); 13 14is($c->get("source", "src1", "type"), "mysql", "get single var"); 15is_deeply($c->get("indexer"), { mem_limit => "32M"}, "get complex var"); 16$c->set("source", "src1", "type", "pgsql"); 17is($c->get("source", "src1", "type"), "pgsql", "set single var"); 18$c->set("indexer", undef, { mem_limit => "16M"}); 19is_deeply($c->get("indexer"), { mem_limit => "16M"}, "set complex var"); 20 21my $outfile = $FindBin::Bin . "/sphinx.conf.test"; 22END { unlink $outfile if $outfile } 23$c->save($outfile); #, "# Test output file"); 24 25my $c2 = Sphinx::Config->new; 26$c2->parse($outfile); 27is_deeply($c->config, $c2->config, "save"); 28 29$c->preserve_inheritance(0); 30$c->set("source", "src1", "type", "mysql"); 31is($c->get("source", "src1", "type"), "mysql", "set single var no inheritance, parent"); 32is($c->get("source", "src1stripped", "type"), "pgsql", "set single var no inheritance, child"); 33$c->set("source", "src1", "sql_attr_timestamp", [ qw/birthday anniversary/ ]); 34is_deeply($c->get("source", "src1", "sql_attr_timestamp"), [ qw/birthday anniversary/ ], 'multi-key'); 35 36$c->save($outfile, "# Test output file"); 37$c2->parse($outfile); 38is($c2->get("source", "src1", "type"), "mysql", "save, no inheritance, parent"); 39is($c2->get("source", "src1stripped", "type"), "pgsql", "save, no inheritance, child"); 40is_deeply($c2->get("source", "src1", "sql_attr_timestamp"), [ qw/birthday anniversary/ ], 'save, multi-key'); 41 42# delete 43$c->preserve_inheritance(1); 44$c->set("source", "src1", "sql_db", undef); 45ok(! defined($c->get("source", "src1", "sql_db")), "delete"); 46ok(! defined($c->get("source", "src1stripped", "sql_db")), "delete inherited"); 47$c->set("source", "src1stripped", undef); 48ok(! defined($c->get("source", "src1stripped")), "delete block"); 49$c->save($outfile, "# Test output file"); 50$c2->parse($outfile); 51ok(! defined($c2->get("source", "src1", "sql_db")), "save, deleted"); 52ok(! defined($c2->get("source", "src1stripped")), "save, deleted block"); 53