コード例 #1
0
        public AndConstraint <DependencyContextAssertions> HaveNoDuplicateRuntimeAssemblies(string runtimeIdentifier)
        {
            var assemblyNames = _dependencyContext.GetRuntimeAssemblyNames(runtimeIdentifier);

            var duplicateAssemblies = assemblyNames.GroupBy(n => n.Name).Where(g => g.Count() > 1);

            duplicateAssemblies.Select(g => g.Key).Should().BeEmpty();

            return(new AndConstraint <DependencyContextAssertions>(this));
        }
コード例 #2
0
        /// <summary>
        /// Returns all assembly names for all matching runtime libraries matching specified patterns.
        /// </summary>
        /// <param name="context">The application's dependency context to search.</param>
        /// <param name="patterns">Patterns to match against the runtime assembly names.</param>
        /// <returns>Collection of matching assemblies.</returns>
        public static AssemblyName[] ProbeForMatchingAssemblyNames(this DependencyContext context,
                                                                   params string[] patterns)
        {
            var runtimeId     = RuntimeEnvironment.GetRuntimeIdentifier();
            var assemblyNames = context.GetRuntimeAssemblyNames(runtimeId)
                                .Where(an => MatchesPattern(an.Name, patterns))
                                .ToArray();

            return(assemblyNames);
        }
コード例 #3
0
        internal static void LoadPlugins(DependencyContext dependencyContext)
        {
            var plugins = dependencyContext
                          .GetRuntimeAssemblyNames(RuntimeEnvironment.GetRuntimeIdentifier())
                          .Where(l => l.Name.StartsWith(TestFrameworkName))
                          .Select(l => Assembly.Load(new AssemblyName(l.Name)).GetType($"{TestFrameworkName}.Plugins.{l.Name.Replace(TestFrameworkName, string.Empty).Trim('.')}TestPlugin"))
                          .Where(p => p != null);

            if (!plugins.Any())
            {
                throw new InvalidOperationException("Test plugins could not be loaded. Depending on your project's configuration you may need to set the 'preserveCompilationContext' property under 'buildOptions' to 'true' in the test assembly's 'project.json' file and/or may need to call '.StartsFrom<TStartup>().WithTestAssembly(this)'.");
            }

            plugins.ForEach(t =>
            {
                var plugin = Activator.CreateInstance(t);

                var defaultRegistrationPlugin = plugin as IDefaultRegistrationPlugin;
                if (defaultRegistrationPlugin != null)
                {
                    DefaultRegistrationPlugins.Add(defaultRegistrationPlugin);
                }

                var servicePlugin = plugin as IServiceRegistrationPlugin;
                if (servicePlugin != null)
                {
                    ServiceRegistrationPlugins.Add(servicePlugin);
                }

                var routingServicePlugin = plugin as IRoutingServiceRegistrationPlugin;
                if (routingServicePlugin != null)
                {
                    RoutingServiceRegistrationPlugins.Add(routingServicePlugin);
                }

                var initializationPlugin = plugin as IInitializationPlugin;
                if (initializationPlugin != null)
                {
                    InitializationPlugins.Add(initializationPlugin);
                }

                var httpFeatureRegistrationPlugin = plugin as IHttpFeatureRegistrationPlugin;
                if (httpFeatureRegistrationPlugin != null)
                {
                    TestHelper.HttpFeatureRegistrationPlugins.Add(httpFeatureRegistrationPlugin);
                }

                var shouldPassForPlugin = plugin as IShouldPassForPlugin;
                if (shouldPassForPlugin != null)
                {
                    TestHelper.ShouldPassForPlugins.Add(shouldPassForPlugin);
                }
            });
        }
コード例 #4
0
        public static void LoadPlugins(DependencyContext dependencyContext)
        {
            var testFrameworkName = TestFramework.TestFrameworkName;

            var testFrameworkAssemblies = dependencyContext
                                          .GetRuntimeAssemblyNames(RuntimeEnvironment.GetRuntimeIdentifier())
                                          .Where(l => l.Name.StartsWith(testFrameworkName))
                                          .ToArray();

            if (testFrameworkAssemblies.Length == 7 && testFrameworkAssemblies.Any(t => t.Name == $"{testFrameworkName}.Lite"))
            {
                TestCounter.SkipValidation = true;
            }

            var plugins = testFrameworkAssemblies
                          .Select(l => Assembly
                                  .Load(new AssemblyName(l.Name))
                                  .GetType($"{testFrameworkName}.Plugins.{l.Name.Replace(testFrameworkName, string.Empty).Replace(".", string.Empty)}TestPlugin"))
                          .Where(p => p != null)
                          .ToArray();

            if (!plugins.Any())
            {
                throw new InvalidOperationException("Test plugins could not be loaded. Depending on your project's configuration you may need to set '<PreserveCompilationContext>true</PreserveCompilationContext>' in the test assembly's '.csproj' file and/or may need to call '.StartsFrom<TStartup>().WithTestAssembly(this)'.");
            }

            plugins.ForEach(t =>
            {
                var plugin = Activator.CreateInstance(t);

                if (plugin is IDefaultRegistrationPlugin defaultRegistrationPlugin)
                {
                    DefaultRegistrationPlugins.Add(defaultRegistrationPlugin);
                }

                if (plugin is IServiceRegistrationPlugin servicePlugin)
                {
                    ServiceRegistrationPlugins.Add(servicePlugin);
                }

                if (plugin is IRoutingServiceRegistrationPlugin routingServicePlugin)
                {
                    RoutingServiceRegistrationPlugins.Add(routingServicePlugin);
                }

                if (plugin is IInitializationPlugin initializationPlugin)
                {
                    InitializationPlugins.Add(initializationPlugin);
                }

                if (plugin is IHttpFeatureRegistrationPlugin httpFeatureRegistrationPlugin)
                {
                    TestHelper.HttpFeatureRegistrationPlugins.Add(httpFeatureRegistrationPlugin);
                }

                if (plugin is IShouldPassForPlugin shouldPassForPlugin)
                {
                    TestHelper.ShouldPassForPlugins.Add(shouldPassForPlugin);
                }
            });
        }