//! Opening a `.pptx` that lost slides says so on stderr instead of saving a shorter deck in silence (#203). use std::io::{Cursor, Read, Write}; use std::path::PathBuf; use std::process::{Command, Output}; fn cli(args: &[&str]) -> Output { Command::new(env!("CARGO_BIN_EXE_deckcraft-cli")).args(args).output().unwrap() } fn temp_dir(name: &str) -> PathBuf { let dir = std::env::temp_dir().join(format!("deckcraft-cli-{name}-{}", std::process::id())); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); dir } /// `deck` with `ppt/slides/slide2.xml` cut off. fn without_slide2(deck: &[u8]) -> Vec { let mut zin = zip::ZipArchive::new(Cursor::new(deck)).unwrap(); let mut out = zip::ZipWriter::new(Cursor::new(Vec::new())); let options = zip::write::SimpleFileOptions::default(); for i in 0..zin.len() { let mut f = zin.by_index(i).unwrap(); let mut data = vec![]; f.read_to_end(&mut data).unwrap(); if f.name() == "ppt/slides/slide2.xml" { data = b"