Skip to content

Commit c1c1764

Browse files
authored
Merge pull request #6892 from Turbo87/files-with-io
tests/builders/publish: Inline `files_with_io()` and simplify `files()` fn
2 parents 0d1ca24 + e1dfcd1 commit c1c1764

File tree

2 files changed

+8
-24
lines changed

2 files changed

+8
-24
lines changed

src/tests/builders/publish.rs

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crates_io::views::krate_publish as u;
2-
use std::{collections::BTreeMap, io::Read};
2+
use std::collections::BTreeMap;
33

44
use crates_io_tarball::TarballBuilder;
55
use flate2::{write::GzEncoder, Compression};
@@ -51,31 +51,14 @@ impl PublishBuilder {
5151
}
5252

5353
/// Set the files in the crate's tarball.
54-
pub fn files(self, files: &[(&str, &[u8])]) -> Self {
55-
let mut slices = files.iter().map(|p| p.1).collect::<Vec<_>>();
56-
let mut files = files
57-
.iter()
58-
.zip(&mut slices)
59-
.map(|(&(name, _), data)| {
60-
let len = data.len() as u64;
61-
(name, data as &mut dyn Read, len)
62-
})
63-
.collect::<Vec<_>>();
64-
65-
self.files_with_io(&mut files)
66-
}
67-
68-
/// Set the tarball from a Read trait object
69-
pub fn files_with_io(mut self, files: &mut [(&str, &mut dyn Read, u64)]) -> Self {
54+
pub fn files(mut self, files: &[(&str, &[u8])]) -> Self {
7055
let mut tarball = Vec::new();
7156
{
7257
let mut ar = tar::Builder::new(GzEncoder::new(&mut tarball, Compression::default()));
73-
for &mut (name, ref mut data, size) in files {
58+
for (name, data) in files {
7459
let mut header = tar::Header::new_gnu();
75-
assert_ok!(header.set_path(name));
76-
header.set_size(size);
77-
header.set_cksum();
78-
assert_ok!(ar.append(&header, data));
60+
header.set_size(data.len() as u64);
61+
assert_ok!(ar.append_data(&mut header, name, *data));
7962
}
8063
assert_ok!(ar.finish());
8164
}

src/tests/krate/publish.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -500,11 +500,12 @@ fn new_krate_gzip_bomb() {
500500
let (app, _, _, token) = TestApp::full().with_token();
501501

502502
let len = 512 * 1024;
503-
let mut body = io::repeat(0).take(len);
503+
let mut body = Vec::new();
504+
io::repeat(0).take(len).read_to_end(&mut body).unwrap();
504505

505506
let crate_to_publish = PublishBuilder::new("foo")
506507
.version("1.1.0")
507-
.files_with_io(&mut [("foo-1.1.0/a", &mut body, len)]);
508+
.files(&[("foo-1.1.0/a", &body)]);
508509

509510
let response = token.publish_crate(crate_to_publish);
510511
assert_eq!(response.status(), StatusCode::OK);

0 commit comments

Comments
 (0)