From 6e52661cfb4e79a76a6ff80637d5adf495a15479 Mon Sep 17 00:00:00 2001 From: jvoisin 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)