From 6e52661cfb4e79a76a6ff80637d5adf495a15479 Mon Sep 17 00:00:00 2001
From: jvoisin <julien.voisin@dustri.org>
Date: Sat, 30 Nov 2019 09:57:18 +0100
Subject: [PATCH] Fix the testsuite on Python3.8

There is a bug in Python3.8 (https://bugs.python.org/issue38688)
triggering an infinite recursion when copying a tree
in a subfolder of the current one. We're working around it
by using a list instead of an iterator, so that Python
won't "discover" the target folder as part of the source files.

This should fix #130
---
 tests/test_climat2.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tests/test_climat2.py b/tests/test_climat2.py
index 17fce82..da790d0 100644
--- a/tests/test_climat2.py
+++ b/tests/test_climat2.py
@@ -1,3 +1,4 @@
+import sys
 import random
 import os
 import shutil
@@ -258,7 +259,16 @@ class TestCommandLineParallel(unittest.TestCase):
             os.remove(path)
 
     def test_different(self):
-        shutil.copytree('./tests/data/', './tests/data/parallel')
+        src = './tests/data/'
+        dst = './tests/data/parallel'
+        if sys.version_info >= (3, 8):
+            with os.scandir(src) as itr:
+                    entries = list(itr)
+            shutil._copytree(entries=entries, src=src, dst=dst, symlinks=False,
+                    ignore=None, copy_function=shutil.copy2,
+                    ignore_dangling_symlinks=False)
+        else:
+            shutil.copytree(src, dst)
 
         proc = subprocess.Popen(mat2_binary + glob.glob('./tests/data/parallel/dirty.*'),
                 stdout=subprocess.PIPE)
-- 
GitLab