diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-07-09 18:12:32 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-07-09 18:12:32 -0400 |
| commit | bbb81e682c16198f7935d9a82403b7ae75b4d8a8 (patch) | |
| tree | f1383b26e4fd9868647e14490d82f70b8704ccf8 /lib/sqlalchemy/testing | |
| parent | 2b85e80d75f58a7691533a44693378e28ead752c (diff) | |
| download | sqlalchemy-bbb81e682c16198f7935d9a82403b7ae75b4d8a8.tar.gz | |
- support __only_on__ and __backend__ at the same time
Diffstat (limited to 'lib/sqlalchemy/testing')
| -rw-r--r-- | lib/sqlalchemy/testing/plugin/plugin_base.py | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/lib/sqlalchemy/testing/plugin/plugin_base.py b/lib/sqlalchemy/testing/plugin/plugin_base.py index 061848e27..a06827242 100644 --- a/lib/sqlalchemy/testing/plugin/plugin_base.py +++ b/lib/sqlalchemy/testing/plugin/plugin_base.py @@ -318,7 +318,7 @@ def want_class(cls): def generate_sub_tests(cls, module): if getattr(cls, '__backend__', False): - for cfg in config.Config.all_configs(): + for cfg in _possible_configs_for_cls(cls): name = "%s_%s_%s" % (cls.__name__, cfg.db.name, cfg.db.driver) subcls = type( name, @@ -370,8 +370,25 @@ def after_test(test): engines.testing_reaper._after_test_ctx() warnings.resetwarnings() -def _do_skips(cls): +def _possible_configs_for_cls(cls): all_configs = set(config.Config.all_configs()) + if cls.__unsupported_on__: + spec = exclusions.db_spec(*cls.__unsupported_on__) + for config_obj in list(all_configs): + if spec(config_obj): + all_configs.remove(config_obj) + + if getattr(cls, '__only_on__', None): + spec = exclusions.db_spec(*util.to_list(cls.__only_on__)) + for config_obj in list(all_configs): + if not spec(config_obj): + all_configs.remove(config_obj) + + + return all_configs + +def _do_skips(cls): + all_configs = _possible_configs_for_cls(cls) reasons = [] if hasattr(cls, '__requires__'): @@ -398,19 +415,6 @@ def _do_skips(cls): if all_configs.difference(non_preferred): all_configs.difference_update(non_preferred) - if cls.__unsupported_on__: - spec = exclusions.db_spec(*cls.__unsupported_on__) - for config_obj in list(all_configs): - if spec(config_obj): - all_configs.remove(config_obj) - - if getattr(cls, '__only_on__', None): - spec = exclusions.db_spec(*util.to_list(cls.__only_on__)) - for config_obj in list(all_configs): - if not spec(config_obj): - all_configs.remove(config_obj) - - if getattr(cls, '__skip_if__', False): for c in getattr(cls, '__skip_if__'): if c(): |
