public void CreateInAppDomain()
        {
            var resolver = AppDomainAssemblyResolver.CreateInAppDomain(_appDomain, AppDomain.CurrentDomain.BaseDirectory);

            Assert.That(RemotingServices.IsTransparentProxy(resolver), Is.True);
            Assert.That(resolver.AssemblyDirectory, Is.EqualTo(AppDomain.CurrentDomain.BaseDirectory));
        }
 public void ShouldRegisterTheAssemblyIfTheAssemblyDoesNotExist(
     [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     assemblyInfoMap.ContainsKey(_assemblyName.Name).ShouldBeTrue();
 }
 public void ShouldLogWhenTheAssemblyIsMapped(
     [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
     [Frozen] Mock <ILog> loggerMock,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     loggerMock.Verify(
         l => l.DebugFormat("Mapping Assembly {0} to version:{1}", _assemblyName.Name, _assemblyName.Version));
 }
 public void ShouldLogWhenTheAssemblyIsMapped(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] Mock<ILog> loggerMock,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     loggerMock.Verify(
         l => l.DebugFormat("Mapping Assembly {0} to version:{1}", _assemblyName.Name, _assemblyName.Version));
 }
 public void ShouldOverrideIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasNotLoaded(
     [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     _info.Version = new Version(0, 0);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     _info = assemblyInfoMap[_assemblyName.Name];
     _info.Version.ShouldEqual(_assemblyName.Version);
 }
Example #6
0
 public void ShouldLogWhenTheAssemblyIsMapped(
     [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
     [Frozen] TestLogProvider logProvider,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny <string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     logProvider.Output.ShouldContain(
         "DEBUG: Mapping Assembly " + _assemblyName.Name + " to version:" + _assemblyName.Version);
 }
 public void ShouldNotOverrideIfTheAssemblyVersionIsLessThenOrEqualToTheMappedAssembly(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
     AppDomainAssemblyResolver resolver)
 {
     _info.Version = new Version(99, 0, 0);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     assemblyInfoMap[_assemblyName.Name] = _info;
     resolver.AddAssemblyPaths(new[] { _info.Path });
     var newInfo = assemblyInfoMap[_assemblyName.Name];
     newInfo.Version.ShouldEqual(_info.Version);
 }
            public void ShouldReturnTheAssemblyIfItWasLoaded(
                [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
                [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
                AppDomainAssemblyResolver resolver)
            {
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                assemblyUtilityMock.Setup(u => u.LoadFile(_info.Path)).Returns(typeof(Mock).Assembly);
                assemblyInfoMap[_assemblyName.Name] = _info;
                var args     = new ResolveEventArgs(_assemblyName.Name);
                var assembly = resolver.AssemblyResolve(this, args);

                assembly.ShouldEqual(_info.Assembly);
            }
 public void ShouldNotOverrideIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasLoaded(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
     AppDomainAssemblyResolver resolver)
 {
     _info.Version = new Version(0, 0);
     _info.Assembly = typeof(Mock).Assembly;
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     assemblyInfoMap[_assemblyName.Name] = _info;
     resolver.AddAssemblyPaths(new[] { _info.Path });
     var newInfo = assemblyInfoMap[_assemblyName.Name];
     newInfo.Version.ShouldEqual(_info.Version);
 }
            public void ShouldNotOverrideIfTheAssemblyVersionIsLessThenOrEqualToTheMappedAssembly(
                [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
                [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
                AppDomainAssemblyResolver resolver)
            {
                _info.Version = new Version(99, 0, 0);
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                assemblyInfoMap[_assemblyName.Name] = _info;
                resolver.AddAssemblyPaths(new[] { _info.Path });
                var newInfo = assemblyInfoMap[_assemblyName.Name];

                newInfo.Version.ShouldEqual(_info.Version);
            }
Example #11
0
            public void ShouldLogTheAssemblyThatIsBeingResolved(
                [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
                [Frozen] TestLogProvider logProvider,
                [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
                AppDomainAssemblyResolver resolver)
            {
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                assemblyUtilityMock.Setup(u => u.LoadFile(_info.Path)).Returns(typeof(Mock).Assembly);
                assemblyInfoMap[_assemblyName.Name] = _info;

                resolver.AssemblyResolve(this, new ResolveEventArgs(_assemblyName.Name));
                logProvider.Output.ShouldContain(
                    "DEBUG: Resolving from: " + _assemblyName.Name + " to: " + _assemblyName.ToString());
            }
            public void ShouldLogTheAssemblyThatIsBeingResolved(
                [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
                [Frozen] Mock <ILog> loggerMock,
                [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
                AppDomainAssemblyResolver resolver)
            {
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                assemblyUtilityMock.Setup(u => u.LoadFile(_info.Path)).Returns(typeof(Mock).Assembly);
                assemblyInfoMap[_assemblyName.Name] = _info;

                resolver.AssemblyResolve(this, new ResolveEventArgs(_assemblyName.Name));
                loggerMock.Verify(
                    l => l.DebugFormat("Resolving from: {0} to: {1}", _assemblyName.Name, It.Is <AssemblyName>(n => n.ToString().Equals(_assemblyName.ToString()))));
            }
            public void ShouldWarnIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasLoaded(
                [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
                [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
                [Frozen] Mock <ILog> loggerMock,
                AppDomainAssemblyResolver resolver)
            {
                _info.Version = new Version(0, 0);
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                _info.Assembly = typeof(Mock).Assembly;
                assemblyInfoMap[_assemblyName.Name] = _info;
                resolver.AddAssemblyPaths(new[] { _info.Path });

                loggerMock.Verify(
                    l => l.WarnFormat("Conflict: Assembly {0} with version {1} cannot be added as it has already been resolved", _info.Path, _assemblyName.Version));
            }
Example #14
0
 public void ShouldWarnIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasLoaded(
     [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
     [Frozen] TestLogProvider logProvider,
     AppDomainAssemblyResolver resolver)
 {
     _info.Version = new Version(0, 0);
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny <string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     _info.Assembly = typeof(Mock).Assembly;
     assemblyInfoMap[_assemblyName.Name] = _info;
     resolver.AddAssemblyPaths(new[] { _info.Path });
     logProvider.Output.ShouldContain(
         "WARN: Conflict: Assembly " + _info.Path + " with version " + _assemblyName.Version +
         " cannot be added as it has already been resolved");
 }
        public void CreateInAppDomain_FromShadowCopiedScenario()
        {
            var setupInfo = AppDomain.CurrentDomain.SetupInformation;

            setupInfo.ShadowCopyFiles = "true";
            var shadowCopiedAppDomain = AppDomain.CreateDomain("ShadowCopier", AppDomain.CurrentDomain.Evidence, setupInfo);

            try
            {
                shadowCopiedAppDomain.DoCallBack(
                    delegate
                {
                    var resolver = AppDomainAssemblyResolver.CreateInAppDomain(_appDomain, AppDomain.CurrentDomain.BaseDirectory);
                    Assert.That(resolver, Is.Not.Null);
                });
            }
            finally
            {
                AppDomain.Unload(shadowCopiedAppDomain);
            }
        }
            public void ShouldRetrieveTheMappedAssemblyInfo()
            {
                var assemblyUtilityMock = new Mock <IAssemblyUtility>();
                var assemblyInfoMapMock = new Mock <IDictionary <string, AssemblyInfo> >();

                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                AssemblyInfo foundInfo = null;

                assemblyInfoMapMock.Setup(m => m.TryGetValue(It.IsAny <string>(), out foundInfo)).Returns(false);

                var resolver = new AppDomainAssemblyResolver(
                    Mock.Of <ILog>(),
                    Mock.Of <IFileSystem>(),
                    Mock.Of <IAssemblyResolver>(),
                    assemblyUtilityMock.Object,
                    assemblyInfoMapMock.Object
                    );

                resolver.AssemblyResolve(this, new ResolveEventArgs(_assemblyName.Name));
                assemblyInfoMapMock.Verify(m => m.TryGetValue(_assemblyName.Name, out foundInfo));
            }
Example #17
0
            public void ShouldRetrieveTheMappedAssemblyInfo()
            {
                var assemblyUtilityMock = new Mock <IAssemblyUtility>();
                var assemblyInfoMapMock = new Mock <IDictionary <string, AssemblyInfo> >();

                assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny <string>())).Returns(true);
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                AssemblyInfo foundInfo = null;

                assemblyInfoMapMock.Setup(m => m.TryGetValue(It.IsAny <string>(), out foundInfo)).Returns(false);

                var resolver = new AppDomainAssemblyResolver(
                    new TestLogProvider(),
                    Mock.Of <IFileSystem>(),
                    Mock.Of <IAssemblyResolver>(),
                    assemblyUtilityMock.Object,
                    assemblyInfoMapMock.Object
                    );

                resolver.AddAssemblyPaths(new[] { _info.Path });
                assemblyInfoMapMock.Verify(m => m.TryGetValue(_assemblyName.Name, out foundInfo));
            }
 public void ShouldReturnTheAssemblyIfItWasLoaded(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     assemblyUtilityMock.Setup(u => u.LoadFile(_info.Path)).Returns(typeof(Mock).Assembly);
     assemblyInfoMap[_assemblyName.Name] = _info;
     var args = new ResolveEventArgs(_assemblyName.Name);
     var assembly = resolver.AssemblyResolve(this, args);
     assembly.ShouldEqual(_info.Assembly);
 }
            public void ShouldLogTheAssemblyThatIsBeingResolved(
                [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
                [Frozen] TestLogProvider logProvider,
                [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
                AppDomainAssemblyResolver resolver)
            {
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                assemblyUtilityMock.Setup(u => u.LoadFile(_info.Path)).Returns(typeof(Mock).Assembly);
                assemblyInfoMap[_assemblyName.Name] = _info;

                resolver.AssemblyResolve(this, new ResolveEventArgs(_assemblyName.Name));
                logProvider.Output.ShouldContain(
                    "DEBUG: Resolving from: " + _assemblyName.Name + " to: " + _assemblyName.ToString());
            }
            public void ShouldRetrieveTheMappedAssemblyInfo()
            {
                var assemblyUtilityMock = new Mock<IAssemblyUtility>();
                var assemblyInfoMapMock = new Mock<IDictionary<string, AssemblyInfo>>();
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                AssemblyInfo foundInfo = null;
                assemblyInfoMapMock.Setup(m => m.TryGetValue(It.IsAny<string>(), out foundInfo)).Returns(false);

                var resolver = new AppDomainAssemblyResolver(
                    new TestLogProvider(),
                    Mock.Of<IFileSystem>(),
                    Mock.Of<IAssemblyResolver>(),
                    assemblyUtilityMock.Object,
                    assemblyInfoMapMock.Object
                    );

                resolver.AssemblyResolve(this, new ResolveEventArgs(_assemblyName.Name));
                assemblyInfoMapMock.Verify(m => m.TryGetValue(_assemblyName.Name, out foundInfo));
            }
 public void ShouldWarnIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasLoaded(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
     [Frozen] TestLogProvider logProvider,
     AppDomainAssemblyResolver resolver)
 {
     _info.Version = new Version(0, 0);
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny<string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     _info.Assembly = typeof(Mock).Assembly;
     assemblyInfoMap[_assemblyName.Name] = _info;
     resolver.AddAssemblyPaths(new[] { _info.Path });
     logProvider.Output.ShouldContain(
         "WARN: Conflict: Assembly " + _info.Path + " with version " + _assemblyName.Version +
         " cannot be added as it has already been resolved");
 }
 public void ShouldLogWhenTheAssemblyIsMapped(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] TestLogProvider logProvider,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny<string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     logProvider.Output.ShouldContain(
         "DEBUG: Mapping Assembly " + _assemblyName.Name + " to version:" + _assemblyName.Version);
 }
 public void ShouldOverrideIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasNotLoaded(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny<string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     _info.Version = new Version(0, 0);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     _info = assemblyInfoMap[_assemblyName.Name];
     _info.Version.ShouldEqual(_assemblyName.Version);
 }
 public void ShouldRegisterTheAssemblyIfTheAssemblyDoesNotExist(
     [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny<string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     assemblyInfoMap.ContainsKey(_assemblyName.Name).ShouldBeTrue();
 }
 private AppDomainAssemblyResolver CreateResolver()
 {
     return(AppDomainAssemblyResolver.CreateInAppDomain(_appDomain, AppDomain.CurrentDomain.BaseDirectory));
 }
            public void ShouldLogTheAssemblyThatIsBeingResolved(
                [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
                [Frozen] Mock<ILog> loggerMock,
                [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
                AppDomainAssemblyResolver resolver)
            {
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                assemblyUtilityMock.Setup(u => u.LoadFile(_info.Path)).Returns(typeof(Mock).Assembly);
                assemblyInfoMap[_assemblyName.Name] = _info;

                resolver.AssemblyResolve(this, new ResolveEventArgs(_assemblyName.Name));
                loggerMock.Verify(
                    l => l.DebugFormat("Resolving from: {0} to: {1}", _assemblyName.Name, It.Is<AssemblyName>(n => n.ToString().Equals(_assemblyName.ToString()))));
            }
            public void ShouldWarnIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasLoaded(
                [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock,
                [Frozen] IDictionary<string, AssemblyInfo> assemblyInfoMap,
                [Frozen] Mock<ILog> loggerMock,
                AppDomainAssemblyResolver resolver)
            {
                _info.Version = new Version(0, 0);
                assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny<string>())).Returns(true);
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                _info.Assembly = typeof(Mock).Assembly;
                assemblyInfoMap[_assemblyName.Name] = _info;
                resolver.AddAssemblyPaths(new[] { _info.Path });

                loggerMock.Verify(
                    l => l.WarnFormat("Conflict: Assembly {0} with version {1} cannot be added as it has already been resolved", _info.Path, _assemblyName.Version));
            }
            public void ShouldRetrieveTheMappedAssemblyInfo()
            {
                var assemblyUtilityMock = new Mock<IAssemblyUtility>();
                var assemblyInfoMapMock = new Mock<IDictionary<string, AssemblyInfo>>();
                assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny<string>())).Returns(true);
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                AssemblyInfo foundInfo = null;
                assemblyInfoMapMock.Setup(m => m.TryGetValue(It.IsAny<string>(), out foundInfo)).Returns(false);

                var resolver = new AppDomainAssemblyResolver(
                    Mock.Of<ILog>(),
                    Mock.Of<IFileSystem>(),
                    Mock.Of<IAssemblyResolver>(),
                    assemblyUtilityMock.Object,
                    assemblyInfoMapMock.Object
                );

                resolver.AddAssemblyPaths(new[] { _info.Path });
                assemblyInfoMapMock.Verify(m => m.TryGetValue(_assemblyName.Name, out foundInfo));
            }