test_loader.py 3.2 KB

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