Przeglądaj źródła

Tools: Make idf.py tests independent on extra extensions

Sergei Silnov 3 lat temu
rodzic
commit
360183dd8d
1 zmienionych plików z 31 dodań i 14 usunięć
  1. 31 14
      tools/test_idf_py/test_idf_py.py

+ 31 - 14
tools/test_idf_py/test_idf_py.py

@@ -6,7 +6,7 @@
 import os
 import subprocess
 import sys
-import unittest
+from unittest import TestCase, main, mock
 
 try:
     from StringIO import StringIO
@@ -25,7 +25,20 @@ extension_path = os.path.join(current_dir, 'test_idf_extensions', 'test_ext')
 link_path = os.path.join(current_dir, '..', 'idf_py_actions', 'test_ext')
 
 
-class TestExtensions(unittest.TestCase):
+class TestWithoutExtensions(TestCase):
+    @classmethod
+    def setUpClass(cls):
+        # Disable the component manager and extra extensions for these tests
+        cls.env_patcher = mock.patch.dict(os.environ, {
+            'IDF_COMPONENT_MANAGER': '0',
+            'IDF_EXTRA_ACTIONS_PATH': '',
+        })
+        cls.env_patcher.start()
+
+        super().setUpClass()
+
+
+class TestExtensions(TestWithoutExtensions):
     def test_extension_loading(self):
         try:
             os.symlink(extension_path, link_path)
@@ -67,7 +80,7 @@ class TestExtensions(unittest.TestCase):
             os.remove(link_path)
 
 
-class TestDependencyManagement(unittest.TestCase):
+class TestDependencyManagement(TestWithoutExtensions):
     def test_dependencies(self):
         result = idf.init_cli()(
             args=['--dry-run', 'flash'],
@@ -118,7 +131,7 @@ class TestDependencyManagement(unittest.TestCase):
             'WARNING: Command "clean" is found in the list of commands more than once.', capturedOutput.getvalue())
 
 
-class TestVerboseFlag(unittest.TestCase):
+class TestVerboseFlag(TestWithoutExtensions):
     def test_verbose_messages(self):
         output = subprocess.check_output(
             [
@@ -144,7 +157,7 @@ class TestVerboseFlag(unittest.TestCase):
         self.assertNotIn('Verbose mode on', output)
 
 
-class TestGlobalAndSubcommandParameters(unittest.TestCase):
+class TestGlobalAndSubcommandParameters(TestWithoutExtensions):
     def test_set_twice_same_value(self):
         """Can set -D twice: globally and for subcommand if values are the same"""
 
@@ -163,21 +176,24 @@ class TestGlobalAndSubcommandParameters(unittest.TestCase):
             )
 
 
-class TestDeprecations(unittest.TestCase):
+class TestDeprecations(TestWithoutExtensions):
     def test_exit_with_error_for_subcommand(self):
         try:
-            subprocess.check_output([sys.executable, idf_py_path, '-C%s' % current_dir, 'test-2'], env=os.environ,
-                                    stderr=subprocess.STDOUT)
+            subprocess.check_output(
+                [sys.executable, idf_py_path, '-C%s' % current_dir, 'test-2'], env=os.environ, stderr=subprocess.STDOUT)
         except subprocess.CalledProcessError as e:
             self.assertIn('Error: Command "test-2" is deprecated and was removed.', e.output.decode('utf-8', 'ignore'))
 
     def test_exit_with_error_for_option(self):
         try:
-            subprocess.check_output([sys.executable, idf_py_path, '-C%s' % current_dir, '--test-5=asdf'],
-                                    env=os.environ, stderr=subprocess.STDOUT)
+            subprocess.check_output(
+                [sys.executable, idf_py_path, '-C%s' % current_dir, '--test-5=asdf'],
+                env=os.environ,
+                stderr=subprocess.STDOUT)
         except subprocess.CalledProcessError as e:
-            self.assertIn('Error: Option "test_5" is deprecated since v2.0 and was removed in v3.0.',
-                          e.output.decode('utf-8', 'ignore'))
+            self.assertIn(
+                'Error: Option "test_5" is deprecated since v2.0 and was removed in v3.0.',
+                e.output.decode('utf-8', 'ignore'))
 
     def test_deprecation_messages(self):
         output = subprocess.check_output(
@@ -195,7 +211,8 @@ class TestDeprecations(unittest.TestCase):
                 'ta',
                 'test-1',
             ],
-            env=os.environ, stderr=subprocess.STDOUT).decode('utf-8', 'ignore')
+            env=os.environ,
+            stderr=subprocess.STDOUT).decode('utf-8', 'ignore')
 
         self.assertIn('Warning: Option "test_sub_1" is deprecated and will be removed in future versions.', output)
         self.assertIn(
@@ -211,4 +228,4 @@ class TestDeprecations(unittest.TestCase):
 
 
 if __name__ == '__main__':
-    unittest.main()
+    main()