Skip to content

Commit

Permalink
sandbox: switch to .js mode when filename does not have ext.
Browse files Browse the repository at this point in the history
  • Loading branch information
xicilion committed Jun 30, 2017
1 parent aa16d9b commit 91c3424
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 21 deletions.
3 changes: 2 additions & 1 deletion fibjs/include/SandBox.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,8 @@ class SandBox : public SandBox_base {
}
}

return CHECK_ERROR(Runtime::setError("SandBox: Invalid file format."));
retVal = m_loaders[0];
return 0;
}

public:
Expand Down
27 changes: 7 additions & 20 deletions fibjs/src/sandbox/SandBox_resolve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,30 +54,17 @@ result_t SandBox::resolveFile(v8::Local<v8::Object> mods, exlib::string& fname,
size_t cnt = m_loaders.size();
result_t hr;
exlib::string fname1;
bool bFound = false;

for (size_t i = 0; i < cnt; i++) {
obj_ptr<ExtLoader>& l = m_loaders[i];

if ((fname.length() > l->m_ext.length())
&& !qstrcmp(fname.c_str() + fname.length() - l->m_ext.length(), l->m_ext.c_str())) {
bFound = true;
break;
}
}

if (bFound) {
if (retVal) {
*retVal = mods->Get(isolate->NewFromUtf8(fname));
if (!IsEmpty(*retVal))
return 0;
}

hr = loadFile(fname, data);
if (hr >= 0)
if (retVal) {
*retVal = mods->Get(isolate->NewFromUtf8(fname));
if (!IsEmpty(*retVal))
return 0;
}

hr = loadFile(fname, data);
if (hr >= 0)
return 0;

for (size_t i = 0; i < cnt; i++) {
obj_ptr<ExtLoader>& l = m_loaders[i];
fname1 = fname + l->m_ext;
Expand Down
1 change: 1 addition & 0 deletions test/module/d1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
exports.d = 100;
8 changes: 8 additions & 0 deletions test/module_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ describe("module", () => {
assert.equal(require.resolve('node_mod1'),
path.join(__dirname, './node_modules/node_mod1.js'));

assert.equal(require.resolve('./module/d1'),
path.join(__dirname, './module/d1'));
});

it("circular dependency", () => {
Expand Down Expand Up @@ -68,6 +70,12 @@ describe("module", () => {
});
});

it("require no-ext file", () => {
assert.deepEqual(require('./module/d1'), {
"d": 100
});
});

describe("package.json", () => {
it("main", () => {
var a = require('./module/p1');
Expand Down

0 comments on commit 91c3424

Please sign in to comment.