]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/config.t
run update-copyrights from gnulib for 2019
[public-inbox.git] / t / config.t
index 5f0a95ba746bf80b8a0c6ac4c57d006f422e1180..b7a4ceb62e030d1efbd31c4ad53e7b0eec548cf6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2018 all contributors <meta@public-inbox.org>
+# Copyright (C) 2014-2019 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use warnings;
@@ -127,10 +127,13 @@ my @invalid = (
 
 );
 
-require Data::Dumper;
+my %X = ("\0" => '\\0', "\b" => '\\b', "\f" => '\\f', "'" => "\\'");
+my $xre = join('|', keys %X);
+
 for my $s (@invalid) {
-       my $d = Data::Dumper->new([$s])->Terse(1)->Indent(0)->Dump;
-       ok(!PublicInbox::Config::valid_inbox_name($s), "$d name rejected");
+       my $d = $s;
+       $d =~ s/($xre)/$X{$1}/g;
+       ok(!PublicInbox::Config::valid_inbox_name($s), "`$d' name rejected");
 }
 
 # obviously-valid examples
@@ -146,8 +149,45 @@ my @valid = qw(a a@example a@example.com);
 # '!', '$', '=', '+'
 push @valid, qw[bang! ca$h less< more> 1% (parens) &more eql= +plus], '#hash';
 for my $s (@valid) {
-       my $d = Data::Dumper->new([$s])->Terse(1)->Indent(0)->Dump;
-       ok(PublicInbox::Config::valid_inbox_name($s), "$d name accepted");
+       ok(PublicInbox::Config::valid_inbox_name($s), "`$s' name accepted");
+}
+
+{
+       my $f = "$tmpdir/ordered";
+       open my $fh, '>', $f or die "open: $!";
+       my @expect;
+       foreach my $i (0..3) {
+               push @expect, "$i";
+               print $fh <<"" or die "print: $!";
+[publicinbox "$i"]
+       mainrepo = /path/to/$i.git
+       address = $i\@example.com
+
+       }
+       close $fh or die "close: $!";
+       my $cfg = PublicInbox::Config->new($f);
+       my @result;
+       $cfg->each_inbox(sub { push @result, $_[0]->{name} });
+       is_deeply(\@result, \@expect);
+}
+
+{
+       my $pfx1 = "publicinbox.test1";
+       my $pfx2 = "publicinbox.test2";
+       my $h = {
+               "$pfx1.address" => 'test@example.com',
+               "$pfx1.mainrepo" => '/path/to/non/existent',
+               "$pfx2.address" => 'foo@example.com',
+               "$pfx2.mainrepo" => '/path/to/foo',
+               "$pfx1.coderepo" => 'project',
+               "$pfx2.coderepo" => 'project',
+               "coderepo.project.dir" => '/path/to/project.git',
+       };
+       my $cfg = PublicInbox::Config->new($h);
+       my $t1 = $cfg->lookup_name('test1');
+       my $t2 = $cfg->lookup_name('test2');
+       is($t1->{-repo_objs}->[0], $t2->{-repo_objs}->[0],
+               'inboxes share ::Git object');
 }
 
 done_testing();