Coverage for tests/test_000_frigid/test_000_package.py: 100%
50 statements
« prev ^ index » next coverage.py v7.6.8, created at 2024-12-05 03:26 +0000
« prev ^ index » next coverage.py v7.6.8, created at 2024-12-05 03:26 +0000
1# vim: set filetype=python fileencoding=utf-8:
2# -*- coding: utf-8 -*-
4#============================================================================#
5# #
6# Licensed under the Apache License, Version 2.0 (the "License"); #
7# you may not use this file except in compliance with the License. #
8# You may obtain a copy of the License at #
9# #
10# http://www.apache.org/licenses/LICENSE-2.0 #
11# #
12# Unless required by applicable law or agreed to in writing, software #
13# distributed under the License is distributed on an "AS IS" BASIS, #
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
15# See the License for the specific language governing permissions and #
16# limitations under the License. #
17# #
18#============================================================================#
21''' Assert basic characteristics of package and modules thereof. '''
23# mypy: ignore-errors
26import pytest
28from . import (
29 MODULES_NAMES_BY_MODULE_QNAME,
30 MODULES_QNAMES,
31 PACKAGE_NAME,
32 PACKAGES_NAMES,
33 PACKAGES_NAMES_BY_MODULE_QNAME,
34 cache_import_module,
35)
38@pytest.mark.parametrize( 'package_name', PACKAGES_NAMES )
39def test_000_sanity( package_name ):
40 ''' Package is sane. '''
41 package = cache_import_module( package_name )
42 assert package.__package__ == package_name
43 assert package.__name__ == package_name
46@pytest.mark.parametrize( 'module_qname', MODULES_QNAMES )
47def test_010_attribute_module_existence( module_qname ):
48 ''' Package module is attribute of package. '''
49 package_name = PACKAGES_NAMES_BY_MODULE_QNAME[ module_qname ]
50 package = cache_import_module( package_name )
51 module_name = MODULES_NAMES_BY_MODULE_QNAME[ module_qname ]
52 assert module_name in package.__dict__
55@pytest.mark.parametrize( 'module_qname', MODULES_QNAMES )
56def test_011_attribute_module_classification( module_qname ):
57 ''' Package attribute is module. '''
58 from inspect import ismodule
59 package_name = PACKAGES_NAMES_BY_MODULE_QNAME[ module_qname ]
60 package = cache_import_module( package_name )
61 module_name = MODULES_NAMES_BY_MODULE_QNAME[ module_qname ]
62 assert ismodule( getattr( package, module_name ) )
65@pytest.mark.parametrize(
66 'module_qname',
67 ( module_qname for module_qname, module_name
68 in MODULES_NAMES_BY_MODULE_QNAME.items( )
69 if not module_name.startswith( '_' ) )
70)
71def test_012_attribute_module_visibility( module_qname ):
72 ''' Package module is in package attributes directory. '''
73 package_name = PACKAGES_NAMES_BY_MODULE_QNAME[ module_qname ]
74 package = cache_import_module( package_name )
75 module_name = MODULES_NAMES_BY_MODULE_QNAME[ module_qname ]
76 assert module_name in dir( package )
79@pytest.mark.parametrize(
80 'module_qname',
81 ( module_qname for module_qname, module_name
82 in MODULES_NAMES_BY_MODULE_QNAME.items( )
83 if module_name.startswith( '_' ) )
84)
85def test_013_attribute_module_invisibility( module_qname ):
86 ''' Package module is not in package attributes directory. '''
87 package_name = PACKAGES_NAMES_BY_MODULE_QNAME[ module_qname ]
88 package = cache_import_module( package_name )
89 module_name = MODULES_NAMES_BY_MODULE_QNAME[ module_qname ]
90 assert module_name not in dir( package )
93@pytest.mark.parametrize( 'aname', ( '__version__', ) )
94def test_015_miscellaneous_attribute_existence( aname ):
95 ''' Miscellaneous attribute exists in package. '''
96 package = cache_import_module( PACKAGE_NAME )
97 assert aname in package.__dict__
100@pytest.mark.parametrize( 'aname, aclass', ( ( '__version__', str ), ) )
101def test_016_miscellaneous_attribute_classification( aname, aclass ):
102 ''' Miscellaaneous attribute is correct class. '''
103 package = cache_import_module( PACKAGE_NAME )
104 assert isinstance( getattr( package, aname ), aclass )
107@pytest.mark.parametrize( 'aname', ( '__version__', ) )
108def test_017_miscellaneous_attribute_visibility( aname ):
109 ''' Miscellaneous attribute is in package attributes directory. '''
110 package = cache_import_module( PACKAGE_NAME )
111 assert aname in dir( package )
114@pytest.mark.parametrize( 'module_qname', MODULES_QNAMES )
115def test_100_sanity( module_qname ):
116 ''' Package module is sane. '''
117 package_name = PACKAGES_NAMES_BY_MODULE_QNAME[ module_qname ]
118 module = cache_import_module( module_qname )
119 assert module.__package__ == package_name
120 assert module.__name__ == module_qname