mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 09:23:56 +00:00
Merge pull request #51314 from s0undt3ch/features/tox-runtests-2019.2
[2019.2] Allow running runtests.py using tox
This commit is contained in:
commit
95607d17db
34
.coveragerc
Normal file
34
.coveragerc
Normal file
@ -0,0 +1,34 @@
|
||||
[run]
|
||||
branch = True
|
||||
cover_pylib = False
|
||||
source =
|
||||
salt
|
||||
parallel = True
|
||||
concurrency = multiprocessing
|
||||
omit =
|
||||
tests/*.py
|
||||
setup.py
|
||||
|
||||
[report]
|
||||
# Regexes for lines to exclude from consideration
|
||||
exclude_lines =
|
||||
# Have to re-enable the standard pragma
|
||||
pragma: no cover
|
||||
|
||||
# Don't complain about missing debug-only code:
|
||||
def __repr__
|
||||
|
||||
# Don't complain if tests don't hit defensive assertion code:
|
||||
raise AssertionError
|
||||
raise NotImplementedError
|
||||
|
||||
# Don't complain if non-runnable code isn't run:
|
||||
if 0:
|
||||
if __name__ == .__main__.:
|
||||
|
||||
|
||||
ignore_errors = True
|
||||
|
||||
[paths]
|
||||
source =
|
||||
salt
|
7
Gemfile
7
Gemfile
@ -2,9 +2,8 @@
|
||||
|
||||
source 'https://rubygems.org'
|
||||
|
||||
# Point this back at the test-kitchen package after 1.23.3 is relased
|
||||
gem 'test-kitchen', :git => 'https://github.com/dwoz/test-kitchen.git', :branch => 'winrm_opts'
|
||||
gem 'kitchen-salt', '~>0.2'
|
||||
gem 'test-kitchen', '~>1.23.3'
|
||||
gem 'kitchen-salt', '~>0.4.1'
|
||||
gem 'kitchen-sync'
|
||||
gem 'git'
|
||||
|
||||
@ -14,7 +13,7 @@ end
|
||||
|
||||
group :windows do
|
||||
gem 'winrm', '~>2.0'
|
||||
gem 'winrm-fs', '~>1.3.1'
|
||||
gem 'winrm-fs', '~>1.3.1'
|
||||
end
|
||||
|
||||
group :ec2 do
|
||||
|
@ -5,3 +5,4 @@ pytest-salt == 2018.12.8
|
||||
pytest-timeout >= 1.3.3
|
||||
pytest-tempdir >= 2018.8.11
|
||||
pytest-helpers-namespace >= 2017.11.11
|
||||
pytest-salt-from-filenames >= 2019.1.22
|
||||
|
@ -29,7 +29,6 @@ PyMySQL; sys.platform != 'win32' and sys.platform != 'darwin'
|
||||
jsonschema
|
||||
strict_rfc3339
|
||||
rfc3987
|
||||
jinja2
|
||||
pyOpenSSL
|
||||
ioflo
|
||||
dnspython
|
||||
|
@ -1940,7 +1940,7 @@ def parse_host_port(host_port):
|
||||
if _s_[0] == "[":
|
||||
if "]" in host_port:
|
||||
host, _s_ = _s_.lstrip("[").rsplit("]", 1)
|
||||
host = ipaddress.IPv6Address(host)
|
||||
host = ipaddress.IPv6Address(host).compressed
|
||||
if _s_[0] == ":":
|
||||
port = int(_s_.lstrip(":"))
|
||||
else:
|
||||
@ -1958,7 +1958,7 @@ def parse_host_port(host_port):
|
||||
host = _s_
|
||||
try:
|
||||
if not isinstance(host, ipaddress._BaseAddress):
|
||||
host_ip = ipaddress.ip_address(host)
|
||||
host_ip = ipaddress.ip_address(host).compressed
|
||||
host = host_ip
|
||||
except ValueError:
|
||||
log.debug('"%s" Not an IP address? Assuming it is a hostname.', host)
|
||||
|
@ -55,7 +55,7 @@ import salt.log.setup
|
||||
from salt.utils.odict import OrderedDict
|
||||
|
||||
# Define the pytest plugins we rely on
|
||||
pytest_plugins = ['tempdir', 'helpers_namespace'] # pylint: disable=invalid-name
|
||||
pytest_plugins = ['tempdir', 'helpers_namespace', 'salt-from-filenames'] # pylint: disable=invalid-name
|
||||
|
||||
# Define where not to collect tests from
|
||||
collect_ignore = ['setup.py']
|
||||
|
@ -222,7 +222,7 @@ class SupervisordModuleTest(ModuleCase):
|
||||
ret = self.run_function(
|
||||
'supervisord.status', [], conf_file=self.supervisor_conf,
|
||||
bin_env=self.venv_dir)
|
||||
self.assertEqual(list(ret.keys()), ['sleep_service', 'sleep_service2'])
|
||||
self.assertEqual(sorted(ret), ['sleep_service', 'sleep_service2'])
|
||||
|
||||
def test_status_one(self):
|
||||
'''
|
||||
|
11
tests/support/coverage/sitecustomize.py
Normal file
11
tests/support/coverage/sitecustomize.py
Normal file
@ -0,0 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
'''
|
||||
Python will always try to import sitecustomize.
|
||||
We use that fact to try and support code coverage for sub-processes
|
||||
'''
|
||||
from __future__ import absolute_import
|
||||
try:
|
||||
import coverage
|
||||
coverage.process_startup()
|
||||
except ImportError:
|
||||
pass
|
44
tests/tox-helper.py
Normal file
44
tests/tox-helper.py
Normal file
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# This script exists so that path handling when running tox works for both Linux and Windows
|
||||
|
||||
# Import Python Libs
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
import os
|
||||
import shutil
|
||||
import argparse
|
||||
import tempfile
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
'--rootdir',
|
||||
default=os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
||||
)
|
||||
subparsers = parser.add_subparsers(help='sub-command help', dest='subparser')
|
||||
|
||||
subparsers.add_parser('create-dirs')
|
||||
subparsers.add_parser('move-artifacts')
|
||||
|
||||
options = parser.parse_args()
|
||||
if options.subparser == 'create-dirs':
|
||||
for dirname in ('logs', 'coverage', 'xml-unittests-output'):
|
||||
path = os.path.join(options.rootdir, 'artifacts', dirname)
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
|
||||
if options.subparser == 'move-artifacts':
|
||||
tmp_artifacts_dir = os.path.join(tempfile.gettempdir(), 'artifacts')
|
||||
if not os.path.exists(tmp_artifacts_dir):
|
||||
os.makedirs(tmp_artifacts_dir)
|
||||
|
||||
for dirname in ('logs', 'coverage', 'xml-unittests-output'):
|
||||
src = os.path.join(options.rootdir, 'artifacts', dirname)
|
||||
dst = os.path.join(tmp_artifacts_dir, dirname)
|
||||
shutil.copytree(src, dst)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
@ -135,26 +135,12 @@ class InspectorFSDBTestCase(TestCase):
|
||||
csvdb.open()
|
||||
csvdb.create_table_from_object(FoobarEntity())
|
||||
|
||||
sorted_writable_data = sorted(writable.data[0].strip().split(','))
|
||||
if six.PY2:
|
||||
assert writable.data[0].strip() == "foo:int,bar:unicode,spam:float"
|
||||
sorted_expected_data = sorted("foo:int,bar:unicode,spam:float".split(','))
|
||||
else:
|
||||
# Order in PY3 is not the same for every run
|
||||
writable_data = writable.data[0].strip()
|
||||
assert_order_options = ['bar:str,foo:int,spam:float',
|
||||
'bar:str,spam:float,foo:int',
|
||||
'foo:int,spam:float,bar:str',
|
||||
'foo:int,bar:str,spam:float',
|
||||
'spam:float,foo:int,bar:str',
|
||||
'spam:float,bar:str,foo:int']
|
||||
while assert_order_options:
|
||||
assert_option = assert_order_options.pop()
|
||||
try:
|
||||
assert writable_data == assert_option
|
||||
break
|
||||
except AssertionError:
|
||||
if not assert_order_options:
|
||||
raise
|
||||
continue
|
||||
sorted_expected_data = sorted("foo:int,bar:str,spam:float".split(','))
|
||||
self.assertEqual(sorted_writable_data, sorted_expected_data)
|
||||
|
||||
def test_list_databases(self):
|
||||
'''
|
||||
|
@ -118,9 +118,12 @@ class CassandraTestCase(TestCase, LoaderModuleMockMixin):
|
||||
self.assertCountEqual(cassandra.column_families(),
|
||||
{'A': ['a', 'b'], 'B': ['c', 'd']})
|
||||
else:
|
||||
self.assertEqual(cassandra.column_families('A'),
|
||||
self.assertEqual(sorted(cassandra.column_families('A')),
|
||||
['a', 'b'])
|
||||
self.assertEqual(cassandra.column_families(),
|
||||
column_families = cassandra.column_families()
|
||||
for key in ('A', 'B'):
|
||||
column_families[key] = sorted(column_families[key])
|
||||
self.assertEqual(column_families,
|
||||
{'A': ['a', 'b'], 'B': ['c', 'd']})
|
||||
|
||||
def test_column_family_definition(self):
|
||||
|
@ -54,10 +54,11 @@ class PillarModuleTestCase(TestCase, LoaderModuleMockMixin):
|
||||
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
||||
def test_ls(self):
|
||||
with patch('salt.modules.pillar.items', MagicMock(return_value=pillar_value_1)):
|
||||
ls = sorted(pillarmod.ls())
|
||||
if six.PY3:
|
||||
self.assertCountEqual(pillarmod.ls(), ['a', 'b'])
|
||||
self.assertCountEqual(ls, ['a', 'b'])
|
||||
else:
|
||||
self.assertEqual(pillarmod.ls(), ['a', 'b'])
|
||||
self.assertEqual(ls, ['a', 'b'])
|
||||
|
||||
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
||||
def test_pillar_get_default_merge(self):
|
||||
|
@ -152,7 +152,7 @@ class TestSerializers(TestCase):
|
||||
|
||||
# BLAAM! yml_src is not valid !
|
||||
final_obj = OrderedDict(yaml.deserialize(yml_src))
|
||||
assert obj != final_obj
|
||||
assert obj != final_obj, 'Objects matched! {} == {}'.format(obj, final_obj)
|
||||
|
||||
@skipIf(not yamlex.available, SKIP_MESSAGE % 'sls')
|
||||
def test_sls_aggregate(self):
|
||||
|
@ -14,9 +14,6 @@ from tests.support.mock import (
|
||||
call
|
||||
)
|
||||
|
||||
# Import 3rd-party libs
|
||||
from salt.ext import six
|
||||
|
||||
# Import Salt Libs
|
||||
import salt.states.proxy as proxy
|
||||
|
||||
@ -70,9 +67,7 @@ class ProxyTestCase(TestCase, LoaderModuleMockMixin):
|
||||
with patch.dict(proxy.__salt__, patches):
|
||||
out = proxy.managed('192.168.0.1', '3128', user='frank', password='passw0rd',
|
||||
bypass_domains=['salt.com', 'test.com'])
|
||||
if six.PY3:
|
||||
# Sorting is different in Py3
|
||||
out['changes']['new'][-1]['bypass_domains'] = sorted(out['changes']['new'][-1]['bypass_domains'])
|
||||
out['changes']['new'][-1]['bypass_domains'] = sorted(out['changes']['new'][-1]['bypass_domains'])
|
||||
|
||||
calls = [
|
||||
call('192.168.0.1', '3128', 'frank', 'passw0rd', 'Ethernet'),
|
||||
|
@ -48,6 +48,7 @@ EXCLUDED_FILES = [
|
||||
os.path.join('tests', 'modparser.py'),
|
||||
os.path.join('tests', 'committer_parser.py'),
|
||||
os.path.join('tests', 'zypp_plugin.py'),
|
||||
os.path.join('tests', 'tox-helper.py'),
|
||||
os.path.join('tests', 'unit', 'transport', 'mixins.py'),
|
||||
os.path.join('tests', 'integration', 'utils', 'testprogram.py'),
|
||||
]
|
||||
|
@ -206,12 +206,12 @@ class NetworkTestCase(TestCase):
|
||||
def test_parse_host_port(self):
|
||||
_ip = ipaddress.ip_address
|
||||
good_host_ports = {
|
||||
'10.10.0.3': (_ip('10.10.0.3'), None),
|
||||
'10.10.0.3:1234': (_ip('10.10.0.3'), 1234),
|
||||
'2001:0db8:85a3::8a2e:0370:7334': (_ip('2001:0db8:85a3::8a2e:0370:7334'), None),
|
||||
'[2001:0db8:85a3::8a2e:0370:7334]:1234': (_ip('2001:0db8:85a3::8a2e:0370:7334'), 1234),
|
||||
'2001:0db8:85a3::7334': (_ip('2001:0db8:85a3::7334'), None),
|
||||
'[2001:0db8:85a3::7334]:1234': (_ip('2001:0db8:85a3::7334'), 1234)
|
||||
'10.10.0.3': (_ip('10.10.0.3').compressed, None),
|
||||
'10.10.0.3:1234': (_ip('10.10.0.3').compressed, 1234),
|
||||
'2001:0db8:85a3::8a2e:0370:7334': (_ip('2001:0db8:85a3::8a2e:0370:7334').compressed, None),
|
||||
'[2001:0db8:85a3::8a2e:0370:7334]:1234': (_ip('2001:0db8:85a3::8a2e:0370:7334').compressed, 1234),
|
||||
'2001:0db8:85a3::7334': (_ip('2001:0db8:85a3::7334').compressed, None),
|
||||
'[2001:0db8:85a3::7334]:1234': (_ip('2001:0db8:85a3::7334').compressed, 1234)
|
||||
}
|
||||
bad_host_ports = [
|
||||
'10.10.0.3/24',
|
||||
|
213
tox.ini
213
tox.ini
@ -1,13 +1,219 @@
|
||||
[tox]
|
||||
envlist = py27,py34,py35,py36,pylint-salt,pylint-tests
|
||||
envlist =
|
||||
py{27,34,35,36},
|
||||
py{27,34,35,36}-coverage,
|
||||
py{27,34,35,36}-pytest,
|
||||
py{27,34,35,36}-runtests,
|
||||
py{27,34,35,36}-pytest-coverage,
|
||||
py{27,34,35,36}-runtests-coverage,
|
||||
pylint-salt,
|
||||
pylint-tests
|
||||
skip_missing_interpreters = True
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
deps = -Ur{toxinidir}/requirements/tests.txt
|
||||
commands = pytest --rootdir {toxinidir} {posargs}
|
||||
changedir = {toxinidir}
|
||||
commands_pre = {envpython} tests/tox-helper.py create-dirs
|
||||
passenv = LANG HOME
|
||||
sitepackages = True
|
||||
commands = {[testenv:runtests]commands}
|
||||
|
||||
[testenv:runtests]
|
||||
deps =
|
||||
{[testenv]deps}
|
||||
unittest-xml-reporting
|
||||
commands = {envpython} {toxinidir}/tests/runtests.py --tests-logfile={toxinidir}/artifacts/logs/runtests.log {posargs}
|
||||
|
||||
[testenv:pytest]
|
||||
commands = pytest --rootdir {toxinidir} --log-file={toxinidir}/artifacts/logs/runtests.log {posargs}
|
||||
|
||||
[testenv:runtests-coverage]
|
||||
# Add tests/support/coverage to PYTHONPATH in order to get code coverage from subprocesses.
|
||||
# Additional, set the COVERAGE_PROCESS_START environment variable so that the coverage library
|
||||
# knows it's supposed to track subprocesses.
|
||||
setenv =
|
||||
PYTHONPATH={toxinidir}/tests/support/coverage
|
||||
COVERAGE_PROCESS_START={toxinidir}/.coveragerc
|
||||
commands_pre =
|
||||
- coverage erase
|
||||
commands =
|
||||
coverage run -m tests.runtests {posargs}
|
||||
commands_post =
|
||||
- coverage combine
|
||||
- coverage xml -o {toxinidir}/artifacts/coverage/coverage.xml
|
||||
|
||||
[testenv:pytest-coverage]
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands = coverage run -m py.test --rootdir {toxinidir} {posargs}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py2-pytest]
|
||||
commands = {[testenv:pytest]commands}
|
||||
|
||||
[testenv:py2-runtests]
|
||||
deps = {[testenv:runtests]deps}
|
||||
commands = {[testenv:runtests]commands}
|
||||
|
||||
[testenv:py2-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py2-runtests-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py2-pytest-coverage]
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:pytest-coverage]commands}
|
||||
commands_pre = {[testenv:pytest-coverage]commands_pre}
|
||||
commands_post = {[testenv:pytest-coverage]commands_post}
|
||||
|
||||
[testenv:py27-pytest]
|
||||
commands = {[testenv:pytest]commands}
|
||||
|
||||
[testenv:py27-runtests]
|
||||
deps = {[testenv:runtests]deps}
|
||||
commands = {[testenv:runtests]commands}
|
||||
|
||||
[testenv:py27-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py27-runtests-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py27-pytest-coverage]
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:pytest-coverage]commands}
|
||||
commands_pre = {[testenv:pytest-coverage]commands_pre}
|
||||
commands_post = {[testenv:pytest-coverage]commands_post}
|
||||
|
||||
[testenv:py3-pytest]
|
||||
commands = {[testenv:pytest]commands}
|
||||
|
||||
[testenv:py3-runtests]
|
||||
deps = {[testenv:runtests]deps}
|
||||
commands = {[testenv:runtests]commands}
|
||||
|
||||
[testenv:py3-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py3-runtests-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py3-pytest-coverage]
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:pytest-coverage]commands}
|
||||
commands_pre = {[testenv:pytest-coverage]commands_pre}
|
||||
commands_post = {[testenv:pytest-coverage]commands_post}
|
||||
|
||||
|
||||
[testenv:py34-pytest]
|
||||
commands = {[testenv:pytest]commands}
|
||||
|
||||
[testenv:py34-runtests]
|
||||
deps = {[testenv:runtests]deps}
|
||||
commands = {[testenv:runtests]commands}
|
||||
|
||||
[testenv:py34-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py34-runtests-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py34-pytest-coverage]
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:pytest-coverage]commands}
|
||||
commands_pre = {[testenv:pytest-coverage]commands_pre}
|
||||
commands_post = {[testenv:pytest-coverage]commands_post}
|
||||
|
||||
|
||||
[testenv:py35-pytest]
|
||||
commands = {[testenv:pytest]commands}
|
||||
|
||||
[testenv:py35-runtests]
|
||||
deps = {[testenv:runtests]deps}
|
||||
commands = {[testenv:runtests]commands}
|
||||
|
||||
[testenv:py35-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py35-runtests-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py35-pytest-coverage]
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:pytest-coverage]commands}
|
||||
commands_pre = {[testenv:pytest-coverage]commands_pre}
|
||||
commands_post = {[testenv:pytest-coverage]commands_post}
|
||||
|
||||
|
||||
[testenv:py36-pytest]
|
||||
commands = {[testenv:pytest]commands}
|
||||
|
||||
[testenv:py36-runtests]
|
||||
deps = {[testenv:runtests]deps}
|
||||
commands = {[testenv:runtests]commands}
|
||||
|
||||
[testenv:py36-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py36-runtests-coverage]
|
||||
deps = {[testenv:runtests]deps}
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:runtests-coverage]commands}
|
||||
commands_pre = {[testenv:runtests-coverage]commands_pre}
|
||||
commands_post = {[testenv:runtests-coverage]commands_post}
|
||||
|
||||
[testenv:py36-pytest-coverage]
|
||||
setenv = {[testenv:runtests-coverage]setenv}
|
||||
commands = {[testenv:pytest-coverage]commands}
|
||||
commands_pre = {[testenv:pytest-coverage]commands_pre}
|
||||
commands_post = {[testenv:pytest-coverage]commands_post}
|
||||
|
||||
|
||||
[testenv:pylint-salt]
|
||||
basepython = python2.7
|
||||
@ -17,6 +223,7 @@ commands =
|
||||
pylint --rcfile=.testing.pylintrc --disable=I,W1307,C0411,C0413,W8410,str-format-in-logging {posargs:setup.py salt/}
|
||||
sitepackages = False
|
||||
|
||||
|
||||
[testenv:pylint-tests]
|
||||
basepython = python2.7
|
||||
deps = -r{toxinidir}/requirements/dev.txt
|
||||
@ -26,6 +233,6 @@ commands =
|
||||
sitepackages = False
|
||||
|
||||
[pytest]
|
||||
addopts = --log-file /tmp/salt-runtests.log --no-print-logs --ssh-tests -ra -sv
|
||||
addopts = --no-print-logs --ssh-tests -ra -sv
|
||||
testpaths = tests
|
||||
norecursedirs = tests/kitchen
|
||||
|
Loading…
Reference in New Issue
Block a user