From 2cf01fd4498c2e46b5e12396ca5af26061b15e41 Mon Sep 17 00:00:00 2001 From: Jeremy Bowman Date: Tue, 24 Jul 2018 16:24:20 -0400 Subject: [PATCH] Allow remote nodes to get source modules from .coveragerc --- src/pytest_cov/engine.py | 5 +++-- tests/test_pytest_cov.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/pytest_cov/engine.py b/src/pytest_cov/engine.py index 8f22dcc8..bc9a8857 100644 --- a/src/pytest_cov/engine.py +++ b/src/pytest_cov/engine.py @@ -268,8 +268,9 @@ def start(self): if not self.is_collocated: master_topdir = self.config.slaveinput['cov_master_topdir'] slave_topdir = self.topdir - self.cov_source = [source.replace(master_topdir, slave_topdir) - for source in self.cov_source] + if self.cov_source is not None: + self.cov_source = [source.replace(master_topdir, slave_topdir) + for source in self.cov_source] self.cov_config = self.cov_config.replace(master_topdir, slave_topdir) # Erase any previous data and start coverage. diff --git a/tests/test_pytest_cov.py b/tests/test_pytest_cov.py index ddafd930..3dccd7e8 100644 --- a/tests/test_pytest_cov.py +++ b/tests/test_pytest_cov.py @@ -621,6 +621,39 @@ def test_dist_not_collocated(testdir, prop): assert result.ret == 0 +def test_dist_not_collocated_coveragerc_source(testdir, prop): + script = testdir.makepyfile(prop.code) + dir1 = testdir.mkdir('dir1') + dir2 = testdir.mkdir('dir2') + testdir.tmpdir.join('.coveragerc').write(''' +[run] +%s +source = %s +[paths] +source = + . + dir1 + dir2''' % (prop.conf, script.dirpath())) + + result = testdir.runpytest('-v', + '--cov', + '--cov-report=term-missing', + '--dist=load', + '--tx=popen//chdir=%s' % dir1, + '--tx=popen//chdir=%s' % dir2, + '--rsyncdir=%s' % script.basename, + '--rsyncdir=.coveragerc', + '--max-slave-restart=0', '-s', + script, *prop.args) + + result.stdout.fnmatch_lines([ + '*- coverage: platform *, python * -*', + 'test_dist_not_collocated* %s *' % prop.result, + '*10 passed*' + ]) + assert result.ret == 0 + + def test_central_subprocess(testdir): scripts = testdir.makepyfile(parent_script=SCRIPT_PARENT, child_script=SCRIPT_CHILD)