mirror of https://github.com/webpack/webpack.git
56 lines
880 B
JavaScript
56 lines
880 B
JavaScript
import { resource, disposed } from "./module.js";
|
|
|
|
let disposeCounter = 0;
|
|
|
|
const getResource = () => {
|
|
return {
|
|
test() {
|
|
// Nothing
|
|
},
|
|
[Symbol.dispose]: () => {
|
|
disposeCounter++;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
it("should using", async () => {
|
|
{
|
|
using foo = getResource();
|
|
|
|
foo.test();
|
|
}
|
|
|
|
expect(disposeCounter).toBe(1);
|
|
|
|
{
|
|
await using bar = getResource();
|
|
|
|
bar.test();
|
|
}
|
|
|
|
expect(disposeCounter).toBe(2);
|
|
|
|
for (await using x of [getResource()]) {
|
|
x.test();
|
|
}
|
|
|
|
expect(disposeCounter).toBe(3);
|
|
|
|
for await (await using x of [getResource()]) {
|
|
x.test();
|
|
}
|
|
|
|
expect(disposeCounter).toBe(4);
|
|
|
|
{
|
|
using resource = await getResource();
|
|
}
|
|
|
|
expect(disposeCounter).toBe(5);
|
|
|
|
// TODO uncomment when will re resolved on V8 side - https://github.com/tc39/proposal-explicit-resource-management/issues/262
|
|
// resource[Symbol.dispose]();
|
|
// expect(disposed).toBe(true);
|
|
});
|