Move elements at the top level
This commit is contained in:
parent
3a1e20c676
commit
d802d177c7
|
@ -0,0 +1,5 @@
|
||||||
|
*.pyc
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
.tox
|
||||||
|
.testrepository
|
|
@ -0,0 +1,4 @@
|
||||||
|
[gerrit]
|
||||||
|
host=review.openstack.org
|
||||||
|
port=29418
|
||||||
|
project=openstack/heat-agents.git
|
|
@ -0,0 +1,4 @@
|
||||||
|
[DEFAULT]
|
||||||
|
test_command=${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT $IDOPTION
|
||||||
|
test_id_option=--load-list $IDFILE
|
||||||
|
test_list_option=--list
|
|
@ -27,7 +27,7 @@ with the following:
|
||||||
git clone https://git.openstack.org/openstack/heat-templates.git
|
git clone https://git.openstack.org/openstack/heat-templates.git
|
||||||
git clone https://git.openstack.org/openstack/dib-utils.git
|
git clone https://git.openstack.org/openstack/dib-utils.git
|
||||||
export PATH="${PWD}/dib-utils/bin:$PATH"
|
export PATH="${PWD}/dib-utils/bin:$PATH"
|
||||||
export ELEMENTS_PATH=tripleo-image-elements/elements:heat-templates/hot/software-config/elements
|
export ELEMENTS_PATH=tripleo-image-elements/elements:heat-agents/
|
||||||
diskimage-builder/bin/disk-image-create vm \
|
diskimage-builder/bin/disk-image-create vm \
|
||||||
fedora selinux-permissive \
|
fedora selinux-permissive \
|
||||||
os-collect-config \
|
os-collect-config \
|
|
@ -0,0 +1,19 @@
|
||||||
|
coverage>=3.6
|
||||||
|
discover
|
||||||
|
dpath>=1.3.2
|
||||||
|
fixtures>=0.3.14
|
||||||
|
# Hacking already pins down pep8, pyflakes and flake8
|
||||||
|
hacking>=0.10.0,<0.11
|
||||||
|
mock>=1.0
|
||||||
|
requests>=1.2.1,!=2.4.0
|
||||||
|
requests-mock>=0.4.0 # Apache-2.0
|
||||||
|
salt
|
||||||
|
testrepository>=0.0.18
|
||||||
|
testscenarios>=0.4
|
||||||
|
testtools>=0.9.34
|
||||||
|
yamllint>=1.2.0
|
||||||
|
os-apply-config
|
||||||
|
|
||||||
|
python-heatclient>=1.2.0
|
||||||
|
python-keystoneclient>=0.10.0
|
||||||
|
python-openstackclient>=2.1.0
|
|
@ -0,0 +1 @@
|
||||||
|
../heat-config/bin/heat-config-notify
|
|
@ -0,0 +1 @@
|
||||||
|
../heat-config-kubelet/install.d/hook-kubelet.py
|
|
@ -1 +0,0 @@
|
||||||
../../hot/software-config/elements/heat-config/bin/heat-config-notify
|
|
|
@ -1 +0,0 @@
|
||||||
../../hot/software-config/elements/heat-config-kubelet/install.d/hook-kubelet.py
|
|
|
@ -1,115 +0,0 @@
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
|
|
||||||
import json
|
|
||||||
import os
|
|
||||||
|
|
||||||
import fixtures
|
|
||||||
|
|
||||||
from tests.software_config import common
|
|
||||||
|
|
||||||
|
|
||||||
class HookAtomicTest(common.RunScriptTest):
|
|
||||||
data = {
|
|
||||||
"id": "abcdef001",
|
|
||||||
"group": "atomic",
|
|
||||||
"inputs": [],
|
|
||||||
"config": {
|
|
||||||
"command": "install",
|
|
||||||
"image": "imain/atomic-install-rabbitmq"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(HookAtomicTest, self).setUp()
|
|
||||||
self.hook_path = self.relative_path(
|
|
||||||
__file__,
|
|
||||||
'../..',
|
|
||||||
'hot/software-config/heat-container-agent',
|
|
||||||
'scripts/hooks/atomic')
|
|
||||||
|
|
||||||
self.fake_tool_path = self.relative_path(
|
|
||||||
__file__,
|
|
||||||
'config-tool-fake.py')
|
|
||||||
|
|
||||||
self.working_dir = self.useFixture(fixtures.TempDir())
|
|
||||||
self.outputs_dir = self.useFixture(fixtures.TempDir())
|
|
||||||
self.test_state_path = self.outputs_dir.join('test_state.json')
|
|
||||||
|
|
||||||
self.env = os.environ.copy()
|
|
||||||
self.env.update({
|
|
||||||
'HEAT_ATOMIC_WORKING': self.working_dir.join(),
|
|
||||||
'HEAT_ATOMIC_CMD': self.fake_tool_path,
|
|
||||||
'TEST_STATE_PATH': self.test_state_path,
|
|
||||||
})
|
|
||||||
|
|
||||||
def test_hook(self):
|
|
||||||
|
|
||||||
self.env.update({
|
|
||||||
'TEST_RESPONSE': json.dumps({
|
|
||||||
'stdout': 'Downloading xxx',
|
|
||||||
'stderr': ''
|
|
||||||
})
|
|
||||||
})
|
|
||||||
returncode, stdout, stderr = self.run_cmd(
|
|
||||||
[self.hook_path], self.env, json.dumps(self.data))
|
|
||||||
|
|
||||||
self.assertEqual(0, returncode, stderr)
|
|
||||||
|
|
||||||
self.assertEqual({
|
|
||||||
'deploy_stdout': 'Downloading xxx',
|
|
||||||
'deploy_stderr': '',
|
|
||||||
'deploy_status_code': 0
|
|
||||||
}, json.loads(stdout))
|
|
||||||
|
|
||||||
state = self.json_from_file(self.test_state_path)
|
|
||||||
self.assertEqual(
|
|
||||||
[
|
|
||||||
self.fake_tool_path,
|
|
||||||
'install',
|
|
||||||
'imain/atomic-install-rabbitmq',
|
|
||||||
'-n abcdef001',
|
|
||||||
''
|
|
||||||
],
|
|
||||||
state['args'])
|
|
||||||
|
|
||||||
def test_hook_failed(self):
|
|
||||||
|
|
||||||
self.env.update({
|
|
||||||
'TEST_RESPONSE': json.dumps({
|
|
||||||
'stdout': '',
|
|
||||||
'stderr': 'Container exists...',
|
|
||||||
'returncode': 1
|
|
||||||
})
|
|
||||||
})
|
|
||||||
returncode, stdout, stderr = self.run_cmd(
|
|
||||||
[self.hook_path], self.env, json.dumps(self.data))
|
|
||||||
|
|
||||||
self.assertEqual(0, returncode, stderr)
|
|
||||||
|
|
||||||
self.assertEqual({
|
|
||||||
'deploy_stdout': '',
|
|
||||||
'deploy_stderr': 'Container exists...',
|
|
||||||
'deploy_status_code': 1
|
|
||||||
}, json.loads(stdout))
|
|
||||||
|
|
||||||
state = self.json_from_file(self.test_state_path)
|
|
||||||
self.assertEqual(
|
|
||||||
[
|
|
||||||
self.fake_tool_path,
|
|
||||||
'install',
|
|
||||||
'imain/atomic-install-rabbitmq',
|
|
||||||
'-n abcdef001',
|
|
||||||
''
|
|
||||||
],
|
|
||||||
state['args'])
|
|
|
@ -20,7 +20,7 @@ import tempfile
|
||||||
import fixtures
|
import fixtures
|
||||||
from testtools import matchers
|
from testtools import matchers
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HeatConfigTest(common.RunScriptTest):
|
class HeatConfigTest(common.RunScriptTest):
|
||||||
|
@ -128,8 +128,7 @@ class HeatConfigTest(common.RunScriptTest):
|
||||||
|
|
||||||
self.heat_config_path = self.relative_path(
|
self.heat_config_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config/os-refresh-config/configure.d/55-heat-config')
|
'heat-config/os-refresh-config/configure.d/55-heat-config')
|
||||||
|
|
||||||
self.hooks_dir = self.useFixture(fixtures.TempDir())
|
self.hooks_dir = self.useFixture(fixtures.TempDir())
|
|
@ -18,7 +18,7 @@ import tempfile
|
||||||
import fixtures
|
import fixtures
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HeatConfigDockerComposeORCTest(common.RunScriptTest):
|
class HeatConfigDockerComposeORCTest(common.RunScriptTest):
|
||||||
|
@ -72,8 +72,7 @@ class HeatConfigDockerComposeORCTest(common.RunScriptTest):
|
||||||
self.fake_hook_path = self.relative_path(__file__, 'hook-fake.py')
|
self.fake_hook_path = self.relative_path(__file__, 'hook-fake.py')
|
||||||
self.heat_config_docker_compose_path = self.relative_path(
|
self.heat_config_docker_compose_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-docker-compose/os-refresh-config/configure.d/'
|
'heat-config-docker-compose/os-refresh-config/configure.d/'
|
||||||
'50-heat-config-docker-compose')
|
'50-heat-config-docker-compose')
|
||||||
|
|
|
@ -18,7 +18,7 @@ import tempfile
|
||||||
import fixtures
|
import fixtures
|
||||||
from testtools import matchers
|
from testtools import matchers
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HeatConfigKubeletORCTest(common.RunScriptTest):
|
class HeatConfigKubeletORCTest(common.RunScriptTest):
|
||||||
|
@ -99,8 +99,7 @@ class HeatConfigKubeletORCTest(common.RunScriptTest):
|
||||||
|
|
||||||
self.heat_config_kubelet_path = self.relative_path(
|
self.heat_config_kubelet_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-kubelet/os-refresh-config/configure.d/'
|
'heat-config-kubelet/os-refresh-config/configure.d/'
|
||||||
'50-heat-config-kubelet')
|
'50-heat-config-kubelet')
|
||||||
|
|
|
@ -18,8 +18,8 @@ import tempfile
|
||||||
import fixtures
|
import fixtures
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
from tests.software_config import heat_config_notify as hcn
|
from tests import heat_config_notify as hcn
|
||||||
|
|
||||||
|
|
||||||
class HeatConfigNotifyTest(common.RunScriptTest):
|
class HeatConfigNotifyTest(common.RunScriptTest):
|
|
@ -18,7 +18,7 @@ import os
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HookAnsibleTest(common.RunScriptTest):
|
class HookAnsibleTest(common.RunScriptTest):
|
||||||
|
@ -62,8 +62,7 @@ class HookAnsibleTest(common.RunScriptTest):
|
||||||
super(HookAnsibleTest, self).setUp()
|
super(HookAnsibleTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-ansible/install.d/hook-ansible.py')
|
'heat-config-ansible/install.d/hook-ansible.py')
|
||||||
|
|
||||||
self.fake_tool_path = self.relative_path(
|
self.fake_tool_path = self.relative_path(
|
|
@ -18,7 +18,7 @@ import os
|
||||||
import tempfile
|
import tempfile
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
log = logging.getLogger('test_hook_apply_config')
|
log = logging.getLogger('test_hook_apply_config')
|
||||||
|
|
||||||
|
@ -36,8 +36,7 @@ class HookApplyConfigTest(common.RunScriptTest):
|
||||||
super(HookApplyConfigTest, self).setUp()
|
super(HookApplyConfigTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-apply-config/install.d/hook-apply-config.py')
|
'heat-config-apply-config/install.d/hook-apply-config.py')
|
||||||
|
|
||||||
self.metadata_dir = self.useFixture(fixtures.TempDir())
|
self.metadata_dir = self.useFixture(fixtures.TempDir())
|
|
@ -16,7 +16,7 @@ import os
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HookCfnInitTest(common.RunScriptTest):
|
class HookCfnInitTest(common.RunScriptTest):
|
||||||
|
@ -31,8 +31,7 @@ class HookCfnInitTest(common.RunScriptTest):
|
||||||
super(HookCfnInitTest, self).setUp()
|
super(HookCfnInitTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-cfn-init/install.d/hook-cfn-init.py')
|
'heat-config-cfn-init/install.d/hook-cfn-init.py')
|
||||||
|
|
||||||
self.fake_tool_path = self.relative_path(
|
self.fake_tool_path = self.relative_path(
|
|
@ -19,7 +19,7 @@ import mock
|
||||||
import StringIO
|
import StringIO
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
log = logging.getLogger('test_hook_chef')
|
log = logging.getLogger('test_hook_chef')
|
||||||
|
|
||||||
|
@ -56,8 +56,7 @@ class HookChefTest(common.RunScriptTest):
|
||||||
super(HookChefTest, self).setUp()
|
super(HookChefTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-chef/install.d/hook-chef.py')
|
'heat-config-chef/install.d/hook-chef.py')
|
||||||
sys.stdin = StringIO.StringIO()
|
sys.stdin = StringIO.StringIO()
|
||||||
sys.stdout = StringIO.StringIO()
|
sys.stdout = StringIO.StringIO()
|
|
@ -19,7 +19,7 @@ import tempfile
|
||||||
import fixtures
|
import fixtures
|
||||||
from testtools import matchers
|
from testtools import matchers
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HookDockerCmdTest(common.RunScriptTest):
|
class HookDockerCmdTest(common.RunScriptTest):
|
||||||
|
@ -55,14 +55,13 @@ class HookDockerCmdTest(common.RunScriptTest):
|
||||||
super(HookDockerCmdTest, self).setUp()
|
super(HookDockerCmdTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-docker-cmd/install.d/hook-docker-cmd.py')
|
'heat-config-docker-cmd/install.d/hook-docker-cmd.py')
|
||||||
|
|
||||||
self.cleanup_path = self.relative_path(
|
self.cleanup_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements/heat-config-docker-cmd/',
|
'heat-config-docker-cmd/',
|
||||||
'os-refresh-config/configure.d/50-heat-config-docker-cmd')
|
'os-refresh-config/configure.d/50-heat-config-docker-cmd')
|
||||||
|
|
||||||
self.fake_tool_path = self.relative_path(
|
self.fake_tool_path = self.relative_path(
|
|
@ -16,7 +16,7 @@ import os
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HookDockerComposeTest(common.RunScriptTest):
|
class HookDockerComposeTest(common.RunScriptTest):
|
||||||
|
@ -72,8 +72,7 @@ class HookDockerComposeTest(common.RunScriptTest):
|
||||||
super(HookDockerComposeTest, self).setUp()
|
super(HookDockerComposeTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-docker-compose/install.d/hook-docker-compose.py')
|
'heat-config-docker-compose/install.d/hook-docker-compose.py')
|
||||||
|
|
||||||
self.fake_tool_path = self.relative_path(
|
self.fake_tool_path = self.relative_path(
|
|
@ -18,7 +18,7 @@ import os
|
||||||
import tempfile
|
import tempfile
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
log = logging.getLogger('test_hook_hiera_config')
|
log = logging.getLogger('test_hook_hiera_config')
|
||||||
|
|
||||||
|
@ -51,8 +51,7 @@ class HookHieraTest(common.RunScriptTest):
|
||||||
super(HookHieraTest, self).setUp()
|
super(HookHieraTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-hiera/install.d/hook-hiera.py')
|
'heat-config-hiera/install.d/hook-hiera.py')
|
||||||
|
|
||||||
self.hieradata_dir = self.useFixture(fixtures.TempDir()).join()
|
self.hieradata_dir = self.useFixture(fixtures.TempDir()).join()
|
|
@ -16,7 +16,7 @@ import mock
|
||||||
import re
|
import re
|
||||||
import testtools
|
import testtools
|
||||||
|
|
||||||
from tests.software_config import hook_kubelet
|
from tests import hook_kubelet
|
||||||
|
|
||||||
|
|
||||||
class HookKubeletTest(testtools.TestCase):
|
class HookKubeletTest(testtools.TestCase):
|
|
@ -17,7 +17,7 @@ import os
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HookPuppetTest(common.RunScriptTest):
|
class HookPuppetTest(common.RunScriptTest):
|
||||||
|
@ -48,8 +48,7 @@ class HookPuppetTest(common.RunScriptTest):
|
||||||
super(HookPuppetTest, self).setUp()
|
super(HookPuppetTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-puppet/install.d/hook-puppet.py')
|
'heat-config-puppet/install.d/hook-puppet.py')
|
||||||
|
|
||||||
self.fake_tool_path = self.relative_path(
|
self.fake_tool_path = self.relative_path(
|
|
@ -17,7 +17,7 @@ import logging
|
||||||
import os
|
import os
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
log = logging.getLogger('test_hook_salt')
|
log = logging.getLogger('test_hook_salt')
|
||||||
|
|
||||||
|
@ -64,8 +64,7 @@ class HookSaltTest(common.RunScriptTest):
|
||||||
super(HookSaltTest, self).setUp()
|
super(HookSaltTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-salt/install.d/hook-salt.py')
|
'heat-config-salt/install.d/hook-salt.py')
|
||||||
|
|
||||||
self.working_dir = self.useFixture(fixtures.TempDir())
|
self.working_dir = self.useFixture(fixtures.TempDir())
|
|
@ -16,7 +16,7 @@ import os
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
|
|
||||||
from tests.software_config import common
|
from tests import common
|
||||||
|
|
||||||
|
|
||||||
class HookScriptTest(common.RunScriptTest):
|
class HookScriptTest(common.RunScriptTest):
|
||||||
|
@ -25,8 +25,7 @@ class HookScriptTest(common.RunScriptTest):
|
||||||
super(HookScriptTest, self).setUp()
|
super(HookScriptTest, self).setUp()
|
||||||
self.hook_path = self.relative_path(
|
self.hook_path = self.relative_path(
|
||||||
__file__,
|
__file__,
|
||||||
'../..',
|
'..',
|
||||||
'hot/software-config/elements',
|
|
||||||
'heat-config-script/install.d/hook-script.py')
|
'heat-config-script/install.d/hook-script.py')
|
||||||
|
|
||||||
self.fake_tool_path = self.relative_path(
|
self.fake_tool_path = self.relative_path(
|
|
@ -0,0 +1,22 @@
|
||||||
|
[tox]
|
||||||
|
envlist = py27,pep8
|
||||||
|
minversion = 1.6
|
||||||
|
skipsdist = True
|
||||||
|
|
||||||
|
[testenv]
|
||||||
|
setenv = VIRTUAL_ENV={envdir}
|
||||||
|
deps = -r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/test-requirements.txt
|
||||||
|
commands = bash -c 'if [ ! -d ./.testrepository ] ; then testr init ; fi'
|
||||||
|
testr run {posargs}
|
||||||
|
|
||||||
|
[testenv:pep8]
|
||||||
|
commands = flake8
|
||||||
|
|
||||||
|
[testenv:venv]
|
||||||
|
commands = {posargs}
|
||||||
|
|
||||||
|
[flake8]
|
||||||
|
show-source = True
|
||||||
|
builtins = _
|
||||||
|
exclude=.venv,.git,.tox,*lib/python*,private,.eggs
|
Loading…
Reference in New Issue