Skip to content

Commit 49a80a6

Browse files
authored
Fix bug re-initing Node (#114)
-Check against resolved node name when looking for valid re-init calls -Adds new tests for calling initNode multiple times.
1 parent 44dcc8d commit 49a80a6

2 files changed

Lines changed: 24 additions & 5 deletions

File tree

src/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ let Rosnodejs = {
9090
names.init(remappings, namespace);
9191

9292
if (ThisNode.node !== null) {
93-
if (nodeName === ThisNode.getNodeName()) {
93+
if (resolvedName === ThisNode.getNodeName()) {
9494
return Promise.resolve(this.getNodeHandle());
9595
}
9696
// else
97-
return Promise.reject( Error('Unable to initialize node [' + nodeName + '] - node ['
97+
return Promise.reject( Error('Unable to initialize node [' + resolvedName + '] - node ['
9898
+ ThisNode.getNodeName() + '] already exists'));
9999
}
100100

test/namespaceTest.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,18 +229,37 @@ describe('Namespace', function () {
229229
});
230230
});
231231

232-
it('__ns', function(done) {
232+
it('__ns', function() {
233233
this.slow(500);
234234

235235
const remappedNs = 'customNs';
236236
setRemapArg(remapUtils.SPECIAL_KEYS.ns, remappedNs);
237237

238238
const nodeName = 'node_name';
239-
rosnodejs.initNode(nodeName, { rosMasterUri })
239+
return rosnodejs.initNode(nodeName, { rosMasterUri })
240240
.then(() => {
241241
expect(rosnodejs.nh.getNodeName()).to.equal(`/${remappedNs}/${nodeName}`);
242242

243-
done();
243+
// make sure re-initing the same node still works
244+
return rosnodejs.initNode(nodeName, { rosMasterUri })
245+
.then(() => {
246+
expect(rosnodejs.nh.getNodeName()).to.equal(`/${remappedNs}/${nodeName}`);
247+
});
248+
});
249+
});
250+
251+
it('Re-init Without Remapping', function() {
252+
this.slow(500);
253+
const nodeName = 'node_name';
254+
return rosnodejs.initNode(nodeName, { rosMasterUri })
255+
.then(() => {
256+
expect(rosnodejs.nh.getNodeName()).to.equal(`/${nodeName}`);
257+
258+
// make sure re-initing the same node still works
259+
return rosnodejs.initNode(nodeName, { rosMasterUri })
260+
.then(() => {
261+
expect(rosnodejs.nh.getNodeName()).to.equal(`/${nodeName}`);
262+
});
244263
});
245264
});
246265

0 commit comments

Comments
 (0)