[issue21500] Make use of the load_tests protocol in test_importlib packages

2014-07-23 Thread Zachary Ware

Zachary Ware added the comment:

This has been covered by #22002.

--
nosy: +zach.ware
resolution:  - duplicate
stage: needs patch - resolved
status: open - closed
superseder:  - Make full use of test discovery in test subpackages

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21500
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21500] Make use of the load_tests protocol in test_importlib packages

2014-05-30 Thread R. David Murray

R. David Murray added the comment:

Personally I think the fact that this doesn't work by default is a bug in 
unittest.  See issue 15007.  Issue 16662 may also be related.

--
nosy: +r.david.murray

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21500
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue21500] Make use of the load_tests protocol in test_importlib packages

2014-05-13 Thread Eric Snow

New submission from Eric Snow:

Right now to run importlib tests you can do either of the following:

./python -m tests test_importlib
./python -m tests.test_importlib

Both make use of the regrtest infrastructure.  For test submodules the commands 
are similar:

./python -m tests test_importlib.test_api
./python -m tests.test_importlib.test_api

You can also use unittest directly when testing specific test modules:

./python -m unittest tests.test_importlib.test_api
./python -m unittest 
tests.test_importlib.test_api.Source_ReloadTests.test_reload_location_changed

However, currently you cannot use unittest directly with a test package:

./python -m unittest tests.test_importlib
./python -m unittest tests.test_importlib.source

It would be nice to be able to do so, rather than switching back and forth 
between the unittest CLI and the regrtest CLI.

The change to do so is relatively straight-forward using the load_tests 
protocol*.  Just add the following to the __init__.py of the test packages:

 def load_tests(loader, tests, pattern):
 from test import TEST_HOME_DIR as topdir
 startdir = os.path.dirname(__name__)
 pkgtests = loader.discover(startdir, pattern or 'test*.py', topdir)
 tests.addTests(pkgtests)
 return tests

The boilerplate could even be moved to tests.support as a factory function:

 def make_load_tests(modfilename):
 from test import TEST_HOME_DIR as topdir
 startdir = os.path.dirname(modfilename)
 def load_tests(loader, tests, pattern):
 pkgtests = loader.discover(startdir, pattern or 'test*.py', topdir)
 tests.addTests(pkgtests)
 return tests
 return load_tests

In the test package __init__.py:

  load_tests = support.make_load_tests(__name__)

Then using unittest directly with an importlib test package will work as 
expected.  This is also something that could readily apply to any other test 
packages in the suite, which is why the factory function in test.support makes 
sense.

* https://docs.python.org/2/library/unittest.html#load-tests-protocol

--
components: Tests
messages: 218476
nosy: brett.cannon, eric.snow
priority: low
severity: normal
stage: needs patch
status: open
title: Make use of the load_tests protocol in test_importlib packages
type: enhancement
versions: Python 3.5

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue21500
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com