@@ -392,6 +392,50 @@ public async Task GetExtensionsStartupTypes_LegacyBundles_UsesExtensionBundleBin
392392 }
393393 }
394394
395+ [ Fact ]
396+ public async Task GetExtensionsStartupTypes_DotnetIsolated_ExtensionBundleConfigured ( )
397+ {
398+ using ( var directory = GetTempDirectory ( ) )
399+ {
400+ var binPath = Path . Combine ( directory . Path , "bin" ) ;
401+ TestMetricsLogger testMetricsLogger = new TestMetricsLogger ( ) ;
402+ TestLoggerProvider testLoggerProvider = new TestLoggerProvider ( ) ;
403+ LoggerFactory factory = new LoggerFactory ( ) ;
404+ factory . AddProvider ( testLoggerProvider ) ;
405+ var testLogger = factory . CreateLogger < ScriptStartupTypeLocator > ( ) ;
406+
407+ var mockExtensionBundleManager = new Mock < IExtensionBundleManager > ( ) ;
408+ mockExtensionBundleManager . Setup ( e => e . IsExtensionBundleConfigured ( ) ) . Returns ( true ) ;
409+ mockExtensionBundleManager . Setup ( e => e . GetExtensionBundleBinPathAsync ( ) ) . Returns ( Task . FromResult ( binPath ) ) ;
410+ mockExtensionBundleManager . Setup ( e => e . IsLegacyExtensionBundle ( ) ) . Returns ( false ) ;
411+ mockExtensionBundleManager . Setup ( e => e . GetExtensionBundleDetails ( ) ) . Returns ( Task . FromResult ( GetV2BundleDetails ( ) ) ) ;
412+
413+ RpcWorkerConfig workerConfig = new RpcWorkerConfig ( ) { Description = TestHelpers . GetTestWorkerDescription ( "dotnet-isolated" , "none" , true ) } ;
414+ var tempOptions = new LanguageWorkerOptions ( ) ;
415+ tempOptions . WorkerConfigs = new List < RpcWorkerConfig > ( ) ;
416+ tempOptions . WorkerConfigs . Add ( workerConfig ) ;
417+ var optionsMonitor = new TestOptionsMonitor < LanguageWorkerOptions > ( tempOptions ) ;
418+ var mockFunctionMetadataManager = GetTestFunctionMetadataManager ( optionsMonitor ) ;
419+
420+ var languageWorkerOptions = new TestOptionsMonitor < LanguageWorkerOptions > ( tempOptions ) ;
421+ Environment . SetEnvironmentVariable ( EnvironmentSettingNames . FunctionWorkerRuntime , "dotnet-isolated" ) ;
422+
423+ var discoverer = new ScriptStartupTypeLocator ( directory . Path , testLogger , mockExtensionBundleManager . Object , mockFunctionMetadataManager , testMetricsLogger , languageWorkerOptions ) ;
424+
425+ // Act
426+ var types = await discoverer . GetExtensionsStartupTypesAsync ( ) ;
427+
428+ //Assert
429+ var traces = testLoggerProvider . GetAllLogMessages ( ) ;
430+ var expectedTrace = traces . FirstOrDefault ( val => val . EventId . Name . Equals ( "ScriptStartNotLoadingExtensionBundle" ) ) ;
431+ Assert . NotNull ( expectedTrace ) ;
432+
433+ AreExpectedMetricsGenerated ( testMetricsLogger ) ;
434+ Assert . Single ( types ) ;
435+ Assert . Equal ( typeof ( AzureStorageWebJobsStartup ) . FullName , types . Single ( ) . FullName ) ;
436+ }
437+ }
438+
395439 [ Theory ]
396440 [ InlineData ( false ) ]
397441 [ InlineData ( true ) ]
0 commit comments