Пример #1
0
        private void ExecuteAction(PlayerMenuItem item)
        {
            var runSettings = new PlayerLauncherTestRunSettings();

            runSettings.buildOnly = item.buildOnly;
            if (runSettings.buildOnly)
            {
                runSettings.buildOnlyLocationPath = PickBuildLocation();
                if (string.IsNullOrEmpty(runSettings.buildOnlyLocationPath))
                {
                    Debug.LogWarning("Aborting, build selection was canceled.");
                    return;
                }
            }

            if (item.filterSelectedTestsOnly)
            {
                RunTestsInPlayer(runSettings, SelectedTestsFilter);
            }
            else
            {
                var filter = new UITestRunnerFilter {
                    categoryNames = m_TestRunnerUIFilter.CategoryFilter
                };
                RunTestsInPlayer(runSettings, filter);
            }
        }
Пример #2
0
 public virtual void PrintHeadPanel()
 {
     EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
     using (new EditorGUI.DisabledScope(IsBusy()))
     {
         if (GUILayout.Button(s_GUIRunAllTests, EditorStyles.toolbarButton))
         {
             var filter = new UITestRunnerFilter {
                 categoryNames = m_TestRunnerUIFilter.CategoryFilter
             };
             RunTests(filter);
             GUIUtility.ExitGUI();
         }
     }
     using (new EditorGUI.DisabledScope(m_TestListTree == null || !m_TestListTree.HasSelection() || IsBusy()))
     {
         if (GUILayout.Button(s_GUIRunSelectedTests, EditorStyles.toolbarButton))
         {
             RunTests(SelectedTestsFilter);
             GUIUtility.ExitGUI();
         }
     }
     using (new EditorGUI.DisabledScope(m_TestRunnerUIFilter.FailedCount == 0 || IsBusy()))
     {
         if (GUILayout.Button(s_GUIRerunFailedTests, EditorStyles.toolbarButton))
         {
             var failedTestnames = new List <string>();
             foreach (var result in newResultList)
             {
                 if (result.isSuite)
                 {
                     continue;
                 }
                 if (result.resultStatus == TestRunnerResult.ResultStatus.Failed ||
                     result.resultStatus == TestRunnerResult.ResultStatus.Inconclusive)
                 {
                     failedTestnames.Add(result.fullName);
                 }
             }
             RunTests(new UITestRunnerFilter()
             {
                 testNames = failedTestnames.ToArray(), categoryNames = m_TestRunnerUIFilter.CategoryFilter
             });
             GUIUtility.ExitGUI();
         }
     }
     using (new EditorGUI.DisabledScope(IsBusy()))
     {
         if (GUILayout.Button(s_GUIClearResults, EditorStyles.toolbarButton))
         {
             foreach (var result in newResultList)
             {
                 result.Clear();
             }
             m_TestRunnerUIFilter.UpdateCounters(newResultList);
             Reload();
             GUIUtility.ExitGUI();
         }
     }
     GUILayout.FlexibleSpace();
     EditorGUILayout.EndHorizontal();
 }
Пример #3
0
        private UITestRunnerFilter[] GetSelectedTestsAsFilter(IEnumerable <int> selectedIDs)
        {
            var namesToRun = new List <string>();
            var assembliesForNamesToRun = new List <string>();
            var exactNamesToRun         = new List <string>();
            var assembliesToRun         = new List <string>();

            foreach (var lineId in selectedIDs)
            {
                var line = m_TestListTree.FindItem(lineId);
                if (line is TestTreeViewItem)
                {
                    var testLine = line as TestTreeViewItem;
                    if (testLine.IsGroupNode && !testLine.FullName.Contains("+"))
                    {
                        if (testLine.parent != null && testLine.parent.displayName == "Invisible Root Item")
                        {
                            //Root node selected. Use an empty TestRunnerFilter to run every test
                            return(new[] { new UITestRunnerFilter() });
                        }

                        if (testLine.FullName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
                        {
                            assembliesToRun.Add(UITestRunnerFilter.AssemblyNameFromPath(testLine.FullName));
                        }
                        else
                        {
                            namesToRun.Add($"^{Regex.Escape(testLine.FullName)}$");
                            var assembly = UITestRunnerFilter.AssemblyNameFromPath(testLine.GetAssemblyName());
                            if (!string.IsNullOrEmpty(assembly) && !assembliesForNamesToRun.Contains(assembly))
                            {
                                assembliesForNamesToRun.Add(assembly);
                            }
                        }
                    }
                    else
                    {
                        exactNamesToRun.Add(testLine.FullName);
                    }
                }
            }

            var filters = new List <UITestRunnerFilter>();

            if (assembliesToRun.Count > 0)
            {
                filters.Add(new UITestRunnerFilter()
                {
                    assemblyNames = assembliesToRun.ToArray()
                });
            }

            if (namesToRun.Count > 0)
            {
                filters.Add(new UITestRunnerFilter()
                {
                    groupNames    = namesToRun.ToArray(),
                    assemblyNames = assembliesForNamesToRun.ToArray()
                });
            }

            if (exactNamesToRun.Count > 0)
            {
                filters.Add(new UITestRunnerFilter()
                {
                    testNames = exactNamesToRun.ToArray()
                });
            }

            if (filters.Count == 0)
            {
                filters.Add(new UITestRunnerFilter());
            }

            var categories = m_TestRunnerUIFilter.CategoryFilter.ToArray();

            if (categories.Length > 0)
            {
                foreach (var filter in filters)
                {
                    filter.categoryNames = categories;
                }
            }

            return(filters.ToArray());
        }