private TestSuite BuildTestAssembly(Assembly assembly, string assemblyName, IList <Test> fixtures)
        {
            TestSuite testAssembly = new TestAssembly(assembly, assemblyName);

            if (fixtures.Count == 0)
            {
                testAssembly.MakeInvalid("Has no TestFixtures");
            }
            else
            {
                NamespaceTreeBuilder treeBuilder =
                    new NamespaceTreeBuilder(testAssembly);
                treeBuilder.Add(fixtures);
                testAssembly = treeBuilder.RootSuite;
            }

            testAssembly.ApplyAttributesToTest(assembly);

#if !PORTABLE && !NETSTANDARD1_6
            testAssembly.Properties.Set(PropertyNames.ProcessID, System.Diagnostics.Process.GetCurrentProcess().Id);
            testAssembly.Properties.Set(PropertyNames.AppDomain, AppDomain.CurrentDomain.FriendlyName);
#endif

            // TODO: Make this an option? Add Option to sort assemblies as well?
            testAssembly.Sort();

            return(testAssembly);
        }
        private TestSuite BuildTestAssembly(Assembly assembly, string assemblyName, IList <Test> fixtures)
        {
            TestSuite testAssembly = new TestAssembly(assembly, assemblyName);

            if (fixtures.Count == 0)
            {
                testAssembly.RunState = RunState.NotRunnable;
                testAssembly.Properties.Set(PropertyNames.SkipReason, "Has no TestFixtures");
            }
            else
            {
                NamespaceTreeBuilder treeBuilder =
                    new NamespaceTreeBuilder(testAssembly);
                treeBuilder.Add(fixtures);
                testAssembly = treeBuilder.RootSuite;
            }

            testAssembly.ApplyAttributesToTest(assembly);

#if !PORTABLE
#if !SILVERLIGHT
            testAssembly.Properties.Set(PropertyNames.ProcessID, System.Diagnostics.Process.GetCurrentProcess().Id);
#endif
            testAssembly.Properties.Set(PropertyNames.AppDomain, AppDomain.CurrentDomain.FriendlyName);
#endif

            // TODO: Make this an option? Add Option to sort assemblies as well?
            // [tronghieu.d] - no need to sort tcs, to sync with tc order of tct-mgr
            //testAssembly.Sort();

            return(testAssembly);
        }
Example #3
0
        /// <exclude />
        public IEnumerable <Element> GetRoots(SearchToken searchToken)
        {
            NamespaceTreeBuilder builder = new NamespaceTreeBuilder(OnGetFunctionInfos(searchToken).Cast <INamespaceTreeBuilderLeafInfo>());

            bool hasChildren = (builder.RootFolder.SubFolders.Count != 0) || (builder.RootFolder.Leafs.Count != 0);

            Element element = new Element(_context.CreateElementHandle(new BaseFunctionFolderElementEntityToken(CreateId("", _context.ProviderName))))
            {
                VisualData = new ElementVisualizedData()
                {
                    Label       = RootFolderLabel,
                    ToolTip     = RootFolderToolTip,
                    HasChildren = hasChildren,
                    Icon        = hasChildren ? this.FolderIcon : this.EmptyFolderIcon,
                    OpenedIcon  = OpenFolderIcon
                }
            };

            element.TreeLockBehavior = OnGetTreeLockBehavior();

            IEnumerable <ElementAction> actions = OnGetFolderActions();

            if (actions != null)
            {
                foreach (ElementAction action in actions)
                {
                    element.AddAction(action);
                }
            }

            return(new List <Element> {
                element
            });
        }
        private TestSuite BuildTestAssembly(Assembly assembly, string assemblyNameOrPath, IList <Test> fixtures)
        {
            TestSuite testAssembly = new TestAssembly(assembly, assemblyNameOrPath);

            if (fixtures.Count == 0)
            {
                testAssembly.MakeInvalid("No test fixtures were found.");
            }
            else
            {
                NamespaceTreeBuilder treeBuilder =
                    new NamespaceTreeBuilder(testAssembly);
                treeBuilder.Add(fixtures);
                testAssembly = treeBuilder.RootSuite;
            }

            testAssembly.ApplyAttributesToTest(assembly);

            try
            {
                testAssembly.Properties.Set(PropertyNames.ProcessId, System.Diagnostics.Process.GetCurrentProcess().Id);
            }
            catch (PlatformNotSupportedException)
            { }
            testAssembly.Properties.Set(PropertyNames.AppDomain, AppDomain.CurrentDomain.FriendlyName);

            // TODO: Make this an option? Add Option to sort assemblies as well?
            testAssembly.Sort();

            return(testAssembly);
        }
Example #5
0
        private TestSuite BuildTestAssembly(Assembly assembly, string assemblyName, IList <Test> fixtures)
        {
            TestSuite testAssembly = new TestAssembly(assembly, assemblyName);

            if (fixtures.Count == 0)
            {
                testAssembly.RunState = RunState.NotRunnable;
                testAssembly.Properties.Set(PropertyNames.SkipReason, "Has no TestFixtures");
            }
            else
            {
                NamespaceTreeBuilder treeBuilder =
                    new NamespaceTreeBuilder(testAssembly);
                treeBuilder.Add(fixtures);
                testAssembly = treeBuilder.RootSuite;
            }

            testAssembly.ApplyAttributesToTest(assembly);

            testAssembly.Properties.Set(PropertyNames.ProcessID, System.Diagnostics.Process.GetCurrentProcess().Id);
            testAssembly.Properties.Set(PropertyNames.AppDomain, AppDomain.CurrentDomain.FriendlyName);

            // TODO: Make this an option? Add Option to sort assemblies as well?
            testAssembly.Sort();
            return(testAssembly);
        }
        /// <summary>
        /// Converts a given assembly containing tests to a runnable TestSuite
        /// </summary>
        protected static TestSuite GetTestSuiteFromAssembly(Assembly assembly)
        {
            var treeBuilder = new NamespaceTreeBuilder(
                new TestAssembly(assembly, assembly.GetName().FullName));

            treeBuilder.Add(GetFixtures(assembly));
            return(treeBuilder.RootSuite);
        }
Example #7
0
        public TestResult RunAllUnitTests(Action <string> callback, Assembly testAssembly = null)
        {
            if (testAssembly == null)
            {
                testAssembly = Assembly.GetCallingAssembly();
            }

            CoreExtensions.Host.InitializeService();
            TestExecutionContext.CurrentContext.TestPackage = new TestPackage(string.Format("TestPackage for {0}", testAssembly.GetName().FullName));

            var builder  = new NamespaceTreeBuilder(new TestAssembly(testAssembly, testAssembly.GetName().FullName));
            var fixtures = testAssembly.GetTypes().Where(i => TestFixtureBuilder.CanBuildFrom(i)).Select(i => TestFixtureBuilder.BuildFrom(i)).ToList();

            builder.Add(fixtures);
            return(builder.RootSuite.Run(new ConsoleListener(callback), TestFilter.Empty));
        }
Example #8
0
        private TestSuite BuildTestAssembly(string assemblyName, IList fixtures, bool autoSuites)
        {
            TestSuite testAssembly = new TestAssembly(assemblyName);

            if (autoSuites)
            {
                NamespaceTreeBuilder treeBuilder =
                    new NamespaceTreeBuilder(testAssembly);
                treeBuilder.Add(fixtures);
                testAssembly = treeBuilder.RootSuite;
            }
            else
            {
                foreach (TestSuite fixture in fixtures)
                {
                    if (fixture != null)
                    {
                        if (fixture is SetUpFixture)
                        {
                            fixture.RunState     = RunState.NotRunnable;
                            fixture.IgnoreReason = "SetUpFixture cannot be used when loading tests as a flat list of fixtures";
                        }

                        testAssembly.Add(fixture);
                    }
                }
            }

            if (fixtures.Count == 0)
            {
                testAssembly.RunState     = RunState.NotRunnable;
                testAssembly.IgnoreReason = "Has no TestFixtures";
            }

            NUnitFramework.ApplyCommonAttributes(assembly, testAssembly);

            testAssembly.Properties["_PID"]       = System.Diagnostics.Process.GetCurrentProcess().Id;
            testAssembly.Properties["_APPDOMAIN"] = AppDomain.CurrentDomain.FriendlyName;


            // TODO: Make this an option? Add Option to sort assemblies as well?
            testAssembly.Sort();

            return(testAssembly);
        }
        public IEnumerable <EntityToken> GetParents(EntityToken entityToken)
        {
            if ((entityToken is SqlFunctionProviderRootEntityToken))
            {
                return(new EntityToken[] { });
            }
            else if ((entityToken is SqlFunctionProviderFolderEntityToken))
            {
                SqlFunctionProviderFolderEntityToken token = entityToken as SqlFunctionProviderFolderEntityToken;

                NamespaceTreeBuilder builder = (NamespaceTreeBuilder)ElementFacade.GetData(new ElementProviderHandle(token.Source), token.ConnectionId);

                NamespaceTreeBuilderFolder folder = builder.FindFolder(f => StringExtensionMethods.CreateNamespace(f.Namespace, f.Name, '.') == token.Id);

                if (folder == null)
                {
                    return(null);
                }
                else
                {
                    int idx = token.Id.LastIndexOf('.');
                    if (idx != -1)
                    {
                        return(new EntityToken[] { new SqlFunctionProviderFolderEntityToken(token.Id.Remove(idx), token.Source, token.ConnectionId) });
                    }
                    else
                    {
                        Guid           id            = new Guid(token.ConnectionId);
                        ISqlConnection sqlConnection = DataFacade.GetData <ISqlConnection>(f => f.Id == id).SingleOrDefault();

                        if (sqlConnection == null)
                        {
                            return(new EntityToken[] { });
                        }

                        return(new EntityToken[] { sqlConnection.GetDataEntityToken() });
                    }
                }
            }
            else
            {
                throw new NotImplementedException();
            }
        }
Example #10
0
        private TestSuite BuildTestAssembly(string assemblyName, IList fixtures, bool autoSuites)
        {
            TestSuite testAssembly = new TestSuite(assemblyName);

            if (autoSuites)
            {
                NamespaceTreeBuilder treeBuilder =
                    new NamespaceTreeBuilder(testAssembly);
                treeBuilder.Add(fixtures);
                testAssembly = treeBuilder.RootSuite;
            }
            else
            {
                foreach (TestSuite fixture in fixtures)
                {
                    if (fixture is SetUpFixture)
                    {
                        fixture.RunState     = RunState.NotRunnable;
                        fixture.IgnoreReason = "SetUpFixture cannot be used when loading tests as a flat list of fixtures";
                    }

                    testAssembly.Add(fixture);
                }
            }

            if (fixtures.Count == 0)
            {
                testAssembly.RunState     = RunState.NotRunnable;
                testAssembly.IgnoreReason = "Has no TestFixtures";
            }

            NUnitFramework.ApplyCommonAttributes(assembly, testAssembly);

            // TODO: Make this an option? Add Option to sort assemblies as well?
            testAssembly.Sort();

            return(testAssembly);
        }
        public static TestSuite MakeFixture(List <Type> types)
        {
            // following the pattern found in DefaultTestAssemblyBuilder
            var fixtures            = new List <Test>();
            var defaultSuiteBuilder = new DefaultSuiteBuilder();

            foreach (var type in types)
            {
                var typeInfo = new TypeWrapper(type);
                var test     = defaultSuiteBuilder.BuildFrom(typeInfo);
                fixtures.Add(test);
            }

            var       assembly     = AssemblyHelper.Load("nunit.testdata");
            var       assemblyPath = AssemblyHelper.GetAssemblyPath(assembly);
            TestSuite testSuite    = new TestAssembly(assembly, assemblyPath);

            var treeBuilder = new NamespaceTreeBuilder(testSuite);

            treeBuilder.Add(fixtures);

            return(treeBuilder.RootSuite);
        }
        private List <Element> GetFunctionElements(EntityToken entityToken, SearchToken searchToken)
        {
            Guid   connectionId;
            string namespaceName;

            if ((entityToken is DataEntityToken))
            {
                DataEntityToken dataEntityToken = (DataEntityToken)entityToken;

                if (dataEntityToken.Data is ISqlConnection)
                {
                    connectionId  = ((ISqlConnection)dataEntityToken.Data).Id;
                    namespaceName = "";
                }
                else
                {
                    // stuff has been deleted and we are refreshed on a dead function folder
                    return(new List <Element>());
                }
            }
            else if ((entityToken is SqlFunctionProviderFolderEntityToken))
            {
                SqlFunctionProviderFolderEntityToken sqlFunctionProviderFolderEntityToken = (SqlFunctionProviderFolderEntityToken)entityToken;

                connectionId  = new Guid(sqlFunctionProviderFolderEntityToken.ConnectionId);
                namespaceName = sqlFunctionProviderFolderEntityToken.Id;
            }
            else
            {
                throw new NotImplementedException();
            }


            IEnumerable <ISqlFunctionInfo> sqlFunctionInfoes;

            if (searchToken.IsValidKeyword() == false)
            {
                sqlFunctionInfoes =
                    from item in DataFacade.GetData <ISqlFunctionInfo>()
                    where item.ConnectionId == connectionId
                    select item;
            }
            else
            {
                string keyword = searchToken.Keyword.ToLower();

                sqlFunctionInfoes =
                    from item in DataFacade.GetData <ISqlFunctionInfo>()
                    where item.ConnectionId == connectionId &&
                    (((item.Name != null) && (item.Name.ToLower().Contains(keyword))) ||
                     ((item.Namespace != null) && (item.Namespace.ToLower().Contains(keyword))) ||
                     ((item.Command != null) && (item.Command.ToLower().Contains(keyword))))
                    select item;
            }

            NamespaceTreeBuilder builder = new NamespaceTreeBuilder(sqlFunctionInfoes.Select(q => (INamespaceTreeBuilderLeafInfo) new SqlNamespaceTreeBuilderLeafInfo(q)));

            NamespaceTreeBuilderFolder folderNode;

            if (namespaceName == "")
            {
                folderNode = builder.RootFolder;
            }
            else
            {
                folderNode = builder.GetFolder(namespaceName);
            }

            List <Element> result = new List <Element>();

            if (folderNode != null)
            {
                if (folderNode.SubFolders != null)
                {
                    foreach (NamespaceTreeBuilderFolder node in folderNode.SubFolders)
                    {
                        Element element = CreateFolderElement(node, connectionId.ToString());

                        result.Add(element);
                    }
                }

                if (folderNode.Leafs != null)
                {
                    foreach (INamespaceTreeBuilderLeafInfo leafInfo in folderNode.Leafs)
                    {
                        Element element = CreateXmlFunctionInfoElement(leafInfo, connectionId.ToString());

                        result.Add(element);
                    }
                }
            }

            return(result);
        }
        private TestSuite BuildTestAssembly( string assemblyName, IList fixtures, bool autoSuites )
        {
            TestSuite testAssembly = new TestAssembly( assemblyName );

            if ( autoSuites )
            {
                NamespaceTreeBuilder treeBuilder =
                    new NamespaceTreeBuilder( testAssembly );
                treeBuilder.Add( fixtures );
                testAssembly = treeBuilder.RootSuite;
            }
            else
            foreach( TestSuite fixture in fixtures )
            {
                if (fixture != null)
                {
                    if (fixture is SetUpFixture)
                    {
                        fixture.RunState = RunState.NotRunnable;
                        fixture.IgnoreReason = "SetUpFixture cannot be used when loading tests as a flat list of fixtures";
                    }

                    testAssembly.Add(fixture);
                }
            }

            if ( fixtures.Count == 0 )
            {
                testAssembly.RunState = RunState.NotRunnable;
                testAssembly.IgnoreReason = "Has no TestFixtures";
            }

            NUnitFramework.ApplyCommonAttributes( assembly, testAssembly );

            testAssembly.Properties["_PID"] = System.Diagnostics.Process.GetCurrentProcess().Id;
            testAssembly.Properties["_APPDOMAIN"] = AppDomain.CurrentDomain.FriendlyName;

            // TODO: Make this an option? Add Option to sort assemblies as well?
            testAssembly.Sort();

            return testAssembly;
        }
Example #14
0
        /// <exclude />
        public IEnumerable <Element> GetChildren(EntityToken entityToken, SearchToken searchToken)
        {
            BaseFunctionFolderElementEntityToken castedEntityToken = (BaseFunctionFolderElementEntityToken)entityToken;

            string id = castedEntityToken.Id;

            int index = castedEntityToken.Id.IndexOf('.');

            if (index != -1)
            {
                id = id.Remove(0, index + 1);
            }

            NamespaceTreeBuilder builder = new NamespaceTreeBuilder(OnGetFunctionInfos(searchToken).Cast <INamespaceTreeBuilderLeafInfo>());

            NamespaceTreeBuilderFolder folderNode;

            if (castedEntityToken.Id == CreateId("", _context.ProviderName))
            {
                folderNode = builder.RootFolder;
            }
            else
            {
                folderNode = builder.GetFolder(id);
            }

            List <Element> result = new List <Element>();

            if (searchToken == null)
            {
                if (folderNode != null)
                {
                    foreach (NamespaceTreeBuilderFolder node in folderNode.SubFolders.OrderBy(f => f.Name))
                    {
                        Element element = CreateFolderElement(node);
                        result.Add(element);
                    }

                    foreach (IFunctionTreeBuilderLeafInfo function in folderNode.Leafs)
                    {
                        Element element = CreateFunctionElement(function);

                        element.PropertyBag.Add("ElementType", "application/x-composite-function");
                        element.PropertyBag.Add("ElementId", IMetaFunctionExtensionMethods.CompositeName(function.Namespace, function.Name));

                        result.Add(element);
                    }
                }
            }
            else
            {
                if (folderNode != null)
                {
                    foreach (NamespaceTreeBuilderFolder node in folderNode.SubFolders.OrderBy(f => f.Name))
                    {
                        if (SubTreeContainsToken(node, searchToken))
                        {
                            Element element = CreateFolderElement(node);
                            result.Add(element);
                        }
                    }

                    foreach (IFunctionTreeBuilderLeafInfo function in folderNode.Leafs)
                    {
                        if (searchToken.Keyword == null || function.Name.Contains(searchToken.Keyword))
                        {
                            Element element = CreateFunctionElement(function);

                            element.PropertyBag.Add("ElementType", "application/x-composite-function");
                            element.PropertyBag.Add("ElementId", IMetaFunctionExtensionMethods.CompositeName(function.Namespace, function.Name));

                            result.Add(element);
                        }
                    }
                }
            }

            return(result);
        }
		private TestSuite BuildTestAssembly( string assemblyName, IList fixtures, bool autoSuites )
		{
			TestSuite testAssembly = new TestSuite( assemblyName );

			if ( autoSuites )
			{
				NamespaceTreeBuilder treeBuilder = 
					new NamespaceTreeBuilder( testAssembly );
				treeBuilder.Add( fixtures );
                testAssembly = treeBuilder.RootSuite;
			}
			else 
			foreach( TestSuite fixture in fixtures )
			{
				if ( fixture is SetUpFixture )
				{
					fixture.RunState = RunState.NotRunnable;
					fixture.IgnoreReason = "SetUpFixture cannot be used when loading tests as a flat list of fixtures";
				}

				testAssembly.Add( fixture );
			}

			if ( fixtures.Count == 0 )
			{
				testAssembly.RunState = RunState.NotRunnable;
				testAssembly.IgnoreReason = "Has no TestFixtures";
			}
			
            NUnitFramework.ApplyCommonAttributes( assembly, testAssembly );

			// TODO: Make this an option? Add Option to sort assemblies as well?
			testAssembly.Sort();

			return testAssembly;
		}
Example #16
0
        public void Establish_context()
        {
            mocks = new MockRepository();
            namespaceTreeBuilder = new NamespaceTreeBuilder();

            testModelData = new TestModelData();
            var assembly = new TestData("assembly", "assembly", "assembly");

            testModelData.RootTest.Children.Add(assembly);

            var nsRootCodeElement   = mocks.StrictMock <ICodeElementInfo>();
            var nsRootCodeReference = new CodeReference("assembly", null, null, null, null);
            var nsRoot = new Test("nsRoot", nsRootCodeElement);

            using (mocks.Record())
            {
                Expect.Call(nsRootCodeElement.CodeReference).Return(nsRootCodeReference);
                Expect.Call(nsRootCodeElement.GetCodeLocation()).Return(new CodeLocation("about:blank", 1, 1));
            }
            nsRoot.Kind       = Gallio.Model.TestKinds.Namespace;
            nsRoot.IsTestCase = false;

            var nsRootTest = new TestData(nsRoot, true);

            assembly.Children.Add(nsRootTest);

            var nsLevel1CodeElement   = mocks.StrictMock <ICodeElementInfo>();
            var nsLevel1CodeReference = new CodeReference("assembly", null, null, null, null);
            var nsLevel1 = new Test("nsLevel1", nsLevel1CodeElement);

            using (mocks.Record())
            {
                Expect.Call(nsLevel1CodeElement.CodeReference).Return(nsLevel1CodeReference);
                Expect.Call(nsLevel1CodeElement.GetCodeLocation()).Return(new CodeLocation("about:blank", 1, 1));
            }
            nsLevel1.Kind       = Gallio.Model.TestKinds.Namespace;
            nsLevel1.IsTestCase = false;

            var nsLevel1Test = new TestData(nsLevel1, true);

            nsRootTest.Children.Add(nsLevel1Test);

            var nsLevel2CodeElement   = mocks.StrictMock <ICodeElementInfo>();
            var nsLevel2CodeReference = new CodeReference("assembly", null, null, null, null);
            var nsLevel2 = new Test("nsLevel2", nsLevel2CodeElement);

            using (mocks.Record())
            {
                Expect.Call(nsLevel2CodeElement.CodeReference).Return(nsLevel2CodeReference);
                Expect.Call(nsLevel2CodeElement.GetCodeLocation()).Return(new CodeLocation("about:blank", 1, 1));
            }
            nsLevel2.Kind       = Gallio.Model.TestKinds.Namespace;
            nsLevel2.IsTestCase = false;

            var nsLevel2Test = new TestData(nsLevel2, true);

            nsLevel1Test.Children.Add(nsLevel2Test);

            var nsLevel2aCodeElement   = mocks.StrictMock <ICodeElementInfo>();
            var nsLevel2aCodeReference = new CodeReference("assembly", null, null, null, null);
            var nsLevel2a = new Test("nsLevel2a", nsLevel2aCodeElement);

            using (mocks.Record())
            {
                Expect.Call(nsLevel2aCodeElement.CodeReference).Return(nsLevel2aCodeReference);
                Expect.Call(nsLevel2aCodeElement.GetCodeLocation()).Return(new CodeLocation("about:blank", 1, 1));
            }
            nsLevel2a.Kind       = Gallio.Model.TestKinds.Namespace;
            nsLevel2a.IsTestCase = false;

            var nsLevel2aTest = new TestData(nsLevel2a, true);

            nsLevel1Test.Children.Add(nsLevel2aTest);

            var fixture1CodeElement   = mocks.StrictMock <ICodeElementInfo>();
            var fixture1CodeReference = new CodeReference("assembly", "nsRoot.nsLevel1.nsLevel2", "fixture1", null, null);
            var fixture1 = new Test("fixture1", fixture1CodeElement);

            using (mocks.Record())
            {
                Expect.Call(fixture1CodeElement.CodeReference).Return(fixture1CodeReference);
                Expect.Call(fixture1CodeElement.GetCodeLocation()).Return(new CodeLocation("about:blank", 1, 1));
            }
            fixture1.Kind       = Gallio.Model.TestKinds.Fixture;
            fixture1.IsTestCase = false;

            var fixture1Test = new TestData(fixture1, true);

            nsLevel2Test.Children.Add(fixture1Test);

            var fixture2CodeElement   = mocks.StrictMock <ICodeElementInfo>();
            var fixture2CodeReference = new CodeReference("assembly", "nsRoot.nsLevel1.nsLevel2a", "fixture2", null, null);
            var fixture2 = new Test("fixture2", fixture2CodeElement);

            using (mocks.Record())
            {
                Expect.Call(fixture2CodeElement.CodeReference).Return(fixture2CodeReference);
                Expect.Call(fixture2CodeElement.GetCodeLocation()).Return(new CodeLocation("about:blank", 1, 1));
            }
            fixture2.Kind       = Gallio.Model.TestKinds.Fixture;
            fixture2.IsTestCase = false;

            var fixture2Test = new TestData(fixture2, true);

            nsLevel2aTest.Children.Add(fixture2Test);
        }