Merge lp:~cvetomir-todorov/nunitv2/bug603088 into lp:nunitv2
- bug603088
- Merge into trunk
Proposed by
Cvetomir Todorov
Status: | Merged |
---|---|
Merge reported by: | Charlie Poole |
Merged at revision: | not available |
Proposed branch: | lp:~cvetomir-todorov/nunitv2/bug603088 |
Merge into: | lp:nunitv2 |
Diff against target: |
1342 lines (+727/-461) 10 files modified
src/ClientUtilities/tests/FileWatcherTest.cs (+3/-2) src/ClientUtilities/tests/MockAssemblyWatcher.cs (+0/-3) src/ClientUtilities/tests/TestLoaderWatcherTests.cs (+139/-0) src/ClientUtilities/tests/nunit.util.tests.build (+1/-0) src/ClientUtilities/tests/nunit.util.tests.csproj (+213/-213) src/ClientUtilities/util/AssemblyWatcher.cs (+104/-43) src/ClientUtilities/util/IAssemblyWatcher.cs (+54/-0) src/ClientUtilities/util/TestLoader.cs (+31/-20) src/ClientUtilities/util/nunit.util.build (+1/-0) src/ClientUtilities/util/nunit.util.dll.csproj (+181/-180) |
To merge this branch: | bzr merge lp:~cvetomir-todorov/nunitv2/bug603088 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Charlie Poole | Approve | ||
Review via email: mp+35021@code.launchpad.net |
Commit message
Description of the change
Fixing Bug #603088.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/ClientUtilities/tests/FileWatcherTest.cs' |
2 | --- src/ClientUtilities/tests/FileWatcherTest.cs 2009-04-18 02:24:12 +0000 |
3 | +++ src/ClientUtilities/tests/FileWatcherTest.cs 2010-09-09 18:41:13 +0000 |
4 | @@ -31,8 +31,9 @@ |
5 | writer.Close(); |
6 | |
7 | handler = new CounterEventHandler(); |
8 | - watcher = new AssemblyWatcher(watcherDelayMs, fileName); |
9 | - watcher.AssemblyChangedEvent += new AssemblyWatcher.AssemblyChangedHandler( handler.OnChanged ); |
10 | + watcher = new AssemblyWatcher(); |
11 | + watcher.Setup(watcherDelayMs, fileName); |
12 | + watcher.AssemblyChanged += new AssemblyChangedHandler( handler.OnChanged ); |
13 | watcher.Start(); |
14 | } |
15 | |
16 | |
17 | === modified file 'src/ClientUtilities/tests/MockAssemblyWatcher.cs' |
18 | --- src/ClientUtilities/tests/MockAssemblyWatcher.cs 2009-04-18 02:24:12 +0000 |
19 | +++ src/ClientUtilities/tests/MockAssemblyWatcher.cs 2010-09-09 18:41:13 +0000 |
20 | @@ -21,9 +21,6 @@ |
21 | private DateTime triggerTime; |
22 | private DateTime publishTime; |
23 | |
24 | - public MockAssemblyWatcher( int delay, string assemblyFileName ) |
25 | - : base( delay, assemblyFileName ) { } |
26 | - |
27 | public bool EventPublished |
28 | { |
29 | get { return eventPublished; } |
30 | |
31 | === added file 'src/ClientUtilities/tests/TestLoaderWatcherTests.cs' |
32 | --- src/ClientUtilities/tests/TestLoaderWatcherTests.cs 1970-01-01 00:00:00 +0000 |
33 | +++ src/ClientUtilities/tests/TestLoaderWatcherTests.cs 2010-09-09 18:41:13 +0000 |
34 | @@ -0,0 +1,139 @@ |
35 | +// **************************************************************** |
36 | +// This is free software licensed under the NUnit license. You |
37 | +// may obtain a copy of the license as well as information regarding |
38 | +// copyright ownership at http://nunit.org. |
39 | +// **************************************************************** |
40 | + |
41 | +using System; |
42 | +using System.Collections.Generic; |
43 | +using NUnit.Framework; |
44 | +using NUnit.Tests.Assemblies; |
45 | + |
46 | +namespace NUnit.Util.Tests |
47 | +{ |
48 | + [TestFixture] |
49 | + public class TestLoaderWatcherTests |
50 | + { |
51 | + private readonly string assembly = MockAssembly.AssemblyPath; |
52 | + private MockAssemblyWatcher2 mockWatcher; |
53 | + private ITestLoader testLoader; |
54 | + private const string ReloadOnChangeSetting = "Options.TestLoader.ReloadOnChange"; |
55 | + |
56 | + [SetUp] |
57 | + public void PreprareTestLoader() |
58 | + { |
59 | + // arrange |
60 | + mockWatcher = new MockAssemblyWatcher2(); |
61 | + testLoader = new TestLoader(mockWatcher); |
62 | + testLoader.LoadProject(assembly); |
63 | + } |
64 | + |
65 | + [TearDown] |
66 | + public void CleanUpSettings() |
67 | + { |
68 | + Services.UserSettings.RemoveSetting(ReloadOnChangeSetting); |
69 | + } |
70 | + |
71 | + private void AssertWatcherIsPrepared() |
72 | + { |
73 | + Assert.IsTrue(mockWatcher.IsWatching); |
74 | + CollectionAssert.AreEquivalent(new string[] { assembly }, mockWatcher.AssembliesToWatch); |
75 | + } |
76 | + |
77 | + [Test] |
78 | + public void LoadShouldStartWatcher() |
79 | + { |
80 | + // act |
81 | + testLoader.LoadTest(); |
82 | + |
83 | + // assert |
84 | + AssertWatcherIsPrepared(); |
85 | + } |
86 | + |
87 | + [Test] |
88 | + public void ReloadShouldStartWatcher() |
89 | + { |
90 | + // arrange |
91 | + testLoader.LoadTest(); |
92 | + mockWatcher.AssembliesToWatch = null; |
93 | + mockWatcher.IsWatching = false; |
94 | + |
95 | + // act |
96 | + testLoader.ReloadTest(); |
97 | + |
98 | + // assert |
99 | + AssertWatcherIsPrepared(); |
100 | + } |
101 | + |
102 | + [Test] |
103 | + public void UnloadShouldStopWatcherAndFreeResources() |
104 | + { |
105 | + // act |
106 | + testLoader.LoadTest(); |
107 | + testLoader.UnloadTest(); |
108 | + |
109 | + // assert |
110 | + Assert.IsFalse(mockWatcher.IsWatching); |
111 | + Assert.IsTrue(mockWatcher.AreResourcesFreed); |
112 | + } |
113 | + |
114 | + [Test] |
115 | + public void LoadShouldStartWatcherDepedningOnSettings() |
116 | + { |
117 | + // arrange |
118 | + Services.UserSettings.SaveSetting(ReloadOnChangeSetting, false); |
119 | + testLoader.LoadTest(); |
120 | + |
121 | + // assert |
122 | + Assert.IsFalse(mockWatcher.IsWatching); |
123 | + } |
124 | + |
125 | + [Test] |
126 | + public void ReloadShouldStartWatcherDepedningOnSettings() |
127 | + { |
128 | + // arrange |
129 | + Services.UserSettings.SaveSetting(ReloadOnChangeSetting, false); |
130 | + testLoader.LoadTest(); |
131 | + testLoader.ReloadTest(); |
132 | + |
133 | + // assert |
134 | + Assert.IsFalse(mockWatcher.IsWatching); |
135 | + } |
136 | + } |
137 | + |
138 | + internal class MockAssemblyWatcher2 : IAssemblyWatcher |
139 | + { |
140 | + public bool IsWatching; |
141 | + public IList<string> AssembliesToWatch; |
142 | + public bool AreResourcesFreed; |
143 | + |
144 | + public void Stop() |
145 | + { |
146 | + IsWatching = false; |
147 | + } |
148 | + |
149 | + public void Start() |
150 | + { |
151 | + IsWatching = true; |
152 | + } |
153 | + |
154 | + public void Setup(int delayInMs, IList<string> assemblies) |
155 | + { |
156 | + AssembliesToWatch = assemblies; |
157 | + } |
158 | + |
159 | + public void Setup(int delayInMs, string assemblyFileName) |
160 | + { |
161 | + Setup(delayInMs, new string[] {assemblyFileName}); |
162 | + } |
163 | + |
164 | + public void FreeResources() |
165 | + { |
166 | + AreResourcesFreed = true; |
167 | + } |
168 | + |
169 | +#pragma warning disable 67 |
170 | + public event AssemblyChangedHandler AssemblyChanged; |
171 | +#pragma warning restore 67 |
172 | + } |
173 | +} |
174 | \ No newline at end of file |
175 | |
176 | === modified file 'src/ClientUtilities/tests/nunit.util.tests.build' |
177 | --- src/ClientUtilities/tests/nunit.util.tests.build 2010-04-19 03:57:21 +0000 |
178 | +++ src/ClientUtilities/tests/nunit.util.tests.build 2010-09-09 18:41:13 +0000 |
179 | @@ -32,6 +32,7 @@ |
180 | <include name="TestDomainFixture.cs"/> |
181 | <include name="TestDomainTests_Multiple.cs"/> |
182 | <include name="TestEventCatcher.cs"/> |
183 | + <include name="TestLoaderWatcherTests.cs"/> |
184 | <include name="TestLoaderAssemblyTests.cs"/> |
185 | <include name="TestRunnerFactoryTests.cs"/> |
186 | <include name="TestServerTests.cs"/> |
187 | |
188 | === modified file 'src/ClientUtilities/tests/nunit.util.tests.csproj' |
189 | --- src/ClientUtilities/tests/nunit.util.tests.csproj 2010-08-06 18:37:35 +0000 |
190 | +++ src/ClientUtilities/tests/nunit.util.tests.csproj 2010-09-09 18:41:13 +0000 |
191 | @@ -1,214 +1,214 @@ |
192 | -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> |
193 | - <PropertyGroup> |
194 | - <ProjectType>Local</ProjectType> |
195 | - <ProductVersion>9.0.30729</ProductVersion> |
196 | - <SchemaVersion>2.0</SchemaVersion> |
197 | - <ProjectGuid>{74EF7165-117E-48ED-98EA-068EAE438E53}</ProjectGuid> |
198 | - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
199 | - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
200 | - <ApplicationIcon> |
201 | - </ApplicationIcon> |
202 | - <AssemblyKeyContainerName> |
203 | - </AssemblyKeyContainerName> |
204 | - <AssemblyName>nunit.util.tests</AssemblyName> |
205 | - <AssemblyOriginatorKeyFile> |
206 | - </AssemblyOriginatorKeyFile> |
207 | - <DefaultClientScript>JScript</DefaultClientScript> |
208 | - <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> |
209 | - <DefaultTargetSchema>IE50</DefaultTargetSchema> |
210 | - <DelaySign>false</DelaySign> |
211 | - <OutputType>Library</OutputType> |
212 | - <RootNamespace>NUnit.Util.Tests</RootNamespace> |
213 | - <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> |
214 | - <StartupObject> |
215 | - </StartupObject> |
216 | - <FileUpgradeFlags> |
217 | - </FileUpgradeFlags> |
218 | - <UpgradeBackupLocation> |
219 | - </UpgradeBackupLocation> |
220 | - <OldToolsVersion>2.0</OldToolsVersion> |
221 | - </PropertyGroup> |
222 | - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
223 | - <OutputPath>..\..\bin\Debug\tests\</OutputPath> |
224 | - <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
225 | - <BaseAddress>285212672</BaseAddress> |
226 | - <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
227 | - <ConfigurationOverrideFile> |
228 | - </ConfigurationOverrideFile> |
229 | - <DefineConstants>DEBUG;TRACE</DefineConstants> |
230 | - <DocumentationFile> |
231 | - </DocumentationFile> |
232 | - <DebugSymbols>true</DebugSymbols> |
233 | - <FileAlignment>4096</FileAlignment> |
234 | - <NoStdLib>false</NoStdLib> |
235 | - <NoWarn> |
236 | - </NoWarn> |
237 | - <Optimize>false</Optimize> |
238 | - <RegisterForComInterop>false</RegisterForComInterop> |
239 | - <RemoveIntegerChecks>false</RemoveIntegerChecks> |
240 | - <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
241 | - <WarningLevel>4</WarningLevel> |
242 | - <DebugType>full</DebugType> |
243 | - <ErrorReport>prompt</ErrorReport> |
244 | - </PropertyGroup> |
245 | - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
246 | - <OutputPath>..\..\bin\Release\tests\</OutputPath> |
247 | - <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
248 | - <BaseAddress>285212672</BaseAddress> |
249 | - <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
250 | - <ConfigurationOverrideFile> |
251 | - </ConfigurationOverrideFile> |
252 | - <DefineConstants>TRACE</DefineConstants> |
253 | - <DocumentationFile> |
254 | - </DocumentationFile> |
255 | - <DebugSymbols>false</DebugSymbols> |
256 | - <FileAlignment>4096</FileAlignment> |
257 | - <NoStdLib>false</NoStdLib> |
258 | - <NoWarn> |
259 | - </NoWarn> |
260 | - <Optimize>true</Optimize> |
261 | - <RegisterForComInterop>false</RegisterForComInterop> |
262 | - <RemoveIntegerChecks>false</RemoveIntegerChecks> |
263 | - <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
264 | - <WarningLevel>4</WarningLevel> |
265 | - <DebugType>none</DebugType> |
266 | - <ErrorReport>prompt</ErrorReport> |
267 | - </PropertyGroup> |
268 | - <ItemGroup> |
269 | - <Reference Include="System"> |
270 | - <Name>System</Name> |
271 | - </Reference> |
272 | - <Reference Include="System.Data"> |
273 | - <Name>System.Data</Name> |
274 | - </Reference> |
275 | - <Reference Include="System.Drawing"> |
276 | - <Name>System.Drawing</Name> |
277 | - </Reference> |
278 | - <Reference Include="System.Runtime.Remoting"> |
279 | - <Name>System.Runtime.Remoting</Name> |
280 | - </Reference> |
281 | - <Reference Include="System.Xml"> |
282 | - <Name>System.XML</Name> |
283 | - </Reference> |
284 | - <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj"> |
285 | - <Name>nunit.core.dll</Name> |
286 | - <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project> |
287 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
288 | - <Private>False</Private> |
289 | - </ProjectReference> |
290 | - <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj"> |
291 | - <Name>nunit.core.interfaces.dll</Name> |
292 | - <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project> |
293 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
294 | - <Private>False</Private> |
295 | - </ProjectReference> |
296 | - <ProjectReference Include="..\..\NUnitCore\tests\nunit.core.tests.csproj"> |
297 | - <Name>nunit.core.tests</Name> |
298 | - <Project>{DD758D21-E5D5-4D40-9450-5F65A32F359C}</Project> |
299 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
300 | - <Private>False</Private> |
301 | - </ProjectReference> |
302 | - <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll.csproj"> |
303 | - <Name>nunit.framework.dll</Name> |
304 | - <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project> |
305 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
306 | - <Private>True</Private> |
307 | - </ProjectReference> |
308 | - <ProjectReference Include="..\..\tests\mock-assembly\mock-assembly.csproj"> |
309 | - <Name>mock-assembly</Name> |
310 | - <Project>{2E368281-3BA8-4050-B05E-0E0E43F8F446}</Project> |
311 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
312 | - <Private>False</Private> |
313 | - </ProjectReference> |
314 | - <ProjectReference Include="..\..\tests\nonamespace-assembly\nonamespace-assembly.csproj"> |
315 | - <Name>nonamespace-assembly</Name> |
316 | - <Project>{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}</Project> |
317 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
318 | - <Private>False</Private> |
319 | - </ProjectReference> |
320 | - <ProjectReference Include="..\..\tests\test-utilities\test-utilities.csproj"> |
321 | - <Name>test-utilities</Name> |
322 | - <Project>{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}</Project> |
323 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
324 | - </ProjectReference> |
325 | - <ProjectReference Include="..\util\nunit.util.dll.csproj"> |
326 | - <Name>nunit.util.dll</Name> |
327 | - <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project> |
328 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
329 | - <Private>False</Private> |
330 | - </ProjectReference> |
331 | - </ItemGroup> |
332 | - <ItemGroup> |
333 | - <EmbeddedResource Include="resources\ClassLibrary1.csproj" /> |
334 | - <EmbeddedResource Include="resources\csharp-sample.csproj" /> |
335 | - <EmbeddedResource Include="resources\csharp-sample_VS2005.csproj" /> |
336 | - <EmbeddedResource Include="resources\csharp-sample_VS2005_noplatform.csproj" /> |
337 | - <EmbeddedResource Include="resources\HebrewFileProblem.csproj" /> |
338 | - <EmbeddedResource Include="resources\jsharp.vjsproj" /> |
339 | - <EmbeddedResource Include="resources\jsharp_VS2005.vjsproj" /> |
340 | - <EmbeddedResource Include="resources\MultiplePlatformProject.csproj" /> |
341 | - <EmbeddedResource Include="resources\samples.sln" /> |
342 | - <EmbeddedResource Include="resources\samples_VS2005.sln" /> |
343 | - <EmbeddedResource Include="resources\Solution1.sln" /> |
344 | - <EmbeddedResource Include="resources\vb-sample.vbproj" /> |
345 | - <EmbeddedResource Include="resources\vb-sample_VS2005.vbproj" /> |
346 | - <EmbeddedResource Include="resources\WebApplication1.sln" /> |
347 | - <EmbeddedResource Include="resources\XNAWindowsProject.csproj" /> |
348 | - </ItemGroup> |
349 | - <ItemGroup> |
350 | - <EmbeddedResource Include="resources\cpp-default-library_VS2005.vcproj" /> |
351 | - <EmbeddedResource Include="resources\cpp-sample.vcproj" /> |
352 | - <EmbeddedResource Include="resources\cpp-sample_VS2005.vcproj" /> |
353 | - <EmbeddedResource Include="resources\CPPLibrary.vcproj" /> |
354 | - <EmbeddedResource Include="resources\MakeFileProject.vcproj" /> |
355 | - <EmbeddedResource Include="resources\Unmanaged.vcproj" /> |
356 | - </ItemGroup> |
357 | - <ItemGroup> |
358 | - <Compile Include="..\..\CommonAssemblyInfo.cs"> |
359 | - <Link>CommonAssemblyInfo.cs</Link> |
360 | - </Compile> |
361 | - <Compile Include="AssemblyListTests.cs" /> |
362 | - <Compile Include="CategoryManagerTest.cs" /> |
363 | - <Compile Include="CategoryParseTests.cs" /> |
364 | - <Compile Include="DomainManagerTests.cs" /> |
365 | - <Compile Include="EventDispatcherTests.cs" /> |
366 | - <Compile Include="FileWatcherTest.cs" /> |
367 | - <Compile Include="MemorySettingsStorageTests.cs" /> |
368 | - <Compile Include="MockAssemblyWatcher.cs" /> |
369 | - <Compile Include="NUnitProjectLoad.cs" /> |
370 | - <Compile Include="NUnitProjectSave.cs" /> |
371 | - <Compile Include="NUnitProjectTests.cs" /> |
372 | - <Compile Include="NUnitProjectXml.cs" /> |
373 | - <Compile Include="NUnitRegistryTests.cs" /> |
374 | - <Compile Include="PathUtilTests.cs" /> |
375 | - <Compile Include="ProcessRunnerTests.cs" /> |
376 | - <Compile Include="ProjectConfigTests.cs" /> |
377 | - <Compile Include="RecentFileEntryTests.cs" /> |
378 | - <Compile Include="RecentFilesTests.cs" /> |
379 | - <Compile Include="RegistrySettingsStorageTests.cs" /> |
380 | - <Compile Include="RemoteTestResultTest.cs" /> |
381 | - <Compile Include="RuntimeFrameworkSelectorTests.cs" /> |
382 | - <Compile Include="ServerUtilityTests.cs" /> |
383 | - <Compile Include="ServiceManagerSetUpFixture.cs" /> |
384 | - <Compile Include="SettingsGroupTests.cs" /> |
385 | - <Compile Include="SummaryResultFixture.cs" /> |
386 | - <Compile Include="TestAgencyTests.cs" /> |
387 | - <Compile Include="TestAgentTests.cs" /> |
388 | - <Compile Include="TestDomainFixture.cs" /> |
389 | - <Compile Include="TestDomainTests_Multiple.cs" /> |
390 | - <Compile Include="TestEventCatcher.cs" /> |
391 | - <Compile Include="TestLoaderAssemblyTests.cs" /> |
392 | - <Compile Include="TestRunnerFactoryTests.cs" /> |
393 | - <Compile Include="TestServerTests.cs" /> |
394 | - <Compile Include="VisualStudioConverterTests.cs" /> |
395 | - <Compile Include="VSProjectTests.cs" /> |
396 | - <Compile Include="XmlResultWriterTest.cs" /> |
397 | - </ItemGroup> |
398 | - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> |
399 | - <PropertyGroup> |
400 | - <PreBuildEvent> |
401 | - </PreBuildEvent> |
402 | - <PostBuildEvent> |
403 | - </PostBuildEvent> |
404 | - </PropertyGroup> |
405 | +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> |
406 | + <PropertyGroup> |
407 | + <ProjectType>Local</ProjectType> |
408 | + <ProductVersion>9.0.30729</ProductVersion> |
409 | + <SchemaVersion>2.0</SchemaVersion> |
410 | + <ProjectGuid>{74EF7165-117E-48ED-98EA-068EAE438E53}</ProjectGuid> |
411 | + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
412 | + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
413 | + <ApplicationIcon> |
414 | + </ApplicationIcon> |
415 | + <AssemblyKeyContainerName> |
416 | + </AssemblyKeyContainerName> |
417 | + <AssemblyName>nunit.util.tests</AssemblyName> |
418 | + <AssemblyOriginatorKeyFile> |
419 | + </AssemblyOriginatorKeyFile> |
420 | + <DefaultClientScript>JScript</DefaultClientScript> |
421 | + <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> |
422 | + <DefaultTargetSchema>IE50</DefaultTargetSchema> |
423 | + <DelaySign>false</DelaySign> |
424 | + <OutputType>Library</OutputType> |
425 | + <RootNamespace>NUnit.Util.Tests</RootNamespace> |
426 | + <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> |
427 | + <StartupObject> |
428 | + </StartupObject> |
429 | + <FileUpgradeFlags> |
430 | + </FileUpgradeFlags> |
431 | + <UpgradeBackupLocation> |
432 | + </UpgradeBackupLocation> |
433 | + <OldToolsVersion>2.0</OldToolsVersion> |
434 | + </PropertyGroup> |
435 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
436 | + <OutputPath>..\..\bin\Debug\tests\</OutputPath> |
437 | + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
438 | + <BaseAddress>285212672</BaseAddress> |
439 | + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
440 | + <ConfigurationOverrideFile> |
441 | + </ConfigurationOverrideFile> |
442 | + <DefineConstants>DEBUG;TRACE</DefineConstants> |
443 | + <DocumentationFile> |
444 | + </DocumentationFile> |
445 | + <DebugSymbols>true</DebugSymbols> |
446 | + <FileAlignment>4096</FileAlignment> |
447 | + <NoStdLib>false</NoStdLib> |
448 | + <NoWarn> |
449 | + </NoWarn> |
450 | + <Optimize>false</Optimize> |
451 | + <RegisterForComInterop>false</RegisterForComInterop> |
452 | + <RemoveIntegerChecks>false</RemoveIntegerChecks> |
453 | + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
454 | + <WarningLevel>4</WarningLevel> |
455 | + <DebugType>full</DebugType> |
456 | + <ErrorReport>prompt</ErrorReport> |
457 | + </PropertyGroup> |
458 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
459 | + <OutputPath>..\..\bin\Release\tests\</OutputPath> |
460 | + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
461 | + <BaseAddress>285212672</BaseAddress> |
462 | + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
463 | + <ConfigurationOverrideFile> |
464 | + </ConfigurationOverrideFile> |
465 | + <DefineConstants>TRACE</DefineConstants> |
466 | + <DocumentationFile> |
467 | + </DocumentationFile> |
468 | + <DebugSymbols>false</DebugSymbols> |
469 | + <FileAlignment>4096</FileAlignment> |
470 | + <NoStdLib>false</NoStdLib> |
471 | + <NoWarn> |
472 | + </NoWarn> |
473 | + <Optimize>true</Optimize> |
474 | + <RegisterForComInterop>false</RegisterForComInterop> |
475 | + <RemoveIntegerChecks>false</RemoveIntegerChecks> |
476 | + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
477 | + <WarningLevel>4</WarningLevel> |
478 | + <DebugType>none</DebugType> |
479 | + <ErrorReport>prompt</ErrorReport> |
480 | + </PropertyGroup> |
481 | + <ItemGroup> |
482 | + <Reference Include="System"> |
483 | + <Name>System</Name> |
484 | + </Reference> |
485 | + <Reference Include="System.Data"> |
486 | + <Name>System.Data</Name> |
487 | + </Reference> |
488 | + <Reference Include="System.Drawing"> |
489 | + <Name>System.Drawing</Name> |
490 | + </Reference> |
491 | + <Reference Include="System.Runtime.Remoting"> |
492 | + <Name>System.Runtime.Remoting</Name> |
493 | + </Reference> |
494 | + <Reference Include="System.Xml"> |
495 | + <Name>System.XML</Name> |
496 | + </Reference> |
497 | + <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj"> |
498 | + <Name>nunit.core.dll</Name> |
499 | + <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project> |
500 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
501 | + <Private>False</Private> |
502 | + </ProjectReference> |
503 | + <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj"> |
504 | + <Name>nunit.core.interfaces.dll</Name> |
505 | + <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project> |
506 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
507 | + <Private>False</Private> |
508 | + </ProjectReference> |
509 | + <ProjectReference Include="..\..\NUnitCore\tests\nunit.core.tests.csproj"> |
510 | + <Name>nunit.core.tests</Name> |
511 | + <Project>{DD758D21-E5D5-4D40-9450-5F65A32F359C}</Project> |
512 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
513 | + <Private>False</Private> |
514 | + </ProjectReference> |
515 | + <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll.csproj"> |
516 | + <Name>nunit.framework.dll</Name> |
517 | + <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project> |
518 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
519 | + <Private>True</Private> |
520 | + </ProjectReference> |
521 | + <ProjectReference Include="..\..\tests\mock-assembly\mock-assembly.csproj"> |
522 | + <Name>mock-assembly</Name> |
523 | + <Project>{2E368281-3BA8-4050-B05E-0E0E43F8F446}</Project> |
524 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
525 | + <Private>False</Private> |
526 | + </ProjectReference> |
527 | + <ProjectReference Include="..\..\tests\nonamespace-assembly\nonamespace-assembly.csproj"> |
528 | + <Name>nonamespace-assembly</Name> |
529 | + <Project>{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}</Project> |
530 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
531 | + <Private>False</Private> |
532 | + </ProjectReference> |
533 | + <ProjectReference Include="..\..\tests\test-utilities\test-utilities.csproj"> |
534 | + <Name>test-utilities</Name> |
535 | + <Project>{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}</Project> |
536 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
537 | + </ProjectReference> |
538 | + <ProjectReference Include="..\util\nunit.util.dll.csproj"> |
539 | + <Name>nunit.util.dll</Name> |
540 | + <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project> |
541 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
542 | + </ProjectReference> |
543 | + </ItemGroup> |
544 | + <ItemGroup> |
545 | + <EmbeddedResource Include="resources\ClassLibrary1.csproj" /> |
546 | + <EmbeddedResource Include="resources\csharp-sample.csproj" /> |
547 | + <EmbeddedResource Include="resources\csharp-sample_VS2005.csproj" /> |
548 | + <EmbeddedResource Include="resources\csharp-sample_VS2005_noplatform.csproj" /> |
549 | + <EmbeddedResource Include="resources\HebrewFileProblem.csproj" /> |
550 | + <EmbeddedResource Include="resources\jsharp.vjsproj" /> |
551 | + <EmbeddedResource Include="resources\jsharp_VS2005.vjsproj" /> |
552 | + <EmbeddedResource Include="resources\MultiplePlatformProject.csproj" /> |
553 | + <EmbeddedResource Include="resources\samples.sln" /> |
554 | + <EmbeddedResource Include="resources\samples_VS2005.sln" /> |
555 | + <EmbeddedResource Include="resources\Solution1.sln" /> |
556 | + <EmbeddedResource Include="resources\vb-sample.vbproj" /> |
557 | + <EmbeddedResource Include="resources\vb-sample_VS2005.vbproj" /> |
558 | + <EmbeddedResource Include="resources\WebApplication1.sln" /> |
559 | + <EmbeddedResource Include="resources\XNAWindowsProject.csproj" /> |
560 | + </ItemGroup> |
561 | + <ItemGroup> |
562 | + <EmbeddedResource Include="resources\cpp-default-library_VS2005.vcproj" /> |
563 | + <EmbeddedResource Include="resources\cpp-sample.vcproj" /> |
564 | + <EmbeddedResource Include="resources\cpp-sample_VS2005.vcproj" /> |
565 | + <EmbeddedResource Include="resources\CPPLibrary.vcproj" /> |
566 | + <EmbeddedResource Include="resources\MakeFileProject.vcproj" /> |
567 | + <EmbeddedResource Include="resources\Unmanaged.vcproj" /> |
568 | + </ItemGroup> |
569 | + <ItemGroup> |
570 | + <Compile Include="..\..\CommonAssemblyInfo.cs"> |
571 | + <Link>CommonAssemblyInfo.cs</Link> |
572 | + </Compile> |
573 | + <Compile Include="AssemblyListTests.cs" /> |
574 | + <Compile Include="CategoryManagerTest.cs" /> |
575 | + <Compile Include="CategoryParseTests.cs" /> |
576 | + <Compile Include="DomainManagerTests.cs" /> |
577 | + <Compile Include="EventDispatcherTests.cs" /> |
578 | + <Compile Include="FileWatcherTest.cs" /> |
579 | + <Compile Include="MemorySettingsStorageTests.cs" /> |
580 | + <Compile Include="MockAssemblyWatcher.cs" /> |
581 | + <Compile Include="NUnitProjectLoad.cs" /> |
582 | + <Compile Include="NUnitProjectSave.cs" /> |
583 | + <Compile Include="NUnitProjectTests.cs" /> |
584 | + <Compile Include="NUnitProjectXml.cs" /> |
585 | + <Compile Include="NUnitRegistryTests.cs" /> |
586 | + <Compile Include="PathUtilTests.cs" /> |
587 | + <Compile Include="ProcessRunnerTests.cs" /> |
588 | + <Compile Include="ProjectConfigTests.cs" /> |
589 | + <Compile Include="RecentFileEntryTests.cs" /> |
590 | + <Compile Include="RecentFilesTests.cs" /> |
591 | + <Compile Include="RegistrySettingsStorageTests.cs" /> |
592 | + <Compile Include="RemoteTestResultTest.cs" /> |
593 | + <Compile Include="RuntimeFrameworkSelectorTests.cs" /> |
594 | + <Compile Include="ServerUtilityTests.cs" /> |
595 | + <Compile Include="ServiceManagerSetUpFixture.cs" /> |
596 | + <Compile Include="SettingsGroupTests.cs" /> |
597 | + <Compile Include="SummaryResultFixture.cs" /> |
598 | + <Compile Include="TestAgencyTests.cs" /> |
599 | + <Compile Include="TestAgentTests.cs" /> |
600 | + <Compile Include="TestDomainFixture.cs" /> |
601 | + <Compile Include="TestDomainTests_Multiple.cs" /> |
602 | + <Compile Include="TestEventCatcher.cs" /> |
603 | + <Compile Include="TestLoaderAssemblyTests.cs" /> |
604 | + <Compile Include="TestLoaderWatcherTests.cs" /> |
605 | + <Compile Include="TestRunnerFactoryTests.cs" /> |
606 | + <Compile Include="TestServerTests.cs" /> |
607 | + <Compile Include="VisualStudioConverterTests.cs" /> |
608 | + <Compile Include="VSProjectTests.cs" /> |
609 | + <Compile Include="XmlResultWriterTest.cs" /> |
610 | + </ItemGroup> |
611 | + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> |
612 | + <PropertyGroup> |
613 | + <PreBuildEvent> |
614 | + </PreBuildEvent> |
615 | + <PostBuildEvent> |
616 | + </PostBuildEvent> |
617 | + </PropertyGroup> |
618 | </Project> |
619 | \ No newline at end of file |
620 | |
621 | === modified file 'src/ClientUtilities/util/AssemblyWatcher.cs' |
622 | --- src/ClientUtilities/util/AssemblyWatcher.cs 2009-04-18 02:24:12 +0000 |
623 | +++ src/ClientUtilities/util/AssemblyWatcher.cs 2010-09-09 18:41:13 +0000 |
624 | @@ -6,9 +6,8 @@ |
625 | |
626 | using System; |
627 | using System.IO; |
628 | -using System.Text; |
629 | using System.Timers; |
630 | -using System.Collections; |
631 | +using System.Collections.Generic; |
632 | |
633 | namespace NUnit.Util |
634 | { |
635 | @@ -20,46 +19,72 @@ |
636 | /// an argument to the event handler so that one routine can |
637 | /// be used to handle events from multiple watchers. |
638 | /// </summary> |
639 | - public class AssemblyWatcher |
640 | + public class AssemblyWatcher : IAssemblyWatcher |
641 | { |
642 | - FileSystemWatcher[] fileWatcher; |
643 | - FileInfo[] fileInfo; |
644 | + private FileSystemWatcher[] fileWatchers; |
645 | + private FileInfo[] files; |
646 | + private bool isWatching; |
647 | |
648 | protected System.Timers.Timer timer; |
649 | - protected string changedAssemblyPath; |
650 | - |
651 | - public delegate void AssemblyChangedHandler(String fullPath); |
652 | - public event AssemblyChangedHandler AssemblyChangedEvent; |
653 | - |
654 | - public AssemblyWatcher( int delay, string assemblyFileName ) |
655 | - : this( delay, new string[]{ assemblyFileName } ) { } |
656 | - |
657 | - public AssemblyWatcher( int delay, IList assemblies ) |
658 | - { |
659 | - fileInfo = new FileInfo[assemblies.Count]; |
660 | - fileWatcher = new FileSystemWatcher[assemblies.Count]; |
661 | - |
662 | - for( int i = 0; i < assemblies.Count; i++ ) |
663 | - { |
664 | - fileInfo[i] = new FileInfo( (string)assemblies[i] ); |
665 | - |
666 | - fileWatcher[i] = new FileSystemWatcher(); |
667 | - fileWatcher[i].Path = fileInfo[i].DirectoryName; |
668 | - fileWatcher[i].Filter = fileInfo[i].Name; |
669 | - fileWatcher[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite; |
670 | - fileWatcher[i].Changed+=new FileSystemEventHandler(OnChanged); |
671 | - fileWatcher[i].EnableRaisingEvents = false; |
672 | - } |
673 | - |
674 | - timer = new System.Timers.Timer( delay ); |
675 | - timer.AutoReset=false; |
676 | - timer.Enabled=false; |
677 | - timer.Elapsed+=new ElapsedEventHandler(OnTimer); |
678 | - } |
679 | - |
680 | - public FileInfo GetFileInfo( int index ) |
681 | - { |
682 | - return fileInfo[index]; |
683 | + protected string changedAssemblyPath; |
684 | + |
685 | + protected FileInfo GetFileInfo(int index) |
686 | + { |
687 | + return files[index]; |
688 | + } |
689 | + |
690 | + //public AssemblyWatcher( int delay, string assemblyFileName ) |
691 | + // : this( delay, new string[]{ assemblyFileName } ) { } |
692 | + |
693 | + //public AssemblyWatcher( int delay, IList assemblies ) |
694 | + //{ |
695 | + // files = new FileInfo[assemblies.Count]; |
696 | + // fileWatchers = new FileSystemWatcher[assemblies.Count]; |
697 | + |
698 | + // for( int i = 0; i < assemblies.Count; i++ ) |
699 | + // { |
700 | + // files[i] = new FileInfo( (string)assemblies[i] ); |
701 | + |
702 | + // fileWatchers[i] = new FileSystemWatcher(); |
703 | + // fileWatchers[i].Path = files[i].DirectoryName; |
704 | + // fileWatchers[i].Filter = files[i].Name; |
705 | + // fileWatchers[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite; |
706 | + // fileWatchers[i].Changed+=new FileSystemEventHandler(OnChanged); |
707 | + // fileWatchers[i].EnableRaisingEvents = false; |
708 | + // } |
709 | + |
710 | + // timer = new System.Timers.Timer( delay ); |
711 | + // timer.AutoReset=false; |
712 | + // timer.Enabled=false; |
713 | + // timer.Elapsed+=new ElapsedEventHandler(OnTimer); |
714 | + //} |
715 | + |
716 | + public void Setup(int delay, string assemblyFileName) |
717 | + { |
718 | + Setup(delay, new string[] {assemblyFileName}); |
719 | + } |
720 | + |
721 | + public void Setup(int delay, IList<string> assemblies) |
722 | + { |
723 | + files = new FileInfo[assemblies.Count]; |
724 | + fileWatchers = new FileSystemWatcher[assemblies.Count]; |
725 | + |
726 | + for (int i = 0; i < assemblies.Count; i++) |
727 | + { |
728 | + files[i] = new FileInfo((string)assemblies[i]); |
729 | + |
730 | + fileWatchers[i] = new FileSystemWatcher(); |
731 | + fileWatchers[i].Path = files[i].DirectoryName; |
732 | + fileWatchers[i].Filter = files[i].Name; |
733 | + fileWatchers[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite; |
734 | + fileWatchers[i].Changed += new FileSystemEventHandler(OnChanged); |
735 | + fileWatchers[i].EnableRaisingEvents = false; |
736 | + } |
737 | + |
738 | + timer = new System.Timers.Timer(delay); |
739 | + timer.AutoReset = false; |
740 | + timer.Enabled = false; |
741 | + timer.Elapsed += new ElapsedEventHandler(OnTimer); |
742 | } |
743 | |
744 | public void Start() |
745 | @@ -74,9 +99,45 @@ |
746 | |
747 | private void EnableWatchers( bool enable ) |
748 | { |
749 | - foreach( FileSystemWatcher watcher in fileWatcher ) |
750 | + if (ReferenceEquals(fileWatchers, null)) |
751 | + return; |
752 | + |
753 | + foreach( FileSystemWatcher watcher in fileWatchers ) |
754 | watcher.EnableRaisingEvents = enable; |
755 | - } |
756 | + |
757 | + isWatching = enable; |
758 | + } |
759 | + |
760 | + public void FreeResources() |
761 | + { |
762 | + if (isWatching) |
763 | + { |
764 | + EnableWatchers(false); |
765 | + } |
766 | + |
767 | + if (!ReferenceEquals(fileWatchers, null)) |
768 | + { |
769 | + foreach (FileSystemWatcher watcher in fileWatchers) |
770 | + { |
771 | + if (ReferenceEquals(watcher, null)) |
772 | + continue; |
773 | + |
774 | + watcher.Changed -= new FileSystemEventHandler(OnChanged); |
775 | + watcher.Dispose(); |
776 | + } |
777 | + } |
778 | + |
779 | + if (!ReferenceEquals(timer, null)) |
780 | + { |
781 | + timer.Stop(); |
782 | + timer.Close(); |
783 | + } |
784 | + |
785 | + fileWatchers = null; |
786 | + timer = null; |
787 | + } |
788 | + |
789 | + public event AssemblyChangedHandler AssemblyChanged; |
790 | |
791 | protected void OnTimer(Object source, ElapsedEventArgs e) |
792 | { |
793 | @@ -107,8 +168,8 @@ |
794 | |
795 | protected void PublishEvent() |
796 | { |
797 | - if ( AssemblyChangedEvent != null ) |
798 | - AssemblyChangedEvent( changedAssemblyPath ); |
799 | + if ( AssemblyChanged != null ) |
800 | + AssemblyChanged( changedAssemblyPath ); |
801 | } |
802 | } |
803 | } |
804 | \ No newline at end of file |
805 | |
806 | === added file 'src/ClientUtilities/util/IAssemblyWatcher.cs' |
807 | --- src/ClientUtilities/util/IAssemblyWatcher.cs 1970-01-01 00:00:00 +0000 |
808 | +++ src/ClientUtilities/util/IAssemblyWatcher.cs 2010-09-09 18:41:13 +0000 |
809 | @@ -0,0 +1,54 @@ |
810 | +using System; |
811 | +using System.Collections.Generic; |
812 | + |
813 | +namespace NUnit.Util |
814 | +{ |
815 | + public delegate void AssemblyChangedHandler(string fullPath); |
816 | + |
817 | + /// <summary> |
818 | + /// AssemblyWatcher keeps track of one or more assemblies to |
819 | + /// see if they have changed. It incorporates a delayed notification |
820 | + /// and uses a standard event to notify any interested parties |
821 | + /// about the change. The path to the assembly is provided as |
822 | + /// an argument to the event handler so that one routine can |
823 | + /// be used to handle events from multiple watchers. |
824 | + /// </summary> |
825 | + public interface IAssemblyWatcher |
826 | + { |
827 | + /// <summary> |
828 | + /// Stops watching for changes. |
829 | + /// To release resources call FreeResources. |
830 | + /// </summary> |
831 | + void Stop(); |
832 | + |
833 | + /// <summary> |
834 | + /// Starts watching for assembly changes. |
835 | + /// You need to call Setup before start watching. |
836 | + /// </summary> |
837 | + void Start(); |
838 | + |
839 | + /// <summary> |
840 | + /// Initializes the watcher with assemblies to observe for changes. |
841 | + /// </summary> |
842 | + /// <param name="delayInMs">The delay in ms.</param> |
843 | + /// <param name="assemblies">The assemblies.</param> |
844 | + void Setup(int delayInMs, IList<string> assemblies); |
845 | + |
846 | + /// <summary> |
847 | + /// Initializes the watcher with assemblies to observe for changes. |
848 | + /// </summary> |
849 | + /// <param name="delayInMs">The delay in ms.</param> |
850 | + /// <param name="assemblyFileName">Name of the assembly file.</param> |
851 | + void Setup(int delayInMs, string assemblyFileName); |
852 | + |
853 | + /// <summary> |
854 | + /// Releases all resources held by the watcher. |
855 | + /// </summary> |
856 | + void FreeResources(); |
857 | + |
858 | + /// <summary> |
859 | + /// Occurs when an assembly being watched has changed. |
860 | + /// </summary> |
861 | + event AssemblyChangedHandler AssemblyChanged; |
862 | + } |
863 | +} |
864 | \ No newline at end of file |
865 | |
866 | === modified file 'src/ClientUtilities/util/TestLoader.cs' |
867 | --- src/ClientUtilities/util/TestLoader.cs 2010-07-22 23:55:39 +0000 |
868 | +++ src/ClientUtilities/util/TestLoader.cs 2010-09-09 18:41:13 +0000 |
869 | @@ -8,7 +8,8 @@ |
870 | { |
871 | using System; |
872 | using System.IO; |
873 | - using System.Collections; |
874 | + using System.Collections; |
875 | + using System.Diagnostics; |
876 | using System.Threading; |
877 | using System.Configuration; |
878 | using NUnit.Core; |
879 | @@ -87,8 +88,8 @@ |
880 | |
881 | /// <summary> |
882 | /// Watcher fires when the assembly changes |
883 | - /// </summary> |
884 | - private AssemblyWatcher watcher; |
885 | + /// </summary> |
886 | + private IAssemblyWatcher watcher; |
887 | |
888 | /// <summary> |
889 | /// Assembly changed during a test and |
890 | @@ -116,11 +117,18 @@ |
891 | public TestLoader() |
892 | : this( new TestEventDispatcher() ) { } |
893 | |
894 | - public TestLoader(TestEventDispatcher eventDispatcher ) |
895 | - { |
896 | - this.events = eventDispatcher; |
897 | - this.factory = new DefaultTestRunnerFactory(); |
898 | - AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( OnUnhandledException ); |
899 | + public TestLoader(TestEventDispatcher eventDispatcher) |
900 | + : this(eventDispatcher, new AssemblyWatcher()) { } |
901 | + |
902 | + public TestLoader(IAssemblyWatcher assemblyWatcher) |
903 | + : this(new TestEventDispatcher(), assemblyWatcher) { } |
904 | + |
905 | + public TestLoader(TestEventDispatcher eventDispatcher, IAssemblyWatcher assemblyWatcher) |
906 | + { |
907 | + this.events = eventDispatcher; |
908 | + this.watcher = assemblyWatcher; |
909 | + this.factory = new DefaultTestRunnerFactory(); |
910 | + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException); |
911 | } |
912 | |
913 | #endregion |
914 | @@ -569,9 +577,12 @@ |
915 | |
916 | loadedTest = testRunner.Test; |
917 | currentRuntime = framework; |
918 | - reloadPending = false; |
919 | - |
920 | - testProject.HasChangesRequiringReload = false; |
921 | + reloadPending = false; |
922 | + |
923 | + if (Services.UserSettings.GetSetting("Options.TestLoader.ReloadOnChange", true)) |
924 | + InstallWatcher(); |
925 | + |
926 | + testProject.HasChangesRequiringReload = false; |
927 | events.FireTestReloaded(TestFileName, loadedTest); |
928 | |
929 | log.Info("Reload complete"); |
930 | @@ -669,10 +680,12 @@ |
931 | /// </summary> |
932 | private void InstallWatcher() |
933 | { |
934 | - if(watcher!=null) watcher.Stop(); |
935 | + Debug.Assert(!ReferenceEquals(watcher, null)); |
936 | + watcher.Stop(); |
937 | + watcher.FreeResources(); |
938 | |
939 | - watcher = new AssemblyWatcher( 1000, TestProject.ActiveConfig.Assemblies.ToArray() ); |
940 | - watcher.AssemblyChangedEvent += new AssemblyWatcher.AssemblyChangedHandler( OnTestChanged ); |
941 | + watcher.Setup(1000, TestProject.ActiveConfig.Assemblies.ToArray()); |
942 | + watcher.AssemblyChanged += new AssemblyChangedHandler( OnTestChanged ); |
943 | watcher.Start(); |
944 | } |
945 | |
946 | @@ -680,12 +693,10 @@ |
947 | /// Stop and remove our current watcher object. |
948 | /// </summary> |
949 | private void RemoveWatcher() |
950 | - { |
951 | - if ( watcher != null ) |
952 | - { |
953 | - watcher.Stop(); |
954 | - watcher = null; |
955 | - } |
956 | + { |
957 | + Debug.Assert(!ReferenceEquals(watcher, null)); |
958 | + watcher.Stop(); |
959 | + watcher.FreeResources(); |
960 | } |
961 | |
962 | private TestPackage MakeTestPackage( string testName ) |
963 | |
964 | === modified file 'src/ClientUtilities/util/nunit.util.build' |
965 | --- src/ClientUtilities/util/nunit.util.build 2010-07-22 23:55:39 +0000 |
966 | +++ src/ClientUtilities/util/nunit.util.build 2010-09-09 18:41:13 +0000 |
967 | @@ -11,6 +11,7 @@ |
968 | <include name="CommandLineOptions.cs"/> |
969 | <include name="ConsoleWriter.cs"/> |
970 | <include name="DefaultTestRunnerFactory.cs"/> |
971 | + <include name="IAssemblyWatcher.cs"/> |
972 | <include name="InProcessTestRunnerFactory.cs"/> |
973 | <include name="MemorySettingsStorage.cs"/> |
974 | <include name="NUnitProject.cs"/> |
975 | |
976 | === modified file 'src/ClientUtilities/util/nunit.util.dll.csproj' |
977 | --- src/ClientUtilities/util/nunit.util.dll.csproj 2010-08-06 18:37:35 +0000 |
978 | +++ src/ClientUtilities/util/nunit.util.dll.csproj 2010-09-09 18:41:13 +0000 |
979 | @@ -1,181 +1,182 @@ |
980 | -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> |
981 | - <PropertyGroup> |
982 | - <ProjectType>Local</ProjectType> |
983 | - <ProductVersion>9.0.30729</ProductVersion> |
984 | - <SchemaVersion>2.0</SchemaVersion> |
985 | - <ProjectGuid>{61CE9CE5-943E-44D4-A381-814DC1406767}</ProjectGuid> |
986 | - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
987 | - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
988 | - <ApplicationIcon> |
989 | - </ApplicationIcon> |
990 | - <AssemblyKeyContainerName> |
991 | - </AssemblyKeyContainerName> |
992 | - <AssemblyName>nunit.util</AssemblyName> |
993 | - <AssemblyOriginatorKeyFile> |
994 | - </AssemblyOriginatorKeyFile> |
995 | - <DefaultClientScript>JScript</DefaultClientScript> |
996 | - <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> |
997 | - <DefaultTargetSchema>IE50</DefaultTargetSchema> |
998 | - <DelaySign>false</DelaySign> |
999 | - <OutputType>Library</OutputType> |
1000 | - <RootNamespace>NUnit.Util</RootNamespace> |
1001 | - <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> |
1002 | - <StartupObject> |
1003 | - </StartupObject> |
1004 | - <FileUpgradeFlags> |
1005 | - </FileUpgradeFlags> |
1006 | - <UpgradeBackupLocation> |
1007 | - </UpgradeBackupLocation> |
1008 | - <OldToolsVersion>2.0</OldToolsVersion> |
1009 | - </PropertyGroup> |
1010 | - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
1011 | - <OutputPath>..\..\bin\Debug\lib\</OutputPath> |
1012 | - <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
1013 | - <BaseAddress>285212672</BaseAddress> |
1014 | - <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
1015 | - <ConfigurationOverrideFile> |
1016 | - </ConfigurationOverrideFile> |
1017 | - <DefineConstants>TRACE;DEBUG;NET_2_0</DefineConstants> |
1018 | - <DocumentationFile> |
1019 | - </DocumentationFile> |
1020 | - <DebugSymbols>true</DebugSymbols> |
1021 | - <FileAlignment>4096</FileAlignment> |
1022 | - <NoStdLib>false</NoStdLib> |
1023 | - <NoWarn>1699</NoWarn> |
1024 | - <Optimize>false</Optimize> |
1025 | - <RegisterForComInterop>false</RegisterForComInterop> |
1026 | - <RemoveIntegerChecks>false</RemoveIntegerChecks> |
1027 | - <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
1028 | - <WarningLevel>4</WarningLevel> |
1029 | - <DebugType>full</DebugType> |
1030 | - <ErrorReport>prompt</ErrorReport> |
1031 | - </PropertyGroup> |
1032 | - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
1033 | - <OutputPath>..\..\bin\Release\lib\</OutputPath> |
1034 | - <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
1035 | - <BaseAddress>285212672</BaseAddress> |
1036 | - <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
1037 | - <ConfigurationOverrideFile> |
1038 | - </ConfigurationOverrideFile> |
1039 | - <DefineConstants>TRACE;NET_2_0</DefineConstants> |
1040 | - <DocumentationFile> |
1041 | - </DocumentationFile> |
1042 | - <DebugSymbols>false</DebugSymbols> |
1043 | - <FileAlignment>4096</FileAlignment> |
1044 | - <NoStdLib>false</NoStdLib> |
1045 | - <NoWarn>1699</NoWarn> |
1046 | - <Optimize>true</Optimize> |
1047 | - <RegisterForComInterop>false</RegisterForComInterop> |
1048 | - <RemoveIntegerChecks>false</RemoveIntegerChecks> |
1049 | - <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
1050 | - <WarningLevel>4</WarningLevel> |
1051 | - <DebugType>none</DebugType> |
1052 | - <ErrorReport>prompt</ErrorReport> |
1053 | - </PropertyGroup> |
1054 | - <ItemGroup> |
1055 | - <Reference Include="System"> |
1056 | - <Name>System</Name> |
1057 | - </Reference> |
1058 | - <Reference Include="System.configuration" /> |
1059 | - <Reference Include="System.Data"> |
1060 | - <Name>System.Data</Name> |
1061 | - </Reference> |
1062 | - <Reference Include="System.Drawing"> |
1063 | - <Name>System.Drawing</Name> |
1064 | - </Reference> |
1065 | - <Reference Include="System.Runtime.Remoting"> |
1066 | - <Name>System.Runtime.Remoting</Name> |
1067 | - </Reference> |
1068 | - <Reference Include="System.Xml"> |
1069 | - <Name>System.XML</Name> |
1070 | - </Reference> |
1071 | - <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj"> |
1072 | - <Name>nunit.core.dll</Name> |
1073 | - <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project> |
1074 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
1075 | - <Private>False</Private> |
1076 | - </ProjectReference> |
1077 | - <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj"> |
1078 | - <Name>nunit.core.interfaces.dll</Name> |
1079 | - <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project> |
1080 | - <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
1081 | - <Private>False</Private> |
1082 | - </ProjectReference> |
1083 | - </ItemGroup> |
1084 | - <ItemGroup> |
1085 | - <Compile Include="..\..\CommonAssemblyInfo.cs"> |
1086 | - <Link>CommonAssemblyInfo.cs</Link> |
1087 | - </Compile> |
1088 | - <Compile Include="AggregatingTestRunner.cs" /> |
1089 | - <Compile Include="AssemblyInfo.cs" /> |
1090 | - <Compile Include="AssemblyList.cs" /> |
1091 | - <Compile Include="AssemblyWatcher.cs" /> |
1092 | - <Compile Include="CategoryExpression.cs" /> |
1093 | - <Compile Include="CategoryManager.cs" /> |
1094 | - <Compile Include="CommandLineOptions.cs" /> |
1095 | - <Compile Include="ConsoleWriter.cs" /> |
1096 | - <Compile Include="DefaultTestRunnerFactory.cs" /> |
1097 | - <Compile Include="Extensibility\IProjectConverter.cs" /> |
1098 | - <Compile Include="Extensibility\ProjectConverterCollection.cs" /> |
1099 | - <Compile Include="InProcessTestRunnerFactory.cs" /> |
1100 | - <Compile Include="Interfaces\IRuntimeFrameworkSelector.cs" /> |
1101 | - <Compile Include="Interfaces\ISettings.cs" /> |
1102 | - <Compile Include="Interfaces\ITestEvents.cs" /> |
1103 | - <Compile Include="Interfaces\ITestLoader.cs" /> |
1104 | - <Compile Include="Interfaces\ITestRunnerFactory.cs" /> |
1105 | - <Compile Include="MemorySettingsStorage.cs" /> |
1106 | - <Compile Include="NUnitProject.cs" /> |
1107 | - <Compile Include="NUnitRegistry.cs" /> |
1108 | - <Compile Include="PathUtils.cs" /> |
1109 | - <Compile Include="ProcessRunner.cs" /> |
1110 | - <Compile Include="ProjectConfig.cs" /> |
1111 | - <Compile Include="ProjectConfigCollection.cs" /> |
1112 | - <Compile Include="ProjectConverters\VisualStudioConverter.cs" /> |
1113 | - <Compile Include="ProjectFormatException.cs" /> |
1114 | - <Compile Include="RecentFileEntry.cs" /> |
1115 | - <Compile Include="RecentFiles.cs" /> |
1116 | - <Compile Include="RecentFilesCollection.cs" /> |
1117 | - <Compile Include="RegistrySettingsStorage.cs" /> |
1118 | - <Compile Include="RemoteTestAgent.cs" /> |
1119 | - <Compile Include="ResultSummarizer.cs" /> |
1120 | - <Compile Include="RuntimeFrameworkSelector.cs" /> |
1121 | - <Compile Include="ServerBase.cs" /> |
1122 | - <Compile Include="ServerUtilities.cs" /> |
1123 | - <Compile Include="Services.cs" /> |
1124 | - <Compile Include="Services\AddinManager.cs" /> |
1125 | - <Compile Include="Services\AddinRegistry.cs" /> |
1126 | - <Compile Include="Services\DomainManager.cs" /> |
1127 | - <Compile Include="Services\ProjectService.cs" /> |
1128 | - <Compile Include="Services\RecentFilesService.cs" /> |
1129 | - <Compile Include="Services\ServiceManager.cs" /> |
1130 | - <Compile Include="Services\SettingsService.cs" /> |
1131 | - <Compile Include="Services\TestAgency.cs" /> |
1132 | - <Compile Include="SettingsGroup.cs" /> |
1133 | - <Compile Include="SettingsStorage.cs" /> |
1134 | - <Compile Include="StackTraceFilter.cs" /> |
1135 | - <Compile Include="TestDomain.cs" /> |
1136 | - <Compile Include="TestEventArgs.cs" /> |
1137 | - <Compile Include="TestEventDispatcher.cs" /> |
1138 | - <Compile Include="TestExceptionHandler.cs" /> |
1139 | - <Compile Include="TestLoader.cs" /> |
1140 | - <Compile Include="TestObserver.cs" /> |
1141 | - <Compile Include="TestResultItem.cs" /> |
1142 | - <Compile Include="TestServer.cs" /> |
1143 | - <Compile Include="VSProject.cs" /> |
1144 | - <Compile Include="VSProjectConfig.cs" /> |
1145 | - <Compile Include="VSProjectConfigCollection.cs" /> |
1146 | - <Compile Include="XmlResultTransform.cs" /> |
1147 | - <Compile Include="XmlResultWriter.cs" /> |
1148 | - <Compile Include="XmlSettingsStorage.cs" /> |
1149 | - </ItemGroup> |
1150 | - <ItemGroup> |
1151 | - <EmbeddedResource Include="Transform.resx" /> |
1152 | - </ItemGroup> |
1153 | - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> |
1154 | - <PropertyGroup> |
1155 | - <PreBuildEvent> |
1156 | - </PreBuildEvent> |
1157 | - <PostBuildEvent> |
1158 | - </PostBuildEvent> |
1159 | - </PropertyGroup> |
1160 | +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> |
1161 | + <PropertyGroup> |
1162 | + <ProjectType>Local</ProjectType> |
1163 | + <ProductVersion>9.0.30729</ProductVersion> |
1164 | + <SchemaVersion>2.0</SchemaVersion> |
1165 | + <ProjectGuid>{61CE9CE5-943E-44D4-A381-814DC1406767}</ProjectGuid> |
1166 | + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
1167 | + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
1168 | + <ApplicationIcon> |
1169 | + </ApplicationIcon> |
1170 | + <AssemblyKeyContainerName> |
1171 | + </AssemblyKeyContainerName> |
1172 | + <AssemblyName>nunit.util</AssemblyName> |
1173 | + <AssemblyOriginatorKeyFile> |
1174 | + </AssemblyOriginatorKeyFile> |
1175 | + <DefaultClientScript>JScript</DefaultClientScript> |
1176 | + <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> |
1177 | + <DefaultTargetSchema>IE50</DefaultTargetSchema> |
1178 | + <DelaySign>false</DelaySign> |
1179 | + <OutputType>Library</OutputType> |
1180 | + <RootNamespace>NUnit.Util</RootNamespace> |
1181 | + <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> |
1182 | + <StartupObject> |
1183 | + </StartupObject> |
1184 | + <FileUpgradeFlags> |
1185 | + </FileUpgradeFlags> |
1186 | + <UpgradeBackupLocation> |
1187 | + </UpgradeBackupLocation> |
1188 | + <OldToolsVersion>2.0</OldToolsVersion> |
1189 | + </PropertyGroup> |
1190 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
1191 | + <OutputPath>..\..\bin\Debug\lib\</OutputPath> |
1192 | + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
1193 | + <BaseAddress>285212672</BaseAddress> |
1194 | + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
1195 | + <ConfigurationOverrideFile> |
1196 | + </ConfigurationOverrideFile> |
1197 | + <DefineConstants>TRACE;DEBUG;NET_2_0</DefineConstants> |
1198 | + <DocumentationFile> |
1199 | + </DocumentationFile> |
1200 | + <DebugSymbols>true</DebugSymbols> |
1201 | + <FileAlignment>4096</FileAlignment> |
1202 | + <NoStdLib>false</NoStdLib> |
1203 | + <NoWarn>1699</NoWarn> |
1204 | + <Optimize>false</Optimize> |
1205 | + <RegisterForComInterop>false</RegisterForComInterop> |
1206 | + <RemoveIntegerChecks>false</RemoveIntegerChecks> |
1207 | + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
1208 | + <WarningLevel>4</WarningLevel> |
1209 | + <DebugType>full</DebugType> |
1210 | + <ErrorReport>prompt</ErrorReport> |
1211 | + </PropertyGroup> |
1212 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
1213 | + <OutputPath>..\..\bin\Release\lib\</OutputPath> |
1214 | + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> |
1215 | + <BaseAddress>285212672</BaseAddress> |
1216 | + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> |
1217 | + <ConfigurationOverrideFile> |
1218 | + </ConfigurationOverrideFile> |
1219 | + <DefineConstants>TRACE;NET_2_0</DefineConstants> |
1220 | + <DocumentationFile> |
1221 | + </DocumentationFile> |
1222 | + <DebugSymbols>false</DebugSymbols> |
1223 | + <FileAlignment>4096</FileAlignment> |
1224 | + <NoStdLib>false</NoStdLib> |
1225 | + <NoWarn>1699</NoWarn> |
1226 | + <Optimize>true</Optimize> |
1227 | + <RegisterForComInterop>false</RegisterForComInterop> |
1228 | + <RemoveIntegerChecks>false</RemoveIntegerChecks> |
1229 | + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
1230 | + <WarningLevel>4</WarningLevel> |
1231 | + <DebugType>none</DebugType> |
1232 | + <ErrorReport>prompt</ErrorReport> |
1233 | + </PropertyGroup> |
1234 | + <ItemGroup> |
1235 | + <Reference Include="System"> |
1236 | + <Name>System</Name> |
1237 | + </Reference> |
1238 | + <Reference Include="System.configuration" /> |
1239 | + <Reference Include="System.Data"> |
1240 | + <Name>System.Data</Name> |
1241 | + </Reference> |
1242 | + <Reference Include="System.Drawing"> |
1243 | + <Name>System.Drawing</Name> |
1244 | + </Reference> |
1245 | + <Reference Include="System.Runtime.Remoting"> |
1246 | + <Name>System.Runtime.Remoting</Name> |
1247 | + </Reference> |
1248 | + <Reference Include="System.Xml"> |
1249 | + <Name>System.XML</Name> |
1250 | + </Reference> |
1251 | + <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj"> |
1252 | + <Name>nunit.core.dll</Name> |
1253 | + <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project> |
1254 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
1255 | + <Private>False</Private> |
1256 | + </ProjectReference> |
1257 | + <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj"> |
1258 | + <Name>nunit.core.interfaces.dll</Name> |
1259 | + <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project> |
1260 | + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> |
1261 | + <Private>False</Private> |
1262 | + </ProjectReference> |
1263 | + </ItemGroup> |
1264 | + <ItemGroup> |
1265 | + <Compile Include="..\..\CommonAssemblyInfo.cs"> |
1266 | + <Link>CommonAssemblyInfo.cs</Link> |
1267 | + </Compile> |
1268 | + <Compile Include="AggregatingTestRunner.cs" /> |
1269 | + <Compile Include="AssemblyInfo.cs" /> |
1270 | + <Compile Include="AssemblyList.cs" /> |
1271 | + <Compile Include="AssemblyWatcher.cs" /> |
1272 | + <Compile Include="CategoryExpression.cs" /> |
1273 | + <Compile Include="CategoryManager.cs" /> |
1274 | + <Compile Include="CommandLineOptions.cs" /> |
1275 | + <Compile Include="ConsoleWriter.cs" /> |
1276 | + <Compile Include="DefaultTestRunnerFactory.cs" /> |
1277 | + <Compile Include="Extensibility\IProjectConverter.cs" /> |
1278 | + <Compile Include="Extensibility\ProjectConverterCollection.cs" /> |
1279 | + <Compile Include="IAssemblyWatcher.cs" /> |
1280 | + <Compile Include="InProcessTestRunnerFactory.cs" /> |
1281 | + <Compile Include="Interfaces\IRuntimeFrameworkSelector.cs" /> |
1282 | + <Compile Include="Interfaces\ISettings.cs" /> |
1283 | + <Compile Include="Interfaces\ITestEvents.cs" /> |
1284 | + <Compile Include="Interfaces\ITestLoader.cs" /> |
1285 | + <Compile Include="Interfaces\ITestRunnerFactory.cs" /> |
1286 | + <Compile Include="MemorySettingsStorage.cs" /> |
1287 | + <Compile Include="NUnitProject.cs" /> |
1288 | + <Compile Include="NUnitRegistry.cs" /> |
1289 | + <Compile Include="PathUtils.cs" /> |
1290 | + <Compile Include="ProcessRunner.cs" /> |
1291 | + <Compile Include="ProjectConfig.cs" /> |
1292 | + <Compile Include="ProjectConfigCollection.cs" /> |
1293 | + <Compile Include="ProjectConverters\VisualStudioConverter.cs" /> |
1294 | + <Compile Include="ProjectFormatException.cs" /> |
1295 | + <Compile Include="RecentFileEntry.cs" /> |
1296 | + <Compile Include="RecentFiles.cs" /> |
1297 | + <Compile Include="RecentFilesCollection.cs" /> |
1298 | + <Compile Include="RegistrySettingsStorage.cs" /> |
1299 | + <Compile Include="RemoteTestAgent.cs" /> |
1300 | + <Compile Include="ResultSummarizer.cs" /> |
1301 | + <Compile Include="RuntimeFrameworkSelector.cs" /> |
1302 | + <Compile Include="ServerBase.cs" /> |
1303 | + <Compile Include="ServerUtilities.cs" /> |
1304 | + <Compile Include="Services.cs" /> |
1305 | + <Compile Include="Services\AddinManager.cs" /> |
1306 | + <Compile Include="Services\AddinRegistry.cs" /> |
1307 | + <Compile Include="Services\DomainManager.cs" /> |
1308 | + <Compile Include="Services\ProjectService.cs" /> |
1309 | + <Compile Include="Services\RecentFilesService.cs" /> |
1310 | + <Compile Include="Services\ServiceManager.cs" /> |
1311 | + <Compile Include="Services\SettingsService.cs" /> |
1312 | + <Compile Include="Services\TestAgency.cs" /> |
1313 | + <Compile Include="SettingsGroup.cs" /> |
1314 | + <Compile Include="SettingsStorage.cs" /> |
1315 | + <Compile Include="StackTraceFilter.cs" /> |
1316 | + <Compile Include="TestDomain.cs" /> |
1317 | + <Compile Include="TestEventArgs.cs" /> |
1318 | + <Compile Include="TestEventDispatcher.cs" /> |
1319 | + <Compile Include="TestExceptionHandler.cs" /> |
1320 | + <Compile Include="TestLoader.cs" /> |
1321 | + <Compile Include="TestObserver.cs" /> |
1322 | + <Compile Include="TestResultItem.cs" /> |
1323 | + <Compile Include="TestServer.cs" /> |
1324 | + <Compile Include="VSProject.cs" /> |
1325 | + <Compile Include="VSProjectConfig.cs" /> |
1326 | + <Compile Include="VSProjectConfigCollection.cs" /> |
1327 | + <Compile Include="XmlResultTransform.cs" /> |
1328 | + <Compile Include="XmlResultWriter.cs" /> |
1329 | + <Compile Include="XmlSettingsStorage.cs" /> |
1330 | + </ItemGroup> |
1331 | + <ItemGroup> |
1332 | + <EmbeddedResource Include="Transform.resx" /> |
1333 | + </ItemGroup> |
1334 | + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> |
1335 | + <PropertyGroup> |
1336 | + <PreBuildEvent> |
1337 | + </PreBuildEvent> |
1338 | + <PostBuildEvent> |
1339 | + </PostBuildEvent> |
1340 | + </PropertyGroup> |
1341 | </Project> |
1342 | \ No newline at end of file |
This looks good. I made a few changes so it would compile under .NET 1.1 and committed it to trunk. If you like, you can pull the changes and refactor further since I only did very mechanical changes.
Changes:
* Use an IList under earlier versions of .NET - you could change this to an array and avoid the #if but that depends whether the interface is convenient to use with an array.
* Eliminate the #pragmas, which cause an error under 1.1. Note that an #if won't work here. You could avoid the error by adding a public method of the class that fires events.
In the short term, it will help if you can test with .NET 1.1 your self. A better solution would be to accelerate getting rid of 1.1, which we can discuss separately.