Skip to content

Commit f86bcea

Browse files
committed
use tempfile
1 parent 4d568ab commit f86bcea

File tree

3 files changed

+33
-40
lines changed

3 files changed

+33
-40
lines changed

Cargo.lock

Lines changed: 8 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

axum-extra/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ serde = { version = "1.0.221", optional = true }
140140
tower = { version = "0.5.2", default-features = false, features = ["util"], optional = true }
141141

142142
[dev-dependencies]
143+
tempfile = "3.23.0"
143144
axum = { path = "../axum", features = ["macros", "__private"] }
144145
axum-macros = { path = "../axum-macros", features = ["__private"] }
145146
hyper = "1.0.0"

axum-extra/src/response/file_stream.rs

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -603,43 +603,34 @@ mod tests {
603603

604604
#[tokio::test]
605605
async fn response_range_empty_file() -> Result<(), Box<dyn std::error::Error>> {
606-
struct TempFile(&'static str);
607-
608-
impl Drop for TempFile {
609-
fn drop(&mut self) {
610-
let _ = std::fs::remove_file(self.0);
611-
}
612-
}
613-
614-
let filename = "test_empty_file.txt";
615-
std::fs::write(filename, []).unwrap();
616-
let _cleanup = TempFile(filename);
606+
let file = tempfile::NamedTempFile::new()?;
607+
file.as_file().set_len(0)?;
608+
let path = file.path().to_owned();
617609

618610
let app = Router::new().route(
619611
"/range_empty",
620-
get(move |headers: HeaderMap| async move {
621-
let range_header = headers
622-
.get(header::RANGE)
623-
.and_then(|value| value.to_str().ok());
624-
625-
let (start, end) = if let Some(range) = range_header {
626-
if let Some(range) = parse_range_header(range) {
627-
range
612+
get(move |headers: HeaderMap| {
613+
let path = path.clone();
614+
async move {
615+
let range_header = headers
616+
.get(header::RANGE)
617+
.and_then(|value| value.to_str().ok());
618+
619+
let (start, end) = if let Some(range) = range_header {
620+
if let Some(range) = parse_range_header(range) {
621+
range
622+
} else {
623+
return (StatusCode::RANGE_NOT_SATISFIABLE, "Invalid Range")
624+
.into_response();
625+
}
628626
} else {
629-
return (StatusCode::RANGE_NOT_SATISFIABLE, "Invalid Range")
630-
.into_response();
631-
}
632-
} else {
633-
(0, 0)
634-
};
635-
636-
FileStream::<ReaderStream<File>>::try_range_response(
637-
Path::new("test_empty_file.txt"),
638-
start,
639-
end,
640-
)
641-
.await
642-
.unwrap_or_else(|_| StatusCode::INTERNAL_SERVER_ERROR.into_response())
627+
(0, 0)
628+
};
629+
630+
FileStream::<ReaderStream<File>>::try_range_response(path, start, end)
631+
.await
632+
.unwrap_or_else(|_| StatusCode::INTERNAL_SERVER_ERROR.into_response())
633+
}
643634
}),
644635
);
645636

0 commit comments

Comments
 (0)