Skip to content

Commit 6dda042

Browse files
[pyreverse] Bugfix: strip "/" at the end of the file (#8517) (#8528)
Signed-off-by: Alvaro Frias Garay <[email protected]> Co-authored-by: Pierre Sassoulas <[email protected]> (cherry picked from commit 6ad17fb) Co-authored-by: Alvaro Frias <[email protected]>
1 parent 538c41b commit 6dda042

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

doc/whatsnew/fragments/8504.bugfix

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fix a crash in pyreverse when "/" characters are used in the output filename e.g pyreverse -o png -p name/ path/to/project.
2+
3+
Closes #8504

pylint/pyreverse/writer.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def __init__(self, config: argparse.Namespace) -> None:
4141
def write(self, diadefs: Iterable[ClassDiagram | PackageDiagram]) -> None:
4242
"""Write files for <project> according to <diadefs>."""
4343
for diagram in diadefs:
44-
basename = diagram.title.strip().replace(" ", "_")
44+
basename = diagram.title.strip().replace("/", "_").replace(" ", "_")
4545
file_name = f"{basename}.{self.config.output_format}"
4646
if os.path.exists(self.config.output_directory):
4747
file_name = os.path.join(self.config.output_directory, file_name)

tests/pyreverse/test_writer.py

+17
Original file line numberDiff line numberDiff line change
@@ -223,3 +223,20 @@ def test_color_for_stdlib_module(default_config: PyreverseConfig) -> None:
223223
obj.node = Mock()
224224
obj.node.qname.return_value = "collections"
225225
assert writer.get_shape_color(obj) == "grey"
226+
227+
228+
def test_package_name_with_slash(default_config: PyreverseConfig) -> None:
229+
"""Test to check the names of the generated files are corrected
230+
when using an incorrect character like "/" in the package name.
231+
"""
232+
writer = DiagramWriter(default_config)
233+
obj = Mock()
234+
235+
obj.objects = []
236+
obj.get_relationships.return_value = []
237+
obj.title = "test/package/name/with/slash/"
238+
writer.write([obj])
239+
240+
assert os.path.exists("test_package_name_with_slash_.dot")
241+
# remove the generated file
242+
os.remove("test_package_name_with_slash_.dot")

0 commit comments

Comments
 (0)