add ignore_errors to local.remove()
--HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									10b8de060a
								
							
						
					
					
						commit
						c1d0fc9aaf
					
				|  | @ -12,6 +12,7 @@ Bug fixes / Maintenance | |||
| - streamline py.path.local.mkdtemp implementation and usage | ||||
| - don't print empty lines when showing junitxml-filename | ||||
| - fix py.code.compile(source) to generate unique filenames | ||||
| - add optional boolean ignore_errors parameter to py.path.local.remove | ||||
| 
 | ||||
| Changes between 1.3.0 and 1.3.1 | ||||
| ================================================== | ||||
|  |  | |||
|  | @ -157,14 +157,18 @@ class LocalPath(FSBase): | |||
|     def __lt__(self, other): | ||||
|         return str(self) < str(other) | ||||
| 
 | ||||
|     def remove(self, rec=1): | ||||
|         """ remove a file or directory (or a directory tree if rec=1).  """ | ||||
|     def remove(self, rec=1, ignore_errors=False): | ||||
|         """ remove a file or directory (or a directory tree if rec=1).  | ||||
|         if ignore_errors is True, errors while removing directories will  | ||||
|         be ignored. | ||||
|         """ | ||||
|         if self.check(dir=1, link=0): | ||||
|             if rec: | ||||
|                 # force remove of readonly files on windows  | ||||
|                 if iswin32:  | ||||
|                     self.chmod(448, rec=1) # octcal 0700 | ||||
|                 py.error.checked_call(py.std.shutil.rmtree, self.strpath) | ||||
|                 py.error.checked_call(py.std.shutil.rmtree, self.strpath, | ||||
|                     ignore_errors=ignore_errors) | ||||
|             else: | ||||
|                 py.error.checked_call(os.rmdir, self.strpath) | ||||
|         else: | ||||
|  |  | |||
|  | @ -60,6 +60,17 @@ class TestLocalPath(common.CommonFSTests): | |||
|         readonly_dir.remove() | ||||
|         assert not readonly_dir.check(exists=1) | ||||
| 
 | ||||
|     def test_remove_routes_ignore_errors(self, tmpdir, monkeypatch): | ||||
|         l = [] | ||||
|         monkeypatch.setattr(py.std.shutil, 'rmtree',  | ||||
|             lambda *args, **kwargs: l.append(kwargs)) | ||||
|         tmpdir.remove() | ||||
|         assert not l[0]['ignore_errors']  | ||||
|         for val in (True, False): | ||||
|             l[:] = [] | ||||
|             tmpdir.remove(ignore_errors=val) | ||||
|             assert l[0]['ignore_errors'] == val | ||||
| 
 | ||||
|     def test_initialize_curdir(self): | ||||
|         assert str(local()) == py.std.os.getcwd() | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue