Skip to content

Commit c1aa000

Browse files
committed
Fixes implicit folder detection
1 parent 785327c commit c1aa000

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

fixtures/left-pad-1.zip

11.3 KB
Binary file not shown.

fixtures/left-pad-2.zip

10.9 KB
Binary file not shown.

src/zip.rs

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ where
4343
let name = util::normalize_path(name);
4444
let segments: Vec<&str> = name.split('/').collect();
4545

46-
for t in 1..segments.len() - 1 {
46+
for t in 1..segments.len() {
4747
let dir = segments[0..t].to_vec().join("/");
4848
zip.dirs.insert(dir + "/");
4949
}
@@ -201,3 +201,46 @@ fn read_central_file_header(
201201

202202
Ok(Some((file_name, Some(entry))))
203203
}
204+
205+
#[cfg(test)]
206+
mod tests {
207+
use super::*;
208+
209+
#[test]
210+
fn test_read_zip_entry() {
211+
let zip
212+
= Zip::new(include_bytes!("../fixtures/left-pad-1.zip")).unwrap();
213+
214+
let mut dirs
215+
= zip.dirs.iter()
216+
.map(|d| d.as_str())
217+
.collect::<Vec<&str>>();
218+
219+
dirs.sort();
220+
221+
assert_eq!(dirs, vec![
222+
"node_modules/",
223+
"node_modules/left-pad/",
224+
"node_modules/left-pad/perf/",
225+
]);
226+
}
227+
228+
#[test]
229+
fn test_read_zip_entry_2() {
230+
let zip
231+
= Zip::new(include_bytes!("../fixtures/left-pad-2.zip")).unwrap();
232+
233+
let mut dirs
234+
= zip.dirs.iter()
235+
.map(|d| d.as_str())
236+
.collect::<Vec<&str>>();
237+
238+
dirs.sort();
239+
240+
assert_eq!(dirs, vec![
241+
"node_modules/",
242+
"node_modules/left-pad/",
243+
"node_modules/left-pad/perf/",
244+
]);
245+
}
246+
}

0 commit comments

Comments
 (0)