[PATCH v2 12/14] Use CompletedProcess in git config tests

Tamir Duberstein <[email protected]>
Newsgroups org.kernel.linux.tools
Message-ID <[email protected]>
Replace MagicMock subprocess results with real
subprocess.CompletedProcess values in the git config helper tests. This
keeps the behavior the same while giving the mocks a concrete,
type-checked shape.

Signed-off-by: Tamir Duberstein <[email protected]>
---
 tests/test_node.py | 77 +++++++++++++++++++++++++++++++-----------------------
 1 file changed, 45 insertions(+), 32 deletions(-)

diff --git a/tests/test_node.py b/tests/test_node.py
index 73c79a3..89be909 100644
--- a/tests/test_node.py
+++ b/tests/test_node.py
@@ -5,6 +5,7 @@ from __future__ import annotations
 
 import gzip
 import os
+import subprocess
 from datetime import datetime, timezone
 from email.message import EmailMessage
 from unittest.mock import MagicMock, call, patch
@@ -1557,15 +1558,17 @@ class TestGetConfigFromGit:
         """Parses git config -z output correctly."""
         from liblore.node import _get_config_from_git
 
-        mock_result = MagicMock()
-        mock_result.returncode = 0
-        mock_result.stdout = (
-            'lore.fallback\nhttps://tor.lore.kernel.org\x00'
-            'lore.fallback\nhttps://sea.lore.kernel.org\x00'
-            'lore.autoprobe\ntrue\x00'
-            'lore.probettl\n7200\x00'
+        result = subprocess.CompletedProcess[str](
+            args=['git'],
+            returncode=0,
+            stdout=(
+                'lore.fallback\nhttps://tor.lore.kernel.org\x00'
+                'lore.fallback\nhttps://sea.lore.kernel.org\x00'
+                'lore.autoprobe\ntrue\x00'
+                'lore.probettl\n7200\x00'
+            ),
         )
-        with patch('liblore.node.subprocess.run', return_value=mock_result):
+        with patch('liblore.node.subprocess.run', return_value=result):
             cfg = _get_config_from_git(r'^lore\.', multivals=['fallback'])
 
         assert cfg == {
@@ -1593,10 +1596,12 @@ class TestGetConfigFromGit:
         """Returns empty dict when no keys match the regexp."""
         from liblore.node import _get_config_from_git
 
-        mock_result = MagicMock()
-        mock_result.returncode = 1
-        mock_result.stdout = ''
-        with patch('liblore.node.subprocess.run', return_value=mock_result):
+        result = subprocess.CompletedProcess[str](
+            args=['git'],
+            returncode=1,
+            stdout='',
+        )
+        with patch('liblore.node.subprocess.run', return_value=result):
             cfg = _get_config_from_git(r'^lore\.')
 
         assert cfg == {}
@@ -1605,10 +1610,12 @@ class TestGetConfigFromGit:
         """A key without a value (no newline) defaults to 'true'."""
         from liblore.node import _get_config_from_git
 
-        mock_result = MagicMock()
-        mock_result.returncode = 0
-        mock_result.stdout = 'lore.autoprobe\x00'
-        with patch('liblore.node.subprocess.run', return_value=mock_result):
+        result = subprocess.CompletedProcess[str](
+            args=['git'],
+            returncode=0,
+            stdout='lore.autoprobe\x00',
+        )
+        with patch('liblore.node.subprocess.run', return_value=result):
             cfg = _get_config_from_git(r'^lore\.')
 
         assert cfg == {'autoprobe': 'true'}
@@ -1621,15 +1628,17 @@ class TestGetSubsectionConfig:
         """Parses keys from [liblore "https://lore.kernel.org"]."""
         from liblore.node import _get_subsection_config
 
-        mock_result = MagicMock()
-        mock_result.returncode = 0
-        mock_result.stdout = (
-            'liblore.https://lore.kernel.org.fallback\nhttps://tor.lore.kernel.org\x00'
-            'liblore.https://lore.kernel.org.fallback\nhttps://sea.lore.kernel.org\x00'
-            'liblore.https://lore.kernel.org.autoprobe\ntrue\x00'
-            'liblore.https://lore.kernel.org.useragentplus\nmyuuid\x00'
+        result = subprocess.CompletedProcess[str](
+            args=['git'],
+            returncode=0,
+            stdout=(
+                'liblore.https://lore.kernel.org.fallback\nhttps://tor.lore.kernel.org\x00'
+                'liblore.https://lore.kernel.org.fallback\nhttps://sea.lore.kernel.org\x00'
+                'liblore.https://lore.kernel.org.autoprobe\ntrue\x00'
+                'liblore.https://lore.kernel.org.useragentplus\nmyuuid\x00'
+            ),
         )
-        with patch('liblore.node.subprocess.run', return_value=mock_result):
+        with patch('liblore.node.subprocess.run', return_value=result):
             cfg = _get_subsection_config(
                 'liblore',
                 'https://lore.kernel.org',
@@ -1649,10 +1658,12 @@ class TestGetSubsectionConfig:
         """Subsection names with dots (URLs) are parsed correctly."""
         from liblore.node import _get_subsection_config
 
-        mock_result = MagicMock()
-        mock_result.returncode = 0
-        mock_result.stdout = 'liblore.https://subspace.kernel.org.fallback\nhttps://mirror.example.com\x00'
-        with patch('liblore.node.subprocess.run', return_value=mock_result):
+        result = subprocess.CompletedProcess[str](
+            args=['git'],
+            returncode=0,
+            stdout='liblore.https://subspace.kernel.org.fallback\nhttps://mirror.example.com\x00',
+        )
+        with patch('liblore.node.subprocess.run', return_value=result):
             cfg = _get_subsection_config(
                 'liblore',
                 'https://subspace.kernel.org',
@@ -1667,10 +1678,12 @@ class TestGetSubsectionConfig:
         """Returns empty dict when no keys match the subsection."""
         from liblore.node import _get_subsection_config
 
-        mock_result = MagicMock()
-        mock_result.returncode = 1
-        mock_result.stdout = ''
-        with patch('liblore.node.subprocess.run', return_value=mock_result):
+        result = subprocess.CompletedProcess[str](
+            args=['git'],
+            returncode=1,
+            stdout='',
+        )
+        with patch('liblore.node.subprocess.run', return_value=result):
             cfg = _get_subsection_config(
                 'liblore',
                 'https://nonexistent.example.com',

-- 
2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.