@@ -2233,6 +2233,54 @@ namespace JsRTApiTest
22332233
22342234 }
22352235
2236+ static JsErrorCode CALLBACK Success_FIMC1 (_In_ JsModuleRecord referencingModule, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord)
2237+ {
2238+ JsModuleRecord moduleRecord = JS_INVALID_REFERENCE;
2239+ LPCWSTR specifierStr;
2240+ size_t length;
2241+
2242+ JsErrorCode errorCode = JsStringToPointer (specifier, &specifierStr, &length);
2243+ REQUIRE (errorCode == JsNoError);
2244+ REQUIRE (!wcscmp (specifierStr, _u (" foo.js" )));
2245+
2246+ JsValueRef specifier1 = nullptr ;
2247+ REQUIRE (JsPointerToString (_u (" ./foo.js" ), wcslen (_u (" ./foo.js" )), &specifier1) == JsNoError);
2248+
2249+ errorCode = JsInitializeModuleRecord (referencingModule, specifier1, &moduleRecord);
2250+ REQUIRE (errorCode == JsNoError);
2251+ *dependentModuleRecord = moduleRecord;
2252+ successTest.childModule = moduleRecord;
2253+ return JsNoError;
2254+ }
2255+
2256+ void PassingDifferentModuleSpecifierTest (JsRuntimeAttributes attributes, JsRuntimeHandle runtime)
2257+ {
2258+ JsModuleRecord requestModule = JS_INVALID_REFERENCE;
2259+ JsValueRef specifier;
2260+
2261+ REQUIRE (JsPointerToString (_u (" " ), 1 , &specifier) == JsNoError);
2262+ REQUIRE (JsInitializeModuleRecord (nullptr , specifier, &requestModule) == JsNoError);
2263+ successTest.mainModule = requestModule;
2264+ REQUIRE (JsSetModuleHostInfo (requestModule, JsModuleHostInfo_FetchImportedModuleCallback, Success_FIMC1) == JsNoError);
2265+ REQUIRE (JsSetModuleHostInfo (requestModule, JsModuleHostInfo_FetchImportedModuleFromScriptCallback, Success_FIMC1) == JsNoError);
2266+ REQUIRE (JsSetModuleHostInfo (requestModule, JsModuleHostInfo_NotifyModuleReadyCallback, Succes_NMRC) == JsNoError);
2267+
2268+ JsValueRef errorObject = JS_INVALID_REFERENCE;
2269+ const char * fileContent = " import {x} from 'foo.js'" ;
2270+ JsErrorCode errorCode = JsParseModuleSource (requestModule, 0 , (LPBYTE)fileContent,
2271+ (unsigned int )strlen (fileContent), JsParseModuleSourceFlags_DataIsUTF8, &errorObject);
2272+
2273+ CHECK (errorCode == JsNoError);
2274+ CHECK (errorObject == JS_INVALID_REFERENCE);
2275+ REQUIRE (successTest.childModule != JS_INVALID_REFERENCE);
2276+ }
2277+
2278+ TEST_CASE (" ApiTest_PassingDifferentModuleSpecifierTest" , " [ApiTest]" )
2279+ {
2280+ JsRTApiTest::WithSetup (JsRuntimeAttributeEnableExperimentalFeatures, PassingDifferentModuleSpecifierTest);
2281+
2282+ }
2283+
22362284 ModuleResponseData reentrantParseData;
22372285 static JsErrorCode CALLBACK ReentrantParse_FIMC (_In_ JsModuleRecord referencingModule, _In_ JsValueRef specifier, _Outptr_result_maybenull_ JsModuleRecord* dependentModuleRecord)
22382286 {
0 commit comments