~a-schlapsi/nunit-3.0/linux-makefile

« back to all changes in this revision

Viewing changes to src/framework/NUnit/Core/ThreadedTestRunner.cs

  • Committer: Andreas Schlapsi
  • Date: 2010-01-23 23:14:05 UTC
  • mfrom: (18.1.137 work)
  • Revision ID: a.schlapsi@gmx.at-20100123231405-17deqoh18nfnbq1j
Merged with trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// ***********************************************************************
2
 
// Copyright (c) 2007 Charlie Poole
3
 
//
4
 
// Permission is hereby granted, free of charge, to any person obtaining
5
 
// a copy of this software and associated documentation files (the
6
 
// "Software"), to deal in the Software without restriction, including
7
 
// without limitation the rights to use, copy, modify, merge, publish,
8
 
// distribute, sublicense, and/or sell copies of the Software, and to
9
 
// permit persons to whom the Software is furnished to do so, subject to
10
 
// the following conditions:
11
 
// 
12
 
// The above copyright notice and this permission notice shall be
13
 
// included in all copies or substantial portions of the Software.
14
 
// 
15
 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
 
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
 
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
 
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
 
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
 
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
 
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
 
// ***********************************************************************
23
 
 
24
 
namespace NUnit.Core
25
 
{
26
 
        using System;
27
 
        using System.Threading;
28
 
        using System.Collections.Specialized;
29
 
 
30
 
        /// <summary>
31
 
        /// ThreadedTestRunner overrides the Run and BeginRun methods 
32
 
        /// so that they are always run on a separate thread. The actual
33
 
        /// </summary>
34
 
        public class ThreadedTestRunner : ProxyTestRunner
35
 
        {
36
 
        static Logger log = InternalTrace.GetLogger(typeof(ThreadedTestRunner));
37
 
 
38
 
                #region Instance Variables
39
 
                private TestRunnerThread testRunnerThread;
40
 
                #endregion
41
 
 
42
 
                #region Constructors
43
 
                public ThreadedTestRunner( TestRunner testRunner ) : base ( testRunner ) { }
44
 
                #endregion
45
 
 
46
 
                #region Overrides
47
 
                public override TestResult Run( ITestListener listener )
48
 
                {
49
 
                        BeginRun( listener );
50
 
                        return EndRun();
51
 
                }
52
 
 
53
 
                public override TestResult Run( ITestListener listener, TestFilter filter )
54
 
                {
55
 
                        BeginRun( listener, filter );
56
 
                        return EndRun();
57
 
                }
58
 
 
59
 
                public override void BeginRun( ITestListener listener )
60
 
                {
61
 
            log.Info("BeginRun");
62
 
                        testRunnerThread = new TestRunnerThread( this.TestRunner );
63
 
            testRunnerThread.StartRun( listener );
64
 
                }
65
 
 
66
 
                public override void BeginRun( ITestListener listener, TestFilter filter )
67
 
                {
68
 
            log.Info("BeginRun");
69
 
            testRunnerThread = new TestRunnerThread(this.TestRunner);
70
 
                        testRunnerThread.StartRun( listener, filter );
71
 
                }
72
 
 
73
 
                public override TestResult EndRun()
74
 
                {
75
 
            log.Info("EndRun");
76
 
            this.Wait();
77
 
                        return this.TestRunner.TestResult;
78
 
                }
79
 
 
80
 
 
81
 
                public override void Wait()
82
 
                {
83
 
                        if ( testRunnerThread != null )
84
 
                                testRunnerThread.Wait();
85
 
                }
86
 
 
87
 
                public override void CancelRun()
88
 
                {
89
 
                        if ( testRunnerThread != null )
90
 
                                testRunnerThread.Cancel();
91
 
                }
92
 
 
93
 
                #endregion
94
 
        }
95
 
}