Merge "Add tacker-horizon integration test framework"
This commit is contained in:
commit
f2c6294388
27
.zuul.yaml
27
.zuul.yaml
|
@ -1,3 +1,26 @@
|
||||||
|
- job:
|
||||||
|
name: tacker-horizon-integration-tests
|
||||||
|
parent: horizon-integration-tests
|
||||||
|
required-projects:
|
||||||
|
- name: openstack/horizon
|
||||||
|
- name: openstack/tacker
|
||||||
|
- name: openstack/python-tackerclient
|
||||||
|
- name: openstack/tacker-horizon
|
||||||
|
roles:
|
||||||
|
- zuul: openstack-infra/devstack
|
||||||
|
- zuul: openstack/horizon
|
||||||
|
irrelevant-files:
|
||||||
|
- ^.*\.rst$
|
||||||
|
- ^doc/.*$
|
||||||
|
- ^releasenotes/.*$
|
||||||
|
vars:
|
||||||
|
devstack_plugins:
|
||||||
|
tacker: https://git.openstack.org/openstack/tacker
|
||||||
|
tacker-horizon: https://git.openstack.org/openstack/tacker-horizon
|
||||||
|
devstack_services:
|
||||||
|
horizon: true
|
||||||
|
tox_envlist: integration
|
||||||
|
|
||||||
- project:
|
- project:
|
||||||
templates:
|
templates:
|
||||||
- check-requirements
|
- check-requirements
|
||||||
|
@ -5,3 +28,7 @@
|
||||||
- openstack-lower-constraints-jobs-horizon
|
- openstack-lower-constraints-jobs-horizon
|
||||||
- openstack-python3-wallaby-jobs-horizon
|
- openstack-python3-wallaby-jobs-horizon
|
||||||
- publish-openstack-docs-pti
|
- publish-openstack-docs-pti
|
||||||
|
check:
|
||||||
|
jobs:
|
||||||
|
- tacker-horizon-integration-tests:
|
||||||
|
voting: false
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
# selenium tests
|
||||||
|
ffmpeg [selenium]
|
||||||
|
firefox [selenium]
|
||||||
|
xvfb [selenium platform:dpkg]
|
||||||
|
# already part of xorg-x11-server on openSUSE
|
||||||
|
xorg-x11-server-Xvfb [selenium platform:redhat]
|
||||||
|
|
|
@ -86,11 +86,13 @@ PyYAML==3.12
|
||||||
requests==2.25.1
|
requests==2.25.1
|
||||||
requestsexceptions==1.4.0
|
requestsexceptions==1.4.0
|
||||||
rfc3986==1.1.0
|
rfc3986==1.1.0
|
||||||
|
selenium==2.50.1
|
||||||
semantic-version==2.3.1
|
semantic-version==2.3.1
|
||||||
simplejson==3.13.2
|
simplejson==3.13.2
|
||||||
snowballstemmer==1.2.1
|
snowballstemmer==1.2.1
|
||||||
stevedore==3.3.0
|
stevedore==3.3.0
|
||||||
termcolor==1.1.0
|
termcolor==1.1.0
|
||||||
|
testtools==2.2.0
|
||||||
traceback2==1.4.0
|
traceback2==1.4.0
|
||||||
unittest2==1.1.0
|
unittest2==1.1.0
|
||||||
urllib3==1.22
|
urllib3==1.22
|
||||||
|
|
|
@ -1,21 +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.
|
|
||||||
|
|
||||||
|
|
||||||
from openstack_dashboard.test import helpers as test
|
|
||||||
|
|
||||||
|
|
||||||
class NscatalogTests(test.TestCase):
|
|
||||||
# Unit tests for nscatalog.
|
|
||||||
|
|
||||||
def test_me(self):
|
|
||||||
self.assertTrue(1 + 1 == 2)
|
|
|
@ -1,21 +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.
|
|
||||||
|
|
||||||
|
|
||||||
from openstack_dashboard.test import helpers as test
|
|
||||||
|
|
||||||
|
|
||||||
class VnffgcatalogTests(test.TestCase):
|
|
||||||
# Unit tests for vnffgcatalog.
|
|
||||||
|
|
||||||
def test_me(self):
|
|
||||||
self.assertTrue(1 + 1 == 2)
|
|
|
@ -1,21 +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.
|
|
||||||
|
|
||||||
|
|
||||||
from openstack_dashboard.test import helpers as test
|
|
||||||
|
|
||||||
|
|
||||||
class VnfmanagerTests(test.TestCase):
|
|
||||||
# Unit tests for vnffgmanager.
|
|
||||||
|
|
||||||
def test_me(self):
|
|
||||||
self.assertTrue(1 + 1 == 2)
|
|
|
@ -10,11 +10,9 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import unittest
|
||||||
from openstack_dashboard.test import helpers as test
|
|
||||||
|
|
||||||
|
|
||||||
class NsmanagerTests(test.TestCase):
|
class TestCase(unittest.TestCase):
|
||||||
|
|
||||||
def test_me(self):
|
"""Test case base class for all unit tests."""
|
||||||
self.assertTrue(1 + 1 == 2)
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[plugin]
|
||||||
|
is_plugin=True
|
||||||
|
plugin_page_path=tacker_horizon.test.integration.pages
|
||||||
|
plugin_page_structure='{"NFV": {"VNF Management": {"_": ["VNF Catalog", "VNF Manager"]}, "NFV Orchestration": {"_": ["VIM Management", "VNFFG Catalog", "VNFFG Manager", "NS Catalog", "NS Manager"]}}}'
|
|
@ -1,4 +1,3 @@
|
||||||
# Copyright 2015 Brocade Communications System, Inc.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
@ -12,12 +11,10 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests.pages import basepage
|
||||||
from openstack_dashboard.test import helpers as test
|
|
||||||
|
|
||||||
|
|
||||||
class VnfmanagerTests(test.TestCase):
|
class NscatalogPage(basepage.BaseNavigationPage):
|
||||||
# Unit tests for vnfmanager.
|
def __init__(self, driver, conf):
|
||||||
|
super(NscatalogPage, self).__init__(driver, conf)
|
||||||
def test_me(self):
|
self._page_title = "NS Catalog"
|
||||||
self.assertTrue(1 + 1 == 2)
|
|
|
@ -1,4 +1,3 @@
|
||||||
# Copyright 2016 Brocade Communications System, Inc.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
@ -12,12 +11,10 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests.pages import basepage
|
||||||
from openstack_dashboard.test import helpers as test
|
|
||||||
|
|
||||||
|
|
||||||
class VimmanagerTests(test.TestCase):
|
class NsmanagerPage(basepage.BaseNavigationPage):
|
||||||
# Unit tests for vimmanager.
|
def __init__(self, driver, conf):
|
||||||
|
super(NsmanagerPage, self).__init__(driver, conf)
|
||||||
def test_me(self):
|
self._page_title = "NS Manager"
|
||||||
self.assertTrue(1 + 1 == 2)
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests.pages import basepage
|
||||||
|
|
||||||
|
|
||||||
|
class VimmanagementPage(basepage.BaseNavigationPage):
|
||||||
|
def __init__(self, driver, conf):
|
||||||
|
super(VimmanagementPage, self).__init__(driver, conf)
|
||||||
|
self._page_title = "VIM Management"
|
|
@ -0,0 +1,20 @@
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests.pages import basepage
|
||||||
|
|
||||||
|
|
||||||
|
class VnffgcatalogPage(basepage.BaseNavigationPage):
|
||||||
|
def __init__(self, driver, conf):
|
||||||
|
super(VnffgcatalogPage, self).__init__(driver, conf)
|
||||||
|
self._page_title = "VNFFG Catalog"
|
|
@ -0,0 +1,20 @@
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests.pages import basepage
|
||||||
|
|
||||||
|
|
||||||
|
class VnffgmanagerPage(basepage.BaseNavigationPage):
|
||||||
|
def __init__(self, driver, conf):
|
||||||
|
super(VnffgmanagerPage, self).__init__(driver, conf)
|
||||||
|
self._page_title = "VNFFG Manager"
|
|
@ -1,4 +1,3 @@
|
||||||
# Copyright 2015 Brocade Communications System, Inc.
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
@ -12,12 +11,10 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests.pages import basepage
|
||||||
from openstack_dashboard.test import helpers as test
|
|
||||||
|
|
||||||
|
|
||||||
class VnfcatalogTests(test.TestCase):
|
class VnfcatalogPage(basepage.BaseNavigationPage):
|
||||||
# Unit tests for vnfcatalog.
|
def __init__(self, driver, conf):
|
||||||
|
super(VnfcatalogPage, self).__init__(driver, conf)
|
||||||
def test_me(self):
|
self._page_title = "VNF Catalog"
|
||||||
self.assertTrue(1 + 1 == 2)
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests.pages import basepage
|
||||||
|
|
||||||
|
|
||||||
|
class VnfmanagerPage(basepage.BaseNavigationPage):
|
||||||
|
def __init__(self, driver, conf):
|
||||||
|
super(VnfmanagerPage, self).__init__(driver, conf)
|
||||||
|
self._page_title = "VNF Manager"
|
|
@ -0,0 +1,55 @@
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
from openstack_dashboard.test.integration_tests import helpers
|
||||||
|
|
||||||
|
|
||||||
|
class TestTackerDashboardInstalled(helpers.TestCase):
|
||||||
|
|
||||||
|
def test_vnf_catalog_page_opened(self):
|
||||||
|
vnf_catalog = self.home_pg.go_to_nfv_vnfmanagement_vnfcatalogpage()
|
||||||
|
self.assertEqual(vnf_catalog.page_title,
|
||||||
|
'VNF Catalog - OpenStack Dashboard')
|
||||||
|
|
||||||
|
def test_vnf_manager_page_opened(self):
|
||||||
|
vnf_manager = self.home_pg.go_to_nfv_vnfmanagement_vnfmanagerpage()
|
||||||
|
self.assertEqual(vnf_manager.page_title,
|
||||||
|
'VNF Manager - OpenStack Dashboard')
|
||||||
|
|
||||||
|
def test_vim_page_opened(self):
|
||||||
|
vim = self.home_pg.go_to_nfv_nfvorchestration_vimmanagementpage()
|
||||||
|
self.assertEqual(vim.page_title,
|
||||||
|
'VIM - OpenStack Dashboard')
|
||||||
|
|
||||||
|
def test_vnffg_catalog_page_opened(self):
|
||||||
|
vnffg_catalog = (
|
||||||
|
self.home_pg.go_to_nfv_nfvorchestration_vnffgcatalogpage())
|
||||||
|
self.assertEqual(vnffg_catalog.page_title,
|
||||||
|
'VNFFG Catalog - OpenStack Dashboard')
|
||||||
|
|
||||||
|
def test_vnffg_manager_page_opened(self):
|
||||||
|
vnffg_manager = (
|
||||||
|
self.home_pg.go_to_nfv_nfvorchestration_vnffgmanagerpage())
|
||||||
|
self.assertEqual(vnffg_manager.page_title,
|
||||||
|
'VNFFG Manager - OpenStack Dashboard')
|
||||||
|
|
||||||
|
def test_ns_catalog_page_opened(self):
|
||||||
|
ns_catalog = self.home_pg.go_to_nfv_nfvorchestration_nscatalogpage()
|
||||||
|
self.assertEqual(ns_catalog.page_title,
|
||||||
|
'NS Catalog - OpenStack Dashboard')
|
||||||
|
|
||||||
|
def test_ns_manager_page_opened(self):
|
||||||
|
ns_manager = self.home_pg.go_to_nfv_nfvorchestration_nsmanagerpage()
|
||||||
|
self.assertEqual(ns_manager.page_title,
|
||||||
|
'NS Manager - OpenStack Dashboard')
|
|
@ -12,58 +12,29 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import os
|
# Default to Horizons test settings to avoid any missing keys
|
||||||
|
|
||||||
from horizon.test.settings import * # noqa
|
import openstack_dashboard.enabled # noqa: F811
|
||||||
from horizon.utils import secret_key as secret_key_utils
|
from openstack_dashboard.test.settings import * # noqa: F403,H303
|
||||||
from openstack_dashboard.test.settings import * # noqa
|
from openstack_dashboard.utils import settings
|
||||||
|
|
||||||
DEBUG = True
|
import tacker_horizon.enabled
|
||||||
|
|
||||||
TEST_DIR = os.path.dirname(os.path.abspath(__file__))
|
# pop these keys to avoid log warnings about deprecation
|
||||||
ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, ".."))
|
# update_dashboards will populate them anyway
|
||||||
|
HORIZON_CONFIG.pop('dashboards', None) # noqa: F405
|
||||||
|
HORIZON_CONFIG.pop('default_dashboard', None) # noqa: F405
|
||||||
|
|
||||||
MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media'))
|
# Update the dashboards with nfv dashboard enabled files
|
||||||
MEDIA_URL = '/media/'
|
# and current INSTALLED_APPS
|
||||||
STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static'))
|
settings.update_dashboards(
|
||||||
STATIC_URL = '/static/'
|
[
|
||||||
|
openstack_dashboard.enabled,
|
||||||
SECRET_KEY = secret_key_utils.generate_or_read_from_file(
|
tacker_horizon.enabled,
|
||||||
os.path.join(TEST_DIR, '.secret_key_store'))
|
],
|
||||||
ROOT_URLCONF = 'tacker_horizon.test.urls'
|
HORIZON_CONFIG, # noqa: F405
|
||||||
|
INSTALLED_APPS # noqa: F405
|
||||||
INSTALLED_APPS = (
|
|
||||||
'django.contrib.contenttypes',
|
|
||||||
'django.contrib.auth',
|
|
||||||
'django.contrib.sessions',
|
|
||||||
'django.contrib.staticfiles',
|
|
||||||
'django.contrib.messages',
|
|
||||||
'django.contrib.humanize',
|
|
||||||
'openstack_auth',
|
|
||||||
'compressor',
|
|
||||||
'horizon',
|
|
||||||
'openstack_dashboard',
|
|
||||||
'tacker_horizon',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
TEMPLATES = [
|
# Remove duplicated apps
|
||||||
{
|
INSTALLED_APPS = list(set(INSTALLED_APPS)) # noqa: F405
|
||||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
|
||||||
'DIRS': [
|
|
||||||
os.path.join(TEST_DIR, 'templates')
|
|
||||||
],
|
|
||||||
'APP_DIRS': True,
|
|
||||||
'OPTIONS': {
|
|
||||||
'context_processors': [
|
|
||||||
'django.contrib.auth.context_processors.auth',
|
|
||||||
'django.template.context_processors.debug',
|
|
||||||
'django.template.context_processors.i18n',
|
|
||||||
'django.template.context_processors.media',
|
|
||||||
'django.template.context_processors.static',
|
|
||||||
'django.template.context_processors.tz',
|
|
||||||
'django.contrib.messages.context_processors.messages',
|
|
||||||
],
|
|
||||||
'debug': DEBUG,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
|
@ -11,5 +11,8 @@ hacking>=4.0.0,<4.1.0 # Apache-2.0
|
||||||
#
|
#
|
||||||
coverage!=4.4,>=4.0 # Apache-2.0
|
coverage!=4.4,>=4.0 # Apache-2.0
|
||||||
nodeenv>=0.9.4 # BSD
|
nodeenv>=0.9.4 # BSD
|
||||||
|
# Horizon integration tests requirements
|
||||||
|
selenium>=2.50.1 # Apache-2.0
|
||||||
|
testtools>=2.2.0 # MIT
|
||||||
# This also needs xvfb library installed on your OS
|
# This also needs xvfb library installed on your OS
|
||||||
xvfbwrapper>=0.1.3 #license: MIT
|
xvfbwrapper>=0.1.3 #license: MIT
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
./manage.py
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# This shell script helps in finding executable files, as by default Nose
|
||||||
|
# plugin ignores executable files. All the executable files need to be added
|
||||||
|
# in tools/executable_files.txt.
|
||||||
|
|
||||||
|
OUTPUT=`find . \( -name .tox -o -name .git \) -prune -o -type f -perm /a=x -print \
|
||||||
|
| grep -v -F -f ./tools/executable_files.txt`
|
||||||
|
if [ -n "$OUTPUT" ]; then
|
||||||
|
echo "Unexpected executable files are found:"
|
||||||
|
for f in $OUTPUT; do
|
||||||
|
echo $f
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
echo "If you really need to add an executable file, add it to tools/executable_files.txt"
|
||||||
|
exit 1
|
||||||
|
fi
|
25
tox.ini
25
tox.ini
|
@ -1,5 +1,5 @@
|
||||||
[tox]
|
[tox]
|
||||||
envlist = py38,pep8,docs
|
envlist = py39,py38,py36,pep8,docs
|
||||||
minversion = 3.18.0
|
minversion = 3.18.0
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
ignore_basepython_conflict = True
|
ignore_basepython_conflict = True
|
||||||
|
@ -15,12 +15,31 @@ deps =
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
commands =
|
commands =
|
||||||
{envpython} {toxinidir}/manage.py test tacker_horizon --settings=tacker_horizon.test.settings {posargs}
|
{envpython} {toxinidir}/manage.py test tacker_horizon --settings=tacker_horizon.test.settings --exclude-tag integration {posargs}
|
||||||
|
|
||||||
|
[testenv:integration]
|
||||||
|
# Run integration tests only
|
||||||
|
passenv =
|
||||||
|
DISPLAY
|
||||||
|
FFMPEG_INSTALLED
|
||||||
|
setenv =
|
||||||
|
PYTHONHASHSEED=0
|
||||||
|
FFMPEG_INSTALLED=True
|
||||||
|
INTEGRATION_TESTS=1
|
||||||
|
SELENIUM_HEADLESS=False
|
||||||
|
HORIZON_INTEGRATION_TESTS_CONFIG_FILE=tacker_horizon/test/integration/horizon.conf
|
||||||
|
basepython = python3
|
||||||
|
commands = {envpython} {toxinidir}/manage.py test tacker_horizon --settings=tacker_horizon.test.settings --tag integration {posargs}
|
||||||
|
|
||||||
[testenv:py36]
|
[testenv:py36]
|
||||||
basepython = python3.6
|
basepython = python3.6
|
||||||
commands =
|
commands =
|
||||||
{envpython} {toxinidir}/manage.py test tacker_horizon --settings=tacker_horizon.test.settings {posargs}
|
{envpython} {toxinidir}/manage.py test tacker_horizon --settings=tacker_horizon.test.settings --exclude-tag integration {posargs}
|
||||||
|
|
||||||
|
[testenv:py39]
|
||||||
|
basepython = python3.9
|
||||||
|
commands =
|
||||||
|
{envpython} {toxinidir}/manage.py test tacker_horizon --settings=tacker_horizon.test.settings --exclude-tag integration {posargs}
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
|
|
Loading…
Reference in New Issue