user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
35aff37b739f264e2f1d5106dbf14feacf2a25cd blob 1929 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
#!perl -w
# Copyright (C) 2020 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
use strict;
use Test::More;
use_ok 'PublicInbox::IdxStack';
my $oid_a = '03c21563cf15c241687966b5b2a3f37cdc193316';
my $oid_b = '963caad026055ab9bcbe3ee9550247f9d8840feb';

my $stk = PublicInbox::IdxStack->new;
is($stk->read_prepare, $stk, 'nothing');
is($stk->num_records, 0, 'no records');
is($stk->pop_rec, undef, 'undef on empty');

$stk = PublicInbox::IdxStack->new;
$stk->push_rec('m', 1234, 5678, $oid_a);
is($stk->read_prepare, $stk, 'read_prepare');
is($stk->num_records, 1, 'num_records');
is_deeply([$stk->pop_rec], ['m', 1234, 5678, $oid_a], 'pop once');
is($stk->pop_rec, undef, 'undef on empty');

$stk = PublicInbox::IdxStack->new;
$stk->push_rec('m', 1234, 5678, $oid_a);
$stk->push_rec('d', 1234, 5678, $oid_b);
is($stk->read_prepare, $stk, 'read_prepare');
is($stk->num_records, 2, 'num_records');
is_deeply([$stk->pop_rec], ['d', 1234, 5678, $oid_b], 'pop');
is_deeply([$stk->pop_rec], ['m', 1234, 5678, $oid_a], 'pop-pop');
is($stk->pop_rec, undef, 'empty');

SKIP: {
	$stk = undef;
	my $nr = $ENV{TEST_GIT_LOG} or skip 'TEST_GIT_LOG unset', 3;
	open my $fh, '-|', qw(git log --pretty=tformat:%at.%ct.%H), "-$nr" or
		die "git log: $!";
	my @expect;
	while (<$fh>) {
		chomp;
		my ($at, $ct, $H) = split(/\./);
		$stk //= PublicInbox::IdxStack->new($H);
		# not bothering to parse blobs here, just using commit OID
		# as a blob OID since they're the same size + format
		$stk->push_rec('m', $at + 0, $ct + 0, $H);
		push(@expect, [ 'm', $at, $ct, $H ]);
	}
	$stk or skip('nothing from git log', 3);
	is($stk->read_prepare, $stk, 'read_prepare');
	is($stk->num_records, scalar(@expect), 'num_records matches expected');
	my @result;
	while (my @tmp = $stk->pop_rec) {
		unshift @result, \@tmp;
	}
	is_deeply(\@result, \@expect, 'results match expected');
}

done_testing;
debug log:

solving 35aff37b7 ...
found 35aff37b7 in public-inbox.git

user/dev discussion of public-inbox itself

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/meta
	git clone --mirror http://czquwvybam4bgbro.onion/meta
	git clone --mirror http://hjrcffqmbrq6wope.onion/meta
	git clone --mirror http://ou63pmih66umazou.onion/meta

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 meta meta/ https://public-inbox.org/meta \
		meta@public-inbox.org
	public-inbox-index meta

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.mail.public-inbox.meta
	nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.mail.public-inbox.meta
	nntp://ie5yzdi7fg72h7s4sdcztq5evakq23rdt33mfyfcddc5u3ndnw24ogqd.onion/inbox.comp.mail.public-inbox.meta
	nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta
	nntp://news.gmane.io/gmane.mail.public-inbox.general
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for project(s) associated with this inbox:

	https://80x24.org/public-inbox.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git