Skip to content

Commit f35b109

Browse files
authored
Merge pull request #1617 from Byron/commit-roundtrip
commit roundtrip
2 parents 31bdd2e + 528f549 commit f35b109

File tree

20 files changed

+65
-27
lines changed

20 files changed

+65
-27
lines changed

gix-object/src/commit/write.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ impl crate::WriteTo for Commit {
4141
.extra_headers
4242
.iter()
4343
.map(|(name, value)| {
44-
// each header *value* is preceded by a space and followed by a newline
45-
name.len() + value.split_str("\n").map(|s| s.len() + 2).sum::<usize>()
44+
// each header *value* is preceded by a space, and it starts right after the name.
45+
name.len() + value.lines_with_terminator().map(|s| s.len() + 1).sum::<usize>() + usize::from(!value.ends_with_str(b"\n"))
4646
})
4747
.sum::<usize>()
4848
+ 1 /* nl */
@@ -87,8 +87,8 @@ impl<'a> crate::WriteTo for CommitRef<'a> {
8787
.extra_headers
8888
.iter()
8989
.map(|(name, value)| {
90-
// each header *value* is preceded by a space and followed by a newline
91-
name.len() + value.split_str("\n").map(|s| s.len() + 2).sum::<usize>()
90+
// each header *value* is preceded by a space, and it starts right after the name.
91+
name.len() + value.lines_with_terminator().map(|s| s.len() + 1).sum::<usize>() + usize::from(!value.ends_with_str(b"\n"))
9292
})
9393
.sum::<usize>()
9494
+ 1 /* nl */

gix-object/src/encode.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,15 @@ impl From<Error> for io::Error {
3535
}
3636

3737
pub(crate) fn header_field_multi_line(name: &[u8], value: &[u8], out: &mut dyn io::Write) -> io::Result<()> {
38-
let mut lines = value.as_bstr().split_str(b"\n");
39-
trusted_header_field(name, lines.next().ok_or(Error::EmptyValue)?, out)?;
38+
let mut lines = value.as_bstr().lines_with_terminator();
39+
out.write_all(name)?;
40+
out.write_all(SPACE)?;
41+
out.write_all(lines.next().ok_or(Error::EmptyValue)?)?;
4042
for line in lines {
4143
out.write_all(SPACE)?;
4244
out.write_all(line)?;
45+
}
46+
if !value.ends_with_str(b"\n") {
4347
out.write_all(NL)?;
4448
}
4549
Ok(())

gix-object/src/parse.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@ pub(crate) fn any_header_field_multi_line<'a, E: ParserError<&'a [u8]> + AddCont
2626
.map(|o: &[u8]| {
2727
let bytes = o.as_bstr();
2828
let mut out = BString::from(Vec::with_capacity(bytes.len()));
29-
let mut lines = bytes.lines();
29+
let mut lines = bytes.lines_with_terminator();
3030
out.push_str(lines.next().expect("first line"));
3131
for line in lines {
32-
out.push(b'\n');
3332
out.push_str(&line[1..]); // cut leading space
3433
}
3534
out
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# assure newlines aren't butchered as they matter for testing
2+
**/*.txt text crlf=input eol=lf
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
tree de33f909dd559dd60753264ccf9e80183a32c9cc
2+
parent 2305aad7ac23331e75465eccf425f899fa53a8d8
3+
author Brezak <[email protected]> 1724180029 +0200
4+
committer Brezak <[email protected]> 1728251787 +0200
5+
gpgsig -----BEGIN PGP SIGNATURE-----
6+
7+
iQEzBAABCAAdFiEE6+MMXTYlBWl/3EAJyziR4rEnnXwFAmcDB4sACgkQyziR4rEn
8+
nXy8owf9EkHTtmxUKhXiZ8ThGlpqwzcUaaYOBSX6Pmwacz+mqsA7fwLN/AxyN/Wv
9+
d7zVhCYX01aZi7lutN4rVa08S9ZoXeZOBHm1u2YtrtETcjiBpVIVt33spkLendvB
10+
1C5UyuVhZ4m8bHG5A3kmJlg0Mf9cwKvNTZiozb+lG79p1b3rc8PJHilHdAMmaUkb
11+
58/7dUXM1B/LLd9p4IyJdLVA0jZmAagm+akiH/A1lji7zSvLJqhr1xOlD6L/K/Ao
12+
TM6Kk0i2+eido5vaoutUFuKx+u4j4OtA3lDohvmu36RwyZbfa3OSAg+TWChgYBc/
13+
ctOcWsB0EKL3XKz7X8Sw2EIS1Fcd4w==
14+
=aZq+
15+
-----END PGP SIGNATURE-----
16+
17+
18+
Check that `#[pointee]` is applied only to generic arguments

gix-object/tests/commit/from_bytes.rs renamed to gix-object/tests/object/commit/from_bytes.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ fn signed() -> crate::Result {
147147
committer: signature(1592391367),
148148
encoding: None,
149149
message: b"update tasks\n".as_bstr(),
150-
extra_headers: vec![(b"gpgsig".as_bstr(), b"-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEdjYp/sh4j8NRKLX27gKdHl60AwAFAl7p9tgACgkQ7gKdHl60\nAwBpegf+KQciv9AOIN7+yPmowecGxBnSfpKWTDzFxnyGR8dq63SpWT8WEKG5mf3a\nG6iUqpsDWaMHlzihaMKRvgRpZxFRbjnNPFBj6F4RRqfE+5R7k6DRSLUV5PqnsdSH\nuccfIDWi1imhsm7AaP5trwl1t+83U2JhHqPcPVFLMODYwWeO6NLR/JCzGSTQRa8t\nRgaVMKI19O/fge5OT5Ua8D47VKEhsJX0LfmkP5RfZQ8JJvNd40TupqKRdlv0sAzP\nya7NXkSHXCavHNR6kA+KpWxn900UoGK8/IDlwU6MeOkpPVawb3NFMqnc7KJDaC2p\nSMzpuEG8LTrCx2YSpHNLqHyzvQ1CZA==\n=5ITV\n-----END PGP SIGNATURE-----".as_bstr().into())]
150+
extra_headers: vec![(b"gpgsig".as_bstr(), b"-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEdjYp/sh4j8NRKLX27gKdHl60AwAFAl7p9tgACgkQ7gKdHl60\nAwBpegf+KQciv9AOIN7+yPmowecGxBnSfpKWTDzFxnyGR8dq63SpWT8WEKG5mf3a\nG6iUqpsDWaMHlzihaMKRvgRpZxFRbjnNPFBj6F4RRqfE+5R7k6DRSLUV5PqnsdSH\nuccfIDWi1imhsm7AaP5trwl1t+83U2JhHqPcPVFLMODYwWeO6NLR/JCzGSTQRa8t\nRgaVMKI19O/fge5OT5Ua8D47VKEhsJX0LfmkP5RfZQ8JJvNd40TupqKRdlv0sAzP\nya7NXkSHXCavHNR6kA+KpWxn900UoGK8/IDlwU6MeOkpPVawb3NFMqnc7KJDaC2p\nSMzpuEG8LTrCx2YSpHNLqHyzvQ1CZA==\n=5ITV\n-----END PGP SIGNATURE-----\n".as_bstr().into())]
151151
}
152152
);
153153
Ok(())
@@ -271,7 +271,7 @@ instead of depending directly on the lower-level crates.
271271
Signed-off-by: Sebastian Thiel <[email protected]>
272272
Signed-off-by: Kim Altintop <[email protected]>"
273273
.as_bstr(),
274-
extra_headers: vec![(b"gpgsig".as_bstr(), b"-----BEGIN PGP SIGNATURE-----\n\niHUEABYIAB0WIQSuZwcGWSQItmusNgR5URpSUCnwXQUCYT7xpAAKCRB5URpSUCnw\nXWB3AP9q323HlxnI8MyqszNOeYDwa7Y3yEZaUM2y/IRjz+z4YQEAq0yr1Syt3mrK\nOSFCqL2vDm3uStP+vF31f6FnzayhNg0=\n=Mhpp\n-----END PGP SIGNATURE-----".as_bstr().into())]
274+
extra_headers: vec![(b"gpgsig".as_bstr(), b"-----BEGIN PGP SIGNATURE-----\n\niHUEABYIAB0WIQSuZwcGWSQItmusNgR5URpSUCnwXQUCYT7xpAAKCRB5URpSUCnw\nXWB3AP9q323HlxnI8MyqszNOeYDwa7Y3yEZaUM2y/IRjz+z4YQEAq0yr1Syt3mrK\nOSFCqL2vDm3uStP+vF31f6FnzayhNg0=\n=Mhpp\n-----END PGP SIGNATURE-----\n".as_bstr().into())]
275275
}
276276
);
277277
let message = commit.message();

gix-object/tests/commit/iter.rs renamed to gix-object/tests/object/commit/iter.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -224,15 +224,15 @@ mod method {
224224
let fixture_data = fixture_name("commit", fixture);
225225

226226
let (actual_signature, actual_signed_data) = CommitRefIter::signature(&fixture_data)?.expect("sig present");
227-
assert_eq!(actual_signature, expected_signature);
228-
229227
let expected_signed_data: BString = fixture_data
230228
.lines_with_terminator()
231229
.enumerate()
232230
.filter_map(|(i, line)| (!signature_lines.contains(&i)).then_some(line))
233231
.collect();
234232

235233
assert_eq!(actual_signed_data.to_bstring(), expected_signed_data);
234+
assert_eq!(actual_signature, expected_signature);
235+
236236
Ok(())
237237
}
238238

@@ -243,7 +243,7 @@ mod method {
243243

244244
#[test]
245245
fn signed() -> crate::Result {
246-
validate("signed.txt", b"-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEdjYp/sh4j8NRKLX27gKdHl60AwAFAl7p9tgACgkQ7gKdHl60\nAwBpegf+KQciv9AOIN7+yPmowecGxBnSfpKWTDzFxnyGR8dq63SpWT8WEKG5mf3a\nG6iUqpsDWaMHlzihaMKRvgRpZxFRbjnNPFBj6F4RRqfE+5R7k6DRSLUV5PqnsdSH\nuccfIDWi1imhsm7AaP5trwl1t+83U2JhHqPcPVFLMODYwWeO6NLR/JCzGSTQRa8t\nRgaVMKI19O/fge5OT5Ua8D47VKEhsJX0LfmkP5RfZQ8JJvNd40TupqKRdlv0sAzP\nya7NXkSHXCavHNR6kA+KpWxn900UoGK8/IDlwU6MeOkpPVawb3NFMqnc7KJDaC2p\nSMzpuEG8LTrCx2YSpHNLqHyzvQ1CZA==\n=5ITV\n-----END PGP SIGNATURE-----", 4..=14)
246+
validate("signed.txt", b"-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEdjYp/sh4j8NRKLX27gKdHl60AwAFAl7p9tgACgkQ7gKdHl60\nAwBpegf+KQciv9AOIN7+yPmowecGxBnSfpKWTDzFxnyGR8dq63SpWT8WEKG5mf3a\nG6iUqpsDWaMHlzihaMKRvgRpZxFRbjnNPFBj6F4RRqfE+5R7k6DRSLUV5PqnsdSH\nuccfIDWi1imhsm7AaP5trwl1t+83U2JhHqPcPVFLMODYwWeO6NLR/JCzGSTQRa8t\nRgaVMKI19O/fge5OT5Ua8D47VKEhsJX0LfmkP5RfZQ8JJvNd40TupqKRdlv0sAzP\nya7NXkSHXCavHNR6kA+KpWxn900UoGK8/IDlwU6MeOkpPVawb3NFMqnc7KJDaC2p\nSMzpuEG8LTrCx2YSpHNLqHyzvQ1CZA==\n=5ITV\n-----END PGP SIGNATURE-----\n", 4..=14)
247247
}
248248

249249
#[test]
@@ -253,7 +253,7 @@ mod method {
253253

254254
#[test]
255255
fn msg_footer() -> crate::Result {
256-
validate("message-with-footer.txt", b"-----BEGIN PGP SIGNATURE-----\n\niHUEABYIAB0WIQSuZwcGWSQItmusNgR5URpSUCnwXQUCYT7xpAAKCRB5URpSUCnw\nXWB3AP9q323HlxnI8MyqszNOeYDwa7Y3yEZaUM2y/IRjz+z4YQEAq0yr1Syt3mrK\nOSFCqL2vDm3uStP+vF31f6FnzayhNg0=\n=Mhpp\n-----END PGP SIGNATURE-----", 4..=10)
256+
validate("message-with-footer.txt", b"-----BEGIN PGP SIGNATURE-----\n\niHUEABYIAB0WIQSuZwcGWSQItmusNgR5URpSUCnwXQUCYT7xpAAKCRB5URpSUCnw\nXWB3AP9q323HlxnI8MyqszNOeYDwa7Y3yEZaUM2y/IRjz+z4YQEAq0yr1Syt3mrK\nOSFCqL2vDm3uStP+vF31f6FnzayhNg0=\n=Mhpp\n-----END PGP SIGNATURE-----\n", 4..=10)
257257
}
258258

259259
#[test]

gix-object/tests/commit/mod.rs renamed to gix-object/tests/object/commit/mod.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use gix_object::{CommitRef, CommitRefIter};
22

33
use crate::fixture_name;
44

5-
const SIGNATURE: & [u8; 487] = b"-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEdjYp/sh4j8NRKLX27gKdHl60AwAFAl7q2DsACgkQ7gKdHl60\nAwDvewgAkL5UjEztzeVXlzceom0uCrAkCw9wSGLTmYcMKW3JwEaTRgQ4FX+sDuFT\nLZ8DoPu3UHUP0QnKrUwHulTTlKcOAvsczHbVPIKtXCxo6QpUfhsJQwz/J29kiE4L\nsOd+lqKGnn4oati/de2xwqNGi081fO5KILX75z6KfsAe7Qz7R3jxRF4uzHI033O+\nJc2Y827XeaELxW40SmzoLanWgEcdreXf3PstXEWW77CAu0ozXmvYj56vTviVybxx\nG7bc8lwc+SSKVe2VVB+CCfVbs0i541gmghUpZfMhUgaqttcCH8ysrUJDhne1BLG8\nCrOJIWTwAeEDtomV1p76qrMeqr1GFg==\n=qlSN\n-----END PGP SIGNATURE-----";
5+
const SIGNATURE: & [u8] = b"-----BEGIN PGP SIGNATURE-----\n\niQEzBAABCAAdFiEEdjYp/sh4j8NRKLX27gKdHl60AwAFAl7q2DsACgkQ7gKdHl60\nAwDvewgAkL5UjEztzeVXlzceom0uCrAkCw9wSGLTmYcMKW3JwEaTRgQ4FX+sDuFT\nLZ8DoPu3UHUP0QnKrUwHulTTlKcOAvsczHbVPIKtXCxo6QpUfhsJQwz/J29kiE4L\nsOd+lqKGnn4oati/de2xwqNGi081fO5KILX75z6KfsAe7Qz7R3jxRF4uzHI033O+\nJc2Y827XeaELxW40SmzoLanWgEcdreXf3PstXEWW77CAu0ozXmvYj56vTviVybxx\nG7bc8lwc+SSKVe2VVB+CCfVbs0i541gmghUpZfMhUgaqttcCH8ysrUJDhne1BLG8\nCrOJIWTwAeEDtomV1p76qrMeqr1GFg==\n=qlSN\n-----END PGP SIGNATURE-----\n";
66

77
const LONG_MESSAGE: &str = "Merge tag 'thermal-v5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux
88
@@ -133,9 +133,10 @@ O53SmJAwS5zxLOd8QA5nfSWP9FYYMuCR2AHj8BUCmxiAjXZLPNB/Hz2RRBr7q0MF
133133
zRo/4HJ04mSQYp0kluP/EBhz9g2wM/htIPyWRveB/ByKEYt3UNKjB++PJmPbu5UG
134134
dS3aXZhRfaPqpdsWrMB9fY7ll+oyfw==
135135
=T+RI
136-
-----END PGP SIGNATURE-----";
136+
-----END PGP SIGNATURE-----
137+
";
137138

138-
const OTHER_SIGNATURE: &[u8; 455] = b"-----BEGIN PGP SIGNATURE-----
139+
const OTHER_SIGNATURE: &[u8] = b"-----BEGIN PGP SIGNATURE-----
139140
140141
wsBcBAABCAAQBQJeqxW4CRBK7hj4Ov3rIwAAdHIIAFD98qgN/k8ybukCLf6kpzvi
141142
5V8gf6BflONXc/oIDySurW7kfS9/r6jOgu08UN8KlQx4Q4g8yY7PROABhwGI70B3
@@ -145,6 +146,7 @@ k7D0LqGSXjU5wrQrKnemC7nWhmQsqaXDe89XXmliClCAx4/bepPiXK0eT/DNIKUr
145146
iyBBl69jASy41Ug/BlFJbw4+ItkShpXwkJKuBBV/JExChmvbxYWaS7QnyYC9UO0=
146147
=HLmy
147148
-----END PGP SIGNATURE-----
149+
148150
";
149151

150152
mod method {

gix-object/tests/encode/mod.rs renamed to gix-object/tests/object/encode/mod.rs

+22-9
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ macro_rules! round_trip {
1616
use gix_object::{ObjectRef, Object, WriteTo};
1717
use bstr::ByteSlice;
1818

19-
for input in &[
19+
for input_name in &[
2020
$( $files ),*
2121
] {
22-
let input = fixture_bytes(input);
22+
let input = fixture_bytes(input_name);
2323
// Test the parse->borrowed->owned->write chain for an object kind
2424
let mut output = Vec::new();
2525
let item = <$borrowed>::from_bytes(&input)?;
2626
item.write_to(&mut output)?;
27-
assert_eq!(output.as_bstr(), input.as_bstr());
27+
assert_eq!(output.as_bstr(), input.as_bstr(), "borrowed: {input_name}");
2828

2929
let item: $owned = item.into();
3030
output.clear();
@@ -35,23 +35,35 @@ macro_rules! round_trip {
3535
let item = ObjectRef::from(<$borrowed>::from_bytes(&input)?);
3636
output.clear();
3737
item.write_to(&mut output)?;
38-
assert_eq!(output.as_bstr(), input.as_bstr());
38+
assert_eq!(output.as_bstr(), input.as_bstr(), "object-ref");
3939

4040
let item: Object = item.into();
4141
output.clear();
4242
item.write_to(&mut output)?;
43-
assert_eq!(output.as_bstr(), input.as_bstr());
43+
assert_eq!(output.as_bstr(), input.as_bstr(), "owned");
4444

4545
// Test the loose serialisation -> parse chain for an object kind
4646
let item = <$borrowed>::from_bytes(&input)?;
47+
// serialise a borowed item to a tagged loose object
48+
output.clear();
49+
{
50+
let w = &mut output;
51+
w.write_all(&item.loose_header())?;
52+
item.write_to(w)?;
53+
let parsed = ObjectRef::from_loose(&output)?;
54+
let item2 = <$borrowed>::try_from(parsed).or(Err(super::Error::TryFromError))?;
55+
assert_eq!(item2, item, "object-ref loose: {input_name} {:?}\n{:?}", output.as_bstr(), input.as_bstr());
56+
}
57+
58+
let item: $owned = item.into();
59+
// serialise an owned to a tagged loose object
4760
output.clear();
48-
// serialise to a tagged loose object
4961
let w = &mut output;
5062
w.write_all(&item.loose_header())?;
5163
item.write_to(w)?;
5264
let parsed = ObjectRef::from_loose(&output)?;
53-
let item2 = <$borrowed>::try_from(parsed).or(Err(super::Error::TryFromError))?;
54-
assert_eq!(item2, item);
65+
let item2: $owned = <$borrowed>::try_from(parsed).or(Err(super::Error::TryFromError))?.into();
66+
assert_eq!(item2, item, "object-ref loose owned: {input_name} {:?}\n{:?}", output.as_bstr(), input.as_bstr());
5567
}
5668
Ok(())
5769
}
@@ -83,7 +95,8 @@ mod commit {
8395
"commit/signed-with-encoding.txt",
8496
"commit/unsigned.txt",
8597
"commit/whitespace.txt",
86-
"commit/with-encoding.txt"
98+
"commit/with-encoding.txt",
99+
"commit/subtle.txt"
87100
);
88101
}
89102

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

gix-odb/tests/odb/store/loose.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ cjHJZXWmV4CcRfmLsXzU8s2cR9A0DBvOxhPD1TlKC2JhBFXigjuL9U4Rbq9tdegB
303303
committer: signature(1528473303),
304304
encoding: None,
305305
message: b"initial commit\n".as_bstr(),
306-
extra_headers: vec![(b"gpgsig".as_bstr(), b"-----BEGIN PGP SIGNATURE-----\nComment: GPGTools - https://gpgtools.org\n\niQIzBAABCgAdFiEEw7xSvXbiwjusbsBqZl+Z+p2ZlmwFAlsaptwACgkQZl+Z+p2Z\nlmxXSQ//fj6t7aWoEKeMdFigfj6OXWPUyrRbS0N9kpJeOfA0BIOea/6Jbn8J5qh1\nYRfrySOzHPXR5Y+w4GwLiVas66qyhAbk4yeqZM0JxBjHDyPyRGhjUd3y7WjEa6bj\nP0ACAIkYZQ/Q/LDE3eubmhAwEobBH3nZbwE+/zDIG0i265bD5C0iDumVOiKkSelw\ncr6FZVw1HH+GcabFkeLRZLNGmPqGdbeBwYERqb0U1aRCzV1xLYteoKwyWcYaH8E3\n97z1rwhUO/L7o8WUEJtP3CLB0zuocslMxskf6bCeubBnRNJ0YrRmxGarxCP3vn4D\n3a/MwECnl6mnUU9t+OnfvrzLDN73rlq8iasUq6hGe7Sje7waX6b2UGpxHqwykmXg\nVimD6Ah7svJanHryfJn38DvJW/wOMqmAnSUAp+Y8W9EIe0xVntCmtMyoKuqBoY7T\nJlZ1kHJte6ELIM5JOY9Gx7D0ZCSKZJQqyjoqtl36dsomT0I78/+7QS1DP4S6XB7d\nc3BYH0JkW81p7AAFbE543ttN0Z4wKXErMFqUKnPZUIEuybtlNYV+krRdfDBWQysT\n3MBebjguVQ60oGs06PzeYBosKGQrHggAcwduLFuqXhLTJqN4UQ18RkE0vbtG3YA0\n+XtZQM13vURdfwFI5qitAGgw4EzPVrkWWzApzLCrRPEMbvP+b9A=\n=2qqN\n-----END PGP SIGNATURE-----".as_bstr().into())]
306+
extra_headers: vec![(b"gpgsig".as_bstr(), b"-----BEGIN PGP SIGNATURE-----\nComment: GPGTools - https://gpgtools.org\n\niQIzBAABCgAdFiEEw7xSvXbiwjusbsBqZl+Z+p2ZlmwFAlsaptwACgkQZl+Z+p2Z\nlmxXSQ//fj6t7aWoEKeMdFigfj6OXWPUyrRbS0N9kpJeOfA0BIOea/6Jbn8J5qh1\nYRfrySOzHPXR5Y+w4GwLiVas66qyhAbk4yeqZM0JxBjHDyPyRGhjUd3y7WjEa6bj\nP0ACAIkYZQ/Q/LDE3eubmhAwEobBH3nZbwE+/zDIG0i265bD5C0iDumVOiKkSelw\ncr6FZVw1HH+GcabFkeLRZLNGmPqGdbeBwYERqb0U1aRCzV1xLYteoKwyWcYaH8E3\n97z1rwhUO/L7o8WUEJtP3CLB0zuocslMxskf6bCeubBnRNJ0YrRmxGarxCP3vn4D\n3a/MwECnl6mnUU9t+OnfvrzLDN73rlq8iasUq6hGe7Sje7waX6b2UGpxHqwykmXg\nVimD6Ah7svJanHryfJn38DvJW/wOMqmAnSUAp+Y8W9EIe0xVntCmtMyoKuqBoY7T\nJlZ1kHJte6ELIM5JOY9Gx7D0ZCSKZJQqyjoqtl36dsomT0I78/+7QS1DP4S6XB7d\nc3BYH0JkW81p7AAFbE543ttN0Z4wKXErMFqUKnPZUIEuybtlNYV+krRdfDBWQysT\n3MBebjguVQ60oGs06PzeYBosKGQrHggAcwduLFuqXhLTJqN4UQ18RkE0vbtG3YA0\n+XtZQM13vURdfwFI5qitAGgw4EzPVrkWWzApzLCrRPEMbvP+b9A=\n=2qqN\n-----END PGP SIGNATURE-----\n".as_bstr().into())]
307307
};
308308
let object = o.decode()?;
309309
assert_eq!(object.as_commit().expect("commit"), &expected);

0 commit comments

Comments
 (0)