@@ -231,6 +231,23 @@ mod tests {
231231 assert_eq ! ( actual, expected) ;
232232 }
233233
234+ #[ test]
235+ fn remove_duplicated_sub_paths ( ) {
236+ let original = vec ! [
237+ "foo/child" ,
238+ "foo" ,
239+ "bar" ,
240+ "abc/def" ,
241+ "0/1/2" ,
242+ "bar/child" ,
243+ "0/1/2/3" ,
244+ ] ;
245+ let mut actual = original. clone ( ) ;
246+ deduplicate_arguments :: < MockedApi > ( & mut actual) ;
247+ let expected = vec ! [ "foo" , "bar" , "abc/def" , "0/1/2" ] ;
248+ assert_eq ! ( actual, expected) ;
249+ }
250+
234251 #[ test]
235252 fn remove_all_except_current_dir ( ) {
236253 let original = dbg ! ( vec![ "foo" , "bar" , "." , "abc/def" , "0/1/2" ] ) ;
@@ -289,6 +306,77 @@ mod tests {
289306 assert_eq ! ( actual, expected) ;
290307 }
291308
309+ #[ test]
310+ fn remove_duplicated_real_paths ( ) {
311+ let original = dbg ! ( vec![
312+ "foo" ,
313+ "bar" ,
314+ "abc/def" ,
315+ "link-to-foo/child" ,
316+ "link-to-bar/a/b/c" ,
317+ "0/1/2" ,
318+ ] ) ;
319+ let mut actual = original. clone ( ) ;
320+ deduplicate_arguments :: < MockedApi > ( & mut actual) ;
321+ let expected = vec ! [ "foo" , "bar" , "abc/def" , "0/1/2" ] ;
322+ assert_eq ! ( actual, expected) ;
323+
324+ let original = dbg ! ( vec![
325+ "link-to-foo/child" ,
326+ "link-to-bar/a/b/c" ,
327+ "foo" ,
328+ "bar" ,
329+ "abc/def" ,
330+ "0/1/2" ,
331+ ] ) ;
332+ let mut actual = original. clone ( ) ;
333+ deduplicate_arguments :: < MockedApi > ( & mut actual) ;
334+ let expected = vec ! [ "foo" , "bar" , "abc/def" , "0/1/2" ] ;
335+ assert_eq ! ( actual, expected) ;
336+
337+ let original = dbg ! ( vec![
338+ "link-to-current-dir/foo" ,
339+ "foo" ,
340+ "bar" ,
341+ "abc/def" ,
342+ "link-to-current-dir/bar" ,
343+ "0/1/2" ,
344+ ] ) ;
345+ let mut actual = original. clone ( ) ;
346+ deduplicate_arguments :: < MockedApi > ( & mut actual) ;
347+ let expected = vec ! [ "link-to-current-dir/foo" , "bar" , "abc/def" , "0/1/2" ] ;
348+ assert_eq ! ( actual, expected) ;
349+ }
350+
351+ #[ test]
352+ fn do_not_remove_symlinks ( ) {
353+ let original = dbg ! ( vec![
354+ "foo" ,
355+ "bar" ,
356+ "abc/def" ,
357+ "link-to-foo" ,
358+ "link-to-bar" ,
359+ "0/1/2" ,
360+ ] ) ;
361+ let mut actual = original. clone ( ) ;
362+ deduplicate_arguments :: < MockedApi > ( & mut actual) ;
363+ let expected = original;
364+ assert_eq ! ( actual, expected) ;
365+
366+ let original = dbg ! ( vec![
367+ "foo/child" ,
368+ "bar" ,
369+ "abc/def" ,
370+ "link-to-foo" ,
371+ "link-to-bar" ,
372+ "0/1/2" ,
373+ ] ) ;
374+ let mut actual = original. clone ( ) ;
375+ deduplicate_arguments :: < MockedApi > ( & mut actual) ;
376+ let expected = original;
377+ assert_eq ! ( actual, expected) ;
378+ }
379+
292380 #[ test]
293381 fn remove_nothing ( ) {
294382 let original = vec ! [ 31 , 54 , 22 , 81 , 67 , 45 , 52 , 20 , 85 , 66 , 27 , 84 ] ;
0 commit comments