Skip to content

Commit 2a8343a

Browse files
robtaylorclaude
andcommitted
Fix merge conflicts in test files
- Resolved merge conflicts in test_cli.py, test_init.py, test_pin_lock.py, and test_utils_additional.py - Properly merged code from both branches while maintaining the test functionality - Ensured all SiliconPlatformPort tests pass with the output port fix 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 13016c0 commit 2a8343a

File tree

4 files changed

+5
-334
lines changed

4 files changed

+5
-334
lines changed

tests/test_cli.py

Lines changed: 0 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,7 @@ class MockCommand:
1515
def build_cli_parser(self, parser):
1616
parser.add_argument("--option", help="Test option")
1717
parser.add_argument("action", choices=["valid", "error", "unexpected"])
18-
<<<<<<< HEAD
19-
20-
=======
2118

22-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
2319
def run_cli(self, args):
2420
if args.action == "error":
2521
raise ChipFlowError("Command error")
@@ -43,32 +39,18 @@ def test_run_success(self, mock_get_cls, mock_pin_command, mock_parse_config):
4339
}
4440
}
4541
mock_parse_config.return_value = mock_config
46-
<<<<<<< HEAD
47-
48-
mock_pin_cmd = MockCommand()
49-
mock_pin_command.return_value = mock_pin_cmd
50-
51-
mock_test_cmd = MockCommand()
52-
mock_get_cls.return_value = lambda config: mock_test_cmd
53-
54-
=======
5542

5643
mock_pin_cmd = MockCommand()
5744
mock_pin_command.return_value = mock_pin_cmd
5845

5946
mock_test_cmd = MockCommand()
6047
mock_get_cls.return_value = lambda config: mock_test_cmd
6148

62-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
6349
# Capture stdout for assertion
6450
with mock.patch("sys.stdout") as mock_stdout:
6551
# Run with valid action
6652
run(["test", "valid"])
67-
<<<<<<< HEAD
68-
69-
=======
7053

71-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
7254
# No error message should be printed
7355
mock_stdout.write.assert_not_called()
7456

@@ -86,32 +68,18 @@ def test_run_command_error(self, mock_get_cls, mock_pin_command, mock_parse_conf
8668
}
8769
}
8870
mock_parse_config.return_value = mock_config
89-
<<<<<<< HEAD
90-
91-
mock_pin_cmd = MockCommand()
92-
mock_pin_command.return_value = mock_pin_cmd
93-
94-
mock_test_cmd = MockCommand()
95-
mock_get_cls.return_value = lambda config: mock_test_cmd
96-
97-
=======
9871

9972
mock_pin_cmd = MockCommand()
10073
mock_pin_command.return_value = mock_pin_cmd
10174

10275
mock_test_cmd = MockCommand()
10376
mock_get_cls.return_value = lambda config: mock_test_cmd
10477

105-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
10678
# Capture stdout for assertion
10779
with mock.patch("builtins.print") as mock_print:
10880
# Run with error action
10981
run(["test", "error"])
110-
<<<<<<< HEAD
111-
112-
=======
11382

114-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
11583
# Error message should be printed
11684
mock_print.assert_called_once()
11785
self.assertIn("Error while executing `test error`", mock_print.call_args[0][0])
@@ -130,32 +98,18 @@ def test_run_unexpected_error(self, mock_get_cls, mock_pin_command, mock_parse_c
13098
}
13199
}
132100
mock_parse_config.return_value = mock_config
133-
<<<<<<< HEAD
134-
135-
mock_pin_cmd = MockCommand()
136-
mock_pin_command.return_value = mock_pin_cmd
137-
138-
mock_test_cmd = MockCommand()
139-
mock_get_cls.return_value = lambda config: mock_test_cmd
140-
141-
=======
142101

143102
mock_pin_cmd = MockCommand()
144103
mock_pin_command.return_value = mock_pin_cmd
145104

146105
mock_test_cmd = MockCommand()
147106
mock_get_cls.return_value = lambda config: mock_test_cmd
148107

149-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
150108
# Capture stdout for assertion
151109
with mock.patch("builtins.print") as mock_print:
152110
# Run with unexpected error action
153111
run(["test", "unexpected"])
154-
<<<<<<< HEAD
155-
156-
=======
157112

158-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
159113
# Error message should be printed
160114
mock_print.assert_called_once()
161115
self.assertIn("Error while executing `test unexpected`", mock_print.call_args[0][0])
@@ -174,19 +128,6 @@ def test_step_init_error(self, mock_pin_command, mock_parse_config):
174128
}
175129
}
176130
mock_parse_config.return_value = mock_config
177-
<<<<<<< HEAD
178-
179-
mock_pin_cmd = MockCommand()
180-
mock_pin_command.return_value = mock_pin_cmd
181-
182-
# Make _get_cls_by_reference raise an exception during step initialization
183-
with mock.patch("chipflow_lib.cli._get_cls_by_reference") as mock_get_cls:
184-
mock_get_cls.return_value = mock.Mock(side_effect=Exception("Init error"))
185-
186-
with self.assertRaises(ChipFlowError) as cm:
187-
run(["test", "valid"])
188-
189-
=======
190131

191132
mock_pin_cmd = MockCommand()
192133
mock_pin_command.return_value = mock_pin_cmd
@@ -198,7 +139,6 @@ def test_step_init_error(self, mock_pin_command, mock_parse_config):
198139
with self.assertRaises(ChipFlowError) as cm:
199140
run(["test", "valid"])
200141

201-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
202142
self.assertIn("Encountered error while initializing step", str(cm.exception))
203143

204144
@mock.patch("chipflow_lib.cli._parse_config")
@@ -215,25 +155,11 @@ def test_build_parser_error(self, mock_get_cls, mock_pin_command, mock_parse_con
215155
}
216156
}
217157
mock_parse_config.return_value = mock_config
218-
<<<<<<< HEAD
219-
220-
=======
221158

222-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
223159
# Make pin command raise an error during build_cli_parser
224160
mock_pin_cmd = mock.Mock()
225161
mock_pin_cmd.build_cli_parser.side_effect = Exception("Parser error")
226162
mock_pin_command.return_value = mock_pin_cmd
227-
<<<<<<< HEAD
228-
229-
mock_test_cmd = mock.Mock()
230-
mock_test_cmd.build_cli_parser.side_effect = Exception("Parser error")
231-
mock_get_cls.return_value = lambda config: mock_test_cmd
232-
233-
with self.assertRaises(ChipFlowError) as cm:
234-
run(["pin", "lock"])
235-
236-
=======
237163

238164
mock_test_cmd = mock.Mock()
239165
mock_test_cmd.build_cli_parser.side_effect = Exception("Parser error")
@@ -242,7 +168,6 @@ def test_build_parser_error(self, mock_get_cls, mock_pin_command, mock_parse_con
242168
with self.assertRaises(ChipFlowError) as cm:
243169
run(["pin", "lock"])
244170

245-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
246171
self.assertIn("Encountered error while building CLI argument parser", str(cm.exception))
247172

248173
@mock.patch("chipflow_lib.cli._parse_config")
@@ -259,18 +184,6 @@ def test_verbosity_flags(self, mock_get_cls, mock_pin_command, mock_parse_config
259184
}
260185
}
261186
mock_parse_config.return_value = mock_config
262-
<<<<<<< HEAD
263-
264-
mock_pin_cmd = MockCommand()
265-
mock_pin_command.return_value = mock_pin_cmd
266-
267-
mock_test_cmd = MockCommand()
268-
mock_get_cls.return_value = lambda config: mock_test_cmd
269-
270-
# Save original log level
271-
original_level = logging.getLogger().level
272-
273-
=======
274187

275188
mock_pin_cmd = MockCommand()
276189
mock_pin_command.return_value = mock_pin_cmd
@@ -281,23 +194,15 @@ def test_verbosity_flags(self, mock_get_cls, mock_pin_command, mock_parse_config
281194
# Save original log level
282195
original_level = logging.getLogger().level
283196

284-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
285197
try:
286198
# Test with -v
287199
with mock.patch("sys.stdout"):
288200
run(["-v", "test", "valid"])
289201
self.assertEqual(logging.getLogger().level, logging.INFO)
290-
<<<<<<< HEAD
291-
292-
# Reset log level
293-
logging.getLogger().setLevel(original_level)
294-
295-
=======
296202

297203
# Reset log level
298204
logging.getLogger().setLevel(original_level)
299205

300-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
301206
# Test with -v -v
302207
with mock.patch("sys.stdout"):
303208
run(["-v", "-v", "test", "valid"])

tests/test_init.py

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
import unittest
55
import tempfile
66
from unittest import mock
7-
<<<<<<< HEAD
87
from pathlib import Path
9-
=======
10-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
118

129
import jsonschema
1310
import pytest
@@ -26,11 +23,7 @@ def setUp(self):
2623
# Save original environment to restore later
2724
self.original_chipflow_root = os.environ.get("CHIPFLOW_ROOT")
2825
self.original_sys_path = sys.path.copy()
29-
<<<<<<< HEAD
30-
31-
=======
3226

33-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
3427
# Create a temporary directory for tests
3528
self.temp_dir = tempfile.TemporaryDirectory()
3629
self.temp_path = self.temp_dir.name
@@ -41,11 +34,7 @@ def tearDown(self):
4134
os.environ["CHIPFLOW_ROOT"] = self.original_chipflow_root
4235
else:
4336
os.environ.pop("CHIPFLOW_ROOT", None)
44-
<<<<<<< HEAD
45-
46-
=======
4737

48-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
4938
sys.path = self.original_sys_path
5039
self.temp_dir.cleanup()
5140

@@ -64,55 +53,34 @@ def test_get_cls_by_reference_module_not_found(self):
6453
"""Test _get_cls_by_reference when the module doesn't exist"""
6554
with self.assertRaises(ChipFlowError) as cm:
6655
_get_cls_by_reference("nonexistent_module:SomeClass", "test context")
67-
<<<<<<< HEAD
68-
69-
=======
7056

71-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
7257
self.assertIn("Module `nonexistent_module` referenced by test context is not found", str(cm.exception))
7358

7459
def test_get_cls_by_reference_class_not_found(self):
7560
"""Test _get_cls_by_reference when the class doesn't exist in the module"""
7661
with self.assertRaises(ChipFlowError) as cm:
7762
_get_cls_by_reference("unittest:NonExistentClass", "test context")
78-
<<<<<<< HEAD
79-
80-
=======
8163

82-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
8364
self.assertIn("Module `unittest` referenced by test context does not define `NonExistentClass`", str(cm.exception))
8465

8566
def test_ensure_chipflow_root_already_set(self):
8667
"""Test _ensure_chipflow_root when CHIPFLOW_ROOT is already set"""
8768
os.environ["CHIPFLOW_ROOT"] = "/test/path"
8869
sys.path = ["/some/other/path"]
89-
<<<<<<< HEAD
90-
91-
result = _ensure_chipflow_root()
92-
93-
=======
9470

9571
result = _ensure_chipflow_root()
9672

97-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
9873
self.assertEqual(result, "/test/path")
9974
self.assertIn("/test/path", sys.path)
10075

10176
def test_ensure_chipflow_root_not_set(self):
10277
"""Test _ensure_chipflow_root when CHIPFLOW_ROOT is not set"""
10378
if "CHIPFLOW_ROOT" in os.environ:
10479
del os.environ["CHIPFLOW_ROOT"]
105-
<<<<<<< HEAD
106-
107-
with mock.patch("os.getcwd", return_value="/mock/cwd"):
108-
result = _ensure_chipflow_root()
109-
110-
=======
11180

11281
with mock.patch("os.getcwd", return_value="/mock/cwd"):
11382
result = _ensure_chipflow_root()
11483

115-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
11684
self.assertEqual(result, "/mock/cwd")
11785
self.assertEqual(os.environ["CHIPFLOW_ROOT"], "/mock/cwd")
11886
self.assertIn("/mock/cwd", sys.path)
@@ -134,15 +102,9 @@ def test_parse_config_file_valid(self):
134102
config_path = os.path.join(self.temp_path, "chipflow.toml")
135103
with open(config_path, "w") as f:
136104
f.write(config_content)
137-
<<<<<<< HEAD
138-
139-
config = _parse_config_file(config_path)
140-
141-
=======
142105

143106
config = _parse_config_file(config_path)
144107

145-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
146108
self.assertIn("chipflow", config)
147109
self.assertEqual(config["chipflow"]["project_name"], "test_project")
148110
self.assertEqual(config["chipflow"]["silicon"]["process"], "sky130")
@@ -158,17 +120,10 @@ def test_parse_config_file_invalid_schema(self):
158120
config_path = os.path.join(self.temp_path, "chipflow.toml")
159121
with open(config_path, "w") as f:
160122
f.write(config_content)
161-
<<<<<<< HEAD
162-
163-
with self.assertRaises(ChipFlowError) as cm:
164-
_parse_config_file(config_path)
165-
166-
=======
167123

168124
with self.assertRaises(ChipFlowError) as cm:
169125
_parse_config_file(config_path)
170126

171-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
172127
self.assertIn("Syntax error in `chipflow.toml`", str(cm.exception))
173128

174129
@mock.patch("chipflow_lib._ensure_chipflow_root")
@@ -177,17 +132,9 @@ def test_parse_config(self, mock_parse_config_file, mock_ensure_chipflow_root):
177132
"""Test _parse_config which uses _ensure_chipflow_root and _parse_config_file"""
178133
mock_ensure_chipflow_root.return_value = "/mock/chipflow/root"
179134
mock_parse_config_file.return_value = {"chipflow": {"test": "value"}}
180-
<<<<<<< HEAD
181-
182-
config = _parse_config()
183-
184-
mock_ensure_chipflow_root.assert_called_once()
185-
# We're expecting a string, not a Path
186-
=======
187135

188136
config = _parse_config()
189137

190138
mock_ensure_chipflow_root.assert_called_once()
191-
>>>>>>> bd941c3 (Add comprehensive test suite for improved code coverage)
192139
mock_parse_config_file.assert_called_once_with("/mock/chipflow/root/chipflow.toml")
193140
self.assertEqual(config, {"chipflow": {"test": "value"}})

0 commit comments

Comments
 (0)