tests. Although the two are aliases of one another, it makes sense to be consistent and to use the one that the DB API prefers as well.
132 lines
4.3 KiB
Python
132 lines
4.3 KiB
Python
#------------------------------------------------------------------------------
|
|
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
|
#
|
|
# Portions Copyright 2007-2015, Anthony Tuininga. All rights reserved.
|
|
#
|
|
# Portions Copyright 2001-2007, Computronix (Canada) Ltd., Edmonton, Alberta,
|
|
# Canada. All rights reserved.
|
|
#------------------------------------------------------------------------------
|
|
|
|
"""Runs all defined unit tests."""
|
|
|
|
from __future__ import print_function
|
|
|
|
import cx_Oracle
|
|
import imp
|
|
import os
|
|
import sys
|
|
import TestEnv
|
|
import unittest
|
|
|
|
inSetup = (os.path.basename(sys.argv[0]).lower() == "setup.py")
|
|
|
|
print("Running tests for cx_Oracle version", cx_Oracle.version,
|
|
"built at", cx_Oracle.buildtime)
|
|
print("File:", cx_Oracle.__file__)
|
|
print("Client Version:", ".".join(str(i) for i in cx_Oracle.clientversion()))
|
|
sys.stdout.flush()
|
|
|
|
connection = cx_Oracle.connect(TestEnv.MAIN_USER, TestEnv.MAIN_PASSWORD,
|
|
TestEnv.CONNECT_STRING, encoding = TestEnv.ENCODING,
|
|
nencoding = TestEnv.NENCODING)
|
|
print("Server Version:", connection.version)
|
|
sys.stdout.flush()
|
|
|
|
if len(sys.argv) > 1 and not inSetup:
|
|
moduleNames = [os.path.splitext(v)[0] for v in sys.argv[1:]]
|
|
else:
|
|
moduleNames = [
|
|
"Module",
|
|
"Connection",
|
|
"Cursor",
|
|
"CursorVar",
|
|
"DateTimeVar",
|
|
"DMLReturning",
|
|
"Error",
|
|
"IntervalVar",
|
|
"LobVar",
|
|
"LongVar",
|
|
"NCharVar",
|
|
"NumberVar",
|
|
"ObjectVar",
|
|
"SessionPool",
|
|
"StringVar",
|
|
"TimestampVar",
|
|
"AQ",
|
|
"Rowid",
|
|
"Subscription"
|
|
]
|
|
clientVersion = cx_Oracle.clientversion()
|
|
if clientVersion[:2] >= (12, 1):
|
|
moduleNames.append("BooleanVar")
|
|
moduleNames.append("Features12_1")
|
|
if clientVersion[:2] >= (18, 3):
|
|
moduleNames.append("SodaDatabase")
|
|
moduleNames.append("SodaCollection")
|
|
|
|
class BaseTestCase(unittest.TestCase):
|
|
|
|
def getConnection(self, **kwargs):
|
|
import cx_Oracle
|
|
import TestEnv
|
|
return cx_Oracle.connect(TestEnv.MAIN_USER, TestEnv.MAIN_PASSWORD,
|
|
TestEnv.CONNECT_STRING, encoding = TestEnv.ENCODING,
|
|
nencoding = TestEnv.NENCODING, **kwargs)
|
|
|
|
def setUp(self):
|
|
import TestEnv
|
|
self.connection = self.getConnection()
|
|
self.cursor = self.connection.cursor()
|
|
self.cursor.arraysize = TestEnv.ARRAY_SIZE
|
|
|
|
def tearDown(self):
|
|
del self.cursor
|
|
del self.connection
|
|
|
|
|
|
# determine character set ratio in use in order to determine the buffer size
|
|
# that will be reported in cursor.description; this depends on the database
|
|
# character set and the client character set
|
|
cursor = connection.cursor()
|
|
cursor.execute("select 'X' from dual")
|
|
col, = cursor.description
|
|
csratio = col[3]
|
|
|
|
loader = unittest.TestLoader()
|
|
runner = unittest.TextTestRunner(verbosity = 2)
|
|
failures = []
|
|
for name in moduleNames:
|
|
fileName = name + ".py"
|
|
print()
|
|
print("Running tests in", fileName)
|
|
if inSetup:
|
|
fileName = os.path.join("test", fileName)
|
|
module = imp.new_module(name)
|
|
setattr(module, "CLIENT_VERSION", cx_Oracle.clientversion())
|
|
setattr(module, "USERNAME", TestEnv.MAIN_USER)
|
|
setattr(module, "PASSWORD", TestEnv.MAIN_PASSWORD)
|
|
setattr(module, "PROXY_USERNAME", TestEnv.PROXY_USER)
|
|
setattr(module, "PROXY_PASSWORD", TestEnv.PROXY_PASSWORD)
|
|
setattr(module, "TNSENTRY", TestEnv.CONNECT_STRING)
|
|
setattr(module, "ENCODING", TestEnv.ENCODING)
|
|
setattr(module, "NENCODING", TestEnv.NENCODING)
|
|
setattr(module, "ARRAY_SIZE", TestEnv.ARRAY_SIZE)
|
|
setattr(module, "CS_RATIO", csratio)
|
|
setattr(module, "TestCase", unittest.TestCase)
|
|
setattr(module, "BaseTestCase", BaseTestCase)
|
|
setattr(module, "cx_Oracle", cx_Oracle)
|
|
if sys.version_info[0] >= 3:
|
|
exec(open(fileName, encoding = "UTF-8").read(), module.__dict__)
|
|
else:
|
|
execfile(fileName, module.__dict__)
|
|
tests = loader.loadTestsFromModule(module)
|
|
result = runner.run(tests)
|
|
if not result.wasSuccessful():
|
|
failures.append(name)
|
|
if failures:
|
|
print("***** Some tests in the following modules failed. *****")
|
|
for name in failures:
|
|
print(" %s" % name)
|
|
sys.exit(1)
|
|
|