From 3dcc82f41670b68d3c3ed2224cabe30989a66f40 Mon Sep 17 00:00:00 2001 From: Prodesire Date: Fri, 1 Dec 2017 08:09:39 +0800 Subject: [PATCH] modify file.makedirs logical --- pydu/file.py | 4 ++-- tests/test_file.py | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pydu/file.py b/pydu/file.py index d169d97..699537d 100644 --- a/pydu/file.py +++ b/pydu/file.py @@ -5,12 +5,12 @@ import shutil # todo tests and docs def makedirs(path, mode=0o755, ignore_errors=False, exist_ok=True): + if exist_ok and os.path.exists(path): + return try: os.makedirs(path, mode) except Exception: if not ignore_errors: - if not exist_ok: - raise OSError('{} is exist'.format(path)) raise OSError('Create dir: {} error.') diff --git a/tests/test_file.py b/tests/test_file.py index 3f33417..a4260a7 100644 --- a/tests/test_file.py +++ b/tests/test_file.py @@ -4,16 +4,19 @@ import pytest class Testmakedirs(): - def test_makedirs(self,tmpdir): + def test_makedirs(self, tmpdir): path = str(tmpdir.join('test')) makedirs(path) assert os.path.exists(path) - def test_makedirs_with_exists_path(self,tmpdir): + def test_makedirs_with_exists_path(self, tmpdir): path = str(tmpdir.join('test')) makedirs(path) - with pytest.raises(Exception) as e_info: - makedirs(path, exist_ok=True) + + makedirs(path, exist_ok=True) + + with pytest.raises(Exception): + makedirs(path, exist_ok=False) def test_makedirs_with_ignore_error(self, tmpdir): path = str(tmpdir.join('test')) @@ -23,8 +26,8 @@ class Testmakedirs(): def test_makedirs_without_ignore_error(self, tmpdir): path = str(tmpdir.join('test')) makedirs(path) - with pytest.raises(Exception) as e_info: - makedirs(path, ignore_errors=False) + with pytest.raises(Exception): + makedirs(path, ignore_errors=False, exist_ok=False) def test_makedirs_with_mutl_dirs(self, tmpdir): path = str(tmpdir.join('test/test'))