summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2016-10-27 19:54:27 +0200
committerGiampaolo Rodola <g.rodola@gmail.com>2016-10-27 19:54:27 +0200
commit677060e58e2b3343403ced9da674397b5901e218 (patch)
tree2b1e11c8f9af13aedf1b8f252914d4b5a00e29ab
parentae7ceba3af580d5ea8682a17bd127ab68521ef95 (diff)
parent1a314d3df5b472c461988ed23c9a9c290ea0a2f2 (diff)
downloadpsutil-677060e58e2b3343403ced9da674397b5901e218.tar.gz
Merge branch 'oneshot-win' of https://github.com/giampaolo/psutil into oneshot-win
-rw-r--r--Makefile14
-rw-r--r--psutil/tests/__init__.py2
-rwxr-xr-xscripts/internal/winmake.py80
3 files changed, 70 insertions, 26 deletions
diff --git a/Makefile b/Makefile
index ce224896..3b804bf6 100644
--- a/Makefile
+++ b/Makefile
@@ -35,16 +35,16 @@ all: test
# Remove all build files.
clean:
- rm -rf `find . \
- -type f -name \*.pyc \
+ rm -rf `find . -type d -name __pycache__
+ -o -type f -name \*.bak \
+ -o -type f -name \*.orig \
+ -o -type f -name \*.pyc \
-o -type f -name \*.pyd \
-o -type f -name \*.pyo \
- -o -type f -name \*.so \
- -o -type f -name \*.~ \
- -o -type f -name \*.orig \
- -o -type f -name \*.bak \
-o -type f -name \*.rej \
- -o -type d -name __pycache__`
+ -o -type f -name \*.so \
+ -o -type f -name \*.~
+ -o -type f -name \*\$testfn`
rm -rf \
*.core \
*.egg-info \
diff --git a/psutil/tests/__init__.py b/psutil/tests/__init__.py
index ca8b8fc7..883d9285 100644
--- a/psutil/tests/__init__.py
+++ b/psutil/tests/__init__.py
@@ -103,7 +103,7 @@ AF_UNIX = getattr(socket, "AF_UNIX", None)
PYTHON = os.path.realpath(sys.executable)
DEVNULL = open(os.devnull, 'r+')
-TESTFILE_PREFIX = '$psutil'
+TESTFILE_PREFIX = '$testfn'
TESTFN = os.path.join(os.path.realpath(os.getcwd()), TESTFILE_PREFIX)
_TESTFN = TESTFN + '-internal'
TESTFN_UNICODE = TESTFN + "-ƒőő"
diff --git a/scripts/internal/winmake.py b/scripts/internal/winmake.py
index 7671b735..c6c1e7d9 100755
--- a/scripts/internal/winmake.py
+++ b/scripts/internal/winmake.py
@@ -110,6 +110,44 @@ def rm(pattern, directory=False):
safe_remove(path)
+def safe_remove(path):
+ try:
+ os.remove(path)
+ except OSError as err:
+ if err.errno != errno.ENOENT:
+ raise
+ else:
+ print("rm %s" % path)
+
+
+def safe_rmtree(path):
+ def onerror(fun, path, excinfo):
+ exc = excinfo[1]
+ if exc.errno != errno.ENOENT:
+ raise
+
+ existed = os.path.isdir(path)
+ shutil.rmtree(path, onerror=onerror)
+ if existed:
+ print("rmdir -f %s" % path)
+
+
+def recursive_rm(*patterns):
+ """Recursively remove a file or dir by pattern."""
+ for root, subdirs, subfiles in os.walk('.'):
+ root = os.path.normpath(root)
+ if root.startswith('.git/'):
+ continue
+ for file in subfiles:
+ for pattern in patterns:
+ if fnmatch.fnmatch(file, pattern):
+ safe_remove(os.path.join(root, file))
+ for dir in subdirs:
+ for pattern in patterns:
+ if fnmatch.fnmatch(dir, pattern):
+ safe_rmtree(os.path.join(root, dir))
+
+
# ===================================================================
# commands
# ===================================================================
@@ -201,24 +239,28 @@ def uninstall():
@cmd
def clean():
"""Deletes dev files"""
- rm("*.egg-info", directory=True)
- rm("*__pycache__", directory=True)
- rm("build", directory=True)
- rm("dist", directory=True)
- rm("htmlcov", directory=True)
- rm("tmp", directory=True)
-
- rm("*.bak")
- rm("*.core")
- rm("*.orig")
- rm("*.pyc")
- rm("*.pyd")
- rm("*.pyo")
- rm("*.rej")
- rm("*.so")
- rm("*.~")
- rm(".coverage")
- rm(".tox")
+ recursive_rm(
+ "$testfn*",
+ "*.bak",
+ "*.core",
+ "*.egg-info",
+ "*.orig",
+ "*.pyc",
+ "*.pyd",
+ "*.pyo",
+ "*.rej",
+ "*.so",
+ "*.~",
+ "*__pycache__",
+ ".coverage",
+ ".tox",
+ )
+ safe_rmtree("build")
+ safe_rmtree(".coverage")
+ safe_rmtree("dist")
+ safe_rmtree("docs/_build")
+ safe_rmtree("htmlcov")
+ safe_rmtree("tmp")
@cmd
@@ -317,11 +359,13 @@ def install_git_hooks():
@cmd
def bench_oneshot():
+ install()
sh("%s scripts\\internal\\bench_oneshot.py" % PYTHON)
@cmd
def bench_oneshot_2():
+ install()
sh("%s scripts\\internal\\bench_oneshot_2.py" % PYTHON)