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