+++ /dev/null
-# plugin/noseplugin.py
-# Copyright (C) 2005-2019 the SQLAlchemy authors and contributors
-# <see AUTHORS file>
-#
-# This module is part of SQLAlchemy and is released under
-# the MIT License: http://www.opensource.org/licenses/mit-license.php
-
-"""Enhance nose with extra options and behaviors for running SQLAlchemy tests.
-
-Must be run via ./sqla_nose.py so that it is imported in the expected
-way (e.g. as a package-less import).
-
-"""
-
-try:
- # installed by bootstrap.py
- import sqla_plugin_base as plugin_base
-except ImportError:
- # assume we're a package, use traditional import
- from . import plugin_base
-
-
-import os
-import sys
-
-import nose
-from nose.plugins import Plugin
-
-
-fixtures = None
-
-py3k = sys.version_info >= (3, 0)
-
-
-class NoseSQLAlchemy(Plugin):
- enabled = True
-
- name = "sqla_testing"
- score = 100
-
- def options(self, parser, env=os.environ):
- Plugin.options(self, parser, env)
- opt = parser.add_option
-
- def make_option(name, **kw):
- callback_ = kw.pop("callback", None) or kw.pop(
- "zeroarg_callback", None
- )
- if callback_:
-
- def wrap_(option, opt_str, value, parser):
- callback_(opt_str, value, parser)
-
- kw["callback"] = wrap_
- opt(name, **kw)
-
- plugin_base.setup_options(make_option)
- plugin_base.read_config()
-
- def configure(self, options, conf):
- super(NoseSQLAlchemy, self).configure(options, conf)
- plugin_base.pre_begin(options)
-
- plugin_base.set_coverage_flag(options.enable_plugin_coverage)
-
- plugin_base.set_skip_test(nose.SkipTest)
-
- def begin(self):
- global fixtures
- from sqlalchemy.testing import fixtures # noqa
-
- plugin_base.post_begin()
-
- def describeTest(self, test):
- return ""
-
- def wantFunction(self, fn):
- return False
-
- def wantMethod(self, fn):
- if py3k:
- if not hasattr(fn.__self__, "cls"):
- return False
- cls = fn.__self__.cls
- else:
- cls = fn.im_class
- return plugin_base.want_method(cls, fn)
-
- def wantClass(self, cls):
- return plugin_base.want_class(cls)
-
- def beforeTest(self, test):
- if not hasattr(test.test, "cls"):
- return
- plugin_base.before_test(
- test,
- test.test.cls.__module__,
- test.test.cls,
- test.test.method.__name__,
- )
-
- def afterTest(self, test):
- plugin_base.after_test(test)
-
- def startContext(self, ctx):
- if not isinstance(ctx, type) or not issubclass(ctx, fixtures.TestBase):
- return
- plugin_base.start_test_class(ctx)
-
- def stopContext(self, ctx):
- if not isinstance(ctx, type) or not issubclass(ctx, fixtures.TestBase):
- return
- plugin_base.stop_test_class(ctx)
"""Testing extensions.
this module is designed to work as a testing-framework-agnostic library,
-so that we can continue to support nose and also begin adding new
-functionality via py.test.
+created so that multiple test frameworks can be supported at once
+(mostly so that we can migrate to new ones). The current target
+is py.test.
"""
for fn in post_configure:
fn(options, file_config)
- # late imports, has to happen after config as well
- # as nose plugins like coverage
+ # late imports, has to happen after config.
global util, fixtures, engines, exclusions, assertions
global warnings, profiling, config, testing
from sqlalchemy import testing # noqa
def before_test(test, test_module_name, test_class, test_name):
- # like a nose id, e.g.:
+ # format looks like:
# "test.aaa_profiling.test_compiler.CompileTest.test_update_whereclause"
name = getattr(test_class, "_sa_orig_cls_name", test_class.__name__)
+++ /dev/null
-#!/usr/bin/env python
-"""
-nose runner script.
-
-This script is a front-end to "nosetests" which
-installs SQLAlchemy's testing plugin into the local environment.
-
-"""
-import os
-import sys
-
-import nose
-
-
-if not sys.flags.no_user_site:
- sys.path.insert(
- 0,
- os.path.join(os.path.dirname(os.path.abspath(__file__)), 'lib')
- )
-
-
-# use bootstrapping so that test plugins are loaded
-# without touching the main library before coverage starts
-bootstrap_file = os.path.join(
- os.path.dirname(__file__), "lib", "sqlalchemy",
- "testing", "plugin", "bootstrap.py"
-)
-
-with open(bootstrap_file) as f:
- code = compile(f.read(), "bootstrap.py", 'exec')
- to_bootstrap = "nose"
- exec(code, globals(), locals())
-
-
-from noseplugin import NoseSQLAlchemy # noqa
-nose.main(addplugins=[NoseSQLAlchemy()])