Esempio n. 1
0
        private void InitializeSettingsFileEnvironments()
        {
            var newEnvironments = new ChutzpahSettingsFileEnvironments();
            var buildProjects   = ProjectCollection.GlobalProjectCollection.LoadedProjects
                                  .Where(x => !x.FullPath.Equals(".user", StringComparison.OrdinalIgnoreCase));

            foreach (var buildProject in buildProjects)
            {
                var dirPath     = buildProject.DirectoryPath;
                var environment = new ChutzpahSettingsFileEnvironment(dirPath);
                foreach (var prop in ChutzpahMsBuildProps.GetProps())
                {
                    var value = buildProject.GetPropertyValue(prop);
                    if (!string.IsNullOrEmpty(value))
                    {
                        environment.Properties.Add(new ChutzpahSettingsFileEnvironmentProperty(prop, value));
                    }
                }

                if (environment.Properties.Any())
                {
                    newEnvironments.AddEnvironment(environment);
                }
            }

            settingsEnvironments = newEnvironments;
        }
Esempio n. 2
0
        /// <summary>
        /// Find and reads a chutzpah test settings file given a direcotry. If none is found a default settings object is created
        /// </summary>
        /// <param name="directory"></param>
        /// <returns></returns>
        ///
        public ChutzpahTestSettingsFile FindSettingsFile(string directory, ChutzpahSettingsFileEnvironments environments = null)
        {
            if (string.IsNullOrEmpty(directory))
            {
                return(ChutzpahTestSettingsFile.Default);
            }

            directory = directory.TrimEnd('/', '\\');

            ChutzpahTestSettingsFile settings;

            if (!ChutzpahSettingsFileCache.TryGetValue(directory, out settings))
            {
                ChutzpahSettingsFileEnvironment environment = null;
                if (environments != null)
                {
                    environment = environments.GetSettingsFileEnvironment(directory);
                }

                return(FindSettingsFile(directory, environment).InheritFromDefault());
            }
            else
            {
                return(settings);
            }
        }
Esempio n. 3
0
        public TestOptions()
        {
            FileSearchLimit             = Constants.DefaultFileSeachLimit;
            TestFileTimeoutMilliseconds = Constants.DefaultTestFileTimeout;
            MaxDegreeOfParallelism      = Environment.ProcessorCount;
            CoverageOptions             = new CoverageOptions();
            TestExecutionMode           = TestExecutionMode.Execution;

            ChutzpahSettingsFileEnvironments = new ChutzpahSettingsFileEnvironments();
        }
Esempio n. 4
0
        public ChutzpahTestSettingsFile FindSettingsFile(string filePath, ChutzpahSettingsFileEnvironments environments = null)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return(ChutzpahTestSettingsFile.Default);
            }

            var directory = Path.GetDirectoryName(filePath);

            return(FindSettingsFileFromDirectory(directory, environments));
        }
        public void Will_normalize_slashes_and_casing()
        {
            var environment = new ChutzpahSettingsFileEnvironment("path");

            environment.Path = @"C:/Some/path";
            environment.Properties.Add(new ChutzpahSettingsFileEnvironmentProperty("name1", "val1"));
            var environmentsWrapper = new ChutzpahSettingsFileEnvironments(new[] { environment });

            var matched = environmentsWrapper.GetSettingsFileEnvironment(@"c:\some\path\chutzpah.json");

            Assert.Equal(environment, matched);
        }
        public void Will_match_environment_given_chutzpah_json_path()
        {
            var environment = new ChutzpahSettingsFileEnvironment("path");

            environment.Path = @"C:\some\path";
            environment.Properties.Add(new ChutzpahSettingsFileEnvironmentProperty("name1", "val1"));
            var environmentsWrapper = new ChutzpahSettingsFileEnvironments(new[] { environment });

            var matched = environmentsWrapper.GetSettingsFileEnvironment(@"c:\some\path\chutzpah.json");

            Assert.Equal(environment, matched);
        }
Esempio n. 7
0
        protected CommandLine(string[] args)
        {
            for (var i = args.Length - 1; i >= 0; i--)
            {
                arguments.Push(args[i]);
            }

            UnmatchedArguments = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);
            Files = new List <string>();
            SettingsFileEnvironments = new ChutzpahSettingsFileEnvironments();
            TeamCity = Environment.GetEnvironmentVariable(TeamcityProjectName) != null;
            Parse();
        }
Esempio n. 8
0
        protected CommandLine(string[] args, IEnumerable <string> transformerNames)
        {
            for (var i = args.Length - 1; i >= 0; i--)
            {
                arguments.Push(args[i]);
            }

            this.transformerNames = new HashSet <string>(transformerNames);
            TransformersRequested = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);
            Files = new List <string>();
            SettingsFileEnvironments = new ChutzpahSettingsFileEnvironments();
            TeamCity = Environment.GetEnvironmentVariable(TeamcityProjectName) != null;
            Parse();
        }
        public bool IsTestFile(string file, ChutzpahSettingsFileEnvironments environments = null)
        {
            ChutzpahTracer.TraceInformation("Determining if {0} might be a test file", file);
            if (string.IsNullOrWhiteSpace(file))
            {
                return(false);
            }

            var testFilePath = fileProbe.FindFilePath(file);

            if (testFilePath == null)
            {
                ChutzpahTracer.TraceInformation("Rejecting '{0}' since either it doesnt exist", file);
                return(false);
            }

            var chutzpahTestSettings = settingsService.FindSettingsFile(testFilePath, environments);

            if (!IsTestPathIncluded(testFilePath, chutzpahTestSettings))
            {
                ChutzpahTracer.TraceInformation("Excluded test file '{0}' given chutzpah.json settings", testFilePath);
                return(false);
            }

            // If the framework or tests filters are set in the settings file then no need to check for
            // test framework
            if (!string.IsNullOrEmpty(chutzpahTestSettings.Framework) || chutzpahTestSettings.Tests.Any())
            {
                return(true);
            }
            else
            {
                string testFileText = fileSystem.GetText(testFilePath);

                IFrameworkDefinition definition;
                var info = new PathInfo {
                    Path = file, FullPath = testFilePath, Type = FileProbe.GetFilePathType(testFilePath)
                };
                var frameworkDetetected = TryDetectFramework(info, chutzpahTestSettings, out definition);

                if (frameworkDetetected)
                {
                    ChutzpahTracer.TraceInformation("Assuming '{0}' is a test file", file);
                }

                return(frameworkDetetected);
            }
        }
        public void Will_choose_longest_matching_path()
        {
            var environment1 = new ChutzpahSettingsFileEnvironment("path");

            environment1.Path = @"C:\some\";
            environment1.Properties.Add(new ChutzpahSettingsFileEnvironmentProperty("name1", "val1"));
            var environment2 = new ChutzpahSettingsFileEnvironment("path");

            environment2.Path = @"C:\some\path\";
            environment2.Properties.Add(new ChutzpahSettingsFileEnvironmentProperty("name2", "val2"));
            var environmentsWrapper = new ChutzpahSettingsFileEnvironments(new[] { environment1, environment2 });

            var matched = environmentsWrapper.GetSettingsFileEnvironment(@"c:\some\path\chutzpah.json");

            Assert.Equal(environment2, matched);
        }
Esempio n. 11
0
        public bool IsTestFile(string file, ChutzpahSettingsFileEnvironments environments = null)
        {
            ChutzpahTracer.TraceInformation("Determining if '{0}' might be a test file", file);
            if (string.IsNullOrWhiteSpace(file))
            {
                return(false);
            }

            PathInfo pathInfo     = fileProbe.GetPathInfo(file);
            PathType testFileKind = pathInfo.Type;
            string   testFilePath = pathInfo.FullPath;

            if (testFilePath == null || !IsValidTestPathType(testFileKind))
            {
                ChutzpahTracer.TraceInformation("Rejecting '{0}' since either it doesnt exist or does not have test extension", file);
                return(false);
            }

            var testFileDirectory    = Path.GetDirectoryName(testFilePath);
            var chutzpahTestSettings = settingsService.FindSettingsFile(testFileDirectory, environments);

            if (!IsTestPathIncluded(testFilePath, chutzpahTestSettings))
            {
                ChutzpahTracer.TraceInformation("Excluded test file '{0}' given chutzpah.json settings", testFilePath);
                return(false);
            }

            string testFileText = fileSystem.GetText(testFilePath);

            IFrameworkDefinition definition;
            var frameworkDetetected = TryDetectFramework(testFileText, testFileKind, chutzpahTestSettings, out definition);

            if (frameworkDetetected)
            {
                ChutzpahTracer.TraceInformation("Assuming '{0}' is a test file", file);
            }

            return(frameworkDetetected);
        }
Esempio n. 12
0
 public bool IsTestFile(string testFile, ChutzpahSettingsFileEnvironments environments)
 {
     return(testContextBuilder.IsTestFile(testFile, environments));
 }
Esempio n. 13
0
 private void OnSolutionUnloaded(object sender, EventArgs e)
 {
     settingsEnvironments = null;
 }