From b8e7c8ee8fe3be1d8f47e208491ba485d798e893 Mon Sep 17 00:00:00 2001
From: Mashiro <57566630+HAOCHENYE@users.noreply.github.com>
Date: Sat, 19 Feb 2022 12:22:15 +0800
Subject: [PATCH] Fix test_auto_argparse when pytest has multiple arguments
 (#34)

---
 mmengine/config/config.py                          | 6 +++++-
 tests/data/config/py_config/test_code_in_config.py | 2 +-
 tests/test_config/test_config.py                   | 6 ++++--
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/mmengine/config/config.py b/mmengine/config/config.py
index 4b7602d9..82eecda3 100644
--- a/mmengine/config/config.py
+++ b/mmengine/config/config.py
@@ -4,7 +4,6 @@ import copy
 import os
 import os.path as osp
 import platform
-import re
 import shutil
 import sys
 import tempfile
@@ -26,6 +25,11 @@ DELETE_KEY = '_delete_'
 DEPRECATION_KEY = '_deprecation_'
 RESERVED_KEYS = ['filename', 'text', 'pretty_text']
 
+if platform.system() == 'Windows':
+    import regex as re
+else:
+    import re  # type: ignore
+
 
 class ConfigDict(Dict):
     """A dictionary for config which has the same interface as python's built-
diff --git a/tests/data/config/py_config/test_code_in_config.py b/tests/data/config/py_config/test_code_in_config.py
index cd59844b..d39c7cff 100644
--- a/tests/data/config/py_config/test_code_in_config.py
+++ b/tests/data/config/py_config/test_code_in_config.py
@@ -1,5 +1,5 @@
 # Copyright (c) OpenMMLab. All rights reserved.
-from mmcv import Config  # isort:skip
+from mmengine import Config  # isort:skip
 
 cfg = Config.fromfile('tests/data/config/py_config/simple_config.py')
 item5 = cfg.item1[0] + cfg.item2.a
diff --git a/tests/test_config/test_config.py b/tests/test_config/test_config.py
index dc80de8c..87f08c82 100644
--- a/tests/test_config/test_config.py
+++ b/tests/test_config/test_config.py
@@ -169,7 +169,9 @@ class TestConfig:
             cfg.merge_from_dict(input_options, allow_list_keys=True)
 
     def test_auto_argparser(self):
-        tmp = sys.argv[1]
+        # Temporarily make sys.argv only has one argument and keep backups
+        tmp = sys.argv[1:]
+        sys.argv = sys.argv[:2]
         sys.argv[1] = osp.join(
             self.data_path,
             'config/py_config/test_merge_from_multiple_bases.py')
@@ -181,7 +183,7 @@ class TestConfig:
                 assert not getattr(args, key)
         # TODO currently do not support nested keys, bool args will be
         #  overwritten by int
-        sys.argv[1] = tmp
+        sys.argv.extend(tmp)
 
     def test_dump(self, tmp_path):
         file_path = 'config/py_config/test_merge_from_multiple_bases.py'
-- 
GitLab