示例#1
0
        public void Exited(string id)
        {
            lock (WaitingForPlatforms)
            {
                if (WaitingForPlatforms.Contains(id))
                {
                    AddTest(TestMeta.FakeTest("Never Received Tests"), id);
                }
            }

            lock (ExpectedTests)
            {
                foreach (var expectedTest in ExpectedTests)
                {
                    var result = expectedTest.Value.FirstOrDefault(it => it.Platform == id);

                    if (result != null && result.Result == null)
                    {
                        AddResult(new Result()
                        {
                            Platform = id,
                            Kind     = ResultKind.Error,
                            Output   = "Runner unexpectedly quit",
                            Test     = result.MissingTest
                        });
                    }
                }
            }

            ReceivedTests(id);
        }
示例#2
0
        public bool ShouldRun(TestMeta test)
        {
            Setup();

            bool? run = null;

            if (_nameFilters.ContainsKey(test.UniqueName))
                run = _nameFilters[test.UniqueName];

            if (_nameFilters.ContainsKey(test.Fixture.UniqueName))
                run = _nameFilters[test.Fixture.UniqueName];

            if (_nameFilters.ContainsKey(test.Fixture.Assembly.UniqueName))
                run = _nameFilters[test.Fixture.Assembly.UniqueName];

            if (test.Category.Any(c => _nameFilters.ContainsKey(UniqueCategory(c))))
                run = test.Category
                    .Where(c => _nameFilters.ContainsKey(UniqueCategory(c)))
                    .Select(c=>_nameFilters[UniqueCategory(c)])
                    .All(b=>b);

            if (!run.HasValue)
            {
                if (!_nameFilters.Any() || (!Includes.Any() && Excludes.Any()))
                    return true;
                return false;
            }

            return run.Value;
        }
示例#3
0
        public void AddTest(TestMeta test, string id)
        {
            string key = string.Format("{0}|{1}|{2}", test.Fixture.Assembly.UniqueName, test.Fixture.UniqueName,
                                       test.UniqueName);

            lock (ExpectedTests)
            {
                if (!ExpectedTests.ContainsKey(key))
                {
                    ExpectedTests.Add(key, new List <PlatformResult>());
                }
                ExpectedTests[key].Add(new PlatformResult(id)
                {
                    MissingTest = test
                });
            }
        }
示例#4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="test"></param>
        /// <returns></returns>
        public TestMeta Execute(ITest test)
        {
            var runningTest = new TestMeta
            {
                Id                = Guid.NewGuid().ToString(),
                Status            = TestStatus.Submitted,
                CancellationToken = new CancellationToken(),
            };

            Task.Run(async() =>
            {
                TaskHolder.TryAdd(runningTest.Id, runningTest);
                await _executor.ExecuteTestAsync(test, runningTest);
                TaskHolder.Remove(runningTest.Id, out var value);
            });

            return(runningTest);
        }
示例#5
0
 public void AddTest(TestMeta test, string id)
 {
     string key = string.Format("{0}|{1}|{2}", test.Fixture.Assembly.UniqueName, test.Fixture.UniqueName,
                                    test.UniqueName);
     lock (ExpectedTests)
     {
         if (!ExpectedTests.ContainsKey(key))
         {
             ExpectedTests.Add(key, new List<PlatformResult>());
         }
         ExpectedTests[key].Add(new PlatformResult(id) { MissingTest = test });
     }
 }
示例#6
0
 public async Task <bool> ExecuteTestAsync(ITest test, TestMeta testMeta)
 {
     testMeta.Status = TestStatus.Running;
     return(await Task.Run(() =>
                           ExecuteTest(test), testMeta.CancellationToken));
 }