rake-dotnet 0.1.17 → 0.1.18

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.
@@ -1,3 +1,10 @@
1
+ === 0.1.18 / 2009-11-26
2
+
3
+ CHANGE: NCover - support regular license-holders by removing automatic use of features that require complete license
4
+ ADD: NCover - add ability to profile IIS
5
+ CHANGE: Remove install dependencies on rcov, rspec but update documentation with build-from-source
6
+ ADD: Xunit - can now run eg `rake xunit['xt-Foo.Unit.Tests']` to run xunit against Foo.Unit.Tests project, instead of needing to run `rake xunit['out/reports/Foo.Unit.Tests/']`
7
+
1
8
  === 0.1.17 / 2009-11-10
2
9
 
3
10
  FIX: Typos :-(
@@ -71,17 +71,9 @@ Example: [{github}/presentation/DemoRoot](http://github.com/petemounce/rake-dotn
71
71
  (In no particular order)
72
72
 
73
73
  * rdoc documentation to supplement blog'd about
74
- * unit-tests
75
74
  * Support other test-runners - nunit, mbunit, gallio
76
- * unit-tests!
77
- * Support code-coverage runner(s) - ncover 1.68 (?), ncover 3, partcover
78
- * unit-tests!!
79
- * Support clone-detective...?
80
- * unit-tests!!!
81
75
  * Support other source-controls to get build version number - mercurial, cvs(?), TFS. Or just read it from an environment variable that assumes we're within a CI build.
82
- * unit-tests!!!!
83
76
  * Support changing the conventions to allow users to specify their own source structure
84
- * unit-tests
85
77
  * Provide an InstallPad for the 3rdparty bits
86
78
 
87
79
  ## Requirements:
@@ -98,6 +90,10 @@ Example: [{github}/presentation/DemoRoot](http://github.com/petemounce/rake-dotn
98
90
  3. Fetch the 3rdparty dependencies listed in [{github}/presentation/DemoRoot/3rdparty/readme.txt](http://github.com/petemounce/rake-dotnet/tree/master/)
99
91
  * rake-dotnet uses tools within the paths taken from the default unzip'd location. For example, svn.exe is expected to live within #{TOOLS_DIR}/svn/bin because that's how svn zip files unzip
100
92
 
93
+ ## Build from source:
94
+ 1. `gem install rcov rspec diff-lcs` (again, prepend `sudo` if you're not on Windows)
95
+ 2. `rake
96
+
101
97
  ## License:
102
98
 
103
99
  (The MIT License)
@@ -6,7 +6,7 @@ require 'Pathname'
6
6
  require 'rake/clean'
7
7
 
8
8
  Hoe.spec 'rake-dotnet' do |p|
9
- p.version = '0.1.17'
9
+ p.version = '0.1.18'
10
10
  p.author = 'Peter Mounce'
11
11
  p.description = 'Making a .NET build-automation dev\'s life easier, one angle-bracket at a time'
12
12
  p.email = 'public@neverrunwithscissors.com'
@@ -15,9 +15,6 @@ Hoe.spec 'rake-dotnet' do |p|
15
15
  p.developer('Peter Mounce', 'public@neverrunwithscissors.com')
16
16
  p.remote_rdoc_dir = ''
17
17
  p.extra_deps << ['rake', '>= 0.8.3']
18
- p.extra_deps << ['rspec', '>= 1.2.9']
19
- p.extra_deps << ['rcov', '>= 0.8.1']
20
- p.extra_deps << ['diff-lcs', '>= 1.1.2']
21
18
  p.url = 'http://blog.neverrunwithscissors.com/tag/rake-dotnet'
22
19
  end
23
20
 
@@ -148,7 +148,7 @@ table.report tr.dark {
148
148
  </script>
149
149
  </head>
150
150
  <body><h3>C0 code coverage information</h3>
151
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
151
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
152
152
  </p>
153
153
  <hr/>
154
154
  <table class='report'><thead><tr><td class='heading'>Name</td>
@@ -159,24 +159,24 @@ table.report tr.dark {
159
159
  </tr>
160
160
  </thead>
161
161
  <tbody><tr class='light'><td>TOTAL</td>
162
- <td class='lines_total'><tt>1218</tt>
162
+ <td class='lines_total'><tt>1267</tt>
163
163
  </td>
164
- <td class='lines_code'><tt>1005</tt>
164
+ <td class='lines_code'><tt>1049</tt>
165
165
  </td>
166
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>38.4%</tt>
166
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>37.1%</tt>
167
167
  &nbsp;</td>
168
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='38'/>
169
- <td class='uncovered' width='62'/>
168
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='37'/>
169
+ <td class='uncovered' width='63'/>
170
170
  </tr>
171
171
  </table>
172
172
  </td>
173
173
  </tr>
174
174
  </table>
175
175
  </td>
176
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>32.2%</tt>
176
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>31.0%</tt>
177
177
  &nbsp;</td>
178
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='32'/>
179
- <td class='uncovered' width='68'/>
178
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='31'/>
179
+ <td class='uncovered' width='69'/>
180
180
  </tr>
181
181
  </table>
182
182
  </td>
@@ -375,24 +375,24 @@ table.report tr.dark {
375
375
  </tr>
376
376
  <tr class='light'><td><a href='lib-ncover_rb.html'>lib/ncover.rb</a>
377
377
  </td>
378
- <td class='lines_total'><tt>163</tt>
378
+ <td class='lines_total'><tt>204</tt>
379
379
  </td>
380
- <td class='lines_code'><tt>131</tt>
380
+ <td class='lines_code'><tt>168</tt>
381
381
  </td>
382
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>24.5%</tt>
382
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>20.6%</tt>
383
383
  &nbsp;</td>
384
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='25'/>
385
- <td class='uncovered' width='75'/>
384
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='21'/>
385
+ <td class='uncovered' width='79'/>
386
386
  </tr>
387
387
  </table>
388
388
  </td>
389
389
  </tr>
390
390
  </table>
391
391
  </td>
392
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>16.8%</tt>
392
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>13.7%</tt>
393
393
  &nbsp;</td>
394
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='17'/>
395
- <td class='uncovered' width='83'/>
394
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='14'/>
395
+ <td class='uncovered' width='86'/>
396
396
  </tr>
397
397
  </table>
398
398
  </td>
@@ -537,24 +537,24 @@ table.report tr.dark {
537
537
  </tr>
538
538
  <tr class='light'><td><a href='lib-xunit_rb.html'>lib/xunit.rb</a>
539
539
  </td>
540
- <td class='lines_total'><tt>117</tt>
540
+ <td class='lines_total'><tt>125</tt>
541
541
  </td>
542
- <td class='lines_code'><tt>95</tt>
542
+ <td class='lines_code'><tt>102</tt>
543
543
  </td>
544
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>29.1%</tt>
544
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>27.2%</tt>
545
545
  &nbsp;</td>
546
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='29'/>
547
- <td class='uncovered' width='71'/>
546
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='27'/>
547
+ <td class='uncovered' width='73'/>
548
548
  </tr>
549
549
  </table>
550
550
  </td>
551
551
  </tr>
552
552
  </table>
553
553
  </td>
554
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>18.9%</tt>
554
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>17.6%</tt>
555
555
  &nbsp;</td>
556
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='19'/>
557
- <td class='uncovered' width='81'/>
556
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='18'/>
557
+ <td class='uncovered' width='82'/>
558
558
  </tr>
559
559
  </table>
560
560
  </td>
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:31 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -553,7 +553,7 @@ span.run100 {
553
553
  </style>
554
554
  </head>
555
555
  <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Tue Nov 10 16:51:32 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
556
+ <p>Generated on Thu Nov 26 13:59:06 +0000 2009 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
557
  </p>
558
558
  <hr/>
559
559
  <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
@@ -571,24 +571,24 @@ span.run100 {
571
571
  </thead>
572
572
  <tbody><tr class='light'><td><a href='lib-ncover_rb.html'>lib/ncover.rb</a>
573
573
  </td>
574
- <td class='lines_total'><tt>163</tt>
574
+ <td class='lines_total'><tt>204</tt>
575
575
  </td>
576
- <td class='lines_code'><tt>131</tt>
576
+ <td class='lines_code'><tt>168</tt>
577
577
  </td>
578
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>24.5%</tt>
578
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>20.6%</tt>
579
579
  &nbsp;</td>
580
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='25'/>
581
- <td class='uncovered' width='75'/>
580
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='21'/>
581
+ <td class='uncovered' width='79'/>
582
582
  </tr>
583
583
  </table>
584
584
  </td>
585
585
  </tr>
586
586
  </table>
587
587
  </td>
588
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>16.8%</tt>
588
+ <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>13.7%</tt>
589
589
  &nbsp;</td>
590
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='17'/>
591
- <td class='uncovered' width='83'/>
590
+ <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='14'/>
591
+ <td class='uncovered' width='86'/>
592
592
  </tr>
593
593
  </table>
594
594
  </td>
@@ -624,143 +624,184 @@ span.run100 {
624
624
  </span><span class="uncovered0"><a name="line24"></a> 24 reports_dir_regex = RakeDotNet::regexify(@report_dir)
625
625
  </span><span class="uncovered1"><a name="line25"></a> 25 rule(/#{reports_dir_regex}\/.*\.coverage\.xml/) do |r|
626
626
  </span><span class="uncovered0"><a name="line26"></a> 26 dll_to_execute = r.name.sub(/#{@report_dir}\/(.*)\.coverage\.xml/, &quot;#{@bin_dir}/\\1.dll&quot;)
627
- </span><span class="uncovered1"><a name="line27"></a> 27 nc = NCoverConsoleCmd.new(@report_dir, dll_to_execute, @profile_options)
628
- </span><span class="uncovered0"><a name="line28"></a> 28 nc.run
629
- </span><span class="uncovered1"><a name="line29"></a> 29 end
630
- </span><span class="uncovered0"><a name="line30"></a> 30
631
- </span><span class="uncovered1"><a name="line31"></a> 31 desc &quot;Generate ncover coverage XML, one file per test-suite that exercises your product&quot;
632
- </span><span class="uncovered0"><a name="line32"></a> 32 task :ncover_profile, [:dlls_to_run] =&gt; [@report_dir] do |t, args|
633
- </span><span class="uncovered1"><a name="line33"></a> 33 dlls_to_run_list = FileList.new
634
- </span><span class="uncovered0"><a name="line34"></a> 34 dlls_to_run_list.include(&quot;#{@bin_dir}/**/*#{@product_name}*Tests*.dll&quot;)
635
- </span><span class="uncovered1"><a name="line35"></a> 35 dlls_to_run_list.include(&quot;#{@bin_dir}/**/*#{@product_name}*Tests*.exe&quot;)
636
- </span><span class="uncovered0"><a name="line36"></a> 36 args.with_defaults(:dlls_to_run =&gt; dlls_to_run_list)
637
- </span><span class="uncovered1"><a name="line37"></a> 37 args.dlls_to_run.each do |d|
638
- </span><span class="uncovered0"><a name="line38"></a> 38 dll_to_run = Pathname.new(d)
639
- </span><span class="uncovered1"><a name="line39"></a> 39 cf_name = dll_to_run.basename.sub(dll_to_run.extname, '.coverage.xml')
640
- </span><span class="uncovered0"><a name="line40"></a> 40 coverage_file = File.join(@report_dir, cf_name)
641
- </span><span class="uncovered1"><a name="line41"></a> 41 Rake::FileTask[coverage_file].invoke
642
- </span><span class="uncovered0"><a name="line42"></a> 42 end
643
- </span><span class="uncovered1"><a name="line43"></a> 43
644
- </span><span class="uncovered0"><a name="line44"></a> 44 end
645
- </span><span class="uncovered1"><a name="line45"></a> 45
646
- </span><span class="uncovered0"><a name="line46"></a> 46 desc &quot;Generate ncover coverage report(s), on all coverage files, merged together&quot;
647
- </span><span class="uncovered1"><a name="line47"></a> 47 task :ncover_reports =&gt; [:ncover_profile] do
648
- </span><span class="uncovered0"><a name="line48"></a> 48 # ncover lets us use *.coverage.xml to merge together files
649
- </span><span class="uncovered1"><a name="line49"></a> 49 include = [File.join(@report_dir, '*.coverage.xml')]
650
- </span><span class="uncovered0"><a name="line50"></a> 50 @reporting_options[:name] = 'merged'
651
- </span><span class="uncovered1"><a name="line51"></a> 51 ncr = NCoverReportingCmd.new(@report_dir, include, @reporting_options)
652
- </span><span class="uncovered0"><a name="line52"></a> 52 ncr.run
653
- </span><span class="uncovered1"><a name="line53"></a> 53 end
654
- </span><span class="uncovered0"><a name="line54"></a> 54
655
- </span><span class="uncovered1"><a name="line55"></a> 55 task :clobber_ncover do
656
- </span><span class="uncovered0"><a name="line56"></a> 56 rm_rf @report_dir
657
- </span><span class="uncovered1"><a name="line57"></a> 57 end
658
- </span><span class="uncovered0"><a name="line58"></a> 58
659
- </span><span class="uncovered1"><a name="line59"></a> 59 self
660
- </span><span class="uncovered0"><a name="line60"></a> 60 end
661
- </span><span class="uncovered1"><a name="line61"></a> 61 end
662
- </span><span class="inferred0"><a name="line62"></a> 62
663
- </span><span class="marked1"><a name="line63"></a> 63 class NCoverConsoleCmd
664
- </span><span class="marked0"><a name="line64"></a> 64 def initialize(report_dir, dll_to_execute, params)
665
- </span><span class="uncovered1"><a name="line65"></a> 65 params ||= {}
666
- </span><span class="uncovered0"><a name="line66"></a> 66 arch = params[:arch] || ENV['PROCESSOR_ARCHITECTURE']
667
- </span><span class="uncovered1"><a name="line67"></a> 67 @exe = params[:ncover_exe] || File.join(TOOLS_DIR, 'ncover', arch, 'ncover.console.exe')
668
- </span><span class="uncovered0"><a name="line68"></a> 68 @dll_to_execute = dll_to_execute
669
- </span><span class="uncovered1"><a name="line69"></a> 69 ofname = File.split(dll_to_execute)[1].sub(/(\.dll)/, '') + '.coverage.xml'
670
- </span><span class="uncovered0"><a name="line70"></a> 70 @output_file = File.join(report_dir, ofname)
671
- </span><span class="uncovered1"><a name="line71"></a> 71 @exclude_assemblies_regex = params[:exclude_assemblies_regex] || ['.*Tests.*']
672
- </span><span class="uncovered0"><a name="line72"></a> 72 @exclude_assemblies_regex.push('ISymWrapper')
673
- </span><span class="uncovered1"><a name="line73"></a> 73 @working_dir = params[:working_dir] || Pathname.new(@dll_to_execute).dirname
674
- </span><span class="uncovered0"><a name="line74"></a> 74 end
675
- </span><span class="inferred1"><a name="line75"></a> 75
676
- </span><span class="marked0"><a name="line76"></a> 76 def cmdToRun
677
- </span><span class="uncovered1"><a name="line77"></a> 77 x = XUnitConsoleCmd.new(@dll_to_execute, '', nil, {})
678
- </span><span class="uncovered0"><a name="line78"></a> 78 x.cmd
679
- </span><span class="uncovered1"><a name="line79"></a> 79 end
680
- </span><span class="inferred0"><a name="line80"></a> 80
681
- </span><span class="marked1"><a name="line81"></a> 81 def bi
682
- </span><span class="uncovered0"><a name="line82"></a> 82 &quot;//bi #{Versioner.new.get.to_s}&quot;
683
- </span><span class="uncovered1"><a name="line83"></a> 83 end
684
- </span><span class="inferred0"><a name="line84"></a> 84
685
- </span><span class="marked1"><a name="line85"></a> 85 def working_dir
686
- </span><span class="uncovered0"><a name="line86"></a> 86 &quot;//w #{@working_dir}&quot;
687
- </span><span class="uncovered1"><a name="line87"></a> 87 end
688
- </span><span class="inferred0"><a name="line88"></a> 88
689
- </span><span class="marked1"><a name="line89"></a> 89 def exclude_assemblies
690
- </span><span class="uncovered0"><a name="line90"></a> 90 if @exclude_assemblies_regex.instance_of?(Array)
691
- </span><span class="uncovered1"><a name="line91"></a> 91 return '//eas ' + @exclude_assemblies_regex.join(';')
692
- </span><span class="uncovered0"><a name="line92"></a> 92 end
693
- </span><span class="uncovered1"><a name="line93"></a> 93 return '//eas ' + @exclude_assemblies_regex if @exclude_assemblies_regex.instance_of?(String)
694
- </span><span class="uncovered0"><a name="line94"></a> 94 end
695
- </span><span class="inferred1"><a name="line95"></a> 95
696
- </span><span class="marked0"><a name="line96"></a> 96 def cmd
697
- </span><span class="uncovered1"><a name="line97"></a> 97 &quot;\&quot;#{@exe}\&quot; #{cmdToRun} //x #{@output_file} #{exclude_assemblies} #{bi} #{working_dir}&quot;
698
- </span><span class="uncovered0"><a name="line98"></a> 98 end
699
- </span><span class="inferred1"><a name="line99"></a> 99
700
- </span><span class="marked0"><a name="line100"></a>100 def run
701
- </span><span class="uncovered1"><a name="line101"></a>101 puts cmd if VERBOSE
702
- </span><span class="uncovered0"><a name="line102"></a>102 sh cmd
703
- </span><span class="uncovered1"><a name="line103"></a>103 end
704
- </span><span class="uncovered0"><a name="line104"></a>104 end
627
+ </span><span class="uncovered1"><a name="line27"></a> 27 if (shouldProfileIis(dll_to_execute))
628
+ </span><span class="uncovered0"><a name="line28"></a> 28 @profile_options[:profile_iis] = true
629
+ </span><span class="uncovered1"><a name="line29"></a> 29 end
630
+ </span><span class="uncovered0"><a name="line30"></a> 30 nc = NCoverConsoleCmd.new(@report_dir, dll_to_execute, @profile_options)
631
+ </span><span class="uncovered1"><a name="line31"></a> 31 nc.run
632
+ </span><span class="uncovered0"><a name="line32"></a> 32 end
633
+ </span><span class="uncovered1"><a name="line33"></a> 33
634
+ </span><span class="uncovered0"><a name="line34"></a> 34 def shouldProfileIis(dll)
635
+ </span><span class="uncovered1"><a name="line35"></a> 35 dll = dll.downcase
636
+ </span><span class="uncovered0"><a name="line36"></a> 36 return true if dll.include? 'functional'
637
+ </span><span class="uncovered1"><a name="line37"></a> 37 return true if dll.include? 'browser'
638
+ </span><span class="uncovered0"><a name="line38"></a> 38 return true if dll.include? 'selenium'
639
+ </span><span class="uncovered1"><a name="line39"></a> 39 return true if dll.include? 'watin'
640
+ </span><span class="uncovered0"><a name="line40"></a> 40 return false
641
+ </span><span class="uncovered1"><a name="line41"></a> 41 end
642
+ </span><span class="uncovered0"><a name="line42"></a> 42
643
+ </span><span class="uncovered1"><a name="line43"></a> 43 desc &quot;Generate ncover coverage XML, one file per test-suite that exercises your product&quot;
644
+ </span><span class="uncovered0"><a name="line44"></a> 44 task :ncover_profile, [:dlls_to_run] =&gt; [@report_dir] do |t, args|
645
+ </span><span class="uncovered1"><a name="line45"></a> 45 dlls_to_run_list = FileList.new
646
+ </span><span class="uncovered0"><a name="line46"></a> 46 dlls_to_run_list.include(&quot;#{@bin_dir}/**/*#{@product_name}*Tests*.dll&quot;)
647
+ </span><span class="uncovered1"><a name="line47"></a> 47 dlls_to_run_list.include(&quot;#{@bin_dir}/**/*#{@product_name}*Tests*.exe&quot;)
648
+ </span><span class="uncovered0"><a name="line48"></a> 48 args.with_defaults(:dlls_to_run =&gt; dlls_to_run_list)
649
+ </span><span class="uncovered1"><a name="line49"></a> 49 args.dlls_to_run.each do |d|
650
+ </span><span class="uncovered0"><a name="line50"></a> 50 dll_to_run = Pathname.new(d)
651
+ </span><span class="uncovered1"><a name="line51"></a> 51 cf_name = dll_to_run.basename.sub(dll_to_run.extname, '.coverage.xml')
652
+ </span><span class="uncovered0"><a name="line52"></a> 52 coverage_file = File.join(@report_dir, cf_name)
653
+ </span><span class="uncovered1"><a name="line53"></a> 53 Rake::FileTask[coverage_file].invoke
654
+ </span><span class="uncovered0"><a name="line54"></a> 54 end
655
+ </span><span class="uncovered1"><a name="line55"></a> 55 end
656
+ </span><span class="uncovered0"><a name="line56"></a> 56
657
+ </span><span class="uncovered1"><a name="line57"></a> 57 rule(/#{reports_dir_regex}\/.*\//) do |report_set|
658
+ </span><span class="uncovered0"><a name="line58"></a> 58 set_name = report_set.name.match(/#{reports_dir_regex}\/(.*)\//)[1]
659
+ </span><span class="uncovered1"><a name="line59"></a> 59 profile_xml = File.join(@report_dir, &quot;#{set_name}.coverage.xml&quot;)
660
+ </span><span class="uncovered0"><a name="line60"></a> 60 mkdir_p report_set.name
661
+ </span><span class="uncovered1"><a name="line61"></a> 61 @reporting_options[:project_name] = set_name
662
+ </span><span class="uncovered0"><a name="line62"></a> 62 ncr = NCoverReportingCmd.new(report_set.name, profile_xml, @reporting_options)
663
+ </span><span class="uncovered1"><a name="line63"></a> 63 ncr.run
664
+ </span><span class="uncovered0"><a name="line64"></a> 64 end
665
+ </span><span class="uncovered1"><a name="line65"></a> 65
666
+ </span><span class="uncovered0"><a name="line66"></a> 66 desc &quot;Generate ncover coverage report(s), on all coverage files&quot;
667
+ </span><span class="uncovered1"><a name="line67"></a> 67 task :ncover_reports =&gt; [:ncover_profile] do
668
+ </span><span class="uncovered0"><a name="line68"></a> 68 report_sets = FileList.new(&quot;#{@report_dir}/**/*.coverage.xml&quot;)
669
+ </span><span class="uncovered1"><a name="line69"></a> 69 report_sets.each do |set|
670
+ </span><span class="uncovered0"><a name="line70"></a> 70 cov_report = set.sub('.coverage.xml', '/')
671
+ </span><span class="uncovered1"><a name="line71"></a> 71 Rake::FileTask[cov_report].invoke
672
+ </span><span class="uncovered0"><a name="line72"></a> 72 end
673
+ </span><span class="uncovered1"><a name="line73"></a> 73 end
674
+ </span><span class="uncovered0"><a name="line74"></a> 74
675
+ </span><span class="uncovered1"><a name="line75"></a> 75 task :clobber_ncover do
676
+ </span><span class="uncovered0"><a name="line76"></a> 76 rm_rf @report_dir
677
+ </span><span class="uncovered1"><a name="line77"></a> 77 end
678
+ </span><span class="uncovered0"><a name="line78"></a> 78
679
+ </span><span class="uncovered1"><a name="line79"></a> 79 self
680
+ </span><span class="uncovered0"><a name="line80"></a> 80 end
681
+ </span><span class="uncovered1"><a name="line81"></a> 81 end
682
+ </span><span class="inferred0"><a name="line82"></a> 82
683
+ </span><span class="marked1"><a name="line83"></a> 83 class NCoverConsoleCmd
684
+ </span><span class="marked0"><a name="line84"></a> 84 def initialize(report_dir, dll_to_execute, params)
685
+ </span><span class="uncovered1"><a name="line85"></a> 85 params ||= {}
686
+ </span><span class="uncovered0"><a name="line86"></a> 86 arch = params[:arch] || ENV['PROCESSOR_ARCHITECTURE']
687
+ </span><span class="uncovered1"><a name="line87"></a> 87 @exe = params[:ncover_exe] || File.join(TOOLS_DIR, 'ncover', arch, 'ncover.console.exe')
688
+ </span><span class="uncovered0"><a name="line88"></a> 88 @dll_to_execute = dll_to_execute
689
+ </span><span class="uncovered1"><a name="line89"></a> 89 ofname = File.split(dll_to_execute)[1].sub(/(\.dll)/, '') + '.coverage.xml'
690
+ </span><span class="uncovered0"><a name="line90"></a> 90 @output_file = File.join(report_dir, ofname)
691
+ </span><span class="uncovered1"><a name="line91"></a> 91
692
+ </span><span class="uncovered0"><a name="line92"></a> 92 @exclude_assemblies_regex = params[:exclude_assemblies_regex] || ['.*Tests.*']
693
+ </span><span class="uncovered1"><a name="line93"></a> 93 @exclude_assemblies_regex.push('ISymWrapper')
694
+ </span><span class="uncovered0"><a name="line94"></a> 94
695
+ </span><span class="uncovered1"><a name="line95"></a> 95 @profile_iis = params[:profile_iis] || false
696
+ </span><span class="uncovered0"><a name="line96"></a> 96 @working_dir = params[:working_dir] || Pathname.new(@dll_to_execute).dirname
697
+ </span><span class="uncovered1"><a name="line97"></a> 97
698
+ </span><span class="uncovered0"><a name="line98"></a> 98 @is_complete_version = `#{@exe}`.include?('NCover Complete v')
699
+ </span><span class="uncovered1"><a name="line99"></a> 99 end
700
+ </span><span class="inferred0"><a name="line100"></a>100
701
+ </span><span class="marked1"><a name="line101"></a>101 def cmdToRun
702
+ </span><span class="uncovered0"><a name="line102"></a>102 x = XUnitConsoleCmd.new(@dll_to_execute, '', nil, {})
703
+ </span><span class="uncovered1"><a name="line103"></a>103 x.cmd
704
+ </span><span class="uncovered0"><a name="line104"></a>104 end
705
705
  </span><span class="inferred1"><a name="line105"></a>105
706
- </span><span class="marked0"><a name="line106"></a>106 class NCoverReportingCmd
707
- </span><span class="marked1"><a name="line107"></a>107 def initialize(report_dir, coverage_files, params)
708
- </span><span class="uncovered0"><a name="line108"></a>108 @report_dir = report_dir
709
- </span><span class="uncovered1"><a name="line109"></a>109 @coverage_files = coverage_files || []
710
- </span><span class="uncovered0"><a name="line110"></a>110
711
- </span><span class="uncovered1"><a name="line111"></a>111 params ||= {}
712
- </span><span class="uncovered0"><a name="line112"></a>112 arch = params[:arch] || ENV['PROCESSOR_ARCHITECTURE']
713
- </span><span class="uncovered1"><a name="line113"></a>113 @exe = params[:ncover_reporting_exe] || File.join(TOOLS_DIR, 'ncover', arch, 'ncover.reporting.exe')
714
- </span><span class="uncovered0"><a name="line114"></a>114
715
- </span><span class="uncovered1"><a name="line115"></a>115 # required
716
- </span><span class="uncovered0"><a name="line116"></a>116 @reports = params[:reports] || ['Summary', 'UncoveredCodeSections', 'FullCoverageReport']
717
- </span><span class="uncovered1"><a name="line117"></a>117 @output_path = File.join(@report_dir)
718
- </span><span class="uncovered0"><a name="line118"></a>118
719
- </span><span class="uncovered1"><a name="line119"></a>119 # optional
720
- </span><span class="uncovered0"><a name="line120"></a>120 @sort_order = params[:sort] || 'CoveragePercentageAscending'
721
- </span><span class="uncovered1"><a name="line121"></a>121 @project_name = params[:project_name] || PRODUCT_NAME
722
- </span><span class="uncovered0"><a name="line122"></a>122 end
723
- </span><span class="inferred1"><a name="line123"></a>123
724
- </span><span class="marked0"><a name="line124"></a>124 def coverage_files
725
- </span><span class="uncovered1"><a name="line125"></a>125 list = ''
726
- </span><span class="uncovered0"><a name="line126"></a>126 @coverage_files.each do |cf|
727
- </span><span class="uncovered1"><a name="line127"></a>127 list += &quot;\&quot;#{cf}\&quot; &quot;
728
- </span><span class="uncovered0"><a name="line128"></a>128 end
729
- </span><span class="uncovered1"><a name="line129"></a>129 list
706
+ </span><span class="marked0"><a name="line106"></a>106 def bi
707
+ </span><span class="uncovered1"><a name="line107"></a>107 return &quot;//bi #{Versioner.new.get.to_s}&quot;
708
+ </span><span class="uncovered0"><a name="line108"></a>108 end
709
+ </span><span class="inferred1"><a name="line109"></a>109
710
+ </span><span class="marked0"><a name="line110"></a>110 def working_dir
711
+ </span><span class="uncovered1"><a name="line111"></a>111 return &quot;//w #{@working_dir}&quot;
712
+ </span><span class="uncovered0"><a name="line112"></a>112 end
713
+ </span><span class="inferred1"><a name="line113"></a>113
714
+ </span><span class="marked0"><a name="line114"></a>114 def iis
715
+ </span><span class="uncovered1"><a name="line115"></a>115 return '' unless @is_complete_version
716
+ </span><span class="uncovered0"><a name="line116"></a>116 return &quot;//iis&quot; if @profile_iis
717
+ </span><span class="uncovered1"><a name="line117"></a>117 end
718
+ </span><span class="inferred0"><a name="line118"></a>118
719
+ </span><span class="marked1"><a name="line119"></a>119 def exclude_assemblies
720
+ </span><span class="uncovered0"><a name="line120"></a>120 return '' unless @is_complete_version
721
+ </span><span class="uncovered1"><a name="line121"></a>121 if @exclude_assemblies_regex.instance_of?(Array) &amp;&amp; @exclude_assemblies_regex.length &gt; 0
722
+ </span><span class="uncovered0"><a name="line122"></a>122 return '//eas ' + @exclude_assemblies_regex.join(';')
723
+ </span><span class="uncovered1"><a name="line123"></a>123 end
724
+ </span><span class="uncovered0"><a name="line124"></a>124 return '//eas ' + @exclude_assemblies_regex if @exclude_assemblies_regex.instance_of?(String)
725
+ </span><span class="uncovered1"><a name="line125"></a>125 return ''
726
+ </span><span class="uncovered0"><a name="line126"></a>126 end
727
+ </span><span class="inferred1"><a name="line127"></a>127
728
+ </span><span class="marked0"><a name="line128"></a>128 def cmd
729
+ </span><span class="uncovered1"><a name="line129"></a>129 &quot;\&quot;#{@exe}\&quot; #{cmdToRun} //x #{@output_file} #{exclude_assemblies} #{bi} #{working_dir} #{iis}&quot;
730
730
  </span><span class="uncovered0"><a name="line130"></a>130 end
731
731
  </span><span class="inferred1"><a name="line131"></a>131
732
- </span><span class="marked0"><a name="line132"></a>132 def build_id
733
- </span><span class="uncovered1"><a name="line133"></a>133 &quot;//bi #{Versioner.new.get.to_s}&quot;
734
- </span><span class="uncovered0"><a name="line134"></a>134 end
735
- </span><span class="inferred1"><a name="line135"></a>135
736
- </span><span class="marked0"><a name="line136"></a>136 def output_reports
737
- </span><span class="uncovered1"><a name="line137"></a>137 cmd = ''
738
- </span><span class="uncovered0"><a name="line138"></a>138 @reports.each do |r|
739
- </span><span class="uncovered1"><a name="line139"></a>139 cmd += &quot;//or #{r} &quot;
740
- </span><span class="uncovered0"><a name="line140"></a>140 end
741
- </span><span class="uncovered1"><a name="line141"></a>141 return cmd
742
- </span><span class="uncovered0"><a name="line142"></a>142 end
743
- </span><span class="inferred1"><a name="line143"></a>143
744
- </span><span class="marked0"><a name="line144"></a>144 def output_path
745
- </span><span class="uncovered1"><a name="line145"></a>145 &quot;//op \&quot;#{@output_path}\&quot;&quot;
746
- </span><span class="uncovered0"><a name="line146"></a>146 end
747
- </span><span class="inferred1"><a name="line147"></a>147
748
- </span><span class="marked0"><a name="line148"></a>148 def sort_order
749
- </span><span class="uncovered1"><a name="line149"></a>149 &quot;//so #{@sort_order}&quot;
750
- </span><span class="uncovered0"><a name="line150"></a>150 end
751
- </span><span class="inferred1"><a name="line151"></a>151
752
- </span><span class="marked0"><a name="line152"></a>152 def project_name
753
- </span><span class="uncovered1"><a name="line153"></a>153 &quot;//p #{@project_name}&quot; unless @project_name.nil?
754
- </span><span class="uncovered0"><a name="line154"></a>154 end
755
- </span><span class="inferred1"><a name="line155"></a>155
756
- </span><span class="marked0"><a name="line156"></a>156 def cmd
757
- </span><span class="uncovered1"><a name="line157"></a>157 &quot;\&quot;#{@exe}\&quot; #{coverage_files} #{build_id} #{output_reports} #{output_path} #{sort_order} #{project_name}&quot;
758
- </span><span class="uncovered0"><a name="line158"></a>158 end
759
- </span><span class="inferred1"><a name="line159"></a>159
760
- </span><span class="marked0"><a name="line160"></a>160 def run
761
- </span><span class="uncovered1"><a name="line161"></a>161 sh cmd
762
- </span><span class="uncovered0"><a name="line162"></a>162 end
763
- </span><span class="uncovered1"><a name="line163"></a>163 end
732
+ </span><span class="marked0"><a name="line132"></a>132 def run
733
+ </span><span class="uncovered1"><a name="line133"></a>133 puts cmd if VERBOSE
734
+ </span><span class="uncovered0"><a name="line134"></a>134 sh cmd
735
+ </span><span class="uncovered1"><a name="line135"></a>135 end
736
+ </span><span class="uncovered0"><a name="line136"></a>136 end
737
+ </span><span class="inferred1"><a name="line137"></a>137
738
+ </span><span class="marked0"><a name="line138"></a>138 class NCoverReportingCmd
739
+ </span><span class="marked1"><a name="line139"></a>139 def initialize(report_dir, coverage_files, params)
740
+ </span><span class="uncovered0"><a name="line140"></a>140 @report_dir = report_dir
741
+ </span><span class="uncovered1"><a name="line141"></a>141 @coverage_files = coverage_files || []
742
+ </span><span class="uncovered0"><a name="line142"></a>142
743
+ </span><span class="uncovered1"><a name="line143"></a>143 params ||= {}
744
+ </span><span class="uncovered0"><a name="line144"></a>144 arch = params[:arch] || ENV['PROCESSOR_ARCHITECTURE']
745
+ </span><span class="uncovered1"><a name="line145"></a>145 @exe = params[:ncover_reporting_exe] || File.join(TOOLS_DIR, 'ncover', arch, 'ncover.reporting.exe')
746
+ </span><span class="uncovered0"><a name="line146"></a>146
747
+ </span><span class="uncovered1"><a name="line147"></a>147 @is_complete_version = `#{@exe}`.include?('NCover Reporting Complete v')
748
+ </span><span class="uncovered0"><a name="line148"></a>148 # required
749
+ </span><span class="uncovered1"><a name="line149"></a>149 @reports = params[:reports] || ['Summary', 'UncoveredCodeSections', 'FullCoverageReport']
750
+ </span><span class="uncovered0"><a name="line150"></a>150 @output_path = File.join(@report_dir)
751
+ </span><span class="uncovered1"><a name="line151"></a>151
752
+ </span><span class="uncovered0"><a name="line152"></a>152 # optional
753
+ </span><span class="uncovered1"><a name="line153"></a>153 @sort_order = params[:sort] || 'CoveragePercentageAscending'
754
+ </span><span class="uncovered0"><a name="line154"></a>154 @project_name = params[:project_name] || PRODUCT_NAME
755
+ </span><span class="uncovered1"><a name="line155"></a>155 end
756
+ </span><span class="inferred0"><a name="line156"></a>156
757
+ </span><span class="marked1"><a name="line157"></a>157 def coverage_files
758
+ </span><span class="uncovered0"><a name="line158"></a>158 list = ''
759
+ </span><span class="uncovered1"><a name="line159"></a>159 @coverage_files.each do |cf|
760
+ </span><span class="uncovered0"><a name="line160"></a>160 list += &quot;\&quot;#{cf}\&quot; &quot;
761
+ </span><span class="uncovered1"><a name="line161"></a>161 end
762
+ </span><span class="uncovered0"><a name="line162"></a>162 return list
763
+ </span><span class="uncovered1"><a name="line163"></a>163 end
764
+ </span><span class="inferred0"><a name="line164"></a>164
765
+ </span><span class="marked1"><a name="line165"></a>165 def build_id
766
+ </span><span class="uncovered0"><a name="line166"></a>166 return &quot;//bi #{Versioner.new.get.to_s}&quot;
767
+ </span><span class="uncovered1"><a name="line167"></a>167 end
768
+ </span><span class="inferred0"><a name="line168"></a>168
769
+ </span><span class="marked1"><a name="line169"></a>169 def output_reports
770
+ </span><span class="uncovered0"><a name="line170"></a>170 cmd = ''
771
+ </span><span class="uncovered1"><a name="line171"></a>171 if @is_complete_version
772
+ </span><span class="uncovered0"><a name="line172"></a>172 @reports.each do |r|
773
+ </span><span class="uncovered1"><a name="line173"></a>173 cmd += &quot;//or #{r}&quot;
774
+ </span><span class="uncovered0"><a name="line174"></a>174 end
775
+ </span><span class="uncovered1"><a name="line175"></a>175 else
776
+ </span><span class="uncovered0"><a name="line176"></a>176 classic_version_reports_allowed = ['Summary', 'SymbolModule', 'SymbolModuleNamespace', 'SymbolModuleNamespaceClass', 'SymbolModuleNamespaceClassMethod']
777
+ </span><span class="uncovered1"><a name="line177"></a>177 @reports.each do |r|
778
+ </span><span class="uncovered0"><a name="line178"></a>178 cmd += &quot;//or #{r} &quot; if classic_version_reports_allowed.include?(r)
779
+ </span><span class="uncovered1"><a name="line179"></a>179 end
780
+ </span><span class="uncovered0"><a name="line180"></a>180 end
781
+ </span><span class="uncovered1"><a name="line181"></a>181 return cmd
782
+ </span><span class="uncovered0"><a name="line182"></a>182 end
783
+ </span><span class="inferred1"><a name="line183"></a>183
784
+ </span><span class="marked0"><a name="line184"></a>184 def output_path
785
+ </span><span class="uncovered1"><a name="line185"></a>185 return &quot;//op \&quot;#{@output_path}\&quot;&quot;
786
+ </span><span class="uncovered0"><a name="line186"></a>186 end
787
+ </span><span class="inferred1"><a name="line187"></a>187
788
+ </span><span class="marked0"><a name="line188"></a>188 def sort_order
789
+ </span><span class="uncovered1"><a name="line189"></a>189 return &quot;//so #{@sort_order}&quot;
790
+ </span><span class="uncovered0"><a name="line190"></a>190 end
791
+ </span><span class="inferred1"><a name="line191"></a>191
792
+ </span><span class="marked0"><a name="line192"></a>192 def project_name
793
+ </span><span class="uncovered1"><a name="line193"></a>193 return &quot;//p #{@project_name}&quot; unless @project_name.nil?
794
+ </span><span class="uncovered0"><a name="line194"></a>194 end
795
+ </span><span class="inferred1"><a name="line195"></a>195
796
+ </span><span class="marked0"><a name="line196"></a>196 def cmd
797
+ </span><span class="uncovered1"><a name="line197"></a>197 return &quot;\&quot;#{@exe}\&quot; #{coverage_files} #{build_id} #{output_reports} #{output_path} #{sort_order} #{project_name}&quot;
798
+ </span><span class="uncovered0"><a name="line198"></a>198 end
799
+ </span><span class="inferred1"><a name="line199"></a>199
800
+ </span><span class="marked0"><a name="line200"></a>200 def run
801
+ </span><span class="uncovered1"><a name="line201"></a>201 puts cmd if VERBOSE
802
+ </span><span class="uncovered0"><a name="line202"></a>202 sh cmd
803
+ </span><span class="uncovered1"><a name="line203"></a>203 end
804
+ </span><span class="uncovered0"><a name="line204"></a>204 end
764
805
  </span></pre><hr/>
765
806
  <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
766
807
  version 0.8.1.2.</p>