Skip to content

Commit 1427461

Browse files
authored
Add tests for existing Pyreverse bugs (#8983)
* Add Pyreverse bug tests * Sort Pyreverse class diagram names * Add test for bad line break
1 parent dcebc74 commit 1427461

File tree

8 files changed

+75
-1
lines changed

8 files changed

+75
-1
lines changed

pylint/pyreverse/diagrams.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ def class_names(self, nodes_lst: Iterable[nodes.NodeNG]) -> list[str]:
174174
if node.name not in names:
175175
node_name = node.name
176176
names.append(node_name)
177-
return names
177+
# sorted to get predictable (hence testable) results
178+
return sorted(names)
178179

179180
def has_node(self, node: nodes.NodeNG) -> bool:
180181
"""Return true if the given node is included in the diagram."""
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
digraph "classes" {
2+
rankdir=BT
3+
charset="utf-8"
4+
"line_breaks.A" [color="black", fontcolor="black", label=<{A|<br ALIGN="LEFT"/>|<I>f</I>(x: str | None)<br ALIGN="LEFT"/>}>, shape="record", style="solid"];
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
classDiagram
2+
class A {
3+
f(x: str | None)*
4+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
@startuml classes
2+
set namespaceSeparator none
3+
class "A" as line_breaks.A {
4+
{abstract}f(x: str | None)
5+
}
6+
@enduml
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# OPEN BUG: https://github.com/pylint-dev/pylint/issues/8671
2+
3+
class A:
4+
def f(self, x: str | None):
5+
pass
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[testoptions]
2+
output_formats=mmd,dot,puml
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
classDiagram
2+
class A {
3+
}
4+
class DuplicateAnnotations {
5+
lav : list, list[str]
6+
val : str, str | int
7+
bar() None
8+
}
9+
class DuplicateArrows {
10+
a
11+
a
12+
}
13+
class DuplicateFields {
14+
example1 : int
15+
example1 : int
16+
example2 : int
17+
example2 : int
18+
}
19+
A --* DuplicateArrows : a
20+
A --* DuplicateArrows : a
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# OPEN BUG: https://github.com/pylint-dev/pylint/issues/8189
2+
class DuplicateFields():
3+
example1: int
4+
example2: int
5+
6+
def __init__(self):
7+
self.example1 = 1
8+
self.example2 = 2
9+
10+
11+
# OPEN BUG: https://github.com/pylint-dev/pylint/issues/8522
12+
class A:
13+
pass
14+
15+
class DuplicateArrows:
16+
a: A
17+
18+
def __init__(self):
19+
self.a = A()
20+
21+
22+
23+
# OPEN BUG: https://github.com/pylint-dev/pylint/issues/8888
24+
class DuplicateAnnotations:
25+
def __init__(self) -> None:
26+
self.val: str | int = "1"
27+
self.lav: list[str] = []
28+
29+
def bar(self) -> None:
30+
self.val = "2"
31+
self.lav = []

0 commit comments

Comments
 (0)