提交 234da7fd 编写于 作者: C Cleber Rosa

Selftests: temporary file management improvements

Rules such as "check" on our Makefile make sure that no temporary
directory created by Avocado is left behind, but, it's very hard to
tell who created a rogue directory.

This brings improvements to the naming of the temporary directory, so
that it's trivial to tell which test created in the first place.

Additionally, it improves the temporary directory creation, usually by
making use of a tearDown() test phase, instead of other more fragile
methods.
Signed-off-by: NCleber Rosa <crosa@redhat.com>
上级 b83c5533
......@@ -8,8 +8,11 @@ import unittest.mock
from avocado.core.job import Job
from avocado.core import exit_codes, version
from avocado.utils import process
import avocado_runner_remote
from selftests import temp_dir_prefix
JSON_RESULTS = ('Something other than json\n'
'{"tests": [{"id": "1-sleeptest;0",'
......@@ -28,6 +31,10 @@ class RemoteTestRunnerTest(unittest.TestCase):
""" Tests RemoteTestRunner """
def setUp(self):
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_run_suite(self):
"""
Test RemoteTestRunner.run_suite()
......@@ -62,12 +69,11 @@ class RemoteTestRunnerTest(unittest.TestCase):
env_keep=None,
reference=['/tests/sleeptest.py',
'/tests/other/test',
'passtest.py'])
'passtest.py'],
keep_tmp='on',
base_logdir=self.tmpdir)
job = None
try:
job = Job(job_args)
job.setup()
with Job(job_args) as job:
runner = avocado_runner_remote.RemoteTestRunner(job, job.result)
return_value = (True, (version.MAJOR, version.MINOR))
runner.check_remote_avocado = unittest.mock.Mock(return_value=return_value)
......@@ -91,40 +97,36 @@ class RemoteTestRunnerTest(unittest.TestCase):
with unittest.mock.patch('avocado_runner_remote.os.remove'):
runner.run_suite(None, None, 61)
# The job was created with dry_run so it should have a zeroed id
self.assertEqual(job.result.job_unique_id, '0' * 40)
self.assertEqual(job.result.tests_run, 1)
self.assertEqual(job.result.passed, 1)
cmd_line = ('avocado run --force-job-id '
'0000000000000000000000000000000000000000 --json - '
'--archive /tests/sleeptest.py /tests/other/test '
'passtest.py --mux-yaml ~/avocado/tests/foo.yaml '
'~/avocado/tests/bar/baz.yaml --dry-run --filter-'
'by-tags -foo --filter-by-tags -bar')
runner.remote.run.assert_called_with(cmd_line,
ignore_status=True,
timeout=61)
finally:
if job:
shutil.rmtree(job.args.base_logdir)
# The job was created with dry_run so it should have a zeroed id
self.assertEqual(job.result.job_unique_id, '0' * 40)
self.assertEqual(job.result.tests_run, 1)
self.assertEqual(job.result.passed, 1)
cmd_line = ('avocado run --force-job-id '
'0000000000000000000000000000000000000000 --json - '
'--archive /tests/sleeptest.py /tests/other/test '
'passtest.py --mux-yaml ~/avocado/tests/foo.yaml '
'~/avocado/tests/bar/baz.yaml --dry-run --filter-'
'by-tags -foo --filter-by-tags -bar')
runner.remote.run.assert_called_with(cmd_line,
ignore_status=True,
timeout=61)
def test_run_replay_remotefail(self):
"""
Runs a replay job using remote plugin (not supported).
"""
tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
cmd_line = ('avocado run passtest.py '
'-m examples/tests/sleeptest.py.data/sleeptest.yaml '
'--job-results-dir %s --sysinfo=off --json -' % tmpdir)
'--job-results-dir %s --sysinfo=off --json -' % self.tmpdir)
result = process.run(cmd_line, ignore_status=True)
jobdir = ''.join(glob.glob(os.path.join(tmpdir, 'job-*')))
jobdir = ''.join(glob.glob(os.path.join(self.tmpdir, 'job-*')))
idfile = ''.join(os.path.join(jobdir, 'id'))
with open(idfile, 'r') as f:
jobid = f.read().strip('\n')
cmd_line = ('avocado run --replay %s --remote-hostname '
'localhost --job-results-dir %s --sysinfo=off' % (jobid, tmpdir))
'localhost --job-results-dir %s --sysinfo=off' % (jobid, self.tmpdir))
expected_rc = exit_codes.AVOCADO_FAIL
result = process.run(cmd_line, ignore_status=True)
......@@ -135,7 +137,12 @@ class RemoteTestRunnerTest(unittest.TestCase):
msg = b"Currently we don't replay jobs in remote hosts."
self.assertIn(msg, result.stderr)
shutil.rmtree(tmpdir)
def tearDown(self):
try:
shutil.rmtree(self.tmpdir)
# may have been clean up already on job.cleanup()
except FileNotFoundError:
pass
if __name__ == '__main__':
......
import argparse
import shutil
import tempfile
import unittest.mock
from avocado.core.job import Job
import avocado_runner_vm
from selftests import temp_dir_prefix
class _FakeVM(avocado_runner_vm.VM):
......@@ -24,6 +28,10 @@ class VMTestRunnerSetup(unittest.TestCase):
""" Tests the VMTestRunner setup() method """
def setUp(self):
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_setup(self):
mock_vm = _FakeVM()
mock_vm.start = unittest.mock.Mock(return_value=True)
......@@ -45,11 +53,10 @@ class VMTestRunnerSetup(unittest.TestCase):
'/tests/other/test',
'passtest.py'],
dry_run=True,
env_keep=None)
job = None
try:
job = Job(job_args)
job.setup()
env_keep=None,
keep_tmp='on',
base_logdir=self.tmpdir)
with Job(job_args) as job:
with unittest.mock.patch('avocado_runner_vm.vm_connect',
return_value=mock_vm):
# VMTestRunner()
......@@ -60,9 +67,13 @@ class VMTestRunnerSetup(unittest.TestCase):
mock_vm.create_snapshot.assert_called_once_with()
mock_vm.stop.assert_called_once_with()
mock_vm.restore_snapshot.assert_called_once_with()
finally:
if job:
shutil.rmtree(job.args.base_logdir)
def tearDown(self):
try:
shutil.rmtree(self.tmpdir)
# may have been clean up already on job.cleanup()
except FileNotFoundError:
pass
if __name__ == '__main__':
......
......@@ -44,6 +44,14 @@ def setup_avocado_loggers():
logger.handlers.append(logging.NullHandler())
def temp_dir_prefix(module_name, klass, method):
"""
Returns a standard name for the temp dir prefix used by the tests
"""
fmt = 'avocado__%s__%s__%s__'
return fmt % (module_name, klass.__class__.__name__, method)
#: The plugin module names and directories under optional_plugins
PLUGINS = {'varianter_yaml_to_mux': 'avocado-framework-plugin-varianter-yaml-to-mux',
'runner_remote': 'avocado-framework-plugin-runner-remote',
......
......@@ -27,18 +27,9 @@ from avocado.utils import process
from avocado.utils import script
from avocado.utils import path as utils_path
from .. import AVOCADO, BASEDIR, python_module_available
from .. import AVOCADO, BASEDIR, python_module_available, temp_dir_prefix
LOCAL_IMPORT_TEST_CONTENTS = '''
from avocado import Test
from mylib import hello
class LocalImportTest(Test):
def test(self):
self.log.info(hello())
'''
UNSUPPORTED_STATUS_TEST_CONTENTS = '''
from avocado import Test
......@@ -150,7 +141,8 @@ SLEEP_BINARY = probe_binary('sleep')
class RunnerOperationTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
os.chdir(BASEDIR)
def test_show_version(self):
......@@ -237,18 +229,22 @@ class RunnerOperationTest(unittest.TestCase):
"Avocado did not return rc %d:\n%s" % (expected_rc, result))
def test_runner_test_with_local_imports(self):
mylib = script.TemporaryScript(
'mylib.py',
"def hello():\n return 'Hello world'",
'avocado_simpletest_functional')
mylib.save()
mytest = script.Script(
os.path.join(os.path.dirname(mylib.path), 'test_local_imports.py'),
LOCAL_IMPORT_TEST_CONTENTS)
mytest.save()
cmd_line = ("%s run --sysinfo=off --job-results-dir %s "
"%s" % (AVOCADO, self.tmpdir, mytest))
process.run(cmd_line)
prefix = temp_dir_prefix(__name__, self,
'test_runner_test_with_local_imports')
libdir = tempfile.mkdtemp(prefix=prefix)
with script.Script(os.path.join(libdir, 'mylib.py'),
"def hello():\n return 'Hello world'"):
with script.Script(
os.path.join(libdir, 'test_local_imports.py'),
('from avocado import Test\n'
'from mylib import hello\n'
'class LocalImportTest(Test):\n'
' def test(self):\n'
' self.log.info(hello())\n')) as mytest:
cmd_line = ("%s run --sysinfo=off --job-results-dir %s "
"%s" % (AVOCADO, self.tmpdir, mytest))
process.run(cmd_line)
shutil.rmtree(libdir)
def test_unsupported_status(self):
with script.TemporaryScript("fake_status.py",
......@@ -593,7 +589,8 @@ class RunnerOperationTest(unittest.TestCase):
class RunnerHumanOutputTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
os.chdir(BASEDIR)
def test_output_pass(self):
......@@ -681,7 +678,8 @@ class RunnerHumanOutputTest(unittest.TestCase):
class RunnerSimpleTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.pass_script = script.TemporaryScript(
u'\u00e1 \u00e9 \u00ed \u00f3 \u00fa',
"#!/bin/sh\ntrue",
......@@ -890,7 +888,8 @@ class RunnerSimpleTest(unittest.TestCase):
class RunnerSimpleTestStatus(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.config_file = script.TemporaryScript('avocado.conf',
"[simpletests.status]\n"
......@@ -950,7 +949,8 @@ class RunnerSimpleTestStatus(unittest.TestCase):
class ExternalRunnerTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.pass_script = script.TemporaryScript(
'pass',
"exit 0",
......@@ -1030,7 +1030,8 @@ class ExternalRunnerTest(unittest.TestCase):
class AbsPluginsTest:
def setUp(self):
self.base_outputdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.base_outputdir = tempfile.mkdtemp(prefix=prefix)
os.chdir(BASEDIR)
def tearDown(self):
......@@ -1236,7 +1237,8 @@ class PluginsXunitTest(AbsPluginsTest, unittest.TestCase):
@unittest.skipUnless(SCHEMA_CAPABLE,
'Unable to validate schema due to missing lxml.etree library')
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
junit_xsd = os.path.join(os.path.dirname(__file__),
os.path.pardir, ".data", 'jenkins-junit.xsd')
self.junit = os.path.abspath(junit_xsd)
......@@ -1322,7 +1324,8 @@ class ParseJSONError(Exception):
class PluginsJSONTest(AbsPluginsTest, unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
super(PluginsJSONTest, self).setUp()
def run_and_check(self, testname, e_rc, e_ntests, e_nerrors,
......
......@@ -8,7 +8,7 @@ from avocado.core import exit_codes
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
SCRIPT_CONTENT = """#!/bin/sh
echo "Avocado Version: $AVOCADO_VERSION"
......@@ -32,7 +32,8 @@ test "$AVOCADO_VERSION" = "{version}" -a \
class EnvironmentVariablesTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.script = script.TemporaryScript(
'version.sh',
SCRIPT_CONTENT,
......
......@@ -5,13 +5,14 @@ import unittest
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class GDBPluginTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_gdb_prerun_commands(self):
os.chdir(BASEDIR)
......
......@@ -6,14 +6,15 @@ import unittest
from avocado.core import exit_codes
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class GetData(unittest.TestCase):
def setUp(self):
os.chdir(BASEDIR)
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test(self):
test_path = os.path.join(BASEDIR, "selftests", ".data", "get_data.py")
......
......@@ -14,7 +14,7 @@ from avocado.utils import wait
from avocado.utils import script
from avocado.utils import data_factory
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
# What is commonly known as "0755" or "u=rwx,g=rx,o=rx"
DEFAULT_MODE = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
......@@ -97,7 +97,8 @@ class InterruptTest(unittest.TestCase):
return len(test_processes) == 0
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.test_module = None
@unittest.skipIf(int(os.environ.get("AVOCADO_CHECK_LEVEL", 0)) < 2,
......
......@@ -10,7 +10,7 @@ from avocado.utils import genio
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
SCRIPT_CONTENT = """#!/bin/bash
......@@ -48,7 +48,8 @@ class JobTimeOutTest(unittest.TestCase):
PYTHON_CONTENT,
'avocado_timeout_functional')
self.py.save()
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
os.chdir(BASEDIR)
def run_and_check(self, cmd_line, e_rc, e_ntests, e_nerrors, e_nfailures,
......
......@@ -8,14 +8,15 @@ import unittest
from avocado.core import exit_codes
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class JournalPluginTests(unittest.TestCase):
def setUp(self):
os.chdir(BASEDIR)
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.cmd_line = ('%s run --job-results-dir %s --sysinfo=off --json - '
'--journal examples/tests/passtest.py'
% (AVOCADO, self.tmpdir))
......
......@@ -6,13 +6,14 @@ import unittest
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class VariantsDumpLoadTests(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.variants_file = os.path.join(self.tmpdir, 'variants.json')
os.chdir(BASEDIR)
......
......@@ -12,7 +12,7 @@ from avocado.core import exit_codes
from avocado.utils import script
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
AVOCADO_TEST_OK = """#!/usr/bin/env python
......@@ -151,7 +151,8 @@ class LoaderTestFunctional(unittest.TestCase):
def setUp(self):
os.chdir(BASEDIR)
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def _test(self, name, content, exp_str, mode=MODE_0664, count=1):
test_script = script.TemporaryScript(name, content,
......
......@@ -16,6 +16,8 @@ from avocado.utils import process
from avocado.utils import lv_utils
from avocado.utils import linux_modules
from .. import temp_dir_prefix
class LVUtilsTest(unittest.TestCase):
......@@ -30,7 +32,8 @@ class LVUtilsTest(unittest.TestCase):
@unittest.skipIf(not process.can_sudo(), "This test requires root or "
"passwordless sudo configured.")
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.vgs = []
def tearDown(self):
......
......@@ -13,7 +13,7 @@ from avocado.utils import process
from avocado.utils import script
from avocado.utils import path as utils_path
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
# AVOCADO may contain more than a single command, as it can be
......@@ -133,7 +133,8 @@ def missing_binary(binary):
class OutputTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
os.chdir(BASEDIR)
@unittest.skipIf(missing_binary('cc'),
......@@ -270,7 +271,8 @@ class OutputTest(unittest.TestCase):
class OutputPluginTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
os.chdir(BASEDIR)
def check_output_files(self, debug_log):
......@@ -510,11 +512,11 @@ class OutputPluginTest(unittest.TestCase):
@unittest.skipIf(perl_tap_parser_uncapable(),
"Uncapable of using Perl TAP::Parser library")
def test_tap_parser(self):
perl_script = script.TemporaryScript("tap_parser.pl",
PERL_TAP_PARSER_SNIPPET
% self.tmpdir)
perl_script.save()
process.run("perl %s" % perl_script)
with script.TemporaryScript(
"tap_parser.pl",
PERL_TAP_PARSER_SNIPPET % self.tmpdir,
self.tmpdir) as perl_script:
process.run("perl %s" % perl_script)
def test_tap_totaltests(self):
cmd_line = ("%s run passtest.py "
......
......@@ -8,7 +8,7 @@ from avocado.core import exit_codes
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
STDOUT = b"Hello, \xc4\x9b\xc5\xa1\xc4\x8d\xc5\x99\xc5\xbe\xc3\xbd\xc3\xa1\xc3\xad\xc3\xa9!"
......@@ -18,7 +18,8 @@ STDERR = b"Hello, stderr!"
class RunnerSimpleTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
content = b"#!/bin/sh\n"
content += b"echo \"" + STDOUT + b"\"\n"
content += b"echo \"" + STDERR + b"\" >&2\n"
......
......@@ -9,13 +9,14 @@ from avocado.core import exit_codes
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class DiffTests(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
test = script.make_script(os.path.join(self.tmpdir, 'test'), 'exit 0')
cmd_line = ('%s run %s '
'--external-runner /bin/bash '
......@@ -25,7 +26,7 @@ class DiffTests(unittest.TestCase):
self.run_and_check(cmd_line, expected_rc)
self.jobdir = ''.join(glob.glob(os.path.join(self.tmpdir, 'job-*')))
self.tmpdir2 = tempfile.mkdtemp(prefix='avocado_' + __name__)
self.tmpdir2 = tempfile.mkdtemp(prefix=prefix)
cmd_line = ('%s run %s '
'--external-runner /bin/bash '
'--job-results-dir %s --sysinfo=off --json -' %
......
......@@ -7,7 +7,7 @@ from avocado.core import exit_codes
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
SCRIPT_PRE_TOUCH = """#!/bin/sh -e
......@@ -42,7 +42,8 @@ warn_non_zero_status = True"""
class JobScriptsTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix)
self.pre_dir = os.path.join(self.tmpdir, 'pre.d')
os.mkdir(self.pre_dir)
self.post_dir = os.path.join(self.tmpdir, 'post.d')
......
......@@ -7,13 +7,14 @@ import unittest
from avocado.core import exit_codes
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class ReplayTests(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix)
cmd_line = ('%s run passtest.py '
'-m examples/tests/sleeptest.py.data/sleeptest.yaml '
'--job-results-dir %s --sysinfo=off --json -'
......
......@@ -8,13 +8,14 @@ from avocado.core import exit_codes
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class ReplayExtRunnerTests(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix)
test = script.make_script(os.path.join(self.tmpdir, 'test'), 'exit 0')
cmd_line = ('%s run %s '
'-m examples/tests/sleeptest.py.data/sleeptest.yaml '
......
......@@ -7,13 +7,14 @@ import unittest
from avocado.core import exit_codes
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class ReplayFailfastTests(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
cmd_line = ('%s run passtest.py failtest.py passtest.py '
'--failfast on --job-results-dir %s --sysinfo=off --json -'
% (AVOCADO, self.tmpdir))
......
......@@ -9,7 +9,7 @@ from avocado.utils import genio
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
AVOCADO_TEST_SKIP_DECORATORS = """
import avocado
......@@ -79,7 +79,8 @@ class TestSkipDecorators(unittest.TestCase):
def setUp(self):
os.chdir(BASEDIR)
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
test_path = os.path.join(self.tmpdir, 'test_skip_decorators.py')
self.test_module = script.Script(test_path,
......
......@@ -7,7 +7,7 @@ import unittest
from avocado.utils import genio
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
ALL_MESSAGES = ['setup pre',
......@@ -130,7 +130,8 @@ EXPECTED_RESULTS = {'SkipSetup.test': ('SKIP',
class TestStatuses(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
test_file = os.path.abspath(os.path.join(os.path.dirname(__file__),
os.path.pardir,
".data",
......
......@@ -7,13 +7,14 @@ import unittest
from avocado.core import exit_codes
from avocado.utils import process
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
class StreamsTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
os.chdir(BASEDIR)
def test_app_info_stdout(self):
......
......@@ -7,7 +7,7 @@ from avocado.core import exit_codes
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
COMMANDS_TIMEOUT_CONF = """
......@@ -22,7 +22,8 @@ commands = %s
class SysInfoTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_sysinfo_enabled(self):
os.chdir(BASEDIR)
......
......@@ -8,7 +8,7 @@ from avocado.core import test
from avocado.utils import process
from avocado.utils import script
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
INSTRUMENTED_SCRIPT = """import os
......@@ -36,7 +36,8 @@ fi
class TestsTmpDirTests(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.simple_test = script.TemporaryScript(
'test_simple.sh',
SIMPLE_SCRIPT)
......
......@@ -7,7 +7,7 @@ import unittest
from avocado.utils import script
from avocado.utils import process
from .. import BASEDIR
from .. import BASEDIR, temp_dir_prefix
UNITTEST_GOOD = """from avocado import Test
......@@ -62,7 +62,8 @@ if __name__ == '__main__':
class UnittestCompat(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix="avocado_" + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.original_pypath = os.environ.get('PYTHONPATH')
if self.original_pypath is not None:
os.environ['PYTHONPATH'] = '%s:%s' % (
......
......@@ -12,6 +12,8 @@ from avocado.utils.filelock import FileLock
from avocado.utils.stacktrace import prepare_exc_info
from avocado.utils import process
from .. import temp_dir_prefix
# What is commonly known as "0775" or "u=rwx,g=rwx,o=rx"
DEFAULT_MODE = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
......@@ -125,7 +127,8 @@ if __name__ == '__main__':
class ProcessTest(unittest.TestCase):
def setUp(self):
self.base_logdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.base_logdir = tempfile.mkdtemp(prefix=prefix)
self.fake_vmstat = os.path.join(self.base_logdir, 'vmstat')
with open(self.fake_vmstat, 'w') as fake_vmstat_obj:
fake_vmstat_obj.write(FAKE_VMSTAT_CONTENTS)
......@@ -167,7 +170,8 @@ def file_lock_action(args):
class FileLockTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
@unittest.skipIf(int(os.environ.get("AVOCADO_CHECK_LEVEL", 0)) < 2,
"Skipping test that take a long time to run, are "
......
......@@ -8,7 +8,7 @@ from avocado.utils import process
from avocado.utils import script
from avocado.utils import path as utils_path
from .. import AVOCADO, BASEDIR
from .. import AVOCADO, BASEDIR, temp_dir_prefix
SCRIPT_CONTENT = """#!/bin/bash
......@@ -32,7 +32,8 @@ def missing_binary(binary):
class WrapperTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.tmpfile = tempfile.mktemp()
self.script = script.TemporaryScript(
'success.sh',
......
......@@ -9,13 +9,14 @@ from avocado.utils import archive
from avocado.utils import crypto
from avocado.utils import data_factory
from .. import BASEDIR
from .. import BASEDIR, temp_dir_prefix
class ArchiveTest(unittest.TestCase):
def setUp(self):
self.basedir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.basedir = tempfile.mkdtemp(prefix=prefix)
self.compressdir = tempfile.mkdtemp(dir=self.basedir)
self.decompressdir = tempfile.mkdtemp(dir=self.basedir)
self.sys_random = random.SystemRandom()
......
......@@ -5,18 +5,20 @@ import unittest.mock
from avocado.core import settings
from .. import temp_dir_prefix
class DataDirTest(unittest.TestCase):
@staticmethod
def _get_temporary_dirs_mapping_and_config():
def _get_temporary_dirs_mapping_and_config(self):
"""
Creates a temporary bogus base data dir
And returns a dictionary containing the temporary data dir paths and
a the path to a configuration file contain those same settings
"""
base_dir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
base_dir = tempfile.mkdtemp(prefix=prefix)
test_dir = os.path.join(base_dir, 'tests')
os.mkdir(test_dir)
mapping = {'base_dir': base_dir,
......
......@@ -11,7 +11,7 @@ from avocado.core import job
from avocado.core import test
from avocado.utils import path as utils_path
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -22,7 +22,8 @@ class JobTest(unittest.TestCase):
def setUp(self):
self.job = None
data_dir._tmp_tracker.unittest_refresh_dir_tracker()
self.tmpdir = tempfile.mkdtemp(prefix="avocado_" + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
@staticmethod
def _find_simple_test_candidates(candidates=None):
......
......@@ -10,7 +10,7 @@ from avocado.core import job
from avocado.core.result import Result
from avocado.plugins import jsonresult
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -33,7 +33,8 @@ class JSONResultTest(unittest.TestCase):
pass
self.tmpfile = tempfile.mkstemp()
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
args = argparse.Namespace(json_output=self.tmpfile[1],
base_logdir=self.tmpdir)
self.job = job.Job(args)
......
......@@ -8,7 +8,7 @@ from avocado.core import test
from avocado.core import loader
from avocado.utils import script
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -231,7 +231,8 @@ class LoaderTest(unittest.TestCase):
def setUp(self):
self.loader = loader.FileLoader(None, {})
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_load_simple(self):
simple_test = script.TemporaryScript('simpletest.sh', SIMPLE_TEST,
......@@ -295,29 +296,27 @@ class LoaderTest(unittest.TestCase):
avocado_not_a_test.remove()
def test_py_simple_test(self):
avocado_simple_test = script.TemporaryScript('simpletest.py',
PY_SIMPLE_TEST,
'avocado_loader_unittest')
avocado_simple_test.save()
test_class, test_parameters = (
self.loader.discover(avocado_simple_test.path, loader.DiscoverMode.ALL)[0])
self.assertTrue(test_class == test.SimpleTest)
test_parameters['name'] = test.TestID(0, test_parameters['name'])
test_parameters['base_logdir'] = self.tmpdir
tc = test_class(**test_parameters)
tc.run_avocado()
avocado_simple_test.remove()
with script.TemporaryScript(
'simpletest.py',
PY_SIMPLE_TEST,
'avocado_loader_unittest') as avocado_simple_test:
test_class, test_parameters = (
self.loader.discover(avocado_simple_test.path, loader.DiscoverMode.ALL)[0])
self.assertTrue(test_class == test.SimpleTest)
test_parameters['name'] = test.TestID(0, test_parameters['name'])
test_parameters['base_logdir'] = self.tmpdir
tc = test_class(**test_parameters)
tc.run_avocado()
def test_py_simple_test_notexec(self):
avocado_simple_test = script.TemporaryScript('simpletest.py',
PY_SIMPLE_TEST,
'avocado_loader_unittest',
mode=DEFAULT_NON_EXEC_MODE)
avocado_simple_test.save()
test_class, _ = self.loader.discover(avocado_simple_test.path,
loader.DiscoverMode.ALL)[0]
with script.TemporaryScript(
'simpletest.py',
PY_SIMPLE_TEST,
'avocado_loader_unittest',
mode=DEFAULT_NON_EXEC_MODE) as avocado_simple_test:
test_class, _ = self.loader.discover(avocado_simple_test.path,
loader.DiscoverMode.ALL)[0]
self.assertTrue(test_class == loader.NotATest)
avocado_simple_test.remove()
def test_multiple_methods(self):
avocado_multiple_tests = script.TemporaryScript('multipletests.py',
......@@ -469,12 +468,11 @@ class LoaderTest(unittest.TestCase):
self._check_discovery(exps, tests)
def test_list_raising_exception(self):
simple_test = script.TemporaryScript('simpletest.py', PY_SIMPLE_TEST)
simple_test.save()
with unittest.mock.patch('avocado.core.loader.safeloader.find_avocado_tests') as _mock:
_mock.side_effect = BaseException()
tests = self.loader.discover(simple_test.path)
self.assertEqual(tests[0][1]["name"], simple_test.path)
with script.TemporaryScript('simpletest.py', PY_SIMPLE_TEST) as simple_test:
with unittest.mock.patch('avocado.core.loader.safeloader.find_avocado_tests') as _mock:
_mock.side_effect = BaseException()
tests = self.loader.discover(simple_test.path)
self.assertEqual(tests[0][1]["name"], simple_test.path)
def tearDown(self):
shutil.rmtree(self.tmpdir)
......
......@@ -6,7 +6,7 @@ import unittest
from avocado.core import test
from avocado.plugins import replay
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -19,7 +19,8 @@ class Replay(unittest.TestCase):
"""
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def tearDown(self):
shutil.rmtree(self.tmpdir)
......
......@@ -11,7 +11,7 @@ from avocado.core.result import Result
from avocado.core.runner import TestRunner
from avocado.core.tree import TreeNode
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -23,7 +23,8 @@ class TestRunnerQueue(unittest.TestCase):
"""
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix="avocado_" + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
args = argparse.Namespace(base_logdir=self.tmpdir)
self.job = Job(args)
self.result = Result(self.job)
......
......@@ -5,11 +5,14 @@ import unittest
from avocado.core import sysinfo
from .. import temp_dir_prefix
class SysinfoTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix="sysinfo_unittest")
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_loggables_equal(self):
cmd1 = sysinfo.Command("ls -l")
......
......@@ -6,7 +6,7 @@ import unittest.mock
from avocado.core import test, exceptions
from avocado.utils import astring, script
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -28,7 +28,8 @@ class TestClassTestUnit(unittest.TestCase):
pass
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix="avocado_" + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def _get_fake_filename_test(self, name):
......@@ -175,7 +176,8 @@ class TestClassTest(unittest.TestCase):
self.assertTrue(variable)
self.whiteboard = 'foo'
self.base_logdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.base_logdir = tempfile.mkdtemp(prefix=prefix)
self.tst_instance_pass = AvocadoPass(base_logdir=self.base_logdir)
self.tst_instance_pass.run_avocado()
......@@ -212,7 +214,8 @@ class TestClassTest(unittest.TestCase):
class SimpleTestClassTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.script = None
def test_simple_test_pass_status(self):
......@@ -248,7 +251,8 @@ class SimpleTestClassTest(unittest.TestCase):
class MockingTest(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_init_minimal_params(self):
test.MockingTest(base_logdir=self.tmpdir)
......
......@@ -6,7 +6,7 @@ import unittest
from avocado.utils import asset
from avocado.utils.filelock import FileLock
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -15,7 +15,8 @@ setup_avocado_loggers()
class TestAsset(unittest.TestCase):
def setUp(self):
self.basedir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.basedir = tempfile.mkdtemp(prefix=prefix)
self.assetdir = tempfile.mkdtemp(dir=self.basedir)
self.assetname = 'foo.tgz'
self.assethash = '3a033a8938c1af56eeb793669db83bcbd0c17ea5'
......
......@@ -10,7 +10,7 @@ from avocado.utils import iso9660
from avocado.utils import network
from avocado.utils import data_factory
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -30,7 +30,8 @@ class CloudInit(unittest.TestCase):
class CloudInitISO(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix="avocado_" + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
@unittest.skipUnless(has_iso_create_write(),
"system lacks support for creating ISO images")
......
......@@ -6,11 +6,14 @@ import unittest
from avocado.utils.filelock import AlreadyLocked
from avocado.utils.filelock import FileLock
from .. import temp_dir_prefix
class TestFileLock(unittest.TestCase):
def setUp(self):
self.basedir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.basedir = tempfile.mkdtemp(prefix=prefix)
self.filename = os.path.join(self.basedir, 'file.img')
self.content = 'Foo bar'
with open(self.filename, 'w') as f:
......
......@@ -4,7 +4,7 @@ import unittest
from avocado.utils import genio
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -12,7 +12,8 @@ setup_avocado_loggers()
class TestGenio(unittest.TestCase):
def test_check_pattern_in_directory(self):
tempdirname = tempfile.mkdtemp()
prefix = temp_dir_prefix(__name__, self, 'setUp')
tempdirname = tempfile.mkdtemp(prefix=prefix)
with self.assertRaises(genio.GenIOError):
genio.is_pattern_in_file(tempdirname, 'something')
os.rmdir(tempdirname)
......
......@@ -8,7 +8,7 @@ import unittest.mock
from avocado.utils import iso9660, process
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -55,7 +55,8 @@ class BaseIso9660:
os.path.pardir, ".data",
"sample.iso"))
self.iso = None
self.tmpdir = tempfile.mkdtemp(prefix="avocado_" + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
def test_basic_workflow(self):
"""
......
......@@ -14,6 +14,8 @@ from avocado.utils import partition, process
from avocado.utils import path as utils_path
from avocado.utils import wait
from .. import temp_dir_prefix
def missing_binary(binary):
try:
......@@ -37,7 +39,8 @@ class Base(unittest.TestCase):
'current user must be allowed to run "mkfs.ext2" under '
'sudo')
def setUp(self):
self.tmpdir = tempfile.mkdtemp(prefix="avocado_" + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
self.mountpoint = os.path.join(self.tmpdir, "disk")
os.mkdir(self.mountpoint)
self.disk = partition.Partition(os.path.join(self.tmpdir, "block"), 1,
......
......@@ -17,7 +17,7 @@ from avocado.core import job
from avocado.core.result import Result
from avocado.plugins import xunit
from .. import setup_avocado_loggers
from .. import setup_avocado_loggers, temp_dir_prefix
setup_avocado_loggers()
......@@ -44,7 +44,8 @@ class xUnitSucceedTest(unittest.TestCase):
pass
self.tmpfile = tempfile.mkstemp()
self.tmpdir = tempfile.mkdtemp(prefix='avocado_' + __name__)
prefix = temp_dir_prefix(__name__, self, 'setUp')
self.tmpdir = tempfile.mkdtemp(prefix=prefix)
args = argparse.Namespace(base_logdir=self.tmpdir)
args.xunit_output = self.tmpfile[1]
self.job = job.Job(args)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册