Beispiel #1
0
        public SS14UnitTest()
        {
            /*
             * Assembly.getEntryAssembly() returns null because Unit tests
             * are unmanaged and have no app domain managers.
             * this causes IOCManager to never load or build any of the types
             *
             * Fixed by Setting the Entry assembly values manually here
             */
            Assembly assembly = Assembly.GetCallingAssembly();

            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(domain, manager);

            /* end fix */


            //ConfigurationManager setup
            GetConfigurationManager = IoCManager.Resolve <IPlayerConfigurationManager>();
            GetConfigurationManager.Initialize("./player_config.xml");

            //ResourceManager Setup
            GetResourceManager = IoCManager.Resolve <IResourceManager>();
            InitializeResources();
        }
Beispiel #2
0
        static When_creating_a_headtracker()
        {
            var manager            = new AppDomainManager();
            var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, Assembly.GetCallingAssembly());

            var domainManagerField = AppDomain.CurrentDomain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(AppDomain.CurrentDomain, manager);
        }
Beispiel #3
0
        /// <summary>
        /// Allows setting the Entry Assembly when needed.
        /// Use AssemblyUtilities.SetEntryAssembly() as first line in XNA ad hoc tests
        /// </summary>
        /// <param name="assembly">Assembly to set as entry assembly</param>
        public static void SetEntryAssembly(Assembly assembly)
        {
            var manager            = new AppDomainManager();
            var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, assembly);

            var domain             = AppDomain.CurrentDomain;
            var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(domain, manager);
        }
        private void SetCurrentAssembly()
        {
            var assembly                        = Assembly.GetCallingAssembly();
            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, assembly);
            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(domain, manager);
        }
Beispiel #5
0
        /// <summary>
        /// Allows setting the Entry Assembly when needed.
        /// Use AssemblyUtilities.SetEntryAssembly() as first line in XNA ad hoc tests
        /// </summary>
        /// <param name="assembly">Assembly to set as entry assembly</param>
        public static void SetEntryAssembly(System.Reflection.Assembly assembly)
        {
#if NET462
            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
            entryAssemblyfield.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
            domainManagerField.SetValue(domain, manager);
#endif
        }
        private static void InitEntryAssembly()
        {
            var assembly           = Assembly.GetCallingAssembly();
            var manager            = new AppDomainManager();
            var entryAssemblyField = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyField?.SetValue(manager, assembly);

            var domain             = AppDomain.CurrentDomain;
            var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField?.SetValue(domain, manager);
        }
    public void TestAssemblySetup()
    {
#if NET46
        // recent SAP HANA provider uses Assembly.GetEntryAssembly() calls during native dlls discovery, which
        // leads to NRE as it returns null under NETFX, so we need to fake this method result to unblock HANA testing
        // https://github.com/microsoft/vstest/issues/1834
        // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/
        var assembly = Assembly.GetCallingAssembly();

        var manager            = new AppDomainManager();
        var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
        entryAssemblyfield.SetValue(manager, assembly);

        var domain             = AppDomain.CurrentDomain;
        var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
        domainManagerField.SetValue(domain, manager);
#endif

        // netcoreapp2.1 adds DbProviderFactories support, but providers should be registered by application itself
        // this code allows to load assembly using factory without adding explicit reference to project
        RegisterSapHanaFactory();
        RegisterSqlCEFactory();

#if !NETCOREAPP2_1 && !AZURE
        // configure assembly redirect for referenced assemblies to use version from GAC
        // this solves exception from provider-specific tests, when it tries to load version from redist folder
        // but loaded from GAC assembly has other version
        AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
        {
            var requestedAssembly = new AssemblyName(args.Name);

            if (requestedAssembly.Name == "IBM.Data.DB2")
            {
                return(DbProviderFactories.GetFactory("IBM.Data.DB2").GetType().Assembly);
            }

            if (requestedAssembly.Name == "IBM.Data.Informix")
            {
                // chose your red or blue pill carefully
                //return DbProviderFactories.GetFactory("IBM.Data.Informix").GetType().Assembly;
                return(typeof(IBM.Data.Informix.IfxTimeSpan).Assembly);
            }

            return(null);
        };
#endif

        // register test providers
        TestNoopProvider.Init();
        SQLiteMiniprofilerProvider.Init();
    }
Beispiel #8
0
        public void Initialize()
        {
            Assembly assembly = Assembly.GetAssembly(GetType());

            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(domain, manager);
        }
    public void TestAssemblySetup()
    {
#if !NETSTANDARD1_6 && !NETSTANDARD2_0 && !APPVEYOR && !TRAVIS
        // recent SAP HANA provider uses Assembly.GetEntryAssembly() calls during native dlls discovery, which
        // leads to NRE as it returns null under NETFX, so we need to fake this method result to unblock HANA testing
        // https://github.com/microsoft/vstest/issues/1834
        // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/
        var assembly = Assembly.GetCallingAssembly();

        var manager            = new AppDomainManager();
        var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
        entryAssemblyfield.SetValue(manager, assembly);

        var domain             = AppDomain.CurrentDomain;
        var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
        domainManagerField.SetValue(domain, manager);
#endif

#if !NETSTANDARD1_6 && !NETSTANDARD2_0 && !APPVEYOR && !TRAVIS
        // configure assembly redirect for referenced assemblies to use version from GAC
        // this solves exception from provider-specific tests, when it tries to load version from redist folder
        // but loaded from GAC assembly has other version
        AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
        {
            var requestedAssembly = new AssemblyName(args.Name);
            if (requestedAssembly.Name == "IBM.Data.DB2")
            {
                return(DbProviderFactories.GetFactory("IBM.Data.DB2").GetType().Assembly);
            }
            if (requestedAssembly.Name == "IBM.Data.Informix")
            {
                // chose your red or blue pill carefully
                //return DbProviderFactories.GetFactory("IBM.Data.Informix").GetType().Assembly;
                return(typeof(IBM.Data.Informix.IfxTimeSpan).Assembly);
            }

            return(null);
        };
#endif

        // register test providers
        TestNoopProvider.Init();

        // disabled for core, as default loader doesn't allow multiple assemblies with same name
        // https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/assemblyloadcontext.md
#if !NETSTANDARD1_6 && !NETSTANDARD2_0
        Npgsql4PostgreSQLDataProvider.Init();
#endif
    }
        private static void FixEntryAssembly()
        {
            // http://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/
            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType()
                                                  .GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield?.SetValue(manager, typeof(Startup).Assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType()
                                           .GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField?.SetValue(domain, manager);
        }
        public BasicTestsBase()
        {
            /* Preparing test start */
            Assembly         assembly           = Assembly.GetCallingAssembly();
            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(domain, manager);
            /* Preparing test end */
        }
Beispiel #12
0
        private static void SetEntryAssembly <T>()
        {
            Assembly assembly = typeof(T).Assembly;

            var       manager            = new AppDomainManager();
            FieldInfo entryAssemblyfield =
                manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField =
                domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(domain, manager);
        }
Beispiel #13
0
    private static void SetEntryAssembly()
    {
        // Ensures that Assembly.GetEntryAssembly() does not return null when running unit tests
        // See: http://stackoverflow.com/a/21888521/3628232
        var assembly = Assembly.GetCallingAssembly();

        var manager            = new AppDomainManager();
        var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

        entryAssemblyfield.SetValue(manager, assembly);

        var domain             = AppDomain.CurrentDomain;
        var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

        domainManagerField.SetValue(domain, manager);
    }
Beispiel #14
0
        public BaseTest()
        {
            // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/
            // https://stackoverflow.com/a/21888521/
            /* Preparing test start */
            Assembly assembly = Assembly.GetCallingAssembly();

            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            entryAssemblyfield.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            domainManagerField.SetValue(domain, manager);
            /* Preparing test end */
        }
Beispiel #15
0
        /// <summary>
        /// Allows setting the Entry Assembly when needed.
        /// Use AssemblyUtilities.SetEntryAssembly() as first line in XNA ad hoc tests
        /// </summary>
        /// <param name="assembly">Assembly to set as entry assembly</param>
        public static void Inject(Assembly assembly = null)
        {
            assembly = assembly ?? Assembly.GetCallingAssembly();
            var manager            = new AppDomainManager();
            var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);

            if (entryAssemblyfield != null)
            {
                entryAssemblyfield.SetValue(manager, assembly);
            }

            var domain             = AppDomain.CurrentDomain;
            var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);

            if (domainManagerField != null)
            {
                domainManagerField.SetValue(domain, manager);
            }
        }
Beispiel #16
0
        public BaseTest()
        {
            //in case multi target project,use #if because no appdomain in netcore
#if !NETCOREAPP
            /* Preparing test start */
            Assembly assembly = Assembly.GetCallingAssembly();

            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType()
                                                  .GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
            entryAssemblyfield?.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType()
                                           .GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
            domainManagerField?.SetValue(domain, manager);
            /* Preparing test end */
#endif
        }
Beispiel #17
0
        static void SapHanaSPS04Fixes()
        {
            // recent SAP HANA provider (SPS04 040, fixed in 045) uses Assembly.GetEntryAssembly() calls during native dlls discovery, which
            // leads to NRE as it returns null under NETFX, so we need to fake this method result to unblock HANA testing
            // https://github.com/microsoft/vstest/issues/1834
            // https://dejanstojanovic.net/aspnet/2015/january/set-entry-assembly-in-unit-testing-methods/
            try
            {
                var assembly = Assembly.GetCallingAssembly();

                var manager            = new AppDomainManager();
                var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
                entryAssemblyfield.SetValue(manager, assembly);

                var domain             = AppDomain.CurrentDomain;
                var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
                domainManagerField.SetValue(domain, manager);
            }
            catch { /* ne shmagla */ }
        }
Beispiel #18
0
        /// <summary>
        ///     Allows setting the Entry Assembly when needed.
        ///     Use SetEntryAssembly() only for tests
        /// </summary>
        /// <param name="assembly">Assembly to set as entry assembly</param>
        public static void SetEntryAssembly(Assembly assembly)
        {
            if (Assembly.GetEntryAssembly() != null)
            {
                return;
            }
#if NET461
            var manager            = new AppDomainManager();
            var entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
            if (entryAssemblyfield != null)
            {
                entryAssemblyfield.SetValue(manager, assembly);
            }

            var domain             = AppDomain.CurrentDomain;
            var domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
            if (domainManagerField != null)
            {
                domainManagerField.SetValue(domain, manager);
            }
#endif
        }
        public virtual void Init()
        {
#if NET452
            Assembly assembly = Assembly.GetCallingAssembly();

            AppDomainManager manager            = new AppDomainManager();
            FieldInfo        entryAssemblyfield = manager.GetType().GetField("m_entryAssembly", BindingFlags.Instance | BindingFlags.NonPublic);
            entryAssemblyfield.SetValue(manager, assembly);

            AppDomain domain             = AppDomain.CurrentDomain;
            FieldInfo domainManagerField = domain.GetType().GetField("_domainManager", BindingFlags.Instance | BindingFlags.NonPublic);
            domainManagerField.SetValue(domain, manager);
#endif
            var config               = CfgUtils.LookupDefaultConfigs();
            var serviceOptions       = new ServiceOptions();
            var exchangeSection      = config.GetSection("Exchange");
            var serviceOptionSection = exchangeSection.GetSection("Service");
            serviceOptionSection?.Bind(serviceOptions);

            CfgUtils.SetupIoC(config);
            ProcessDataService <Task> .Configuration = config;
            ImportDataService <Task> .Configuration  = config;
            ExportDataService <Task> .Configuration  = config;
        }