Skip to content

Commit

Permalink
fix: report missing import properly in loadSync
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-fenster committed Jan 12, 2024
1 parent 4436cc7 commit 943db2a
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/root.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,10 @@ Root.prototype.load = function load(filename, options, callback) {
/* istanbul ignore if */
if (!callback)
return;
var cb = callback;
callback = null;
if (sync)
throw err;
var cb = callback;
callback = null;
cb(err, root);
}

Expand Down
23 changes: 23 additions & 0 deletions tests/api_root.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,29 @@ tape.test("reflected roots", function(test) {
});
});

test.test(test.name + " - missing import", function(test) {
var root = new Root();
test.plan(2);
root.load("tests/data/badimport.proto", function(err) {
test.ok(err, "should return an error when an imported file does not exist");
test.match(err.toString(), /nonexistent\.proto/, "should mention the file name which was not found");
test.end();
});
});

test.test(test.name + " - missing import, sync load", function(test) {
var root = new Root();
test.plan(2);
try {
root.loadSync("tests/data/badimport.proto");
root.resolveAll();
} catch (err) {
test.ok(err, "should return an error when an imported file does not exist");
test.match(err.toString(), /nonexistent\.proto/, "should mention the file name which was not found");
}
test.end();
});

test.test(test.name + " - skipped", function(test) {
var root = new Root();
root.resolvePath = function() {
Expand Down
7 changes: 7 additions & 0 deletions tests/data/badimport.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
syntax = "proto3";

import "nonexistent.proto";

message Message {
NonExistent field = 1;
}

0 comments on commit 943db2a

Please sign in to comment.