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