Skip to content

Commit 241e4fb

Browse files
vvezrepeterbarker
authored andcommitted
Fix_typescript_generator_imports
1 parent e570954 commit 241e4fb

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

generator/mavgen_typescript.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from . import mavtemplate
1010

1111
t = mavtemplate.MAVTemplate()
12+
NODE_MAVLINK_PACKAGE = "@ifrunistuttgart/node-mavlink"
1213

1314

1415
def camelcase(str):
@@ -47,7 +48,7 @@ def generate_classes(dir, registry, msgs, xml):
4748
os.mkdir(dir)
4849

4950
with open(registry, "w") as registry_f:
50-
registry_f.write("import {MAVLinkMessage} from 'node-mavlink';\n")
51+
registry_f.write(f"import {{MAVLinkMessage}} from '{NODE_MAVLINK_PACKAGE}';\n")
5152
for m in msgs:
5253
filename = m.name.replace('_', '-')
5354
filename = filename.lower()
@@ -60,8 +61,8 @@ def generate_classes(dir, registry, msgs, xml):
6061
if xml.wire_protocol_version == '1.0':
6162
raise Exception('WireProtocolException', 'Please use WireProtocol = 2.0 only.')
6263

63-
f.write("import {MAVLinkMessage} from 'node-mavlink';\n")
64-
f.write("import {readInt64LE, readUInt64LE} from 'node-mavlink';\n")
64+
f.write(f"import {{MAVLinkMessage}} from '{NODE_MAVLINK_PACKAGE}';\n")
65+
f.write(f"import {{readInt64LE, readUInt64LE}} from '{NODE_MAVLINK_PACKAGE}';\n")
6566
registry_f.write("import {{{}}} from './messages/{}';\n".format(camelcase(m.name), filename))
6667
imported_enums = []
6768
for enum in [field.enum for field in m.fields if field.enum != '']:

tests/test_mavgen_typescript.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env python3
2+
"""
3+
Tests for the TypeScript generator.
4+
"""
5+
6+
from pathlib import Path
7+
import shutil
8+
import sys
9+
10+
try:
11+
from pymavlink.generator import mavgen
12+
except ModuleNotFoundError:
13+
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
14+
from generator import mavgen
15+
16+
17+
def test_typescript_generator_uses_scoped_node_mavlink_package():
18+
xml_filepath = Path(__file__).parent / "snapshottests" / "resources" / "common.xml"
19+
output_dir = Path(__file__).resolve().parents[1] / ".tmp" / "typescript-generator"
20+
shutil.rmtree(output_dir, ignore_errors=True)
21+
output_dir.mkdir(parents=True, exist_ok=True)
22+
23+
ok = mavgen.mavgen(
24+
mavgen.Opts(
25+
output=str(output_dir),
26+
language="TypeScript",
27+
wire_protocol="2.0",
28+
validate=False,
29+
),
30+
[str(xml_filepath)],
31+
)
32+
33+
assert ok is True
34+
35+
heartbeat = (output_dir / "messages" / "heartbeat.ts").read_text(encoding="utf-8")
36+
registry = (output_dir / "message-registry.ts").read_text(encoding="utf-8")
37+
38+
assert "@ifrunistuttgart/node-mavlink" in heartbeat
39+
assert "from 'node-mavlink'" not in heartbeat
40+
assert "@ifrunistuttgart/node-mavlink" in registry
41+
assert "from 'node-mavlink'" not in registry

0 commit comments

Comments
 (0)