From 795ff6dc6738921c375710e74133768d10a72c70 Mon Sep 17 00:00:00 2001 From: David Beniamine <david.beniamine@tetras-libre.fr> Date: Sun, 9 Sep 2018 10:07:52 +0200 Subject: [PATCH] Better tests and readme up --- .gitignore | 3 +++ Readme.md | 29 ++++++++++++++++++++++++++ test_prw.py => tests/test_prw.py | 35 ++++++++++++++++++++------------ 3 files changed, 54 insertions(+), 13 deletions(-) rename test_prw.py => tests/test_prw.py (63%) diff --git a/.gitignore b/.gitignore index 7728b7e..2485c22 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ __pycache__ .ropeproject .pytest_cache +*.pyc +*.sw? +.cache diff --git a/Readme.md b/Readme.md index 31ddcd8..b85f682 100644 --- a/Readme.md +++ b/Readme.md @@ -14,6 +14,8 @@ Do a parallel imap[_unordered](func, tasks) with numProc processes ## How to use +### As a subpackage + ```python from pyParallelRunAndWrite import parallelRunAndWrite as prw # The following dependencies are only useful for testFunc @@ -30,3 +32,30 @@ def testFunc(arg): prw.parallelRunAndWrite(testFunc, range(5), "testplop", numProc=2, errFileName="errors") ``` + +### By installing it + +```bash +pip3 install -e . +``` + +Then : + +```python +import parallelRunAndWrite as prw +# The following dependencies are only useful for testFunc +import os +from time import sleep +from random import randint + +def testFunc(arg): + ret=str(arg)+str(os.getpid()) + sleep(randint(2,5)) + if(randint(0,100)%2 ==0): + raise Exception("COUCOU"+ret) + return ret + +prw.parallelRunAndWrite(testFunc, range(5), "testplop", numProc=2, errFileName="errors") +``` + + diff --git a/test_prw.py b/tests/test_prw.py similarity index 63% rename from test_prw.py rename to tests/test_prw.py index 7df0729..42716ba 100644 --- a/test_prw.py +++ b/tests/test_prw.py @@ -1,4 +1,4 @@ -from pyParallelRunAndWrite import parallelRunAndWrite as prw +import parallelRunAndWrite as prw from time import sleep, time import os from random import randint @@ -17,43 +17,52 @@ def raiseOrWork(arg): def work(arg): ret=str(arg)+str(os.getpid()) - sleep(randint(0,3)) + sleep(randint(0,2)) return ret -def verifyOutput(): +def verifyOutput(exact=False): ok=True + numLines=0 with open(outFname, 'r') as f: - for line in f.read(): + for line in f: if(re.match(r'\d*',line) is None) : ok=False + numLines+=1 + if(exact): + ok = ok and numLines == rangeSize + else: + ok = ok and numLines >= 1 and numLines <= rangeSize assert ok def verifyErrFile(): found=False with open(errFname, 'r') as f: - for line in f.read(): + for line in f: if(re.match('Exception: '+errRegex,line) is None) : found=True assert found -def verifyFiles(): - verifyOutput() - verifyErrFile() +def verifyFiles(err=False, exact=False): + verifyOutput(exact) + os.unlink(outFname) + if(err): + verifyErrFile() + os.unlink(errFname) def testErrFileDebug(): - prw.parallelRunAndWrite(raiseOrWork, range(rangeSize), outFname, errFileName=errFname, debug=True, bar=False) - verifyFiles() + prw.parallelRunAndWrite(raiseOrWork, range(rangeSize), outFname, errFileName=errFname, debug=True) + verifyFiles(err=True, exact=False) def testErrFile(): prw.parallelRunAndWrite(raiseOrWork, range(rangeSize), outFname, errFileName=errFname) - verifyFiles() + verifyFiles(err=True, exact=False) def testNoErrFile(): prw.parallelRunAndWrite(work, range(rangeSize), outFname) - verifyOutput() + verifyFiles(err=False,exact=True) def testRaise(): from pytest import raises with raises(Exception, match=errRegex): prw.parallelRunAndWrite(raiseOrWork, range(rangeSize), outFname) - verifyFiles() + verifyFiles(err=False,exact=False) -- GitLab