Advertisement
Guest User

Test Discoverer

a guest
Jul 9th, 2013
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.68 KB | None | 0 0
  1. using Microsoft.VisualStudio.TestPlatform.ObjectModel;
  2. using Microsoft.VisualStudio.TestPlatform.ObjectModel.Adapter;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7.  
  8. namespace TSTestAdapter
  9. {
  10.     [DefaultExecutorUri(TSTestExecutor.ExecutorUriString)]
  11.     [FileExtension(".ts")]
  12.     //[FileExtension(".test.ts")]
  13.     public class TSTestDiscoverer : ITestDiscoverer
  14.     {
  15.         public void DiscoverTests(IEnumerable<string> sources
  16.             , IDiscoveryContext discoveryContext
  17.             , Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging.IMessageLogger logger
  18.             , ITestCaseDiscoverySink discoverySink)
  19.         {
  20.             GetTests(sources, discoverySink);
  21.         }
  22.  
  23.         public static IEnumerable<TestCase> GetTests(IEnumerable<string> sourceFiles, ITestCaseDiscoverySink discoverySink)
  24.         {
  25.             var tests = new List<TestCase>();
  26.  
  27.             Parallel.ForEach(sourceFiles, s =>
  28.             {
  29.                 var sourceCode = File.ReadAllText(s);
  30.  
  31.                 var matches = Regex.Matches(sourceCode, @"^\s*test\s*\(\s*""(?<TestName>.*?)""\s*,?", RegexOptions.Multiline);
  32.                 foreach (Match m in matches)
  33.                 {
  34.                     var testName = m.Groups["TestName"].Value;
  35.                     var testCase = new TestCase(testName, TSTestExecutor.ExecutorUri, s);
  36.                     if (discoverySink != null)
  37.                     {
  38.                         discoverySink.SendTestCase(testCase);
  39.                     }
  40.                     tests.Add(testCase);
  41.                 }
  42.             });
  43.  
  44.             return tests;
  45.         }
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement