[PATCH] emerge: use parse_intermixed_args when available (bug 784566)

Zac Medico <[email protected]> Tue, 20 Apr 2021 21:34:05 -0700
Newsgroups gmane.linux.gentoo.portage.devel
Message-ID <[email protected]>
The included unit test case previously failed with this error:

  emerge: error: unrecognized arguments: dev-libs/A

Bug: https://bugs.gentoo.org/784566
Signed-off-by: Zac Medico <[email protected]>
---
 lib/_emerge/main.py                     |  2 +-
 lib/portage/tests/emerge/test_simple.py | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/_emerge/main.py b/lib/_emerge/main.py
index 31e690584..191be6479 100644
--- a/lib/_emerge/main.py
+++ b/lib/_emerge/main.py
@@ -834,7 +834,7 @@ def parse_opts(tmpcmdline, silent=False):
 
 	tmpcmdline = insert_optional_args(tmpcmdline)
 
-	myoptions = parser.parse_args(args=tmpcmdline)
+	myoptions = getattr(parser, "parse_intermixed_args", parser.parse_args)(args=tmpcmdline)
 
 	if myoptions.alert in true_y:
 		myoptions.alert = True
diff --git a/lib/portage/tests/emerge/test_simple.py b/lib/portage/tests/emerge/test_simple.py
index 6e282337f..5b110407f 100644
--- a/lib/portage/tests/emerge/test_simple.py
+++ b/lib/portage/tests/emerge/test_simple.py
@@ -1,6 +1,7 @@
 # Copyright 2011-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
+import argparse
 import subprocess
 
 import portage
@@ -289,7 +290,14 @@ call_has_and_best_version() {
 			port=binhost_server.server_port,
 			path=binhost_remote_path)
 
-		test_commands = (
+		test_commands = ()
+
+		if hasattr(argparse.ArgumentParser, "parse_intermixed_args"):
+			test_commands += (
+				emerge_cmd + ("--oneshot", "dev-libs/A", "-v", "dev-libs/A"),
+			)
+
+		test_commands += (
 			emerge_cmd + ("--usepkgonly", "--root", cross_root, "--quickpkg-direct=y", "--quickpkg-direct-root", "/", "dev-libs/A"),
 			emerge_cmd + ("--usepkgonly", "--quickpkg-direct=y", "--quickpkg-direct-root", cross_root, "dev-libs/A"),
 			env_update_cmd,
-- 
2.26.2