Skip to content

Commit f708e55

Browse files
Merge pull request #94 from RethinkRobotics-opensource/throwMessageErrors
Throw errors from requiring messages
2 parents 41a35ef + 70607df commit f708e55

3 files changed

Lines changed: 68 additions & 13 deletions

File tree

src/utils/message_utils.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,7 @@ let MessageUtils = {
170170
},
171171

172172
loadMessagePackage(msgPackage) {
173-
try {
174-
messagePackageMap[msgPackage] = ros_msg_utils.Find(msgPackage);
175-
}
176-
catch (err) {
177-
throw new Error(`Unable to include message package ${msgPackage} - ${err}`);
178-
}
173+
messagePackageMap[msgPackage] = ros_msg_utils.Find(msgPackage);
179174
},
180175

181176
getPackage(msgPackage) {
@@ -193,12 +188,8 @@ let MessageUtils = {
193188
// pre-compiled versions
194189
let pack = this.getPackage(msgPackage);
195190
if (!pack) {
196-
try {
197-
this.loadMessagePackage(msgPackage);
198-
return this.getPackage(msgPackage);
199-
}
200-
catch(err) {
201-
}
191+
this.loadMessagePackage(msgPackage);
192+
return this.getPackage(msgPackage);
202193
}
203194
// else
204195
return pack;

test/directory.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ require('./namespaceTest.js');
33
require('./SpinnerTest.js');
44
require('./xmlrpcTest.js');
55
require('./Log.js');
6-
require('./onTheFly.js');
6+
require('./onTheFly.js');
7+
require('./messages.js');

test/messages.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
'use strict';
2+
3+
const chai = require('chai');
4+
const expect = chai.expect;
5+
const rosnodejs = require('../src/index.js');
6+
7+
describe('messages', function () {
8+
9+
it('real messages', function() {
10+
expect(rosnodejs.require('geometry_msgs')).to.not.be.empty;
11+
expect(rosnodejs.require('geometry_msgs').msg).to.not.be.empty;
12+
expect(rosnodejs.require('geometry_msgs').msg).to.have.keys(
13+
'Accel','AccelStamped','AccelWithCovariance','AccelWithCovarianceStamped',
14+
'Inertia','InertiaStamped','Point','Point32','PointStamped',
15+
'Polygon','PolygonStamped','Pose','Pose2D','PoseArray','PoseStamped',
16+
'PoseWithCovariance','PoseWithCovarianceStamped','Quaternion',
17+
'QuaternionStamped','Transform','TransformStamped','Twist','TwistStamped',
18+
'TwistWithCovariance','TwistWithCovarianceStamped','Vector3',
19+
'Vector3Stamped','Wrench','WrenchStamped'
20+
);
21+
expect(rosnodejs.require('geometry_msgs').srv).to.be.empty;
22+
23+
expect(rosnodejs.require('std_msgs')).to.not.be.empty;
24+
expect(rosnodejs.require('std_msgs').msg).to.not.be.empty;
25+
expect(rosnodejs.require('std_msgs').msg).to.have.keys(
26+
'Bool','Duration','Float64MultiArray','Int32MultiArray',
27+
'MultiArrayDimension','UInt16MultiArray','UInt8','Byte','Empty','Header',
28+
'Int64','MultiArrayLayout','UInt32','UInt8MultiArray','ByteMultiArray',
29+
'Float32','Int16','Int64MultiArray','String','UInt32MultiArray','Char',
30+
'Float32MultiArray','Int16MultiArray','Int8','Time','UInt64','ColorRGBA',
31+
'Float64','Int32','Int8MultiArray','UInt16','UInt64MultiArray'
32+
)
33+
expect(rosnodejs.require('std_msgs').srv).to.be.empty;
34+
35+
expect(rosnodejs.require('std_srvs')).to.not.be.empty;
36+
expect(rosnodejs.require('std_srvs').msg).to.be.empty;
37+
expect(rosnodejs.require('std_srvs').srv).to.not.be.empty;
38+
expect(rosnodejs.require('std_srvs').srv).to.have.keys(
39+
'Empty','SetBool','Trigger'
40+
);
41+
42+
expect(rosnodejs.require('test_msgs')).to.not.be.empty;
43+
expect(rosnodejs.require('test_msgs').msg).to.not.be.empty;
44+
expect(rosnodejs.require('test_msgs').msg).to.have.keys(
45+
'AllTypes','BaseTypeConstantLengthArray','ConstantLengthArray',
46+
'VariableLengthArray','BaseType','BaseTypeVariableLengthArray','StdMsg',
47+
"TestActionAction","TestActionActionFeedback","TestActionActionGoal",
48+
"TestActionActionResult","TestActionFeedback","TestActionGoal",
49+
"TestActionResult"
50+
);
51+
expect(rosnodejs.require('test_msgs').srv).to.not.be.empty;
52+
expect(rosnodejs.require('test_msgs').srv).to.have.keys(
53+
'BasicService','HeaderService','NonSpecServiceDivider','TestService'
54+
);
55+
});
56+
57+
it('non-existant messages', function() {
58+
const nonExistantPkg = 'made_up_message_package';
59+
expect(rosnodejs.require.bind(rosnodejs, nonExistantPkg)).to.throw(
60+
Error, `Unable to find message package ${nonExistantPkg} from CMAKE_PREFIX_PATH`
61+
);
62+
});
63+
});

0 commit comments

Comments
 (0)