uppercutbuild 0.9.0.346.20100805 → 1.0.0.0.20100806

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/docs/README +7 -2
  2. data/lib/build.sh +23 -0
  3. data/lib/build/UppercuT.xml +1 -1
  4. data/lib/build/analyze.step +78 -77
  5. data/lib/build/analyzers/gallio.test.step +25 -26
  6. data/lib/build/analyzers/mbunit2.test.step +25 -28
  7. data/lib/build/analyzers/moma.step +29 -31
  8. data/lib/build/analyzers/ncover.step +32 -34
  9. data/lib/build/analyzers/ndepend.step +19 -12
  10. data/lib/build/analyzers/nitriq.step +19 -22
  11. data/lib/build/analyzers/nunit.test.step +37 -37
  12. data/lib/build/analyzers/test.step +99 -98
  13. data/lib/build/compile.step +68 -50
  14. data/lib/build/customize.build +76 -75
  15. data/lib/build/customizers/item.template +50 -49
  16. data/lib/build/default.build +171 -167
  17. data/lib/build/deploymentBuilder.step +103 -102
  18. data/lib/build/environmentBuilder.step +119 -118
  19. data/lib/build/gemsBuild.step +113 -112
  20. data/lib/build/gemsPrepare.step +157 -156
  21. data/lib/build/generateBuildInfo.step +108 -105
  22. data/lib/build/ilmerge.build +183 -182
  23. data/lib/build/open.build +115 -102
  24. data/lib/build/package.step +234 -233
  25. data/lib/build/policyChecks.step +81 -80
  26. data/lib/build/updateAssemblies.build +107 -106
  27. data/lib/build/uppercut.dll +0 -0
  28. data/lib/build/uppercut.tasks.dll +0 -0
  29. data/lib/build/versionBuilder.step +149 -147
  30. data/lib/build/versioners/git.step +106 -105
  31. data/lib/build/versioners/hg.step +106 -105
  32. data/lib/build/versioners/svn.step +112 -111
  33. data/lib/build/versioners/tfs.step +104 -103
  34. data/lib/build/zip.build +134 -162
  35. data/lib/deployment/scripts/database.deploy +37 -36
  36. data/lib/open.sh +7 -0
  37. data/lib/settings/UppercuT.config +76 -73
  38. data/lib/zip.sh +9 -0
  39. metadata +9 -6
@@ -4,41 +4,43 @@
4
4
  <!-- DO NOT EDIT THIS FILE - NCover uses MbUnit to run tests - find out more at http://uppercut.pbwiki.com -->
5
5
  <property name="build.config.settings" value="__NONE__" overwrite="false" />
6
6
  <include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
7
+ <property name="path.separator" value="${string::trim(path::combine(' ', ' '))}" />
8
+ <include buildfile="..${path.separator}csharp.functions" />
7
9
  <property name="file.current.no_extension" value="ncover" />
8
10
  <property name="dirs.current" value="${directory::get-parent-directory(project::get-buildfile-path())}" />
9
- <property name="path.to.toplevel" value="..\.." />
11
+ <property name="path.to.toplevel" value="..${path.separator}.." />
10
12
  <property name="folder.build_scripts" value="build" overwrite="false" />
11
13
  <property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
12
- <property name="dirs.build_scripts_custom" value="${dirs.current}\${path.to.toplevel}\${folder.build_scripts_custom}\analyzers" />
14
+ <property name="dirs.build_scripts_custom" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.build_scripts_custom}${path.separator}analyzers" />
13
15
  <property name="folder.code_build" value="build_output" overwrite="false" />
14
- <property name="dirs.build" value="${dirs.current}\${path.to.toplevel}\${folder.code_build}" />
16
+ <property name="dirs.build" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.code_build}" />
15
17
  <property name="folder.app.drop" value="${project.name}" overwrite="false" />
16
- <property name="dirs.build.code" value="${dirs.build}\${folder.app.drop}" overwrite="false" />
18
+ <property name="dirs.build.code" value="${dirs.build}${path.separator}${folder.app.drop}" overwrite="false" />
17
19
  <property name="folder.build_artifacts" value="build_artifacts" overwrite="false" />
18
- <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}\${folder.build_artifacts}" />
20
+ <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}${path.separator}${folder.build_artifacts}" />
19
21
  <property name="project.name" value="__SOLUTION_NAME_WITHOUT_SLN_EXTENSION__" overwrite="false" />
20
22
  <property name="test.framework" value="mbunit" overwrite="false" />
21
23
  <property name="microsoft.framework" value="net-3.5" overwrite="false" />
22
24
  <property name="number.satisfactory_coverage" value="85" overwrite="false" />
23
25
  <property name="fail.if_ncover_fails" value="false" overwrite="false" />
24
26
  <property name="folder.references" value="lib" overwrite="false" />
25
- <property name="dirs.lib" value="${dirs.current}\${path.to.toplevel}\${folder.references}" overwrite="false" />
26
- <property name="dirs.ncover_results" value="${path::get-full-path(dirs.build_artifacts)}\ncover" />
27
- <property name="app.ncover.tester" value="${path::get-full-path(dirs.lib)}\MbUnit2\MbUnit.Cons.exe" overwrite="false" />
28
- <property name="app.ncover" value="${path::get-full-path(dirs.lib)}\NCover\NCover.Console.exe" overwrite="false" />
29
- <property name="app.ncover.explorer" value="${path::get-full-path(dirs.lib)}\NCover\NCoverExplorer.Console.exe" overwrite="false" />
30
- <property name="file.ncover_results" value="${dirs.ncover_results}\${project.name}.ncover.xml" />
31
- <property name="file.ncover_log" value="${dirs.ncover_results}\${project.name}.ncover.log" />
27
+ <property name="dirs.lib" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.references}" overwrite="false" />
28
+ <property name="dirs.ncover_results" value="${path::get-full-path(dirs.build_artifacts)}${path.separator}ncover" />
29
+ <property name="app.ncover.tester" value="${path::get-full-path(dirs.lib)}${path.separator}MbUnit2${path.separator}MbUnit.Cons.exe" overwrite="false" />
30
+ <property name="app.ncover" value="${path::get-full-path(dirs.lib)}${path.separator}NCover${path.separator}NCover.Console.exe" overwrite="false" />
31
+ <property name="app.ncover.explorer" value="${path::get-full-path(dirs.lib)}${path.separator}NCover${path.separator}NCoverExplorer.Console.exe" overwrite="false" />
32
+ <property name="file.ncover_results" value="${dirs.ncover_results}${path.separator}${project.name}.ncover.xml" />
33
+ <property name="file.ncover_log" value="${dirs.ncover_results}${path.separator}${project.name}.ncover.log" />
32
34
  <property name="file.xml.code_coverage_results" value="${project.name}.CodeCoverageSummary-results.xml" />
33
35
  <property name="file.html.code_coverage_results" value="${project.name}.CodeCoverageSummary-results.html" />
34
36
  <property name="tests.excluded_categories.comma_separated" value="Database,Integration,Slow,NotWorking" overwrite="false" />
35
37
  <property name="test.args" value="" />
36
38
  <property name="test.args" value="/rt:Text /rnf:mbUnit /rf:&quot;${dirs.ncover_results}&quot; /ec:${tests.excluded_categories.comma_separated}" if="${test.framework=='mbunit2'}" />
37
- <property name="test.args" value="/xml:&quot;${dirs.ncover_results}\nunit-results.xml&quot; /nologo /exclude:${tests.excluded_categories.comma_separated}" if="${test.framework=='nunit'}" />
39
+ <property name="test.args" value="/xml:&quot;${dirs.ncover_results}${path.separator}nunit-results.xml&quot; /nologo /framework=${microsoft.framework} /exclude:${tests.excluded_categories.comma_separated}" if="${test.framework=='nunit'}" />
38
40
  <!--property name="test.args" value="/xml:&quot;${dirs.ncover_results}\nunit-results.xml&quot; /nologo /framework=${microsoft.framework} /exclude:${tests.excluded_categories.comma_separated}" if="${test.framework=='nunit'}" /-->
39
- <property name="file.custom.step.before" value="${dirs.build_scripts_custom}\${file.current.no_extension}.pre.step" />
40
- <property name="file.custom.step.after" value="${dirs.build_scripts_custom}\${file.current.no_extension}.post.step" />
41
- <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}\${file.current.no_extension}.replace.step" />
41
+ <property name="file.custom.step.before" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.pre.step" />
42
+ <property name="file.custom.step.after" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.post.step" />
43
+ <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.replace.step" />
42
44
  <property name="is.replaced" value="false" />
43
45
  <property name="fail.build.on.error" value="false" />
44
46
 
@@ -95,16 +97,16 @@
95
97
  <foreach item="File" property="dll.filename">
96
98
  <in>
97
99
  <items>
98
- <exclude name="${dirs.build.code}\lib\**" />
99
- <exclude name="${dirs.build.code}\**\*Database*dll" />
100
- <exclude name="${dirs.build.code}\**\*.Integration*dll" />
101
- <exclude name="${dirs.build.code}\**\TestFu.dll" />
102
- <include name="${dirs.build.code}\**\*Test*dll" />
103
- <include name="${dirs.build.code}\**\*Spec*dll" />
100
+ <exclude name="${dirs.build.code}${path.separator}lib${path.separator}**" />
101
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}*Database*dll" />
102
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}*.Integration*dll" />
103
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}TestFu.dll" />
104
+ <include name="${dirs.build.code}${path.separator}**${path.separator}*Test*dll" />
105
+ <include name="${dirs.build.code}${path.separator}**${path.separator}*Spec*dll" />
104
106
  </items>
105
107
  </in>
106
108
  <do>
107
- <property name="dll.names" value="${dll.names + ' ' + string::replace(dll.filename,path::get-full-path(dirs.build.code) + '\','') + ''}" />
109
+ <property name="dll.names" value="${dll.names + ' ' + string::replace(string::replace(dll.filename,path::get-full-path(dirs.build.code) + '\',''),'\',path.separator) + ''}" />
108
110
  </do>
109
111
  </foreach>
110
112
 
@@ -127,10 +129,11 @@
127
129
  failonerror="false"
128
130
  verbose="true">
129
131
  <assemblies basedir="${dirs.build.code}">
130
- <exclude name="${dirs.build.code}\**\TestFu.dll" />
131
- <exclude name="${dirs.build.code}\**\*Test*dll" />
132
- <exclude name="${dirs.build.code}\**\*Spec*dll" />
133
- <include name="${dirs.build.code}\**\${project.name}*.dll" />
132
+ <exclude name="${dirs.build.code}${path.separator}lib${path.separator}**" />
133
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}TestFu.dll" />
134
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}*Test*dll" />
135
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}*Spec*dll" />
136
+ <include name="${dirs.build.code}${path.separator}**${path.separator}${project.name}*.dll" />
134
137
  </assemblies>
135
138
  </ncover>
136
139
  </target>
@@ -165,13 +168,8 @@
165
168
  </target>
166
169
 
167
170
  <target name="open_results">
168
- <echo message="Opening results at ${path::get-full-path(dirs.ncover_results)}\${file.html.code_coverage_results}."/>
169
- <exec
170
- spawn="true"
171
- program="${environment::get-folder-path('ProgramFiles')}\Internet Explorer\iexplore.exe"
172
- commandline="${path::get-full-path(dirs.ncover_results)}\${file.html.code_coverage_results}"
173
- >
174
- </exec>
171
+ <echo message="Opening results - ${path::get-full-path(dirs.ncover_results) + path.separator + file.html.code_coverage_results}" />
172
+ <results display="${path::get-full-path(dirs.ncover_results) + path.separator + file.html.code_coverage_results}" />
175
173
  </target>
176
174
 
177
175
  <target name="custom_tasks_after">
@@ -4,24 +4,26 @@
4
4
  <!-- DO NOT EDIT THIS FILE - Add custom tasks in BuildTasks.Custom\Analyzers folder with file by the same name - find out more at http://uppercut.pbwiki.com -->
5
5
  <property name="build.config.settings" value="__NONE__" overwrite="false" />
6
6
  <include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
7
+ <property name="path.separator" value="${string::trim(path::combine(' ', ' '))}" />
8
+ <include buildfile="..${path.separator}csharp.functions" />
7
9
  <property name="file.current.no_extension" value="ndepend" />
8
10
  <property name="dirs.current" value="${directory::get-parent-directory(project::get-buildfile-path())}" />
9
- <property name="path.to.toplevel" value="..\.." />
11
+ <property name="path.to.toplevel" value="..${path.separator}.." />
10
12
  <property name="folder.build_scripts" value="build" overwrite="false" />
11
13
  <property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
12
- <property name="dirs.build_scripts_custom" value="${dirs.current}\${path.to.toplevel}\${folder.build_scripts_custom}\analyzers" />
14
+ <property name="dirs.build_scripts_custom" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.build_scripts_custom}${path.separator}analyzers" />
13
15
  <property name="folder.code_build" value="build_output" overwrite="false" />
14
- <property name="dirs.build" value="${dirs.current}\${path.to.toplevel}\${folder.code_build}" />
16
+ <property name="dirs.build" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.code_build}" />
15
17
  <property name="folder.app.drop" value="${project.name}" overwrite="false" />
16
- <property name="dirs.build.code" value="${dirs.build}\${folder.app.drop}" overwrite="false" />
18
+ <property name="dirs.build.code" value="${dirs.build}${path.separator}${folder.app.drop}" overwrite="false" />
17
19
  <property name="folder.build_artifacts" value="build_artifacts" overwrite="false" />
18
- <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}\${folder.build_artifacts}" />
19
- <property name="app.ndepend" value="C:\Program Files\NDepend\NDepend.Console.exe" overwrite="false" />
20
- <property name="dirs.ndepend_results" value="${dirs.build_artifacts}\ndepend" />
21
- <property name="files.ndepend_config" value="${path::get-full-path(dirs.current)}\${path.to.toplevel}\NDepend.xml" />
22
- <property name="file.custom.step.before" value="${dirs.build_scripts_custom}\${file.current.no_extension}.pre.step" />
23
- <property name="file.custom.step.after" value="${dirs.build_scripts_custom}\${file.current.no_extension}.post.step" />
24
- <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}\${file.current.no_extension}.replace.step" />
20
+ <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}${path.separator}${folder.build_artifacts}" />
21
+ <property name="app.ndepend" value="C:${path.separator}Program Files${path.separator}NDepend${path.separator}NDepend.Console.exe" overwrite="false" />
22
+ <property name="dirs.ndepend_results" value="${dirs.build_artifacts}${path.separator}ndepend" />
23
+ <property name="files.ndepend_config" value="${path::get-full-path(dirs.current)}${path.separator}${path.to.toplevel}${path.separator}NDepend.xml" />
24
+ <property name="file.custom.step.before" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.pre.step" />
25
+ <property name="file.custom.step.after" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.post.step" />
26
+ <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.replace.step" />
25
27
  <property name="is.replaced" value="false" />
26
28
  <property name="fail.build.on.error" value="false" />
27
29
 
@@ -76,11 +78,16 @@
76
78
  <echo message="Attempting to run NDepend at ${app.ndepend} for file ${files.ndepend_config}." />
77
79
 
78
80
  <exec program="${app.ndepend}">
79
- <arg line="${files.ndepend_config} /OutDir ${dirs.ndepend_results} /InDirs ${path::get-full-path(dirs.build.code)} C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 C:\WINDOWS\Microsoft.NET\Framework\v3.0 C:\WINDOWS\Microsoft.NET\Framework\v3.5" />
81
+ <arg line="${files.ndepend_config} /OutDir ${dirs.ndepend_results} /InDirs ${path::get-full-path(dirs.build.code)} C:${path.separator}WINDOWS${path.separator}Microsoft.NET${path.separator}Framework${path.separator}v2.0.50727 C:${path.separator}WINDOWS${path.separator}Microsoft.NET${path.separator}Framework${path.separator}v3.0 C:${path.separator}WINDOWS${path.separator}Microsoft.NET${path.separator}Framework${path.separator}v3.5" />
80
82
  <!-- /EmitVisualNDependBinXml -->
81
83
  </exec>
82
84
  </target>
83
85
 
86
+ <target name="open_results">
87
+ <echo message="Opening results - ${path::get-full-path(dirs.ndepend_results) + path.separator + 'NDependReport.html'}" />
88
+ <results display="${path::get-full-path(dirs.ndepend_results) + path.separator + 'NDependReport.html'}" />
89
+ </target>
90
+
84
91
  <target name="custom_tasks_after">
85
92
  <echo message="Running custom tasks if ${file.custom.step.after} exists." />
86
93
  <nant buildfile="${file.custom.step.after}" inheritall="true" if="${file::exists(file.custom.step.after)}" failonerror="${fail.build.on.error}" />
@@ -4,29 +4,31 @@
4
4
  <!-- DO NOT EDIT THIS FILE - Add custom tasks in BuildTasks.Custom\Analyzers folder with file by the same name - find out more at http://uppercut.pbwiki.com -->
5
5
  <property name="build.config.settings" value="__NONE__" overwrite="false" />
6
6
  <include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
7
+ <property name="path.separator" value="${string::trim(path::combine(' ', ' '))}" />
8
+ <include buildfile="..${path.separator}csharp.functions" />
7
9
  <property name="file.current.no_extension" value="nitriq" />
8
10
  <property name="dirs.current" value="${directory::get-parent-directory(project::get-buildfile-path())}" />
9
- <property name="path.to.toplevel" value="..\.." />
11
+ <property name="path.to.toplevel" value="..${path.separator}.." />
10
12
  <property name="project.name" value="__SOLUTION_NAME_WITHOUT_SLN_EXTENSION__" overwrite="false" />
11
13
  <property name="folder.build_scripts" value="build" overwrite="false" />
12
14
  <property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
13
- <property name="dirs.build_scripts_custom" value="${dirs.current}\${path.to.toplevel}\${folder.build_scripts_custom}\analyzers" />
15
+ <property name="dirs.build_scripts_custom" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.build_scripts_custom}${path.separator}analyzers" />
14
16
  <property name="folder.code_build" value="build_output" overwrite="false" />
15
- <property name="dirs.build" value="${dirs.current}\${path.to.toplevel}\${folder.code_build}" />
17
+ <property name="dirs.build" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.code_build}" />
16
18
  <property name="folder.app.drop" value="${project.name}" overwrite="false" />
17
- <property name="dirs.build.code" value="${dirs.build}\${folder.app.drop}" overwrite="false" />
19
+ <property name="dirs.build.code" value="${dirs.build}${path.separator}${folder.app.drop}" overwrite="false" />
18
20
  <property name="folder.build_artifacts" value="build_artifacts" overwrite="false" />
19
- <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}\${folder.build_artifacts}" />
21
+ <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}${path.separator}${folder.build_artifacts}" />
20
22
 
21
- <property name="app.nitriq" value="C:\Program Files (x86)\NimblePros\Nitriq Console + Pro\Nitriq.Console.exe" overwrite="false" />
22
- <property name="dirs.nitriq_results" value="${dirs.build_artifacts}\nitriq" />
23
- <property name="files.nitriq_project" value="${path::get-full-path(dirs.current)}\${path.to.toplevel}\nitriq.nitriqProj" />
24
- <property name="files.nitriq_queries" value="${path::get-full-path(dirs.current)}\${path.to.toplevel}\nitriq.nq" />
25
- <property name="file.html.nitriq_results" value="${dirs.nitriq_results}\${project.name}.nitriq-results.html" />
23
+ <property name="app.nitriq" value="C:${path.separator}Program Files (x86)${path.separator}NimblePros${path.separator}Nitriq Console + Pro${path.separator}Nitriq.Console.exe" overwrite="false" />
24
+ <property name="dirs.nitriq_results" value="${dirs.build_artifacts}${path.separator}nitriq" />
25
+ <property name="files.nitriq_project" value="${path::get-full-path(dirs.current)}${path.separator}${path.to.toplevel}${path.separator}nitriq.nitriqProj" />
26
+ <property name="files.nitriq_queries" value="${path::get-full-path(dirs.current)}${path.separator}${path.to.toplevel}${path.separator}nitriq.nq" />
27
+ <property name="file.html.nitriq_results" value="${dirs.nitriq_results}${path.separator}${project.name}.nitriq-results.html" />
26
28
 
27
- <property name="file.custom.step.before" value="${dirs.build_scripts_custom}\${file.current.no_extension}.pre.step" />
28
- <property name="file.custom.step.after" value="${dirs.build_scripts_custom}\${file.current.no_extension}.post.step" />
29
- <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}\${file.current.no_extension}.replace.step" />
29
+ <property name="file.custom.step.before" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.pre.step" />
30
+ <property name="file.custom.step.after" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.post.step" />
31
+ <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.replace.step" />
30
32
  <property name="is.replaced" value="false" />
31
33
  <property name="fail.build.on.error" value="false" />
32
34
 
@@ -34,8 +36,8 @@
34
36
 
35
37
  <target name="precheck">
36
38
  <echo message="Attempting to locate console edition of Nitriq." />
37
- <property name="app.nitriq" value="C:\Program Files (x86)\NimblePros\Nitriq Console + Pro\Nitriq.Console.exe" if="${not file::exists(app.nitriq)}" />
38
- <property name="app.nitriq" value="C:\Program Files\NimblePros\Nitriq Console + Pro\Nitriq.Console.exe" if="${not file::exists(app.nitriq)}" />
39
+ <property name="app.nitriq" value="C:${path.separator}Program Files (x86)${path.separator}NimblePros${path.separator}Nitriq Console + Pro\Nitriq.Console.exe" if="${not file::exists(app.nitriq)}" />
40
+ <property name="app.nitriq" value="C:${path.separator}Program Files${path.separator}NimblePros\Nitriq Console + Pro - Nitriq.Console.exe" if="${not file::exists(app.nitriq)}" />
39
41
  <call target="run_tasks" if="${file::exists(app.nitriq) and file::exists(files.nitriq_project)}" />
40
42
  </target>
41
43
 
@@ -93,13 +95,8 @@
93
95
  </target>
94
96
 
95
97
  <target name="open_results">
96
- <echo message="Opening results at ${file.html.nitriq_results}."/>
97
- <exec
98
- spawn="true"
99
- program="${environment::get-folder-path('ProgramFiles')}\Internet Explorer\iexplore.exe"
100
- commandline="${file.html.nitriq_results}"
101
- >
102
- </exec>
98
+ <echo message="Opening results - ${path::get-full-path(dirs.nitriq_results) + path.separator + file.html.nitriq_results}" />
99
+ <results display="${path::get-full-path(dirs.nitriq_results) + path.separator + file.html.nitriq_results}" />
103
100
  </target>
104
101
 
105
102
  <target name="custom_tasks_after">
@@ -4,34 +4,41 @@
4
4
  <!-- DO NOT EDIT THIS FILE - This follows a convention for testing with Integration tests being separated from Unit tests - find out more at http://uppercut.pbwiki.com -->
5
5
  <property name="build.config.settings" value="__NONE__" overwrite="false" />
6
6
  <include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
7
+ <property name="path.separator" value="${string::trim(path::combine(' ', ' '))}" />
8
+ <include buildfile="..${path.separator}csharp.functions" />
7
9
  <property name="file.current.no_extension" value="nunit.test" />
8
10
  <property name="dirs.current" value="${directory::get-parent-directory(project::get-buildfile-path())}" />
9
- <property name="path.to.toplevel" value="..\.." />
11
+ <property name="path.to.toplevel" value="..${path.separator}.." />
10
12
  <property name="folder.build_scripts" value="build" overwrite="false" />
11
13
  <property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
12
- <property name="dirs.build_scripts_custom" value="${dirs.current}\${path.to.toplevel}\${folder.build_scripts_custom}\analyzers" />
14
+ <property name="dirs.build_scripts_custom" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.build_scripts_custom}${path.separator}analyzers" />
13
15
  <property name="folder.code_build" value="build_output" overwrite="false" />
14
- <property name="dirs.build" value="${dirs.current}\${path.to.toplevel}\${folder.code_build}" />
16
+ <property name="dirs.build" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.code_build}" />
15
17
  <property name="folder.app.drop" value="${project.name}" overwrite="false" />
16
- <property name="dirs.build.code" value="${dirs.build}\${folder.app.drop}" overwrite="false" />
18
+ <property name="dirs.build.code" value="${dirs.build}${path.separator}${folder.app.drop}" overwrite="false" />
17
19
  <property name="folder.references" value="lib" overwrite="false" />
18
- <property name="dirs.lib" value="${dirs.current}\${path.to.toplevel}\${folder.references}" overwrite="false" />
20
+ <property name="dirs.lib" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.references}" overwrite="false" />
19
21
  <property name="microsoft.framework" value="net-3.5" overwrite="false" />
20
22
  <property name="folder.build_artifacts" value="build_artifacts" overwrite="false" />
21
- <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}\${folder.build_artifacts}" />
22
- <property name="dirs.test_results" value="${dirs.build_artifacts}\nunit" overwrite="false" />
23
+ <property name="dirs.build_artifacts" value="${path::get-full-path(dirs.build)}${path.separator}${folder.build_artifacts}" />
24
+ <property name="dirs.test_results" value="${dirs.build_artifacts}${path.separator}nunit" overwrite="false" />
23
25
  <property name="file.test_results" value="index" overwrite="false" />
24
26
  <property name="tests.excluded_categories.comma_separated" value="Database,Integration,Slow,NotWorking,Ignore,database,integration,slow,notworking,ignore" overwrite="false" />
25
- <property name="test.args" value="/xml=&quot;${dirs.test_results}\nunit-results.xml&quot; /nologo" />
26
- <!--property name="test.args" value="/xml=&quot;${dirs.test_results}\nunit-results.xml&quot; /nologo /framework=${microsoft.framework}" /-->
27
- <property name="test.args.exclude" value="/exclude=&quot;${tests.excluded_categories.comma_separated}&quot;" />
28
- <property name="app.nunit.console" value="${path::get-full-path(dirs.lib)}\NUnit\nunit-console.exe" overwrite="false" />
27
+ <property name="nunit.separator" value="--" if="${platform::is-unix()}" />
28
+ <property name="nunit.separator" value="/" if="${platform::is-windows()}" />
29
+ <property name="test.args.framework" value="" if="${platform::is-unix()}" />
30
+ <property name="test.args.framework" value="${nunit.separator}framework=${microsoft.framework}" if="${platform::is-windows()}" />
31
+ <property name="test.args" value="${nunit.separator}xml=&quot;${dirs.test_results}${path.separator}nunit-results.xml&quot; ${nunit.separator}nologo " />
32
+ <!--property name="test.args" value="${nunit.separator}xml=&quot;${dirs.test_results}${path.separator}nunit-results.xml&quot; ${nunit.separator}nologo ${test.args.framework}" /-->
33
+ <property name="test.args.exclude" value="${nunit.separator}exclude=&quot;${tests.excluded_categories.comma_separated}&quot;" />
34
+ <property name="app.nunit.console" value="${path::get-full-path(dirs.lib)}${path.separator}NUnit${path.separator}nunit-console.exe" overwrite="false" if="${platform::is-windows()}" />
35
+ <property name="app.nunit.console" value="nunit-console" overwrite="false" if="${platform::is-unix()}"/>
29
36
  <property name="dlls.test" value="" />
30
37
  <property name="tests.ran" value="false" />
31
38
 
32
- <property name="file.custom.step.before" value="${dirs.build_scripts_custom}\${file.current.no_extension}.pre.step" />
33
- <property name="file.custom.step.after" value="${dirs.build_scripts_custom}\${file.current.no_extension}.post.step" />
34
- <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}\${file.current.no_extension}.replace.step" />
39
+ <property name="file.custom.step.before" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.pre.step" />
40
+ <property name="file.custom.step.after" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.post.step" />
41
+ <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.replace.step" />
35
42
  <property name="is.replaced" value="false" />
36
43
  <property name="fail.build.on.error" value="true" />
37
44
 
@@ -93,16 +100,16 @@
93
100
  <foreach item="File" property="dll.filename">
94
101
  <in>
95
102
  <items>
96
- <exclude name="${dirs.build.code}\lib\**" />
97
- <exclude name="${dirs.build.code}\**\*Database*dll" />
98
- <exclude name="${dirs.build.code}\**\*.Integration*dll" />
99
- <exclude name="${dirs.build.code}\**\TestFu.dll" />
100
- <include name="${dirs.build.code}\**\*Test*dll" />
101
- <include name="${dirs.build.code}\**\*Spec*dll" />
103
+ <exclude name="${dirs.build.code}${path.separator}lib${path.separator}**" />
104
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}*Database*dll" />
105
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}*.Integration*dll" />
106
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}TestFu.dll" />
107
+ <include name="${dirs.build.code}${path.separator}**${path.separator}*Test*dll" />
108
+ <include name="${dirs.build.code}${path.separator}**${path.separator}*Spec*dll" />
102
109
  </items>
103
110
  </in>
104
111
  <do>
105
- <property name="dll.names" value="${dll.names + ' ' + string::replace(dll.filename,path::get-full-path(dirs.build.code) + '\','') + ''}" />
112
+ <property name="dll.names" value="${dll.names + ' ' + string::replace(string::replace(dll.filename,path::get-full-path(dirs.build.code) + '\',''),'\',path.separator) + ''}" />
106
113
  </do>
107
114
  </foreach>
108
115
 
@@ -118,14 +125,14 @@
118
125
  <foreach item="File" property="dll.filename">
119
126
  <in>
120
127
  <items>
121
- <exclude name="${dirs.build.code}\lib\**" />
122
- <exclude name="${dirs.build.code}\**\TestFu.dll" />
123
- <include name="${dirs.build.code}\**\*Test*dll" />
124
- <include name="${dirs.build.code}\**\*Spec*dll" />
128
+ <exclude name="${dirs.build.code}${path.separator}lib${path.separator}**" />
129
+ <exclude name="${dirs.build.code}${path.separator}**${path.separator}TestFu.dll" />
130
+ <include name="${dirs.build.code}${path.separator}**${path.separator}*Test*dll" />
131
+ <include name="${dirs.build.code}${path.separator}**${path.separator}*Spec*dll" />
125
132
  </items>
126
133
  </in>
127
134
  <do>
128
- <property name="dll.names" value="${dll.names + ' ' + string::replace(dll.filename,path::get-full-path(dirs.build.code) + '\','') + ''}" />
135
+ <property name="dll.names" value="${dll.names + ' ' + string::replace(string::replace(dll.filename,path::get-full-path(dirs.build.code) + '\',''),'\',path.separator) + ''}" />
129
136
  </do>
130
137
  </foreach>
131
138
 
@@ -139,7 +146,6 @@
139
146
 
140
147
  <if test="${dlls.test !=''}">
141
148
  <echo message="Running tests using NUnit and putting results in ${dirs.test_results}."/>
142
-
143
149
  <exec
144
150
  program="${app.nunit.console}"
145
151
  workingdir="${dirs.build.code}"
@@ -147,7 +153,6 @@
147
153
  <arg value="${args.test_runner}" />
148
154
  </exec>
149
155
  <property name="tests.ran" value="true" />
150
-
151
156
  </if>
152
157
  <if test="${dlls.test ==''}">
153
158
  <echo message="No test dlls to run against" />
@@ -159,20 +164,15 @@
159
164
  <if test="${tests.ran}">
160
165
  <nunit2report todir="${dirs.test_results}" failonerror="false" >
161
166
  <fileset>
162
- <include name="${dirs.test_results}\*-results.xml"/>
167
+ <include name="${dirs.test_results}${path.separator}*-results.xml"/>
163
168
  </fileset>
164
169
  </nunit2report>
165
170
  </if>
166
171
  </target>
167
-
172
+
168
173
  <target name="open_results">
169
- <echo message="Opening results at ${path::get-full-path(dirs.test_results)}\${file.test_results}.html."/>
170
- <exec
171
- spawn="true"
172
- program="${environment::get-folder-path('ProgramFiles')}\Internet Explorer\iexplore.exe"
173
- commandline="${path::get-full-path(dirs.test_results)}\${file.test_results}.html"
174
- >
175
- </exec>
174
+ <echo message="Opening results - ${path::get-full-path(dirs.test_results) + path.separator + file.test_results + '.html'}" />
175
+ <results display="${path::get-full-path(dirs.test_results) + path.separator + file.test_results + '.html'}" />
176
176
  </target>
177
177
 
178
178
  <target name="custom_tasks_after">
@@ -1,99 +1,100 @@
1
- <?xml version="1.0" encoding="utf-8" ?>
2
- <project name="TestRunner" default="go">
3
- <!-- Project UppercuT - http://projectuppercut.org -->
4
- <!-- DO NOT EDIT THIS FILE - This follows a convention for testing with Integration tests being separated from Unit tests - find out more at http://uppercut.pbwiki.com -->
5
- <property name="build.config.settings" value="__NONE__" overwrite="false" />
6
- <include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
7
- <property name="file.current.no_extension" value="test" />
8
- <property name="dirs.current" value="${directory::get-parent-directory(project::get-buildfile-path())}" />
9
- <property name="path.to.toplevel" value="..\.." />
10
- <property name="folder.build_scripts" value="build" overwrite="false" />
11
- <property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
12
- <property name="dirs.build_scripts_custom" value="${dirs.current}\${path.to.toplevel}\${folder.build_scripts_custom}\analyzers" />
13
- <property name="folder.code_build" value="build_output" overwrite="false" />
14
- <property name="dirs.build" value="${dirs.current}\${path.to.toplevel}\${folder.code_build}" />
15
- <property name="folder.app.drop" value="${project.name}" overwrite="false" />
16
- <property name="dirs.build.code" value="${dirs.build}\${folder.app.drop}" overwrite="false" />
17
- <property name="test.framework" value="mbunit" overwrite="false" />
18
- <property name="file.custom.step.before" value="${dirs.build_scripts_custom}\${file.current.no_extension}.pre.step" />
19
- <property name="file.custom.step.after" value="${dirs.build_scripts_custom}\${file.current.no_extension}.post.step" />
20
- <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}\${file.current.no_extension}.replace.step" />
21
- <property name="is.replaced" value="false" />
22
- <property name="fail.build.on.error" value="true" />
23
-
24
- <target name="go" depends="run_tasks" />
25
-
26
- <target name="run_tasks">
27
- <echo message="Running ${project::get-name()} tasks." />
28
- <call target="prepare" if="${target::exists('prepare')}" />
29
- <call target="custom_tasks_before" if="${target::exists('custom_tasks_before')}" />
30
- <call target="custom_tasks_replace" if="${target::exists('custom_tasks_replace')}" />
31
- <call target="run_normal_tasks" if="${not is.replaced}" />
32
- <call target="custom_tasks_after" if="${target::exists('custom_tasks_after')}" />
33
- </target>
34
-
35
- <target name="run_normal_tasks"
36
- depends="run_tests"
37
- description="Testing project for quality." />
38
-
39
- <target name="custom_tasks_before">
40
- <echo message="Running custom tasks if ${file.custom.step.before} exists." />
41
- <nant buildfile="${file.custom.step.before}" inheritall="true" if="${file::exists(file.custom.step.before)}" failonerror="${fail.build.on.error}" />
42
- <exec program="powershell.exe" if="${file::exists(file.custom.step.before + '.ps1')}" failonerror="${fail.build.on.error}">
43
- <arg value="${path::get-full-path(file.custom.step.before + '.ps1')}" />
44
- </exec>
45
- <exec program="ruby.exe" if="${file::exists(file.custom.step.before + '.rb')}" failonerror="${fail.build.on.error}">
46
- <arg value="${path::get-full-path(file.custom.step.before + '.rb')}" />
47
- </exec>
48
- </target>
49
-
50
- <target name="custom_tasks_replace">
51
- <echo message="Running custom tasks instead of normal tasks if ${file.custom.step.replace} exists." />
52
- <property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace)}" />
53
- <nant buildfile="${file.custom.step.replace}" inheritall="true" if="${file::exists(file.custom.step.replace)}" failonerror="${fail.build.on.error}" />
54
- <property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace + '.ps1')}" />
55
- <exec program="powershell.exe" if="${file::exists(file.custom.step.replace + '.ps1')}" failonerror="${fail.build.on.error}" >
56
- <arg value="${path::get-full-path(file.custom.step.replace + '.ps1')}" />
57
- </exec>
58
- <property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace + '.rb')}" />
59
- <exec program="ruby.exe" if="${file::exists(file.custom.step.replace + '.rb')}" failonerror="${fail.build.on.error}" >
60
- <arg value="${path::get-full-path(file.custom.step.replace + '.rb')}" />
61
- </exec>
62
- </target>
63
-
64
- <target name="run_tests">
65
- <nant buildfile="${dirs.current}\mbunit2.test.step" inheritall="true" if="${test.framework=='mbunit2'}" />
66
- <nant buildfile="${dirs.current}\gallio.test.step" inheritall="true" if="${test.framework=='gallio'}" />
67
- <nant buildfile="${dirs.current}\nunit.test.step" inheritall="true" if="${test.framework=='nunit'}" />
68
- <call target="set_normal_failure_mode" />
69
- </target>
70
-
71
- <target name="all">
72
- <nant buildfile="${dirs.current}\mbunit2.test.step" target="run_all_tests" inheritall="true" if="${test.framework=='mbunit2'}" />
73
- <nant buildfile="${dirs.current}\gallio.test.step" target="run_all_tests" inheritall="true" if="${test.framework=='gallio'}" />
74
- <nant buildfile="${dirs.current}\nunit.test.step" target="run_all_tests" inheritall="true" if="${test.framework=='nunit'}" />
75
- <call target="set_normal_failure_mode" />
76
- </target>
77
-
78
- <target name="open_results">
79
- <nant buildfile="${dirs.current}\mbunit2.test.step" target="open_results" inheritall="true" if="${test.framework=='mbunit2'}" />
80
- <nant buildfile="${dirs.current}\gallio.test.step" target="open_results" inheritall="true" if="${test.framework=='gallio'}" />
81
- <nant buildfile="${dirs.current}\nunit.test.step" target="open_results" inheritall="true" if="${test.framework=='nunit'}" />
82
- </target>
83
-
84
- <target name="set_normal_failure_mode">
85
- <property name="nant.onfailure" value="fail" />
86
- </target>
87
-
88
- <target name="custom_tasks_after">
89
- <echo message="Running custom tasks if ${file.custom.step.after} exists." />
90
- <nant buildfile="${file.custom.step.after}" inheritall="true" if="${file::exists(file.custom.step.after)}" failonerror="${fail.build.on.error}" />
91
- <exec program="powershell.exe" if="${file::exists(file.custom.step.after + '.ps1')}" failonerror="${fail.build.on.error}" >
92
- <arg value="${path::get-full-path(file.custom.step.after + '.ps1')}" />
93
- </exec>
94
- <exec program="ruby.exe" if="${file::exists(file.custom.step.after + '.rb')}" failonerror="${fail.build.on.error}" >
95
- <arg value="${path::get-full-path(file.custom.step.after + '.rb')}" />
96
- </exec>
97
- </target>
98
-
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <project name="TestRunner" default="go">
3
+ <!-- Project UppercuT - http://projectuppercut.org -->
4
+ <!-- DO NOT EDIT THIS FILE - This follows a convention for testing with Integration tests being separated from Unit tests - find out more at http://uppercut.pbwiki.com -->
5
+ <property name="build.config.settings" value="__NONE__" overwrite="false" />
6
+ <include buildfile="${build.config.settings}" if="${file::exists(build.config.settings)}" />
7
+ <property name="path.separator" value="${string::trim(path::combine(' ', ' '))}" />
8
+ <property name="file.current.no_extension" value="test" />
9
+ <property name="dirs.current" value="${directory::get-parent-directory(project::get-buildfile-path())}" />
10
+ <property name="path.to.toplevel" value="..${path.separator}.." />
11
+ <property name="folder.build_scripts" value="build" overwrite="false" />
12
+ <property name="folder.build_scripts_custom" value="build.custom" overwrite="false" />
13
+ <property name="dirs.build_scripts_custom" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.build_scripts_custom}${path.separator}analyzers" />
14
+ <property name="folder.code_build" value="build_output" overwrite="false" />
15
+ <property name="dirs.build" value="${dirs.current}${path.separator}${path.to.toplevel}${path.separator}${folder.code_build}" />
16
+ <property name="folder.app.drop" value="${project.name}" overwrite="false" />
17
+ <property name="dirs.build.code" value="${dirs.build}${path.separator}${folder.app.drop}" overwrite="false" />
18
+ <property name="test.framework" value="mbunit" overwrite="false" />
19
+ <property name="file.custom.step.before" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.pre.step" />
20
+ <property name="file.custom.step.after" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.post.step" />
21
+ <property name="file.custom.step.replace" value="${dirs.build_scripts_custom}${path.separator}${file.current.no_extension}.replace.step" />
22
+ <property name="is.replaced" value="false" />
23
+ <property name="fail.build.on.error" value="true" />
24
+
25
+ <target name="go" depends="run_tasks" />
26
+
27
+ <target name="run_tasks">
28
+ <echo message="Running ${project::get-name()} tasks." />
29
+ <call target="prepare" if="${target::exists('prepare')}" />
30
+ <call target="custom_tasks_before" if="${target::exists('custom_tasks_before')}" />
31
+ <call target="custom_tasks_replace" if="${target::exists('custom_tasks_replace')}" />
32
+ <call target="run_normal_tasks" if="${not is.replaced}" />
33
+ <call target="custom_tasks_after" if="${target::exists('custom_tasks_after')}" />
34
+ </target>
35
+
36
+ <target name="run_normal_tasks"
37
+ depends="run_tests"
38
+ description="Testing project for quality." />
39
+
40
+ <target name="custom_tasks_before">
41
+ <echo message="Running custom tasks if ${file.custom.step.before} exists." />
42
+ <nant buildfile="${file.custom.step.before}" inheritall="true" if="${file::exists(file.custom.step.before)}" failonerror="${fail.build.on.error}" />
43
+ <exec program="powershell.exe" if="${file::exists(file.custom.step.before + '.ps1')}" failonerror="${fail.build.on.error}">
44
+ <arg value="${path::get-full-path(file.custom.step.before + '.ps1')}" />
45
+ </exec>
46
+ <exec program="ruby.exe" if="${file::exists(file.custom.step.before + '.rb')}" failonerror="${fail.build.on.error}">
47
+ <arg value="${path::get-full-path(file.custom.step.before + '.rb')}" />
48
+ </exec>
49
+ </target>
50
+
51
+ <target name="custom_tasks_replace">
52
+ <echo message="Running custom tasks instead of normal tasks if ${file.custom.step.replace} exists." />
53
+ <property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace)}" />
54
+ <nant buildfile="${file.custom.step.replace}" inheritall="true" if="${file::exists(file.custom.step.replace)}" failonerror="${fail.build.on.error}" />
55
+ <property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace + '.ps1')}" />
56
+ <exec program="powershell.exe" if="${file::exists(file.custom.step.replace + '.ps1')}" failonerror="${fail.build.on.error}" >
57
+ <arg value="${path::get-full-path(file.custom.step.replace + '.ps1')}" />
58
+ </exec>
59
+ <property name="is.replaced" value="true" if="${file::exists(file.custom.step.replace + '.rb')}" />
60
+ <exec program="ruby.exe" if="${file::exists(file.custom.step.replace + '.rb')}" failonerror="${fail.build.on.error}" >
61
+ <arg value="${path::get-full-path(file.custom.step.replace + '.rb')}" />
62
+ </exec>
63
+ </target>
64
+
65
+ <target name="run_tests">
66
+ <nant buildfile="${dirs.current}${path.separator}mbunit2.test.step" inheritall="true" if="${test.framework=='mbunit2'}" />
67
+ <nant buildfile="${dirs.current}${path.separator}gallio.test.step" inheritall="true" if="${test.framework=='gallio'}" />
68
+ <nant buildfile="${dirs.current}${path.separator}nunit.test.step" inheritall="true" if="${test.framework=='nunit'}" />
69
+ <call target="set_normal_failure_mode" />
70
+ </target>
71
+
72
+ <target name="all">
73
+ <nant buildfile="${dirs.current}${path.separator}mbunit2.test.step" target="run_all_tests" inheritall="true" if="${test.framework=='mbunit2'}" />
74
+ <nant buildfile="${dirs.current}${path.separator}gallio.test.step" target="run_all_tests" inheritall="true" if="${test.framework=='gallio'}" />
75
+ <nant buildfile="${dirs.current}${path.separator}nunit.test.step" target="run_all_tests" inheritall="true" if="${test.framework=='nunit'}" />
76
+ <call target="set_normal_failure_mode" />
77
+ </target>
78
+
79
+ <target name="open_results">
80
+ <nant buildfile="${dirs.current}${path.separator}mbunit2.test.step" target="open_results" inheritall="true" if="${test.framework=='mbunit2'}" />
81
+ <nant buildfile="${dirs.current}${path.separator}gallio.test.step" target="open_results" inheritall="true" if="${test.framework=='gallio'}" />
82
+ <nant buildfile="${dirs.current}${path.separator}nunit.test.step" target="open_results" inheritall="true" if="${test.framework=='nunit'}" />
83
+ </target>
84
+
85
+ <target name="set_normal_failure_mode">
86
+ <property name="nant.onfailure" value="fail" />
87
+ </target>
88
+
89
+ <target name="custom_tasks_after">
90
+ <echo message="Running custom tasks if ${file.custom.step.after} exists." />
91
+ <nant buildfile="${file.custom.step.after}" inheritall="true" if="${file::exists(file.custom.step.after)}" failonerror="${fail.build.on.error}" />
92
+ <exec program="powershell.exe" if="${file::exists(file.custom.step.after + '.ps1')}" failonerror="${fail.build.on.error}" >
93
+ <arg value="${path::get-full-path(file.custom.step.after + '.ps1')}" />
94
+ </exec>
95
+ <exec program="ruby.exe" if="${file::exists(file.custom.step.after + '.rb')}" failonerror="${fail.build.on.error}" >
96
+ <arg value="${path::get-full-path(file.custom.step.after + '.rb')}" />
97
+ </exec>
98
+ </target>
99
+
99
100
  </project>