aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/tests/registry/existence_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2/tests/registry/existence_test.py')
-rw-r--r--sources/pyside2/tests/registry/existence_test.py232
1 files changed, 0 insertions, 232 deletions
diff --git a/sources/pyside2/tests/registry/existence_test.py b/sources/pyside2/tests/registry/existence_test.py
deleted file mode 100644
index fd81901b4..000000000
--- a/sources/pyside2/tests/registry/existence_test.py
+++ /dev/null
@@ -1,232 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2019 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of Qt for Python.
-##
-## $QT_BEGIN_LICENSE:LGPL$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## GNU Lesser General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU Lesser
-## General Public License version 3 as published by the Free Software
-## Foundation and appearing in the file LICENSE.LGPL3 included in the
-## packaging of this file. Please review the following information to
-## ensure the GNU Lesser General Public License version 3 requirements
-## will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-##
-## GNU General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU
-## General Public License version 2.0 or (at your option) the GNU General
-## Public license version 3 or any later version approved by the KDE Free
-## Qt Foundation. The licenses are as published by the Free Software
-## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-## included in the packaging of this file. Please review the following
-## information to ensure the GNU General Public License requirements will
-## be met: https://www.gnu.org/licenses/gpl-2.0.html and
-## https://www.gnu.org/licenses/gpl-3.0.html.
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-from __future__ import print_function, absolute_import
-
-"""
-existence_test.py
------------------
-
-A test that checks all function signatures if they still exist.
-
-Definition of the rules used:
-=============================
-
-Any entry
----------
-
- Exists in file Exists in Binary Result
- + + ok
- + - error
- - + ok
-
-List entry
-----------
-
- Arity in file Arity in Binary Result
- n n ok
- n < n error
- n > n ok
-
-"""
-
-import os
-import sys
-import unittest
-from textwrap import dedent
-from init_platform import (enum_all, generate_all, is_ci,
- get_effective_refpath, get_refpath, qt_version)
-from util import isolate_warnings, check_warnings, suppress_warnings, warn
-from PySide2 import *
-
-refPath = get_refpath()
-effectiveRefPath = get_effective_refpath()
-effectiveRefPathRoot = os.path.splitext(effectiveRefPath)[0]
-pyc = effectiveRefPathRoot + ".pyc"
-if os.path.exists(pyc) and not os.path.exists(effectiveRefPath):
- # on Python2 the pyc file would be imported
- os.unlink(pyc)
-module = os.path.basename(effectiveRefPathRoot)
-
-if refPath != effectiveRefPath:
- print("*** Falling back to ", effectiveRefPath, " since expected ",
- refPath, " does not exist")
-
-home_dir = effectiveRefPath
-for _ in "abcde":
- home_dir = os.path.dirname(home_dir)
-shortpath = os.path.relpath(effectiveRefPath, home_dir)
-try:
- exec("import {} as sig_exists".format(module))
- print("found:", shortpath)
- have_refmodule = True
-except ImportError:
- print("*** not found:", shortpath)
- have_refmodule = False
-except SyntaxError:
- print("*** not a python file, removed:", shortpath)
- os.unlink(effectiveRefPath)
- have_refmodule = False
-if have_refmodule and not hasattr(sig_exists, "dict"):
- print("*** wrong module without 'dict', removed:", shortpath)
- os.unlink(effectiveRefPath)
- have_refmodule = False
-
-
-@unittest.skipIf(not have_refmodule,
- "not activated for this platform or version")
-class TestSignaturesExists(unittest.TestCase):
- """
- This is the current simple attempt to support a signature self test.
- You can activate it for your platform by supplying your own reference
- file. Simply run init_platform.py and add the generated file to the
- repository.
- """
-
- @staticmethod
- def _do_the_test(found_sigs):
-
- def multi_signature_msg(key, actual, expect):
- len_act = len(actual) if type(actual) is list else 1
- len_exp = len(expect) if type(expect) is list else 1
- return ("multi-signature count mismatch for '{key}'. "
- "Actual {len_act} {actual} vs. expected {len_exp} {expect}')"
- .format(**locals()))
-
- for key, value in sig_exists.dict.items():
- name = key.rsplit(".", 1)[-1]
- if name in ("next", "__next__"): # ignore problematic cases
- continue
- if key not in found_sigs:
- warn("missing key: '{}'".format(key))
- else:
- found_val = found_sigs[key]
- if type(value) is list and (
- type(found_val) is tuple or
- len(found_val) < len(value)):
- # We check that nothing got lost. But it is ok when an older
- # registry file does not know all variants, yet!
- warn(multi_signature_msg(key, found_val, value))
-
- def test_signatures(self):
- found_sigs = enum_all()
- with isolate_warnings():
- self._do_the_test(found_sigs)
- if is_ci and check_warnings():
- raise RuntimeError("There are errors, see above.")
-
- def test_error_is_raised(self):
- found_sigs = enum_all()
- # Make sure that errors are actually raised.
- search = list(found_sigs.keys())
- pos = 42 # arbitrary and historycal, could be 0 as well
-
- # We try all variants:
- while type(found_sigs[search[pos]]) is not tuple:
- pos += 1
- tuple_key = search[pos]
- while type(found_sigs[search[pos]]) is not list:
- pos += 1
- list_key = search[pos]
-
- test_sigs = found_sigs.copy()
- test_sigs.pop(tuple_key)
- with isolate_warnings(), suppress_warnings():
- self._do_the_test(test_sigs)
- self.assertTrue(check_warnings(), "you warn about too few entries")
-
- test_sigs = found_sigs.copy()
- test_sigs["whatnot"] = ("nothing", "real")
- with isolate_warnings(), suppress_warnings():
- self._do_the_test(test_sigs)
- self.assertFalse(check_warnings(), "you ignore too many entries")
-
- test_sigs = found_sigs.copy()
- repl = test_sigs[list_key]
- repl.pop(0)
- test_sigs[list_key] = repl
- with isolate_warnings(), suppress_warnings():
- self._do_the_test(test_sigs)
- # An arity that is now missing is an error.
- self.assertTrue(check_warnings(), "you warn when arity got smaller")
-
- test_sigs = found_sigs.copy()
- repl = test_sigs[list_key]
- repl = repl[0]
- assert type(repl) is tuple
- test_sigs[list_key] = repl
- with isolate_warnings(), suppress_warnings():
- self._do_the_test(test_sigs)
- # An arity that is now missing is an error.
- self.assertTrue(check_warnings(), "you warn when list degraded to tuple")
-
- test_sigs = found_sigs.copy()
- repl = test_sigs[list_key]
- repl = repl + repl
- test_sigs[list_key] = repl
- with isolate_warnings(), suppress_warnings():
- self._do_the_test(test_sigs)
- # More arities are ignored, because we might test an older version.
- self.assertFalse(check_warnings(), "you ignore when arity got bigger")
-
-
-tested_versions = (5, 6), (5, 9), (5, 11), (5, 12)
-
-if not have_refmodule and is_ci and qt_version()[:2] in tested_versions:
- class TestFor_CI_Init(unittest.TestCase):
- """
- This helper class generates the reference file for CI.
- It creates an output listing that can be used to check
- the result back in.
- """
- generate_all()
- sys.stderr.flush()
- print("BEGIN_FILE", shortpath, file=sys.stderr)
- with open(refPath) as f:
- print(f.read(), file=sys.stderr)
- print("END_FILE", shortpath, file=sys.stderr)
- sys.stderr.flush()
- raise RuntimeError(dedent("""
- {line}
- ** This is the initial call. You should check this file in:
- ** {}
- **""").format(shortpath, line=79 * "*"))
-
-if __name__ == '__main__':
- unittest.main()