@@ -109,42 +109,73 @@ object ZipOpTests extends TestSuite {
109109      assert(paths ==  expected)
110110    }
111111
112-     test(" zipEmptyDir" -  prep { wd => 
113-       val  zipFileName  =  " zipEmptyDirs" 
112+     test(" zipEmptyDir" 
113+       def  prepare (wd : os.Path ) =  {
114+         val  zipFileName  =  " zipEmptyDirs" 
114115
115-       val  emptyDir  =  wd /  " empty" 
116-       os.makeDir(emptyDir)
116+          val  emptyDir  =  wd /  " empty" 
117+          os.makeDir(emptyDir)
117118
118-       val  containsEmptyDir  =  wd /  " outer" 
119-       os.makeDir.all(containsEmptyDir)
120-       os.makeDir(containsEmptyDir /  " emptyInnerDir" 
119+          val  containsEmptyDir  =  wd /  " outer" 
120+          os.makeDir.all(containsEmptyDir)
121+          os.makeDir(containsEmptyDir /  " emptyInnerDir" 
121122
122-       val  zipped  =  os.zip(
123-         dest =  wd /  s " ${zipFileName}.zip " ,
124-         sources =  Seq (emptyDir, containsEmptyDir)
125-       )
123+         (zipFileName, emptyDir, containsEmptyDir)
124+       }
126125
127-       val  unzipped  =  os.unzip(zipped, wd /  zipFileName)
128-       //  should include empty dirs inside source
129-       assert(os.isDir(unzipped /  " emptyInnerDir" 
130-       //  should ignore empty dirs specified in sources without dest
131-       assert(! os.exists(unzipped /  " empty" 
132-     }
126+       test(" zipEmptyDir" -  prep { wd => 
127+         val  (zipFileName, emptyDir, containsEmptyDir) =  prepare(wd)
133128
134-     test(" zipEmptyDirWithDest" -  prep { wd => 
135-       val  zipFileName  =  " zipEmptyDirs" 
129+         val  zipped  =  os.zip(
130+           dest =  wd /  s " ${zipFileName}.zip " ,
131+           sources =  Seq (emptyDir, containsEmptyDir)
132+         )
136133
137-       val  emptyDir  =  wd /  " empty" 
138-       os.makeDir(emptyDir)
134+         val  unzipped  =  os.unzip(zipped, wd /  zipFileName)
135+         //  should include empty dirs inside source
136+         assert(os.isDir(unzipped /  " emptyInnerDir" 
137+         //  should ignore empty dirs specified in sources without dest
138+         assert(! os.exists(unzipped /  " empty" 
139+       }
139140
140-       val  zipped  =  os.zip(
141-         dest =  wd /  s " ${zipFileName}.zip " ,
142-         sources =  Seq ((emptyDir, os.sub /  " empty" 
143-       )
141+       test(" includePatterns" -  prep { wd => 
142+         val  (zipFileName, _, containsEmptyDir) =  prepare(wd)
143+ 
144+         val  zipped  =  os.zip(
145+           dest =  wd /  s " ${zipFileName}.zip " ,
146+           sources =  Seq (containsEmptyDir),
147+           includePatterns =  Seq (raw " .*Inner.* " .r)
148+         )
149+ 
150+         val  unzipped  =  os.unzip(zipped, wd /  zipFileName)
151+         assert(os.isDir(unzipped /  " emptyInnerDir" 
152+       }
153+ 
154+       test(" excludePatterns" -  prep { wd => 
155+         val  (zipFileName, _, containsEmptyDir) =  prepare(wd)
156+ 
157+         val  zipped  =  os.zip(
158+           dest =  wd /  s " ${zipFileName}.zip " ,
159+           sources =  Seq (containsEmptyDir),
160+           excludePatterns =  Seq (raw " .*Inner.* " .r)
161+         )
162+ 
163+         val  unzipped  =  os.unzip(zipped, wd /  zipFileName)
164+         assert(! os.exists(unzipped /  " emptyInnerDir" 
165+       }
166+ 
167+       test(" withDest" -  prep { wd => 
168+         val  (zipFileName, emptyDir, _) =  prepare(wd)
169+ 
170+         val  zipped  =  os.zip(
171+           dest =  wd /  s " ${zipFileName}.zip " ,
172+           sources =  Seq ((emptyDir, os.sub /  " empty" 
173+         )
144174
145-       val  unzipped  =  os.unzip(zipped, wd /  zipFileName)
146-       //  should include empty dirs specified in sources with dest
147-       assert(os.isDir(unzipped /  " empty" 
175+         val  unzipped  =  os.unzip(zipped, wd /  zipFileName)
176+         //  should include empty dirs specified in sources with dest
177+         assert(os.isDir(unzipped /  " empty" 
178+       }
148179    }
149180
150181    test(" zipStream" -  prep { wd => 
0 commit comments