uppercutbuild 0.9.0.346.20100805 → 1.0.0.0.20100806

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>