~nunit-core/nunitv2/2.5

2314 by charliepoole
Move non-source files like scripts to the root directory
1
<?xml version="1.0"?>
2
<project name="NUnit" default="help" basedir=".">
3
4
<!-- ***************************************************************** -->
2328 by charliepoole
Upgrade build script to NAnt 0.86 using patternsets
5
<!-- This script has been tested requires NAnt 0.86 and has been       -->
6
<!-- tested with the 0.86 beta 1 release.                              -->
7
<!--                                                                   -->
8
<!-- At least one of the supported runtimes and sdk must be installed. -->
9
<!-- In order to build the msi, WiX 2.0 and the WiX tasks for NAnt     -->
2314 by charliepoole
Move non-source files like scripts to the root directory
10
<!-- are required. To run the test coverage target, NCover is          -->
11
<!-- required.                                                         -->
12
<!--                                                                   -->
2328 by charliepoole
Upgrade build script to NAnt 0.86 using patternsets
13
<!-- Currently, the .NET 1.0 builds of the GUI runner cannot be run    -->
14
<!-- successfully. However, the .NET 1.1 builds may be run under 1.0.  -->
2314 by charliepoole
Move non-source files like scripts to the root directory
15
<!-- ***************************************************************** -->
16
17
<!-- ***************************************************************** -->
18
<!-- ***                 Default Help Target                       *** -->
19
<!-- ***************************************************************** -->
20
21
<target name="help" description="Displays additional help information">
22
  <echo>
23
    This build file will build NUnitLite for any of the supported
24
    runtime frameworks which are actually installed. To add or
25
    support for a framework, edit this script
26
27
    Running on the current system, the following runtime frameworks
28
    are available for building and testing NUnit:
29
  </echo>
30
31
  <foreach item="String" delim="," 
32
      property="framework" in="${installed.frameworks}">
33
    <echo message="        ${string::pad-right(framework,15,' ')}${framework::get-description(framework)}"/>
34
  </foreach>
35
36
  <echo>
37
    The default build target is the ${default.runtime} debug config.
38
    Generic runtime targets use the following defaults:
39
        net           ${default.net.runtime}
40
        mono          ${default.mono.runtime}
41
42
    Note that targets that set the build configuration or runtime
43
    to be used must come before action targets. For example:
44
45
        nant net-1.1 release build
46
        nant build-all
47
        nant debug clean build
48
49
    Use   nant -projecthelp to see a full list of targets.
50
  </echo>
51
</target>
52
53
<!-- ***************************************************************** -->
54
<!-- ********* Common properties that control the build ************** -->
55
<!-- ***************************************************************** -->
56
 
57
  <!-- Project name - used as a prefix for packages -->
58
  <property name="project.name" value="NUnit"/>
59
60
  <!-- NUnit version for packaging -->
61
  <property name="package.version" value="2.5"/>
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
62
  
63
  <!-- Base name for packages - add suffix for Alpha, Beta, RC -->
2314 by charliepoole
Move non-source files like scripts to the root directory
64
  <property name="package.name" 
2468 by charliepoole
Update install for 2.5 Alpha 2. Add pnunit. Only install a build if the
65
      value="${project.name}-${package.version}-Alpha-2"/>
2314 by charliepoole
Move non-source files like scripts to the root directory
66
67
  <!-- Nominal version used for install directory and program
68
       files menu. Normally the same as the package version, 
69
       but may differ when we are in alpha or beta. -->
70
  <property name="nominal.version" value="2.5" />
71
72
  <!-- Frameworks supported by this build script. The first
73
         installed framework found is the default for builds. 
74
         The first .NET and Mono frameworks found are the
75
         respective net and mono defaults. -->
76
  <property name="supported.frameworks" 
77
    value="net-1.1,net-2.0,net-1.0,mono-1.0,mono-2.0"/>
78
79
  <!-- Framework versions for which packages are normally created -->
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
80
  <property name="standard.packages" value="net-1.1+net-2.0" />
81
82
  <!-- Our standard package for general distribution -->
83
  <property name="standard.package.config" value="net-1.1+net-2.0" />
2314 by charliepoole
Move non-source files like scripts to the root directory
84
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
85
  <!-- Options for runing the NUnit tests -->
2314 by charliepoole
Move non-source files like scripts to the root directory
86
  <property name="nunit.options" value=""/>
87
88
  <!-- Additional internal properties are set in the include file -->
89
  <include buildfile="nunit.build.include"/>
90
91
<!-- ***************************************************************** -->
92
<!-- ***          Targets that set the build configuration         *** -->
93
<!-- ***     These must come before actions like build or test     *** -->
94
<!-- ***************************************************************** -->
95
96
  <target name="debug" depends="set-debug-build-config"
97
    description="Set config to debug for commands that follow"/>
98
99
  <target name="release" depends="set-release-build-config"
100
    description="Set config to release for commands that follow"/>
101
102
<!-- ***************************************************************** -->
103
<!-- ***         Targets that set the runtime configuration        *** -->
104
<!-- ***     These must come before actions like build or test     *** -->
105
<!-- ***************************************************************** -->
106
107
  <target name="net" depends="set-default-dot-net-runtime-config"
108
    description="Set runtime to .NET 1.1 for commands that follow"/>
109
110
  <target name="net-1.0" depends="set-net-1.0-runtime-config"
111
    description="Set runtime to .NET 1.0 for commands that follow"/>
112
113
  <target name="net-1.1" depends="set-net-1.1-runtime-config"
114
    description="Set runtime to .NET 1.1 for commands that follow"/>
115
      
116
  <target name="net-2.0" depends="set-net-2.0-runtime-config"
117
    description="Set runtime to .NET 2.0 for commands that follow"/>
118
      
119
  <target name="mono" depends="set-default-mono-runtime-config"
120
    description="Set runtime to Mono 1.0 for commands that follow"/>
121
122
  <target name="mono-1.0" depends="set-mono-1.0-runtime-config"
123
    description="Set runtime to Mono 1.0 for commands that follow"/>
124
  
125
  <target name="mono-2.0" depends="set-mono-2.0-runtime-config"
126
    description="Set runtime to Mono 2.0 for commands that follow"/>
127
128
<!-- ***************************************************************** -->
129
<!-- ***             Targets that clean directories                *** -->
130
<!-- ***************************************************************** -->
131
132
  <target name="clean" depends="set-build-dir"
133
      description="Removes the current build directory">
134
    <delete dir="${current.build.dir}" 
135
      if="${directory::exists( current.build.dir )}"/>
136
  </target>
137
138
  <target name="clean-all" description="Removes all build directories">
139
    <delete dir="${project.build.dir}" 
140
      if="${directory::exists( project.build.dir )}"/>
141
  </target>
142
143
  <target name="clean-package-dir"
144
    description="Removes the current package working directory">
145
        <delete dir="${package.working.dir}" 
146
            if="${directory::exists( package.working.dir )}"/>
147
  </target>
148
149
<!-- ***************************************************************** -->
150
<!-- ***              Targets that perform builds                  *** -->
151
<!-- ***************************************************************** -->
152
153
154
  <target name="rebuild" depends="clean,build"
155
    description="Rebuild NUnit for default runtime version and config"/>
156
157
  <target name="build" depends="make-build-dir"
158
    description="Build NUnit for default runtime version and config">
159
160
    <echo message="*"/>
161
    <echo message="* Starting ${runtime.config} ${build.config} build"/>
162
    <echo message="*"/>
163
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
164
    <!-- Copy key file to base directory, so second level files can access it -->
165
    <copy file="${project.base.dir}/nunit.snk" todir="${project.build.dir}"/>-->
2314 by charliepoole
Move non-source files like scripts to the root directory
166
2395 by charliepoole
Add pNUnit to the NUnit build
167
    <!-- Copy lib files to build dir -->
168
    <copy todir="${current.build.dir}">
169
      <fileset basedir="${project.lib.dir}">
170
        <include name="*.dll"/>
171
      </fileset>
172
    </copy>
173
2314 by charliepoole
Move non-source files like scripts to the root directory
174
    <!-- Build NUnit components and tests -->
175
    <nant target="build">
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
176
      <buildfiles refid="project.buildfiles"/>
2314 by charliepoole
Move non-source files like scripts to the root directory
177
    </nant>
178
179
    <!-- Copy files for running tests -->
2395 by charliepoole
Add pNUnit to the NUnit build
180
    <copy todir="${current.build.dir}" flatten="true">
2314 by charliepoole
Move non-source files like scripts to the root directory
181
      <fileset basedir="${project.base.dir}">
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
182
        <include name="NUnitTests.nunit"/>
2314 by charliepoole
Move non-source files like scripts to the root directory
183
        <include name="NUnitTests.config" />
184
        <include name="NUnitFitTests.html" />
185
        <include name="clr.bat" />
2395 by charliepoole
Add pNUnit to the NUnit build
186
        <include name="src/PNUnit/*.conf" />
187
        <include name="src/PNUnit/runpnunit.bat" />
2314 by charliepoole
Move non-source files like scripts to the root directory
188
      </fileset>
189
    </copy>
190
191
  </target>
192
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
193
  <target name="build-addins" depends="build">
194
195
    <nant buildfile="${project.addins.dir}/RowTest/RowTestExtension.build"
196
      target="${build.config} ${runtime.config} bundled-install">
197
198
      <properties>
199
        <property name="nunit.version" value="${package.version}"/>
200
        <property name="nunit.dir" value="${current.build.dir}"/>
201
        <property name="nunit.bin.dir" value="${current.build.dir}" readonly="true"/>
202
      </properties>
203
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
204
    </nant>
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
205
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
206
  </target>
207
2314 by charliepoole
Move non-source files like scripts to the root directory
208
  <target name="rebuild-all" depends="clean-all,build-all"
209
      description="Rebuild current config for all available runtimes"/>
210
211
  <target name="build-all"
212
      description="Build current config for all available runtime">
213
214
    <foreach item="String" delim="," 
215
        property="framework" in="${installed.frameworks}">
216
217
      <call target="set-${framework}-runtime-config"/>
218
      <call target="build"/>
219
220
    </foreach>
221
222
  </target>
223
224
<!-- ***************************************************************** -->
225
<!-- ***                 Targets for running tests                 *** -->
226
<!-- ***************************************************************** -->
227
228
  <target name="test" depends="build,run-test"
229
    description="Build and run tests for selected config and runtime"/>
230
231
  <target name="run-test"
232
      description="Run tests for selected config and runtime (no rebuild)">
233
234
    <echo message="*"/>
235
    <echo message="* Testing ${runtime.config} ${build.config} build"/>
236
    <echo message="*    Running under ${nant.settings.currentframework}"/>
237
    <echo message="*"/>
238
239
    <!-- We use exec rather than the nunit2 task because we are testing
240
         a new build of NUnit which is likely not to be included in the Nant build -->
241
    <!-- Mono currently has a SIGSEGV fault if we run in a single AppDomain -->
242
243
    <property name="result.file" 
244
      value="TestResult-${nant.settings.currentframework}"/>
245
    <exec basedir="${current.build.dir}"
246
      workingdir="${current.build.dir}" 
247
	  program="nunit-console.exe" 
2328 by charliepoole
Upgrade build script to NAnt 0.86 using patternsets
248
      managed="strict"
2314 by charliepoole
Move non-source files like scripts to the root directory
249
	  commandline="NUnitTests.nunit ${nunit.options} /xml:${result.file}.xml" />
250
251
  </target>
252
253
  <target name="test-coverage" depends="build"
254
    description="Run tests for a build under NCover to get coverage results">
255
256
    <echo message="*"/>
257
    <echo message="* Starting ${runtime.config} ${build.config} test coverage run"/>
258
    <echo message="*"/>
259
260
    <property name="ncover.options" 
261
      value="//a nunit.framework;nunit.core;nunit.extensions;nunit.util;nunit.console;nunit.uikit;nunit-gui-runner"/>
262
263
    <!-- We use exec rather than the nunit2 task because we are testing
264
         a new build of NUnit which is likely not to be included in the Nant build -->
265
    <exec basedir="${ncover.dir}"
266
          workingdir="${current.build.dir}" 
267
	  program="NCover.Console.exe" 
2328 by charliepoole
Upgrade build script to NAnt 0.86 using patternsets
268
      managed="strict"
2314 by charliepoole
Move non-source files like scripts to the root directory
269
	  commandline="nunit-console.exe NUnitTests.nunit ${nunit.options} ${ncover.options}"
270
	if="${build.win32}" />
271
272
    <!-- Mono currently has a SIGSEGV fault if we run in a single AppDomain -->
273
         a new build of NUnit which is likely not to be included in the Nant build -->
274
    <exec basedir="${ncover.dir}"
275
          workingdir="${current.build.dir}" 
276
	  program="NCover.Console.exe" 
2328 by charliepoole
Upgrade build script to NAnt 0.86 using patternsets
277
          managed="strict"
2314 by charliepoole
Move non-source files like scripts to the root directory
278
	  commandline="nunit-console.exe NUnitTests.nunit ${nunit.options}"
279
	unless="${build.win32}" />
280
281
  </target>
282
283
  <target name="test-all"
284
      description="Build and test all runtimes for current config">
285
286
    <foreach item="String" delim="," 
287
        property="framework" in="${installed.frameworks}">
288
289
      <call target="set-${framework}-runtime-config"/>
290
      <call target="test" />
291
292
    </foreach>
293
294
  </target>
295
296
  <target name="test-each-runtime" depends="build"
297
      description="Run tests for the current build under each runtime">
298
299
    <foreach item="String" delim=","
300
        property="framework" in="${supported.test.platforms}">
301
302
      <if test="${framework::exists( framework )}">
303
        <property name="nant.settings.currentframework"
304
            value="${framework}" />
305
        <call target="run-test" failonerror="false" />
306
      </if>
307
308
    </foreach>
309
310
    <property name="nant.settings.currentframework" value="${runtime.config}" />
311
312
    <echo message="*" />
313
    <echo message="* Restored runtime to ${nant.settings.currentframework}" />
314
    <echo message="*" />
315
316
  </target>
317
318
  <target name="test-all-under-each"
319
      description="Build all runtimes and test the builds under each runtime.">
320
321
    <call target="set-release-build-config"/>
322
323
    <foreach item="String" delim="," 
324
        property="framework" in="${installed.frameworks}">
325
326
      <call target="set-${framework}-runtime-config"/>
327
      <call target="test-each-runtime" failonerror="false"/>
328
329
    </foreach>
330
331
  </target>
332
333
  <target name="nunit2-test" depends="build"
334
    description="Run tests for a build using the nunit2 task">
335
336
    <echo message="*"/>
337
    <echo message="* Starting ${runtime.config} ${build.config} test run"/>
338
    <echo message="*"/>
339
340
    <nunit2>
341
      <formatter type="Plain"/>
342
      <test assemblyname="${current.build.dir}/nunit.framework.tests.dll"/>
343
    </nunit2>
344
  </target>
345
346
  <target name="timing-test" depends="build"
347
    description="Run timing tests (long)">
348
349
    <echo message="*"/>
350
    <echo message="* Starting ${runtime.config} ${build.config} timing tests"/>
351
    <echo message="*"/>
352
    <echo message="* WARNING: Test may take some time to run"/>
353
    <echo message="*"/>
354
355
    <exec basedir="${current.build.dir}" 
356
      workingdir="${current.build.dir}" 
357
      program="nunit-console.exe" 
358
      commandline="timing-tests.dll"/>
359
360
  </target>
361
362
  <target name="gui-test" depends="build"
363
    description="Run tests for a build using gui runner">
364
365
    <echo message="*"/>
366
    <echo message="* Starting ${runtime.config} ${build.config} gui test run"/>
367
    <echo message="*"/>
368
369
    <exec basedir="${current.build.dir}" 
370
      workingdir="${current.build.dir}" 
371
      program="nunit.exe" 
2328 by charliepoole
Upgrade build script to NAnt 0.86 using patternsets
372
      managed="strict"
2314 by charliepoole
Move non-source files like scripts to the root directory
373
      commandline="NUnitTests.nunit -run"/>
374
375
  </target>
376
377
  <target name="fit-tests" depends="build"
378
    description="Run Fit Acceptance tests on the build">
379
380
    <echo message="*"/>
381
    <echo message="* Starting ${runtime.config} ${build.config} Fit Tests"/>
382
    <echo message="*"/>
383
384
    <exec basedir="${current.build.dir}" 
385
      workingdir="${current.build.dir}" 
386
      program="runfile.exe" 
2328 by charliepoole
Upgrade build script to NAnt 0.86 using patternsets
387
      managed="strict"
2314 by charliepoole
Move non-source files like scripts to the root directory
388
      commandline="NUnitFitTests.html TestResults.html ." />
389
390
  </target>
391
392
393
<!-- ***************************************************************** -->
394
<!-- *       Build the NUnit samples - not part of normal build    *** -->
395
<!-- ***************************************************************** -->
396
397
  <property name="samples.bin.dir"
398
    value="${path::combine(project.samples.dir, 'bin')}"/>
399
400
  <target name="clean-samples" description="Removes the samples build directory">
401
    <delete dir="${samples.bin.dir}" />
402
  </target>
403
404
  <target name="build-samples" depends="build"
405
     description="Build the NUnit samples">
406
    
407
    <mkdir dir="${samples.bin.dir}" unless="${directory::exists(samples.bin.dir)}" />
408
409
    <copy todir="${samples.bin.dir}"
410
      file="${path::combine(current.build.dir,'nunit.framework.dll')}" />
411
    <copy todir="${samples.bin.dir}"
412
      file="${path::combine(current.build.dir,'nunit.core.interfaces.dll')}" />
413
    <copy todir="${samples.bin.dir}"
414
      file="${path::combine(current.build.dir,'nunit.core.dll')}" />
415
416
    <nant target="build">
417
      <buildfiles refid="sample.buildfiles" />
418
    </nant>
419
420
  </target>
421
422
  <target name="rebuild-samples" depends="clean-samples,build-samples" 
423
      description="Rebuild the NUnit samples"/>
424
425
<!-- ***************************************************************** -->
426
<!-- ***         Targets for packaging the NUnit distribution      *** -->
427
<!-- ***************************************************************** -->
428
429
  <!-- Produce all the standard packages for a release -->
430
  <target name="package-release"
431
      description="Create standard packages for distribution">
432
      
433
    <call target="package-src"/>
434
435
    <call target="package-docs"/>
436
437
    <call target="set-release-build-config"/>
438
439
    <foreach item="String" delim="," 
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
440
        property="package.config" in="${standard.packages}">
2314 by charliepoole
Move non-source files like scripts to the root directory
441
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
442
      <call target="package"/>
2314 by charliepoole
Move non-source files like scripts to the root directory
443
444
    </foreach>
445
446
  </target>
447
448
<!-- ***************************************************************** -->
449
<!-- ***                    Package binaries                       *** -->
450
<!-- ***************************************************************** -->
451
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
452
<!-- ***************************************************************** -->
453
<!-- ***              Package as both a zip and an msi             *** -->
454
<!-- ***************************************************************** -->
455
2314 by charliepoole
Move non-source files like scripts to the root directory
456
  <target name="package" depends="build-install-image"
457
      description="Create both binary and msi packages for current build" >
458
459
    <call target="create-zip" />
460
461
    <if test="${platform::is-win32() and build.win32}" >
462
      <call target="create-msi" />
463
    </if>
464
465
  </target>
466
  
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
467
<!-- ***************************************************************** -->
468
<!-- ***                    Package as a zip                       *** -->
469
<!-- ***************************************************************** -->
470
2393 by charliepoole
Update for 2.5 alpha 1
471
  <target name="package-zip"
472
    description="Create zip binary distribution package">
473
474
    <property name="package.config" value="${runtime.config}"
475
      unless="${property::exists('package.config')}"/>
476
477
    <call target="build-install-image"/>
478
    <call target="create-zip"/>
479
480
  </target>
2314 by charliepoole
Move non-source files like scripts to the root directory
481
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
482
<!-- ***************************************************************** -->
483
<!-- ***                   Package as an msi                       *** -->
484
<!-- ***************************************************************** -->
485
486
  <target name="package-msi" 
487
    description="Build standard msi file and deploy it to the package dir" >
488
    
489
    <property name="package.config" value="net-1.1+net-2.0"
490
      unless="${property::exists('package.config')}"/>
491
492
    <call target="build-install-image"/>
493
    <call target="create-msi"/>
494
495
  </target>
496
497
<!-- ***************************************************************** -->
498
<!-- ***                     Install the msi                       *** -->
499
<!-- ***************************************************************** -->
500
501
  <target name="install-msi" description="Install msi file on system" >
502
      <exec program="msiexec" workingdir="${project.package.dir}"
503
        commandline="/i ${package.name}-${runtime.config}${build.suffix}.msi /passive" />
504
  </target>
505
506
<!-- ***************************************************************** -->
507
<!-- ***                   Uninstall the msi                       *** -->
508
<!-- ***************************************************************** -->
509
510
  <target name="remove-msi" description="Uninstall an msi" >
511
      <exec program="msiexec" workingdir="${project.package.dir}"
512
        commandline="/x ${package.name}-${runtime.config}${build.suffix}.msi /passive" /> 
513
  </target>
514
515
<!-- ***************************************************************** -->
516
<!-- ***                    Create the zip                         *** -->
517
<!-- ***************************************************************** -->
2314 by charliepoole
Move non-source files like scripts to the root directory
518
519
  <target name="create-zip" description="Create zip from existing image">
520
    <!-- Create the zip file -->
521
    <property name="zip.file.name" 
2393 by charliepoole
Update for 2.5 alpha 1
522
      value="${package.name}-${package.config}${build.suffix}.zip"
523
      unless="${package.config==standard.package.config}"/>
524
    <property name="zip.file.name" 
525
      value="${package.name}${build.suffix}.zip"
526
      if="${package.config==standard.package.config}"/>
527
2314 by charliepoole
Move non-source files like scripts to the root directory
528
    <zip ziplevel="9"
529
        zipfile="${project.package.dir}/${zip.file.name}">
530
      <fileset basedir="${package.working.dir}">
531
        <include name="**"/>
532
      </fileset>
533
    </zip>
534
  </target>
535
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
536
<!-- ***************************************************************** -->
537
<!-- ***                    Create the msi                         *** -->
538
<!-- ***************************************************************** -->
539
2314 by charliepoole
Move non-source files like scripts to the root directory
540
  <target name="create-msi" description="Create msi from existing install image">
541
  
542
    <fail message="MSI can only be built on the Win32 platform" unless="${platform::is-win32()}"/>
543
    <fail message="MSI can only be built for a Win32 runtime" unless="${build.win32}"/>
544
545
    <property name="wix.dir"
546
      value="${project.tools.dir}/wix"/>
547
    <property name="work.dir"
548
      value="${package.working.dir}"/>
549
    <property name="install.dir"
2467 by charliepoole
Move install directory out of src to top level
550
      value="${project.base.dir}/install"/>
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
551
2468 by charliepoole
Update install for 2.5 Alpha 2. Add pnunit. Only install a build if the
552
    <property name="package.config" value="${standard.package.config}"
553
      unless="${property::exists('package.config')}" />
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
554
    <property name="msi.file.name"
555
      value="${package.name}-${package.config}${build.suffix}.msi"
556
      unless="${package.config==standard.package.config}"/>
557
    <property name="msi.file.name"
558
      value="${package.name}${build.suffix}.msi"
559
      if="${package.config==standard.package.config}"/>
560
2314 by charliepoole
Move non-source files like scripts to the root directory
561
562
    <candle out="${work.dir}/" exedir="${wix.dir}">
563
      <defines>
564
        <define name="ProductVersion" value="${package.version}" />
565
        <define name="NominalVersion" value="${nominal.version}" />
566
      </defines>
567
      <sources basedir="${install.dir}">
568
        <include name="bin.wxs" />
569
        <include name="nunit-gui.wxs" />
570
        <include name="doc.wxs" />
571
        <include name="tests.wxs" />
572
        <include name="samples.wxs" />
2468 by charliepoole
Update install for 2.5 Alpha 2. Add pnunit. Only install a build if the
573
        <include name="pnunit.wxs" />
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
574
        <include name="addins.wxs" />
2314 by charliepoole
Move non-source files like scripts to the root directory
575
        <include name="NUnit.wxs" />
576
      </sources>
577
    </candle>
578
579
    <light exedir="${wix.dir}"
580
      out="${project.package.dir}/${msi.file.name}" 
581
      locfile="${wix.dir}/WixUI_en-us.wxl">
582
      <sources>
583
        <include name="${work.dir}/NUnit.wixobj" />
584
        <include name="${work.dir}/bin.wixobj" />
585
        <include name="${work.dir}/nunit-gui.wixobj" />
586
        <include name="${work.dir}/doc.wixobj" />
587
        <include name="${work.dir}/samples.wixobj" />
588
        <include name="${work.dir}/tests.wixobj" />
2468 by charliepoole
Update install for 2.5 Alpha 2. Add pnunit. Only install a build if the
589
        <include name="${work.dir}/pnunit.wixobj" />
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
590
        <include name="${work.dir}/addins.wixobj" />
2314 by charliepoole
Move non-source files like scripts to the root directory
591
        <include name="${wix.dir}/wixui.wixlib" />
592
      </sources>
593
    </light>
594
595
  </target>
596
597
<!-- ***************************************************************** -->
598
<!-- ***                  Package source files                     *** -->
599
<!-- ***************************************************************** -->
600
601
  <target name="package-src" depends="clean-package-dir"
602
    description="Create full source package for developer use">
603
604
    <call target="copy-docs"/>
605
    <call target="copy-samples"/>
606
    <call target="copy-src"/>
607
    <call target="copy-tools" />
608
609
    <copy file="license.txt" todir="${package.working.dir}" />
610
611
    <!-- Create the zip file -->
612
    <zip  ziplevel="9"
613
        zipfile="${project.package.dir}/${package.name}-src.zip">
614
      <fileset basedir="${package.working.dir}">
615
        <include name="**"/>
616
      </fileset>
617
    </zip>
618
  </target>
619
620
<!-- ***************************************************************** -->
621
<!-- ***                      Package docs                         *** -->
622
<!-- ***************************************************************** -->
623
624
  <target name="package-docs" depends="clean-package-dir">
625
626
    <call target="copy-docs"/>
627
628
    <!-- Create the zip file -->
629
    <zip ziplevel="9"
630
        zipfile="${project.package.dir}/${package.name}-docs.zip">
631
      <fileset basedir="${package.working.dir}">
632
        <include name="**"/>
633
      </fileset>
634
    </zip>
635
    
636
  </target>
637
  
638
<!-- ***************************************************************** -->
639
<!-- ***                    Package resources                      *** -->
640
<!-- ***************************************************************** -->
641
642
  <target name="package-resources" depends="clean-package-dir">
643
644
    <copy todir="${package.resource.dir}/nunit-gui-runner">
645
      <fileset basedir="GuiRunner/nunit-gui/obj/Release">
646
        <include name="*.resources"/>
647
      </fileset>
648
    </copy>
649
650
    <copy todir="${package.resource.dir}/nunit.uikit">
651
      <fileset basedir="GuiComponents/UiKit/obj/Release">
652
        <include name="NUnit.UiKit.AddConfigurationDialog.resources"/>
653
        <include name="NUnit.UiKit.AssemblyPathDialog.resources"/>
654
        <include name="NUnit.UiKit.ConfigurationEditor.resources"/>
655
        <include name="NUnit.UiKit.RenameConfigurationDialog.resources"/>
656
        <include name="NUnit.UiKit.TestPropertiesDialog.resources"/>
657
        <include name="NUnit.UiKit.TestTree.resources"/>
658
      </fileset>
659
    </copy>
660
661
    <copy todir="${package.working.dir}">
662
      <fileset basedir="${project.tools.dir}/localization">
663
        <include name="*.*"/>
664
      </fileset>
665
    </copy>
666
667
    <if test="${property::exists('localize')}">
668
    <foreach property="culture" item="String" delim="," 
669
        in="${localize}">
670
    <foreach property="folder" item="Folder" 
671
        in="${package.working.dir}/resources">
672
      <property name="proj" 
673
        value="${path::get-file-name(folder)}"/>
674
      <property name="projdir" 
675
        value="${package.working.dir}/${culture}/${proj}"/>
676
    <foreach property="file" item="File" in="${folder}">
677
      <property name="filename"
678
        value="${path::get-file-name-without-extension(file)}"/>
679
      <copy file="${file}" 
680
        tofile="${projdir}/${filename}.${culture}.resources"/>"/>
681
    </foreach>
682
    </foreach>
683
    </foreach>   
684
    </if>
685
686
    <zip  ziplevel="9"
687
        zipfile="${project.package.dir}/${package.name}-resources.zip">
688
      <fileset basedir="${package.working.dir}">
689
        <include name="**"/>
690
      </fileset>
691
    </zip>
692
693
  </target>
694
695
<!-- ***************************************************************** -->
696
<!-- ***            Helper targets used for packaging              *** -->
697
<!-- ***************************************************************** -->
698
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
699
<!-- ***************************************************************** -->
700
<!-- ***            Build install image for a package              *** -->
701
<!-- ***************************************************************** -->
702
2314 by charliepoole
Move non-source files like scripts to the root directory
703
  <target name="build-install-image" depends="clean-package-dir">
704
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
705
    <property name="package.config" value="${runtime.config}"
706
      unless="${property::exists('package.config')}"/>
707
708
    <foreach item="String" delim="+"
709
      property="runtime" in="${package.config}">
710
711
      <if test="${framework::sdk-exists( runtime )}">
712
        <call target="set-${runtime}-runtime-config"/>
713
        <call target="copy-bins" />
714
      </if>
715
    </foreach>
716
2314 by charliepoole
Move non-source files like scripts to the root directory
717
    <call target="copy-docs" />
718
    <call target="copy-samples" />
719
720
    <copy file="license.txt" todir="${package.working.dir}" />
721
    <copy file="${project.tools.dir}/fit/license.txt"
722
          tofile="${package.working.dir}/fit-license.txt" />
723
    <copy file="${project.src.dir}/GuiRunner/nunit-gui/Logo.ico"
724
          todir="${package.working.dir}" />
725
    <copy file="NUnitFitTests.html"
726
          todir="${package.bin.dir}" />
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
727
    <copy file="${project.addins.dir}/RowTest/License.txt" 
2380 by charliepoole
Correct script errors - add missing files.
728
          tofile="${package.working.dir}/rowtest-license.txt" />
2314 by charliepoole
Move non-source files like scripts to the root directory
729
730
  </target>
731
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
732
<!-- ***************************************************************** -->
733
<!-- ***           Copy a set of binaries for a package            *** -->
734
<!-- ***************************************************************** -->
735
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
736
  <target name="copy-bins" depends="build,build-addins">
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
737
2314 by charliepoole
Move non-source files like scripts to the root directory
738
    <mkdir dir="${package.bin.dir}"/>
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
739
2314 by charliepoole
Move non-source files like scripts to the root directory
740
    <copy todir="${package.bin.dir}">
741
      <fileset basedir="${current.build.dir}">
742
        <include name="*"/>
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
743
        <include name="tests/*"/>
744
        <include name="lib/*"/>
2471 by charliepoole
Add back RowTestExtension as a separately compiled assembly, bundled
745
        <include name="addins/*"/>
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
746
        <include name="${runtime.config}/*"/>
2314 by charliepoole
Move non-source files like scripts to the root directory
747
        <exclude name="*.wixobj"/>
748
        <exclude name="nunit-server.*"/>
749
        <exclude name="nunit-test-server.*"/>
750
      </fileset>
751
    </copy>
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
752
2314 by charliepoole
Move non-source files like scripts to the root directory
753
  </target>
754
  
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
755
<!-- ***************************************************************** -->
756
<!-- ***           Copy the documentation for a package            *** -->
757
<!-- ***************************************************************** -->
758
2314 by charliepoole
Move non-source files like scripts to the root directory
759
  <target name="copy-docs">
760
    <mkdir dir="${package.doc.dir}"/>
761
    <copy todir="${package.doc.dir}">
762
      <fileset basedir="${project.doc.dir}">
763
        <include name="*.html"/>
764
	<include name="nunit.css"/>
765
        <include name="codeFuncs.js"/>
766
        <include name="favicon.ico"/>
767
	<include name="files/*"/>
768
	<include name="img/*"/>
769
        <exclude name="img/thumbs.db"/>
770
      </fileset>
771
    </copy>
772
  </target>
773
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
774
<!-- ***************************************************************** -->
775
<!-- ***            Copy sample programs for a package             *** -->
776
<!-- ***************************************************************** -->
777
2314 by charliepoole
Move non-source files like scripts to the root directory
778
  <target name="copy-samples">
779
780
    <mkdir dir="${package.samples.dir}"/>
781
782
    <!-- Copy files that are not part of an individual project -->
783
    <copy todir="${package.samples.dir}">
784
      <fileset basedir="${project.samples.dir}">
785
        <include name="ReadMe.txt" />
786
        <include name="csharp/CSharp.sln" />
787
        <include name="jsharp/jsharp.sln" />
788
        <include name="vb/vb-samples.sln" />
789
        <include name="cpp/managed/managed-cpp.sln" />
790
        <include name="cpp/cpp-cli/cpp-cli.sln" />
791
        <include name="Extensibility/Core/CoreExtensibility.sln" />
792
        <include name="Extensibility/Core/Install.bat" />
793
      </fileset>
794
    </copy>
795
796
    <!-- Copy each project's files -->
797
    <nant target="package">
798
      <buildfiles refid="sample.buildfiles" />
799
    </nant>
800
801
  </target>
802
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
803
804
<!-- ***************************************************************** -->
805
<!-- ***            Copy the source code for a package             *** -->
806
<!-- ***************************************************************** -->
807
2314 by charliepoole
Move non-source files like scripts to the root directory
808
  <target name="copy-src">
809
    <delete dir="${package.src.dir}" />
810
    <mkdir dir="${package.src.dir}"/>
811
812
    <!-- Copy project top level files -->
813
    <copy todir="${package.working.dir}">
814
      <fileset basedir="${project.base.dir}">
815
        <include name="clr.bat"/>
816
        <include name="license.rtf"/>
817
        <include name="nunit.build"/>
818
        <include name="nunit.build.include"/>
819
        <include name="nunit.snk"/>
820
        <include name="NUnitFitTests.html"/>
821
        <include name="NUnitTests.config"/>
822
        <include name="NUnitTests.nunit"/>
823
      </fileset>
824
    </copy>
825
826
    <!-- Copy src dir files -->
827
    <copy todir="${package.src.dir}">
828
      <fileset basedir="${project.src.dir}">
829
        <include name="CommonAssemblyInfo.cs"/>
830
        <include name="nunit20under21.config"/>
831
        <include name="nunit20under22.config"/>
832
        <include name="nunit21under22.config"/>
2395 by charliepoole
Add pNUnit to the NUnit build
833
        <include name="PNUnit/*.conf"/>
834
        <include name="PNUnit/runpnunit.bat"/>
2314 by charliepoole
Move non-source files like scripts to the root directory
835
      </fileset>
836
    </copy>
837
838
    <!-- Copy install directory files -->
839
    <copy todir="${package.install.dir}">
840
      <fileset basedir="${project.install.dir}">
841
        <include name="bin.wxs" />
842
        <include name="nunit-gui.wxs" />
843
        <include name="doc.wxs" />
844
        <include name="tests.wxs" />
845
        <include name="samples.wxs" />
846
        <include name="NUnit.wxs"/>
847
      </fileset>
848
    </copy>
849
850
    <!-- Copy individual projects -->
851
    <nant target="package" inheritrefs="true">
852
      <buildfiles refid="project.buildfiles" />
853
    </nant>
854
855
    <mkdir dir="${package.solutions.dir}" />
856
857
    <!-- Copy VS2003 solution -->
858
    <copy todir="${package.solutions.dir}/vs2003">
859
      <fileset basedir="${project.solutions.dir}/vs2003">
860
        <include name="nunit.sln"/>
861
        <include name="NUnitTests.nunit"/>
862
        <include name="NUnitTests.config"/>
863
        <include name="nunit.snk"/>
864
        <include name="**/*.csproj"/>
865
      </fileset>
866
    </copy>
867
868
    <!-- Copy VS2005 solution -->
869
    <copy todir="${package.solutions.dir}/vs2005">
870
      <fileset basedir="${project.solutions.dir}/vs2005">
871
        <include name="nunit.sln"/>
872
        <include name="NUnitTests.nunit"/>
873
        <include name="NUnitTests.config"/>
874
        <include name="nunit.snk"/>
875
        <include name="**/*.csproj"/>
876
      </fileset>
877
    </copy>
878
879
  </target>
880
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
881
<!-- ***************************************************************** -->
882
<!-- ***               Copy the tools for a package                *** -->
883
<!-- ***************************************************************** -->
884
2314 by charliepoole
Move non-source files like scripts to the root directory
885
  <target name="copy-tools">
886
887
    <mkdir dir="${package.tools.dir}" />
888
889
    <copy todir="${package.tools.dir}">
890
      <fileset basedir="${project.tools.dir}">
891
        <include name="fit/fit.dll"/>
892
        <include name="fit/runFile.exe"/>
893
        <include name="fit/runFile.exe.config"/>
894
        <include name="fit/license.txt"/>
895
      </fileset>
896
    </copy>
897
898
  </target>
899
900
<!-- ***************************************************************** -->
901
<!-- ***        Targets for installing the NUnit distribution      *** -->
902
<!-- ***************************************************************** -->
903
904
  <target name="install" depends="build-install-image"
905
      description="Install NUnit directly from the build">
906
907
  </target>
908
909
<!-- ***************************************************************** -->
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
910
<!-- ****** Patternsets and Filesets Used by Various Targets  ******** -->
2314 by charliepoole
Move non-source files like scripts to the root directory
911
<!-- ***************************************************************** -->
912
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
913
  <patternset id="framework.build.scripts">
914
    <include name="NUnitFramework/framework/nunit.framework.build" />
915
    <include name="NUnitExtensions/framework/nunit.framework.extensions.build" />
916
    <include name="NUnitMocks/mocks/nunit.mocks.build" />
917
  </patternset>
2314 by charliepoole
Move non-source files like scripts to the root directory
918
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
919
  <patternset id="non.framework.build.scripts">
2314 by charliepoole
Move non-source files like scripts to the root directory
920
    <!-- NUnit Base -->
921
    <include name="NUnitFramework/framework/nunit.framework.build" />
922
    <include name="NUnitCore/interfaces/nunit.core.interfaces.build" />
923
    <include name="NUnitCore/core/nunit.core.build" />
924
    <include name="NUnitExtensions/framework/nunit.framework.extensions.build" />
925
    <include name="NUnitExtensions/core/nunit.core.extensions.build" />
926
    <include name="NUnitMocks/mocks/nunit.mocks.build" />
927
    <include name="ClientUtilities/util/nunit.util.build" />
928
929
    <!-- Console Runner -->
930
    <include name="ConsoleRunner/nunit-console/nunit-console.build" />
931
    <include name="ConsoleRunner/nunit-console-exe/nunit-console.exe.build" />
932
933
    <!-- Gui Runner -->
934
    <include name="GuiComponents/UiKit/nunit.uikit.build" />
935
    <include name="GuiRunner/nunit-gui/nunit-gui.build" />
936
    <include name="GuiRunner/nunit-gui-exe/nunit-gui.exe.build" />
937
938
    <!-- Test Server -->
939
    <include name="NUnitTestServer/nunit-server-exe/nunit-server.exe.build" />
940
    <include name="NUnitTestServer/nunit-agent-exe/nunit-agent.exe.build" />
941
2395 by charliepoole
Add pNUnit to the NUnit build
942
    <!-- PNUnit -->
943
    <include name="PNUnit/pnunit.framework/pnunit.framework.build" />
944
    <include name="PNUnit/agent/pnunit-agent.build"/>
945
    <include name="PNUnit/launcher/pnunit-launcher.build"/>
946
2314 by charliepoole
Move non-source files like scripts to the root directory
947
    <!-- Test Utilities and Dummy Projects -->
948
    <include name="tests/mock-assembly/mock-assembly.build" />
949
    <include name="tests/nonamespace-assembly/nonamespace-assembly.build" />
950
    <include name="tests/test-assembly/test-assembly.build" />
951
    <include name="tests/test-utilities/test-utilities.build" />
2380 by charliepoole
Correct script errors - add missing files.
952
    <include name="tests/loadtest-assembly/loadtest-assembly.build" />
2314 by charliepoole
Move non-source files like scripts to the root directory
953
    <include name="tests/timing-tests/timing-tests.build" />
954
955
    <!-- NUnit Base Tests -->
956
    <include name="NUnitFramework/tests/nunit.framework.tests.build" />
957
    <include name="NUnitCore/tests/nunit.core.tests.build" />
958
    <include name="NUnitExtensions/tests/nunit.extensions.tests.build" />
959
    <include name="NUnitMocks/tests/nunit.mocks.tests.build" />
960
    <include name="ClientUtilities/tests/nunit.util.tests.build" />
961
962
    <!-- Console Runner Tests -->
963
    <include name="ConsoleRunner/tests/nunit-console.tests.build" />
964
2395 by charliepoole
Add pNUnit to the NUnit build
965
    <!-- PNUnit Tests -->
966
    <include name="PNUnit/tests/pnunit.tests.build"/>
967
2314 by charliepoole
Move non-source files like scripts to the root directory
968
    <!-- GUI Tests -->
969
    <include name="GuiComponents/tests/nunit.uikit.tests.build" />
970
    <include name="GuiRunner/tests/nunit-gui.tests.build" />
971
972
    <!-- FIT Tests -->
973
    <include name="NUnitFixtures/fixtures/nunit.fixtures.build" />
974
    <include name="NUnitFixtures/tests/nunit.fixtures.tests.build" />
2391 by charliepoole
Modify build and install to produce combined net-1.1 and 2.0 packages.
975
  </patternset>
976
977
  <fileset id="framework.buildfiles" basedir="${project.src.dir}">
978
    <patternset refid="framework.build.scripts"/>
979
  </fileset>
980
981
  <fileset id="non.framework.buildfiles" basedir="${project.src.dir}">
982
    <patternset refid="non.framework.build.scripts"/>
983
  </fileset>
984
985
  <fileset id="project.buildfiles" basedir="${project.src.dir}">
986
    <patternset refid="framework.build.scripts"/>
987
    <patternset refid="non.framework.build.scripts"/>
2314 by charliepoole
Move non-source files like scripts to the root directory
988
  </fileset>
989
990
  <!-- BuildFiles for Samples -->
991
  <fileset id="sample.buildfiles" basedir="${project.samples.dir}">
992
993
    <!-- CSharp Samples -->
994
    <include name="csharp/failures/cs-failures.build" />
995
    <include name="csharp/money/cs-money.build" />
996
    <include name="csharp/money-port/cs-money-port.build" />
997
    <include name="csharp/syntax/cs-syntax.build" />
998
999
    <!-- JSharp Samples -->
1000
    <include name="jsharp/failures/jsharp-failures.build"
1001
      if="${task::exists('vjc')}" />
1002
1003
    <!-- VB Samples -->
1004
    <include name="vb/failures/vb-failures.build"
1005
      if="${task::exists('vbc')}" />
1006
    <include name="vb/money/vb-money.build"
1007
      if="${task::exists('vbc')}" />
1008
    <include name="vb/syntax/vb-syntax.build"
1009
      if="${task::exists('vbc')}" />
1010
1011
    <!-- Managed C++ Samples -->
1012
    <include name="cpp/managed/failures/cpp-managed-failures.build"/>
1013
1014
    <!-- C++/CLI Samples -->
1015
    <include name="cpp/cpp-cli/failures/cpp-cli-failures.build"/>
1016
    <include name="cpp/cpp-cli/syntax/cpp-cli-syntax.build"/>
1017
1018
    <!-- Extensibility Samples -->
1019
    <include name="Extensibility/Core/Minimal/Minimal.build" />
1020
    <include name="Extensibility/Core/SampleFixtureExtension/SampleFixtureExtension.build" />
1021
    <include name="Extensibility/Core/SampleSuiteExtension/SampleSuiteExtension.build" />
1022
    <include name="Extensibility/Core/MaxTimeDecorator/MaxTimeDecorator.build" />
1023
  </fileset>
1024
1025
  <!-- Files to be copied to source directories -->
1026
  <fileset id="source-files" >
1027
        <include name="**/*.sln" />
1028
        <include name="**/*.csproj" />
1029
        <include name="**/*.config" />
1030
        <include name="**/*.build" />
1031
        <include name="**/*.cs" />
1032
        <include name="**/*.xsd" />
1033
        <include name="**/*.xslt" />
1034
        <include name="**/*.resx" />
1035
        <include name="**/*.jpg" />
1036
        <include name="**/*.gif" />
1037
        <include name="**/*.ico" />
1038
        <include name="**/*.txt" />
1039
        <include name="**/resources/*" />
1040
1041
        <exclude name="**/CVS/**" />
1042
        <exclude name="**/bin/**" />
1043
        <exclude name="**/obj/**" />
1044
        <exclude name="**/Debug/**" />
1045
        <exclude name="**/Release/**" />
1046
  </fileset>
1047
1048
</project>