Exemple #1
0
        void AutoConfigureMac()
        {
            var test_suites            = new string[] { "apitest", "dontlink-mac" };
            var hard_coded_test_suites = new string[] { "mmptest", "msbuild-mac" };

            //var library_projects = new string[] { "BundledResources", "EmbeddedResources", "bindings-test", "bindings-framework-test" };
            //var fsharp_test_suites = new string[] { "fsharp" };
            //var fsharp_library_projects = new string[] { "fsharplibrary" };
            //var bcl_suites = new string[] { "mscorlib", "System", "System.Core", "System.Data", "System.Net.Http", "System.Numerics", "System.Runtime.Serialization", "System.Transactions", "System.Web.Services", "System.Xml", "System.Xml.Linq", "Mono.Security", "System.ComponentModel.DataAnnotations", "System.Json", "System.ServiceModel.Web", "Mono.Data.Sqlite" };
            foreach (var p in test_suites)
            {
                TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, p + "/" + p + ".csproj")));
            }
            TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, "introspection", "Mac", "introspection-mac.csproj")));
            foreach (var p in hard_coded_test_suites)
            {
                HardCodedTestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, p + "/" + p + ".csproj")));
            }
            //foreach (var p in fsharp_test_suites)
            //	TestProjects.Add (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".fsproj")));
            //foreach (var p in library_projects)
            //TestProjects.Add (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".csproj")));
            //foreach (var p in fsharp_library_projects)
            //TestProjects.Add (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".fsproj")));
            //foreach (var p in bcl_suites)
            //TestProjects.Add (Path.GetFullPath (Path.Combine (RootDirectory, "bcl-test/" + p + "/" + p + ".csproj")));

            // BclTests.AddRange (bcl_suites);

            ParseConfigFiles();
            var src_root = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(RootDirectory)));

            MONO_PATH = Path.GetFullPath(Path.Combine(src_root, "mono"));
        }
        private void RunOpenCover()
        {
            try
            {
                if (!TestProjects.Any(t => t.IsSelected))
                {
                    LogMessages.Add(LogMessage.Log("No selected projects found", LogMessage.LogType.Warning));
                    MessageBox.Show("Select the projects you want to run", "No projects selected", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (ProjectType == ProjectType.DotNetCore)
                {
                    RunDotNetCoreImplementation();
                }
                else
                {
                    RunDotNetFrameworkImplementation();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                LogMessages.Add(LogMessage.Log(e.Message, LogMessage.LogType.Error));
            }
        }
        private void LoadProjects()
        {
            try
            {
                ProjectType = FindProjectType();
                LogMessages.Add(LogMessage.Log("Loading projects", LogMessage.LogType.Info));
                TestProjects.Clear();
                AssemblyProjects.Clear();

                var projects = Common.Instance.Dte2Object.Solution.Projects;

                foreach (Project project in projects)
                {
                    if (!project.Name.Contains(".Test"))
                    {
                        if (project.Name.StartsWith("BeagleStreet."))
                        {
                            LogMessages.Add(LogMessage.Log($"Loaded test project {project.Name}", LogMessage.LogType.Success));
                            AssemblyProjects.Add(new LoadedProject {
                                IsSelected = true, Name = project.Name
                            });
                        }

                        continue;
                    }

                    var filePath = ProjectType == ProjectType.DotNetCore ?
                                   $"{Path.GetDirectoryName(project.FileName)}\\{project.Name}.csproj" :
                                   $"{Path.GetDirectoryName(project.FileName)}\\bin\\debug\\{project.Name}.dll";

                    if (File.Exists(filePath))
                    {
                        LogMessages.Add(LogMessage.Log($"Loaded test project {filePath}", LogMessage.LogType.Success));
                        TestProjects.Add(new LoadedProject {
                            IsSelected = true, Name = project.Name, AssemblyFilePath = filePath
                        });
                    }
                    else
                    {
                        LogMessages.Add(LogMessage.Log($"Could not find the file {filePath}", LogMessage.LogType.Error));
                    }
                }

                LogMessages.Add(TestProjects.Any()
                    ? LogMessage.Log($"Loaded {TestProjects.Count} test projects", LogMessage.LogType.Success)
                    : LogMessage.Log("Could not test load projects, click reload projects to try again", LogMessage.LogType.Error));
            }
            catch (Exception ex)
            {
                TestProjects.Clear();
                LogMessages.Add(LogMessage.Log($"Failed to load the projects, click reload to try again. ** {ex.Message} **", LogMessage.LogType.Error));
            }
        }
        private void RunDotNetFrameworkImplementation()
        {
            var runAllBatchFileLocation   = Utilities.GetAssemblyDirectory + "\\runall.bat";
            var runTestsBatchFileLocation = Utilities.GetAssemblyDirectory + "\\runtests.bat";

            LogMessages.Add(LogMessage.Log($"Generating runtests.bat file to: {runTestsBatchFileLocation}", LogMessage.LogType.Info));
            BatchFileHelper.CreateRunTestsBatchFile(TestProjects.Where(a => a.IsSelected), runTestsBatchFileLocation);
            LogMessages.Add(LogMessage.Log("Generated runtests.bat", LogMessage.LogType.Success));

            LogMessages.Add(LogMessage.Log($"Generating runall.bat to: {runAllBatchFileLocation}", LogMessage.LogType.Info));
            BatchFileHelper.CreateRunAllBatchFile(AssemblyProjects.Where(a => a.IsSelected), runAllBatchFileLocation);
            LogMessages.Add(LogMessage.Log("Generated runall.bat", LogMessage.LogType.Success));

            BatchFileHelper.RunBatchFile(runAllBatchFileLocation);
            LogMessages.Add(LogMessage.Log("Successfully ran main batch file", LogMessage.LogType.Success));
        }
Exemple #5
0
        void AutoConfigure()
        {
            var test_suites             = new string [] { "monotouch-test", "framework-test", "mini" };
            var library_projects        = new string [] { "BundledResources", "EmbeddedResources", "bindings-test", "bindings-framework-test" };
            var fsharp_test_suites      = new string [] { "fsharp" };
            var fsharp_library_projects = new string [] { "fsharplibrary" };
            var bcl_suites = new string [] { "mscorlib", "System", "System.Core", "System.Data", "System.Net.Http", "System.Numerics", "System.Runtime.Serialization", "System.Transactions", "System.Web.Services", "System.Xml", "System.Xml.Linq", "Mono.Security", "System.ComponentModel.DataAnnotations", "System.Json", "System.ServiceModel.Web", "Mono.Data.Sqlite" };

            foreach (var p in test_suites)
            {
                TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, p + "/" + p + ".csproj")));
            }
            foreach (var p in fsharp_test_suites)
            {
                TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, p + "/" + p + ".fsproj")));
            }
            foreach (var p in library_projects)
            {
                TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, p + "/" + p + ".csproj")));
            }
            foreach (var p in fsharp_library_projects)
            {
                TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, p + "/" + p + ".fsproj")));
            }
            foreach (var p in bcl_suites)
            {
                TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, "bcl-test/" + p + "/" + p + ".csproj")));
            }
            TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, "introspection", "iOS", "introspection-ios.csproj")));
            TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, "linker-ios", "dont link", "dont link.csproj")));
            TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, "linker-ios", "link all", "link all.csproj")));
            TestProjects.Add(Path.GetFullPath(Path.Combine(RootDirectory, "linker-ios", "link sdk", "link sdk.csproj")));
            BclTests.AddRange(bcl_suites);

            WatchOSContainerTemplate = Path.GetFullPath(Path.Combine(RootDirectory, "watchos/Container"));
            WatchOSAppTemplate       = Path.GetFullPath(Path.Combine(RootDirectory, "watchos/App"));
            WatchOSExtensionTemplate = Path.GetFullPath(Path.Combine(RootDirectory, "watchos/Extension"));

            ParseConfigFiles();
            var src_root = Path.GetDirectoryName(RootDirectory);

            MONO_PATH       = Path.GetFullPath(Path.Combine(src_root, "external", "mono"));
            WATCH_MONO_PATH = make_config ["WATCH_MONO_PATH"];
            TVOS_MONO_PATH  = MONO_PATH;
            INCLUDE_WATCH   = make_config.ContainsKey("INCLUDE_WATCH") && !string.IsNullOrEmpty(make_config ["INCLUDE_WATCH"]);
        }
        private string HasDebugFullOn()
        {
            var message = string.Empty;

            foreach (var project in TestProjects.Where(proj => proj.IsSelected))
            {
                var csprojDoc = XDocument.Parse(File.ReadAllText(project.AssemblyFilePath));
                var element   = csprojDoc.XPathSelectElement("Project/PropertyGroup/DebugType");

                if (element != null && !string.Equals(element.Value, "full", StringComparison.CurrentCultureIgnoreCase))
                {
                    message += $" - The project '{project.Name}'{Environment.NewLine}";
                }
            }

            return(message);
        }
        private void RunDotNetCoreImplementation()
        {
            var debugFullMessage = HasDebugFullOn();

            if (!string.IsNullOrEmpty(debugFullMessage))
            {
                var message = $"Invalid project setup: {Environment.NewLine}{Environment.NewLine}{debugFullMessage}{Environment.NewLine}{Environment.NewLine}" +
                              "Project/PropertyGroup/DebugType in the csproj setup correctly, the value must be 'Full'.";

                MessageBox.Show(message, "Debug mode not setup", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            var runAllBatchFileLocation = Utilities.GetAssemblyDirectory + "\\rundotnetcore.bat";

            LogMessages.Add(LogMessage.Log($"Generating rundotnetcore.bat file to: {runAllBatchFileLocation}", LogMessage.LogType.Info));
            BatchFileHelper.CreateDotNetCoreBatchFile(TestProjects.Where(a => a.IsSelected), runAllBatchFileLocation);
            LogMessages.Add(LogMessage.Log("Generated rundotnetcore.bat", LogMessage.LogType.Success));

            BatchFileHelper.RunBatchFile(runAllBatchFileLocation);
            LogMessages.Add(LogMessage.Log("Successfully rundotnetcore.bat batch file", LogMessage.LogType.Success));
        }
 private bool CanRunCodeCover()
 {
     return(TestProjects.Any(t => t.IsSelected) && AssemblyProjects.Any(a => a.IsSelected));
 }
 public Uri[] GetTestProjectUris(Uri workingDirectory)
 {
     return(TestProjects
            .Select(x => new Uri(workingDirectory, x))
            .ToArray());
 }