コード例 #1
0
        public void ResolveAssembly_WithIndirectPrivateDependency_LogsIfResolutionFails()
        {
            var resolver = new FunctionAssemblyLoader("c:\\");

            var metadata1Directory = @"c:\testroot\test1";
            var metadata1          = new FunctionMetadata {
                Name = "Test1", ScriptFile = $@"{metadata1Directory}\test.tst"
            };
            var metadata2 = new FunctionMetadata {
                Name = "Test2", ScriptFile = @"c:\testroot\test2\test.tst"
            };
            var traceWriter = new TestTraceWriter(TraceLevel.Verbose);

            var mockResolver = new Mock <IFunctionMetadataResolver>();

            mockResolver.Setup(m => m.ResolveAssembly("MyTestAssembly.dll"))
            .Returns <Assembly>(null);

            resolver.CreateOrUpdateContext(metadata1, this.GetType().Assembly, new FunctionMetadataResolver(metadata1.ScriptFile, new Collection <ScriptBindingProvider>(), traceWriter, null), traceWriter, null);
            resolver.CreateOrUpdateContext(metadata2, this.GetType().Assembly, mockResolver.Object, traceWriter, null);

            Assembly result = resolver.ResolveAssembly(AppDomain.CurrentDomain, new System.ResolveEventArgs("MyTestAssembly.dll",
                                                                                                            new TestAssembly(new AssemblyName("MyDirectReference"), @"file:///c:/testroot/test2/bin/MyDirectReference.dll")));

            Assert.Null(result);
            Assert.Equal(1, traceWriter.Traces.Count);
            Assert.Contains("MyTestAssembly.dll", traceWriter.Traces[0].Message);
        }
        public void ResolveAssembly_WithIndirectPrivateDependency_IsResolved()
        {
            var resolver = new FunctionAssemblyLoader("c:\\");

            var metadata1 = new FunctionMetadata {
                Name = "Test1", ScriptFile = @"c:\testroot\test1\test.tst"
            };
            var metadata2 = new FunctionMetadata {
                Name = "Test2", ScriptFile = @"c:\testroot\test2\test.tst"
            };
            var traceWriter = new TestTraceWriter(TraceLevel.Verbose);

            var mockResolver = new Mock <IFunctionMetadataResolver>();

            mockResolver.Setup(m => m.ResolveAssembly("MyTestAssembly.dll"))
            .Returns(new TestAssembly(new AssemblyName("MyTestAssembly")));

            resolver.CreateOrUpdateContext(metadata1, this.GetType().Assembly, new FunctionMetadataResolver(metadata1, new Collection <ScriptBindingProvider>(), traceWriter, null), traceWriter, null);
            resolver.CreateOrUpdateContext(metadata2, this.GetType().Assembly, mockResolver.Object, traceWriter, null);

            Assembly result = resolver.ResolveAssembly(null, new System.ResolveEventArgs("MyTestAssembly.dll",
                                                                                         new TestAssembly(new AssemblyName("MyDirectReference"), @"file:///c:/testroot/test2/bin/MyDirectReference.dll")));

            Assert.NotNull(result);
        }