~nunit-core/nunitv2/2.5

« back to all changes in this revision

Viewing changes to nunit.build

  • Committer: charliepoole
  • Date: 2008-02-23 03:26:05 UTC
  • Revision ID: vcs-imports@canonical.com-20080223032605-y413yp2ckipdsd1s
Move non-source files like scripts to the root directory

Show diffs side-by-side

added added

removed removed

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