Skip to content

Commit 45755c4

Browse files
committed
Add a test case that repeats require_relative recursively.
1 parent acbf323 commit 45755c4

File tree

4 files changed

+38
-3
lines changed

4 files changed

+38
-3
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require_relative "./recursive_require/a.rb"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require_relative "./b.rb"
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module RecursiveRequire
2+
class B
3+
def message
4+
"Hello from RecursiveRequire::B"
5+
end
6+
end
7+
end

packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/js-require-remote.spec.ts

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@ if (!process.env.RUBY_NPM_PACKAGE_ROOT) {
1616
setupDebugLog(context);
1717
setupProxy(context);
1818

19-
context.route(/fixtures/, (route) => {
20-
const filename = path.basename(route.request().url());
19+
const fixturesPattern = /fixtures\/(.+)/;
20+
context.route(fixturesPattern, (route) => {
21+
const subPath = route.request().url().match(fixturesPattern)[1];
22+
const mockedPath = path.join("./test-e2e/integrations/fixtures", subPath);
23+
2124
route.fulfill({
22-
path: path.join("./test-e2e/integrations/fixtures", filename),
25+
path: mockedPath,
2326
});
2427
});
2528

@@ -89,5 +92,28 @@ if (!process.env.RUBY_NPM_PACKAGE_ROOT) {
8992
const error = await page.waitForEvent("pageerror");
9093
expect(error.message).toMatch(/cannot load such url -- .+\/not_found.rb/);
9194
});
95+
96+
test("JS::RequireRemote#load recursively loads dependencies", async ({
97+
page,
98+
}) => {
99+
const resolve = await resolveBinding(page, "checkResolved");
100+
await page.goto(
101+
"https://cdn.jsdelivr.net/npm/@ruby/head-wasm-wasi@latest/dist/",
102+
);
103+
await page.setContent(`
104+
<script src="browser.script.iife.js"></script>
105+
<script type="text/ruby" data-eval="async">
106+
require 'js/require_remote'
107+
module Kernel
108+
def require_relative(path) = JS::RequireRemote.instance.load(path)
109+
end
110+
111+
require_relative 'fixtures/recursive_require'
112+
JS.global.checkResolved RecursiveRequire::B.new.message
113+
</script>
114+
`);
115+
116+
expect(await resolve()).toBe("Hello from RecursiveRequire::B");
117+
});
92118
});
93119
}

0 commit comments

Comments
 (0)