about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-03 20:33:25 +0000
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-03 20:33:25 +0000
commit30a72ab33290a9ce57955bbd0799e394feab91ea (patch)
treef8d5823f4ee9dc803acc8a5da7eb8df5dc8b6048
parent031dcde21cd8dab5494d9715ba50d6a539e3fb42 (diff)
downloadpublic-inbox-30a72ab33290a9ce57955bbd0799e394feab91ea.tar.gz
It's easier to store everything in one array ref similar
to what our Git->check routine returns
-rw-r--r--lib/PublicInbox/Import.pm6
-rw-r--r--lib/PublicInbox/V2Writable.pm5
-rw-r--r--t/import.t9
3 files changed, 11 insertions, 9 deletions
diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm
index ac46c0cb..ddb63b10 100644
--- a/lib/PublicInbox/Import.pm
+++ b/lib/PublicInbox/Import.pm
@@ -282,9 +282,9 @@ sub add {
         print $w $str, "\n" or wfail;
 
         # v2: we need this for Xapian
-        if ($self->{want_object_id}) {
-                chomp($self->{last_object_id} = $self->get_mark(":$blob"));
-                $self->{last_object} = [ $n, \$str ];
+        if ($self->{want_object_info}) {
+                chomp(my $oid = $self->get_mark(":$blob"));
+                $self->{last_object} = [ $oid, $n, \$str ];
         }
         my $ref = $self->{ref};
         my $commit = $self->{mark}++;
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index caabc8e4..31376db2 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -69,8 +69,7 @@ sub add {
         my $im = $self->importer;
         my $cmt = $im->add($mime);
         $cmt = $im->get_mark($cmt);
-        my $oid = $im->{last_object_id};
-        my ($len, $msgref) = @{$im->{last_object}};
+        my ($oid, $len, $msgref) = @{$im->{last_object}};
 
         my $nparts = $self->{partitions};
         my $part = $num % $nparts;
@@ -318,7 +317,7 @@ sub import_init {
         my ($self, $git, $packed_bytes) = @_;
         my $im = PublicInbox::Import->new($git, undef, undef, $self->{-inbox});
         $im->{bytes_added} = int($packed_bytes / $PACKING_FACTOR);
-        $im->{want_object_id} = 1;
+        $im->{want_object_info} = 1;
         $im->{ssoma_lock} = 0;
         $im->{path_type} = 'v2';
         $self->{im} = $im;
diff --git a/t/import.t b/t/import.t
index ca597720..eee47447 100644
--- a/t/import.t
+++ b/t/import.t
@@ -28,11 +28,14 @@ my $mime = PublicInbox::MIME->create(
         body => "hello world\n",
 );
 
-$im->{want_object_id} = 1 if 'v2';
+$im->{want_object_info} = 1 if 'v2';
 like($im->add($mime), qr/\A:\d+\z/, 'added one message');
 
 if ('v2') {
-        like($im->{last_object_id}, qr/\A[a-f0-9]{40}\z/, 'got last_object_id');
+        my $info = $im->{last_object};
+        like($info->[0], qr/\A[a-f0-9]{40}\z/, 'got last object_id');
+        is($mime->as_string, ${$info->[2]}, 'string matches');
+        is($info->[1], length(${$info->[2]}), 'length matches');
         my @cmd = ('git', "--git-dir=$git->{git_dir}", qw(hash-object --stdin));
         my $in = tempfile();
         print $in $mime->as_string or die "write failed: $!";
@@ -44,7 +47,7 @@ if ('v2') {
         is($?, 0, 'hash-object');
         $out->seek(0, SEEK_SET);
         chomp(my $hashed_obj = <$out>);
-        is($hashed_obj, $im->{last_object_id}, "last_object_id matches exp");
+        is($hashed_obj, $info->[0], "last object_id matches exp");
 }
 
 $im->done;