test_loader.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/usr/bin/env python3
  2. #
  3. # Copyright (C) 2016 Intel Corporation
  4. #
  5. # SPDX-License-Identifier: MIT
  6. #
  7. import os
  8. import unittest
  9. from common import setup_sys_path, TestBase
  10. setup_sys_path()
  11. from oeqa.core.exception import OEQADependency
  12. from oeqa.core.utils.test import getSuiteModules, getSuiteCasesIDs
  13. class TestLoader(TestBase):
  14. def test_fail_empty_filter(self):
  15. filters = {'oetag' : ''}
  16. expect = 'Filter oetag specified is empty'
  17. msg = 'Expected TypeError exception for having invalid filter'
  18. try:
  19. # Must throw TypeError because empty filter
  20. tc = self._testLoader(filters=filters)
  21. self.fail(msg)
  22. except TypeError as e:
  23. result = True if expect in str(e) else False
  24. self.assertTrue(result, msg=msg)
  25. def test_fail_invalid_filter(self):
  26. filters = {'invalid' : 'good'}
  27. expect = 'filter but not declared in any of'
  28. msg = 'Expected TypeError exception for having invalid filter'
  29. try:
  30. # Must throw TypeError because invalid filter
  31. tc = self._testLoader(filters=filters)
  32. self.fail(msg)
  33. except TypeError as e:
  34. result = True if expect in str(e) else False
  35. self.assertTrue(result, msg=msg)
  36. def test_fail_duplicated_module(self):
  37. cases_path = self.cases_path
  38. invalid_path = os.path.join(cases_path, 'loader', 'invalid')
  39. self.cases_path = [self.cases_path, invalid_path]
  40. expect = 'Duplicated oetag module found in'
  41. msg = 'Expected ImportError exception for having duplicated module'
  42. try:
  43. # Must throw ImportEror because duplicated module
  44. tc = self._testLoader()
  45. self.fail(msg)
  46. except ImportError as e:
  47. result = True if expect in str(e) else False
  48. self.assertTrue(result, msg=msg)
  49. finally:
  50. self.cases_path = cases_path
  51. def test_filter_modules(self):
  52. expected_modules = {'oetag'}
  53. tc = self._testLoader(modules=expected_modules)
  54. modules = getSuiteModules(tc.suites)
  55. msg = 'Expected just %s modules' % ', '.join(expected_modules)
  56. self.assertEqual(modules, expected_modules, msg=msg)
  57. def test_filter_cases(self):
  58. modules = ['oetag', 'data']
  59. expected_cases = {'data.DataTest.testDataOk',
  60. 'oetag.TagTest.testTagGood'}
  61. tc = self._testLoader(modules=modules, tests=expected_cases)
  62. cases = set(getSuiteCasesIDs(tc.suites))
  63. msg = 'Expected just %s cases' % ', '.join(expected_cases)
  64. self.assertEqual(cases, expected_cases, msg=msg)
  65. def test_import_from_paths(self):
  66. cases_path = self.cases_path
  67. cases2_path = os.path.join(cases_path, 'loader', 'valid')
  68. expected_modules = {'another'}
  69. self.cases_path = [self.cases_path, cases2_path]
  70. tc = self._testLoader(modules=expected_modules)
  71. modules = getSuiteModules(tc.suites)
  72. self.cases_path = cases_path
  73. msg = 'Expected modules from two different paths'
  74. self.assertEqual(modules, expected_modules, msg=msg)
  75. if __name__ == '__main__':
  76. unittest.main()