예제 #1
0
        public TestAttributeVerificationResult Verify(string sourceFolderPath, IEnumerable <string> sourceFileNames)
        {
            var violations = new List <Violation>();

            foreach (string sourceFileName in sourceFileNames)
            {
                if (!sourceFileName.EndsWith("Test.cs", StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }

                AbsoluteFilePath sourceFilePath = Path.Combine(sourceFolderPath, sourceFileName);
                if (!File.Exists(sourceFilePath))
                {
                    continue;
                }

                string fileContent = File.ReadAllText(sourceFilePath);
                var    containsTextFixtureRegex = new Regex(@"\[.*TestFixture.*\][\n\s]");
                if (containsTextFixtureRegex.Match(fileContent).Success)
                {
                    continue;
                }

                string violationMessage = string.Concat("File `", sourceFileName, "` is missing [TestFixture] attribute.");
                violations.Add(new Violation(violationMessage, sourceFilePath));
            }

            return(violations.Any()
                ? TestAttributeVerificationResult.CreateFaulty(violations)
                : TestAttributeVerificationResult.CreateSuccessful());
        }
        public override bool Execute()
        {
            if (this.SourceFiles == null)
            {
                return(true);
            }

            var testAttributeVerifier            = new TestAttributeVerifier();
            IEnumerable <string> sourceFileNames = this.SourceFiles.Select(x => x.ItemSpec);

            TestAttributeVerificationResult result = testAttributeVerifier.Verify(this.SourceFolderPath, sourceFileNames);

            if (result.Successful)
            {
                return(true);
            }

            foreach (var violation in result.Violations)
            {
                this.LogViolation(violation);
            }

            bool continueExecution = !this.TreatWarningsAsErrors;

            return(continueExecution);
        }