提交 5bd82636 编写于 作者: C Cleber Rosa

avocado/core/loader.py: implement ordered test discovery

The order in which test classes and methods are found is relevant
to the loader result.  Currently, this ordering is not dependable
as the loader findings are stored on a regular dictionary.

This change makes the ordering dependable, and so happens to also
make the test pass on a Python 3 environment.
Signed-off-by: NCleber Rosa <crosa@redhat.com>
上级 17554539
......@@ -18,6 +18,7 @@ Test loader module.
"""
import ast
import collections
import imp
import inspect
import os
......@@ -642,7 +643,7 @@ class FileLoader(TestLoader):
# The name used, in case of 'import avocado as avocadolib'
mod_import_name = None
# The resulting test classes
result = {}
result = collections.OrderedDict()
disabled = set()
if os.path.isdir(path):
......
......@@ -465,16 +465,16 @@ class LoaderTest(unittest.TestCase):
with avocado_test_tags as test:
test_suite = self.loader.discover(test.path, loader.ALL)
self.assertEqual(len(test_suite), 5)
self.assertEqual(test_suite[0][0], 'SafeTest')
self.assertEqual(test_suite[0][1]['methodName'], 'test_safe')
self.assertEqual(test_suite[0][0], 'FastTest')
self.assertEqual(test_suite[0][1]['methodName'], 'test_fast')
self.assertEqual(test_suite[1][0], 'FastTest')
self.assertEqual(test_suite[1][1]['methodName'], 'test_fast')
self.assertEqual(test_suite[2][0], 'FastTest')
self.assertEqual(test_suite[2][1]['methodName'], 'test_fast_other')
self.assertEqual(test_suite[1][1]['methodName'], 'test_fast_other')
self.assertEqual(test_suite[2][0], 'SlowTest')
self.assertEqual(test_suite[2][1]['methodName'], 'test_slow')
self.assertEqual(test_suite[3][0], 'SlowUnsafeTest')
self.assertEqual(test_suite[3][1]['methodName'], 'test_slow_unsafe')
self.assertEqual(test_suite[4][0], 'SlowTest')
self.assertEqual(test_suite[4][1]['methodName'], 'test_slow')
self.assertEqual(test_suite[4][0], 'SafeTest')
self.assertEqual(test_suite[4][1]['methodName'], 'test_safe')
filtered = loader.filter_test_tags(test_suite, ['fast,net'])
self.assertEqual(len(filtered), 2)
self.assertEqual(filtered[0][0], 'FastTest')
......@@ -499,10 +499,10 @@ class LoaderTest(unittest.TestCase):
self.assertEqual(filtered[0][1]['methodName'], 'test_fast')
self.assertEqual(filtered[1][0], 'FastTest')
self.assertEqual(filtered[1][1]['methodName'], 'test_fast_other')
self.assertEqual(filtered[2][0], 'SlowUnsafeTest')
self.assertEqual(filtered[2][1]['methodName'], 'test_slow_unsafe')
self.assertEqual(filtered[3][0], 'SlowTest')
self.assertEqual(filtered[3][1]['methodName'], 'test_slow')
self.assertEqual(filtered[2][0], 'SlowTest')
self.assertEqual(filtered[2][1]['methodName'], 'test_slow')
self.assertEqual(filtered[3][0], 'SlowUnsafeTest')
self.assertEqual(filtered[3][1]['methodName'], 'test_slow_unsafe')
filtered = loader.filter_test_tags(test_suite,
['-fast,-slow'])
self.assertEqual(len(filtered), 1)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册