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); }
/// <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); }
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); }
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)); }
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(); } }
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; }
/// <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; }
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); }