private static TestProject LoadProject(string directoryName, TestProjectData testProjectData)
        {
            testProjectData.Validate(); // sanity check
            testProjectData.MakeAbsolutePaths(directoryName);

            var testProject = testProjectData.ToTestProject();

            return(testProject);
        }
예제 #2
0
        public static async Task Main(string[] args)
        {
            MSBuildLocator.RegisterDefaults();

            RootCommand rootCommand = Program.GenerateCommands();

            rootCommand.Handler = CommandHandler.Create(async(bool generatePointsFile, bool runTests, DirectoryInfo? projectDir, FileInfo? outputFile) =>
            {
                if (!generatePointsFile && !runTests)
                {
                    Console.WriteLine("You didn't give me a task! Use --help for... help! Leave a like if you found out this to be useful!");

                    return;
                }

                string projectDirectory = projectDir?.FullName ?? Environment.CurrentDirectory;

                ProjectCompiler compiler = new ProjectCompiler();

                ICollection <string> assemblyPaths;

                try
                {
                    assemblyPaths = compiler.CompileTestProjects(projectDirectory);
                }
                catch (CompilationFaultedException exception)
                {
                    Console.WriteLine(exception.Message);

                    Environment.Exit(1);

                    return;
                }

                TestProjectData projectData = new TestProjectData();
                foreach (string assemblyPath in assemblyPaths)
                {
                    projectData.LoadProject(assemblyPath);
                }

                if (generatePointsFile)
                {
                    FileInfo resultsFile = outputFile ?? new FileInfo(Path.Combine(projectDirectory, ".tmc_available_points.json"));

                    await WriteToFile(resultsFile, projectData.Points);
                }

                if (runTests)
                {
                    ProjectTestRunner testRunner = new ProjectTestRunner(projectData);
                    testRunner.RunAssemblies(projectData.Assemblies);

                    FileInfo resultsFile = outputFile ?? new FileInfo(Path.Combine(projectDirectory, ".tmc_test_results.json"));

                    await WriteToFile(resultsFile, testRunner.TestResults);
                }
        /// <inheritdoc />
        public TestProject NewProject(string projectName)
        {
            if (string.IsNullOrEmpty(projectName))
            {
                throw new ArgumentException("projectName");
            }

            var testProjectData = new TestProjectData();

            return(LoadProject(System.IO.Path.GetDirectoryName(projectName), testProjectData));
        }
        /// <inheritdoc />
        public void SaveProject(TestProject testProject, FileInfo testProjectFile)
        {
            if (testProject == null)
            {
                throw new ArgumentNullException("testProject");
            }
            if (testProjectFile == null)
            {
                throw new ArgumentNullException("testProjectFile");
            }

            var testProjectData = new TestProjectData(testProject);

            testProjectData.Validate(); // sanity check
            testProjectData.MakeRelativePaths(testProjectFile.DirectoryName);
            xmlSerializer.SaveToXml(testProjectData, testProjectFile.FullName);
        }
예제 #5
0
        public ProjectTestRunner(TestProjectData projectData)
        {
            this.ProjectData = projectData;

            this._TestResults = new List <MethodTestResult>();
        }