Skip to content

Commit 01ad85c

Browse files
update the CLI to remove the target directory and added units
1 parent 9bb891f commit 01ad85c

File tree

5 files changed

+45
-10
lines changed

5 files changed

+45
-10
lines changed

src/main/java/com/regnosys/rosetta/generator/python/PythonCodeGeneratorCLI.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
import org.jetbrains.annotations.NotNull;
1717
import org.slf4j.Logger;
1818
import org.slf4j.LoggerFactory;
19+
import java.io.File;
1920
import java.io.IOException;
2021
import java.nio.file.*;
2122
import java.util.*;
2223
import java.util.stream.Collectors;
24+
import org.apache.commons.io.FileUtils;
2325

2426
/**
2527
* Command-line interface for generating Python code from Rosetta models.
@@ -185,6 +187,22 @@ private static void processRosettaFiles(List<Path> rosettaFiles, String tgtDir)
185187
}
186188

187189
private static void writePythonFiles(Map<String, CharSequence> generatedPython, String tgtDir) {
190+
Path targetRoot = Paths.get(tgtDir);
191+
File targetDirFile = targetRoot.toFile();
192+
// Remove existing target directory (if any), then (re)create it
193+
try {
194+
if (targetDirFile.exists()) {
195+
if (targetDirFile.isDirectory()) {
196+
FileUtils.deleteDirectory(targetDirFile);
197+
} else {
198+
FileUtils.forceDelete(targetDirFile);
199+
}
200+
}
201+
FileUtils.forceMkdir(targetDirFile);
202+
} catch (IOException e) {
203+
LOGGER.error("Failed to reset target directory {}: {}", targetRoot, e.getMessage(), e);
204+
return;
205+
}
188206
for (Map.Entry<String, CharSequence> entry : generatedPython.entrySet()) {
189207
String filePath = entry.getKey();
190208
CharSequence content = entry.getValue();

test/python_unit_tests/model/test_key_ref.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,27 @@
22
from rune.runtime.metadata import IntWithMeta, Reference
33

44
from rosetta_dsl.test.model.key_ref.A import A
5-
from rosetta_dsl.test.model.key_ref.B import B
6-
7-
def test_key_ref():
5+
from rosetta_dsl.test.model.key_ref.BRef import BRef
6+
from rosetta_dsl.test.model.key_ref.BNoRef import BNoRef
7+
8+
def test_resuse_ref():
89
'''test key ref'''
910
a = A(aValue=IntWithMeta(value=1, key="key-123"))
10-
b = B(aReference=Reference(target=a, ext_key="key-123"))
11-
assert(len(b.validate_model())== 0)
11+
b1 = BRef(aReference=a)
12+
assert(len(b1.validate_model())== 0)
13+
b2 = BRef(aReference=Reference(target=a, ext_key="key-123"))
14+
assert(len(b2.validate_model())== 0)
15+
16+
def test_reuse_no_ref():
17+
'''test key ref'''
18+
a = A(aValue=IntWithMeta(value=1))
19+
b1 = BNoRef(aReference=a)
20+
assert(len(b1.validate_model())== 0)
21+
b2 = BNoRef(aReference=a)
22+
assert(len(b2.validate_model()) == 0)
1223

1324
if __name__ == "__main__":
14-
test_key_ref()
25+
test_resuse_ref()
26+
test_reuse_no_ref()
27+
28+
#EOF

test/python_unit_tests/rosetta/ClassMemberAccess.rosetta

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace rosetta_dsl.test.model : <"generate Python unit tests from Rosetta.">
1+
namespace rosetta_dsl.test.model.class_member_access : <"generate Python unit tests from Rosetta.">
22
type ClassMemberAccess:
33
one int (1..1)
44
two int (0..1)

test/python_unit_tests/rosetta/KeyRefTest.rosetta

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ type A:
44
[metadata key]
55
aValue int (1..1)
66

7-
type B:
7+
type BRef:
8+
aReference A (1..1)
9+
[metadata reference]
10+
11+
type BNoRef:
812
aReference A (1..1)
9-
[metadata reference]

test/python_unit_tests/semantics/test_class_member_access_operator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from rune.runtime.metadata import *
44
from rune.runtime.utils import *
55
from rune.runtime.conditions import *
6-
from rosetta_dsl.test.model.ClassMemberAccess import ClassMemberAccess
6+
from rosetta_dsl.test.model.class_member_access.ClassMemberAccess import ClassMemberAccess
77

88
class_member_access = ClassMemberAccess(one=42, three=[1, 2, 3])
99

0 commit comments

Comments
 (0)