From 22c06c7b833137dc25dab1942f161fde5bc0d9c3 Mon Sep 17 00:00:00 2001 From: Charles McGarvey Date: Tue, 3 May 2022 16:27:30 -0600 Subject: [PATCH] Fix test fail with older versions of Time::Piece --- lib/File/KDBX/Util.pm | 14 ++++++++------ t/entry.t | 2 +- t/util.t | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/File/KDBX/Util.pm b/lib/File/KDBX/Util.pm index 62515f5..84cb363 100644 --- a/lib/File/KDBX/Util.pm +++ b/lib/File/KDBX/Util.pm @@ -598,7 +598,7 @@ sub pack_Ql { my $num = shift; require Config; if ($Config::Config{ivsize} < 8) { - if (blessed $num && $num->can('to_hex')) { + if (blessed $num && $num->can('as_hex')) { return "\xff\xff\xff\xff\xff\xff\xff\xff" if Math::BigInt->new('18446744073709551615') <= $num; return "\x00\x00\x00\x00\x00\x00\x00\x80" if $num <= Math::BigInt->new('-9223372036854775808'); my $neg; @@ -606,7 +606,9 @@ sub pack_Ql { $neg = 1; $num = -$num; } - my $bytes = reverse pack('H16', substr(('0' x 15) . $num->to_hex, -16)); + my $hex = $num->as_hex; + $hex =~ s/^0x/000000000000000/; + my $bytes = reverse pack('H16', substr($hex, -16)); $bytes .= "\0" x (8 - length $bytes) if length $bytes < 8; if ($neg) { # two's compliment @@ -646,7 +648,7 @@ sub unpack_Ql { require Config; if ($Config::Config{ivsize} < 8) { require Math::BigInt; - return (Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes))); + return Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes)); } return unpack('Q<', $bytes); } @@ -665,14 +667,14 @@ sub unpack_ql { if ($Config::Config{ivsize} < 8) { require Math::BigInt; if (ord(substr($bytes, -1, 1)) & 128) { - return (Math::BigInt->new('-9223372036854775808')) if $bytes eq "\x00\x00\x00\x00\x00\x00\x00\x80"; + return Math::BigInt->new('-9223372036854775808') if $bytes eq "\x00\x00\x00\x00\x00\x00\x00\x80"; # two's compliment substr($bytes, 0, 1, chr(ord(substr($bytes, 0, 1)) - 1)); $bytes = join('', map { chr(~ord($_) & 0xff) } split(//, $bytes)); - return (-Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes))); + return -Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes)); } else { - return (Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes))); + return Math::BigInt->new('0x' . unpack('H*', scalar reverse $bytes)); } } return unpack('q<', $bytes); diff --git a/t/entry.t b/t/entry.t index f08b683..1581608 100644 --- a/t/entry.t +++ b/t/entry.t @@ -82,7 +82,7 @@ subtest 'Accessors' => sub { my $entry = File::KDBX::Entry->new; $entry->creation_time('2022-02-02 12:34:56'); - cmp_ok $entry->creation_time, '==', 1643805296, 'Creation time coerced into a Time::Piece (epoch)'; + cmp_ok $entry->creation_time->epoch, '==', 1643805296, 'Creation time coerced into a Time::Piece (epoch)'; is $entry->creation_time->datetime, '2022-02-02T12:34:56', 'Creation time coerced into a Time::Piece'; }; diff --git a/t/util.t b/t/util.t index 5c26c9d..a785b2f 100644 --- a/t/util.t +++ b/t/util.t @@ -7,7 +7,7 @@ use lib 't/lib'; use TestCommon; use File::KDBX::Util qw(:all); -use Math::BigInt 1.999808; +use Math::BigInt; use Scalar::Util qw(blessed); use Test::More; -- 2.43.0