├── DailyBuild ├── DailyBuild_7z_cmd.bat ├── DailyBuild_FileList.txt ├── DailyBuild_PostDeploy.bat └── DailyBuild_PreDeploy.bat ├── Doc ├── Screenshot │ └── DelphiCodeCoverageWizard_0.png └── pad │ └── DelphiCodeCoverageWizard.xml ├── Exe ├── CodeCoverage.exe ├── CodeCoverage_x32.exe ├── CodeCoverage_x64.exe ├── MPL-1.1.txt ├── dcov_execute.bat ├── dcov_paths.lst ├── dcov_units.lst └── delphi-code-coverage-wizard (Google code).url ├── Release └── template │ └── DelphiCodeCoverageWizard_v0.x │ ├── MPL-1.1.txt │ └── delphi-code-coverage-wizard (Google code).url ├── Source ├── DelphiCodeCoverageWizard.dpr ├── DelphiCodeCoverageWizard.dproj ├── DelphiCodeCoverageWizard.res ├── ModelSupport_DelphiCodeCoverageWizard │ ├── Class Diagram.txvcls │ ├── Class Diagram_diagram.tvsconfig │ ├── Collaboration Diagram1_diagram.tvsconfig │ ├── DelphiCodeCoverageWizard │ │ ├── default.txaPackage │ │ ├── default.txvpck │ │ └── default_diagram.tvsconfig │ ├── Use Case Diagram1.txvuse │ ├── Use Case Diagram1_diagram.tvsconfig │ ├── default.txaPackage │ ├── default.txvpck │ ├── default_diagram.tvsconfig │ ├── fMain │ │ ├── default.txaPackage │ │ ├── default.txvpck │ │ └── default_diagram.tvsconfig │ └── uApplicationController │ │ ├── default.txaPackage │ │ ├── default.txvpck │ │ └── default_diagram.tvsconfig ├── fWizard.dfm ├── fWizard.pas ├── images │ ├── background.png │ ├── save_64.bmp │ ├── save_64_h.bmp │ ├── search_64.bmp │ ├── search_64_h.bmp │ ├── wizard google-project logo_small.png │ └── wizard.ico ├── uApplicationController.pas ├── uProjectSettings.pas └── uScriptsGenerator.pas ├── Test ├── DUnit_addon │ └── XmlTestRunner2.pas ├── DelphiCodeCoverageWizardTests.dpr ├── DelphiCodeCoverageWizardTests.dproj ├── DelphiCodeCoverageWizardTests.res └── Test_uProjectSettings.pas ├── dccw_ProjectAndTests.groupproj └── readme.md /DailyBuild/DailyBuild_7z_cmd.bat: -------------------------------------------------------------------------------- 1 | rem Here is the command to compress the dailybuild package 2 | "C:\Program Files\7-Zip\7z.exe" a -tzip delphi-code-coverage-wizard.zip @../DailyBuild_FileList.txt -xr!*.svn -scsWIN 3 | 4 | -------------------------------------------------------------------------------- /DailyBuild/DailyBuild_FileList.txt: -------------------------------------------------------------------------------- 1 | DelphiCodeCoverageWizard.exe 2 | delphi-code-coverage-wizard (Google code).url 3 | CodeCoverage.exe 4 | MPL-1.1.txt 5 | -------------------------------------------------------------------------------- /DailyBuild/DailyBuild_PostDeploy.bat: -------------------------------------------------------------------------------- 1 | rem #Delete tmp Dir 2 | rd /Q /S tmp 3 | -------------------------------------------------------------------------------- /DailyBuild/DailyBuild_PreDeploy.bat: -------------------------------------------------------------------------------- 1 | rem #Create Dir(s) 2 | md tmp 3 | rem #Compress 4 | cd ..\Exe 5 | "C:\Program Files\7-Zip\7z.exe" a -tzip ..\dailybuild\tmp\delphi-code-coverage-wizard.zip @../DailyBuild/DailyBuild_FileList.txt -xr!*.svn -scsWIN 6 | -------------------------------------------------------------------------------- /Doc/Screenshot/DelphiCodeCoverageWizard_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Doc/Screenshot/DelphiCodeCoverageWizard_0.png -------------------------------------------------------------------------------- /Doc/pad/DelphiCodeCoverageWizard.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 3.11 5 | PADGen 3.1.1.47 http://www.padgen.org 6 | Portable Application Description, or PAD for short, is a data set that is used by shareware authors to disseminate information to anyone interested in their software products. To find out more go to http://pad.asp-software.org 7 | 8 | 9 | TridenT 10 | N/A 11 | N/A 12 | N/A 13 | N/A 14 | N/A 15 | FRANCE 16 | http://dephicodetodoc.sourceforge.net 17 | 18 | TridenT 19 | TridenT 20 | trident_job@hotmail.com 21 | TridenT 22 | TridenT 23 | trident_job@hotmail.com 24 | 25 | 26 | trident_job@hotmail.com 27 | trident_job@hotmail.com 28 | trident_job@hotmail.com 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | DelphiCodeCoverageWizard 37 | 0.2 38 | 08 39 | 25 40 | 2011 41 | 0 42 | 43 | 44 | Freeware 45 | Beta 46 | No Install Support 47 | Win7 x32,Win7 x64,WinServer,WinVista,WinVista x64,WinXP 48 | English 49 | Fixed bugs 50 | Development Tools 51 | Development::Delphi 52 | 53 | 54 | 3845510 55 | 3755 56 | 3.67 57 | 58 | 59 | N 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | delphi coverage dunit wizard 71 | Simple wizard to execute DelphiCodeCoverage 72 | Simple wizard to setup and build scripts for DelphiCodeCoverage 73 | DelphiCodeCoverageWizard? is a simple wizard to setup and build scripts for DelphiCodeCoverage - a simple Code Coverage command-line tool for Delphi. 74 | DelphiCodeCoverageWizard is a simple wizard to setup and build scripts for DelphiCodeCoverage - a simple Code Coverage command-line tool for Delphi. 75 | DelphiCodeCoverageWizard? is a simple wizard to setup and build scripts for DelphiCodeCoverage - a simple Code Coverage command-line tool for Delphi. 76 | 77 | Preconditions 78 | A Delphi project executable (.exe) 79 | A detailed mapping file for this project (.map). 80 | Note : The wizard has it own copy of DelphiCodeCoverage?.exe 81 | 82 | What help does it provide 83 | DelphiCodeCoverageWizard? will generate the command-line and additional files to run the coverage for this project. 84 | 85 | You can also choose which unit to cover. 86 | 87 | Usage 88 | Download the application. Run it and follow the wizard ! 89 | 90 | Output 91 | Script 92 | A batch file (.bat) is created for a easier one-click coverage execution. 93 | 94 | Two listing files (.lst) containing units list and units folder list will be created. 95 | 96 | Coverage output 97 | The coverage report is from DelphiCodeCoverage?. For further information, see the project page. 98 | 99 | Credit 100 | A really big thanks to Christer Fahlgren for his delphi-code-coverage release. 101 | 102 | 103 | 104 | 105 | 106 | http://code.google.com/p/delphi-code-coverage-wizard/ 107 | http://code.google.com/p/delphi-code-coverage-wizard/ 108 | http://delphi-code-coverage-wizard.googlecode.com/svn/trunk/Doc/Screenshot/DelphiCodeCoverageWizard_0.png 109 | http://delphi-code-coverage-wizard.googlecode.com/svn/trunk/Source/images/wizard%20google-project%20logo_small.png 110 | http://delphi-code-coverage-wizard.googlecode.com/svn/trunk/Doc/pad/DelphiCodeCoverageWizard.xml 111 | 112 | 113 | http://delphi-code-coverage-wizard.googlecode.com/files/DelphiCodeCoverageWizard_v0.2.zip 114 | 115 | 116 | 117 | 118 | 119 | 120 | Code license 121 | Mozilla Public License 1.1 122 | 123 | MOZILLA PUBLIC LICENSE 124 | Version 1.1 125 | 126 | --------------- 127 | 128 | 1. Definitions. 129 | 130 | 1.0.1. "Commercial Use" means distribution or otherwise making the 131 | Covered Code available to a third party. 132 | 133 | 1.1. "Contributor" means each entity that creates or contributes to 134 | the creation of Modifications. 135 | 136 | 1.2. "Contributor Version" means the combination of the Original 137 | Code, prior Modifications used by a Contributor, and the Modifications 138 | made by that particular Contributor. 139 | 140 | 1.3. "Covered Code" means the Original Code or Modifications or the 141 | combination of the Original Code and Modifications, in each case 142 | including portions thereof. 143 | 144 | 1.4. "Electronic Distribution Mechanism" means a mechanism generally 145 | accepted in the software development community for the electronic 146 | transfer of data. 147 | 148 | 1.5. "Executable" means Covered Code in any form other than Source 149 | Code. 150 | 151 | 1.6. "Initial Developer" means the individual or entity identified 152 | as the Initial Developer in the Source Code notice required by Exhibit 153 | A. 154 | 155 | 1.7. "Larger Work" means a work which combines Covered Code or 156 | portions thereof with code not governed by the terms of this License. 157 | 158 | 1.8. "License" means this document. 159 | 160 | 1.8.1. "Licensable" means having the right to grant, to the maximum 161 | extent possible, whether at the time of the initial grant or 162 | subsequently acquired, any and all of the rights conveyed herein. 163 | 164 | 1.9. "Modifications" means any addition to or deletion from the 165 | substance or structure of either the Original Code or any previous 166 | Modifications. When Covered Code is released as a series of files, a 167 | Modification is: 168 | A. Any addition to or deletion from the contents of a file 169 | containing Original Code or previous Modifications. 170 | 171 | B. Any new file that contains any part of the Original Code or 172 | previous Modifications. 173 | 174 | 1.10. "Original Code" means Source Code of computer software code 175 | which is described in the Source Code notice required by Exhibit A as 176 | Original Code, and which, at the time of its release under this 177 | License is not already Covered Code governed by this License. 178 | 179 | 1.10.1. "Patent Claims" means any patent claim(s), now owned or 180 | hereafter acquired, including without limitation, method, process, 181 | and apparatus claims, in any patent Licensable by grantor. 182 | 183 | 1.11. "Source Code" means the preferred form of the Covered Code for 184 | making modifications to it, including all modules it contains, plus 185 | any associated interface definition files, scripts used to control 186 | compilation and installation of an Executable, or source code 187 | differential comparisons against either the Original Code or another 188 | well known, available Covered Code of the Contributor's choice. The 189 | Source Code can be in a compressed or archival form, provided the 190 | appropriate decompression or de-archiving software is widely available 191 | for no charge. 192 | 193 | 1.12. "You" (or "Your") means an individual or a legal entity 194 | exercising rights under, and complying with all of the terms of, this 195 | License or a future version of this License issued under Section 6.1. 196 | For legal entities, "You" includes any entity which controls, is 197 | controlled by, or is under common control with You. For purposes of 198 | this definition, "control" means (a) the power, direct or indirect, 199 | to cause the direction or management of such entity, whether by 200 | contract or otherwise, or (b) ownership of more than fifty percent 201 | (50%) of the outstanding shares or beneficial ownership of such 202 | entity. 203 | 204 | 2. Source Code License. 205 | 206 | 2.1. The Initial Developer Grant. 207 | The Initial Developer hereby grants You a world-wide, royalty-free, 208 | non-exclusive license, subject to third party intellectual property 209 | claims: 210 | (a) under intellectual property rights (other than patent or 211 | trademark) Licensable by Initial Developer to use, reproduce, 212 | modify, display, perform, sublicense and distribute the Original 213 | Code (or portions thereof) with or without Modifications, and/or 214 | as part of a Larger Work; and 215 | 216 | (b) under Patents Claims infringed by the making, using or 217 | selling of Original Code, to make, have made, use, practice, 218 | sell, and offer for sale, and/or otherwise dispose of the 219 | Original Code (or portions thereof). 220 | 221 | (c) the licenses granted in this Section 2.1(a) and (b) are 222 | effective on the date Initial Developer first distributes 223 | Original Code under the terms of this License. 224 | 225 | (d) Notwithstanding Section 2.1(b) above, no patent license is 226 | granted: 1) for code that You delete from the Original Code; 2) 227 | separate from the Original Code; or 3) for infringements caused 228 | by: i) the modification of the Original Code or ii) the 229 | combination of the Original Code with other software or devices. 230 | 231 | 2.2. Contributor Grant. 232 | Subject to third party intellectual property claims, each Contributor 233 | hereby grants You a world-wide, royalty-free, non-exclusive license 234 | 235 | (a) under intellectual property rights (other than patent or 236 | trademark) Licensable by Contributor, to use, reproduce, modify, 237 | display, perform, sublicense and distribute the Modifications 238 | created by such Contributor (or portions thereof) either on an 239 | unmodified basis, with other Modifications, as Covered Code 240 | and/or as part of a Larger Work; and 241 | 242 | (b) under Patent Claims infringed by the making, using, or 243 | selling of Modifications made by that Contributor either alone 244 | and/or in combination with its Contributor Version (or portions 245 | of such combination), to make, use, sell, offer for sale, have 246 | made, and/or otherwise dispose of: 1) Modifications made by that 247 | Contributor (or portions thereof); and 2) the combination of 248 | Modifications made by that Contributor with its Contributor 249 | Version (or portions of such combination). 250 | 251 | (c) the licenses granted in Sections 2.2(a) and 2.2(b) are 252 | effective on the date Contributor first makes Commercial Use of 253 | the Covered Code. 254 | 255 | (d) Notwithstanding Section 2.2(b) above, no patent license is 256 | granted: 1) for any code that Contributor has deleted from the 257 | Contributor Version; 2) separate from the Contributor Version; 258 | 3) for infringements caused by: i) third party modifications of 259 | Contributor Version or ii) the combination of Modifications made 260 | by that Contributor with other software (except as part of the 261 | Contributor Version) or other devices; or 4) under Patent Claims 262 | infringed by Covered Code in the absence of Modifications made by 263 | that Contributor. 264 | 265 | 3. Distribution Obligations. 266 | 267 | 3.1. Application of License. 268 | The Modifications which You create or to which You contribute are 269 | governed by the terms of this License, including without limitation 270 | Section 2.2. The Source Code version of Covered Code may be 271 | distributed only under the terms of this License or a future version 272 | of this License released under Section 6.1, and You must include a 273 | copy of this License with every copy of the Source Code You 274 | distribute. You may not offer or impose any terms on any Source Code 275 | version that alters or restricts the applicable version of this 276 | License or the recipients' rights hereunder. However, You may include 277 | an additional document offering the additional rights described in 278 | Section 3.5. 279 | 280 | 3.2. Availability of Source Code. 281 | Any Modification which You create or to which You contribute must be 282 | made available in Source Code form under the terms of this License 283 | either on the same media as an Executable version or via an accepted 284 | Electronic Distribution Mechanism to anyone to whom you made an 285 | Executable version available; and if made available via Electronic 286 | Distribution Mechanism, must remain available for at least twelve (12) 287 | months after the date it initially became available, or at least six 288 | (6) months after a subsequent version of that particular Modification 289 | has been made available to such recipients. You are responsible for 290 | ensuring that the Source Code version remains available even if the 291 | Electronic Distribution Mechanism is maintained by a third party. 292 | 293 | 3.3. Description of Modifications. 294 | You must cause all Covered Code to which You contribute to contain a 295 | file documenting the changes You made to create that Covered Code and 296 | the date of any change. You must include a prominent statement that 297 | the Modification is derived, directly or indirectly, from Original 298 | Code provided by the Initial Developer and including the name of the 299 | Initial Developer in (a) the Source Code, and (b) in any notice in an 300 | Executable version or related documentation in which You describe the 301 | origin or ownership of the Covered Code. 302 | 303 | 3.4. Intellectual Property Matters 304 | (a) Third Party Claims. 305 | If Contributor has knowledge that a license under a third party's 306 | intellectual property rights is required to exercise the rights 307 | granted by such Contributor under Sections 2.1 or 2.2, 308 | Contributor must include a text file with the Source Code 309 | distribution titled "LEGAL" which describes the claim and the 310 | party making the claim in sufficient detail that a recipient will 311 | know whom to contact. If Contributor obtains such knowledge after 312 | the Modification is made available as described in Section 3.2, 313 | Contributor shall promptly modify the LEGAL file in all copies 314 | Contributor makes available thereafter and shall take other steps 315 | (such as notifying appropriate mailing lists or newsgroups) 316 | reasonably calculated to inform those who received the Covered 317 | Code that new knowledge has been obtained. 318 | 319 | (b) Contributor APIs. 320 | If Contributor's Modifications include an application programming 321 | interface and Contributor has knowledge of patent licenses which 322 | are reasonably necessary to implement that API, Contributor must 323 | also include this information in the LEGAL file. 324 | 325 | (c) Representations. 326 | Contributor represents that, except as disclosed pursuant to 327 | Section 3.4(a) above, Contributor believes that Contributor's 328 | Modifications are Contributor's original creation(s) and/or 329 | Contributor has sufficient rights to grant the rights conveyed by 330 | this License. 331 | 332 | 3.5. Required Notices. 333 | You must duplicate the notice in Exhibit A in each file of the Source 334 | Code. If it is not possible to put such notice in a particular Source 335 | Code file due to its structure, then You must include such notice in a 336 | location (such as a relevant directory) where a user would be likely 337 | to look for such a notice. If You created one or more Modification(s) 338 | You may add your name as a Contributor to the notice described in 339 | Exhibit A. You must also duplicate this License in any documentation 340 | for the Source Code where You describe recipients' rights or ownership 341 | rights relating to Covered Code. You may choose to offer, and to 342 | charge a fee for, warranty, support, indemnity or liability 343 | obligations to one or more recipients of Covered Code. However, You 344 | may do so only on Your own behalf, and not on behalf of the Initial 345 | Developer or any Contributor. You must make it absolutely clear than 346 | any such warranty, support, indemnity or liability obligation is 347 | offered by You alone, and You hereby agree to indemnify the Initial 348 | Developer and every Contributor for any liability incurred by the 349 | Initial Developer or such Contributor as a result of warranty, 350 | support, indemnity or liability terms You offer. 351 | 352 | 3.6. Distribution of Executable Versions. 353 | You may distribute Covered Code in Executable form only if the 354 | requirements of Section 3.1-3.5 have been met for that Covered Code, 355 | and if You include a notice stating that the Source Code version of 356 | the Covered Code is available under the terms of this License, 357 | including a description of how and where You have fulfilled the 358 | obligations of Section 3.2. The notice must be conspicuously included 359 | in any notice in an Executable version, related documentation or 360 | collateral in which You describe recipients' rights relating to the 361 | Covered Code. You may distribute the Executable version of Covered 362 | Code or ownership rights under a license of Your choice, which may 363 | contain terms different from this License, provided that You are in 364 | compliance with the terms of this License and that the license for the 365 | Executable version does not attempt to limit or alter the recipient's 366 | rights in the Source Code version from the rights set forth in this 367 | License. If You distribute the Executable version under a different 368 | license You must make it absolutely clear that any terms which differ 369 | from this License are offered by You alone, not by the Initial 370 | Developer or any Contributor. You hereby agree to indemnify the 371 | Initial Developer and every Contributor for any liability incurred by 372 | the Initial Developer or such Contributor as a result of any such 373 | terms You offer. 374 | 375 | 3.7. Larger Works. 376 | You may create a Larger Work by combining Covered Code with other code 377 | not governed by the terms of this License and distribute the Larger 378 | Work as a single product. In such a case, You must make sure the 379 | requirements of this License are fulfilled for the Covered Code. 380 | 381 | 4. Inability to Comply Due to Statute or Regulation. 382 | 383 | If it is impossible for You to comply with any of the terms of this 384 | License with respect to some or all of the Covered Code due to 385 | statute, judicial order, or regulation then You must: (a) comply with 386 | the terms of this License to the maximum extent possible; and (b) 387 | describe the limitations and the code they affect. Such description 388 | must be included in the LEGAL file described in Section 3.4 and must 389 | be included with all distributions of the Source Code. Except to the 390 | extent prohibited by statute or regulation, such description must be 391 | sufficiently detailed for a recipient of ordinary skill to be able to 392 | understand it. 393 | 394 | 5. Application of this License. 395 | 396 | This License applies to code to which the Initial Developer has 397 | attached the notice in Exhibit A and to related Covered Code. 398 | 399 | 6. Versions of the License. 400 | 401 | 6.1. New Versions. 402 | Netscape Communications Corporation ("Netscape") may publish revised 403 | and/or new versions of the License from time to time. Each version 404 | will be given a distinguishing version number. 405 | 406 | 6.2. Effect of New Versions. 407 | Once Covered Code has been published under a particular version of the 408 | License, You may always continue to use it under the terms of that 409 | version. You may also choose to use such Covered Code under the terms 410 | of any subsequent version of the License published by Netscape. No one 411 | other than Netscape has the right to modify the terms applicable to 412 | Covered Code created under this License. 413 | 414 | 6.3. Derivative Works. 415 | If You create or use a modified version of this License (which you may 416 | only do in order to apply it to code which is not already Covered Code 417 | governed by this License), You must (a) rename Your license so that 418 | the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", 419 | "MPL", "NPL" or any confusingly similar phrase do not appear in your 420 | license (except to note that your license differs from this License) 421 | and (b) otherwise make it clear that Your version of the license 422 | contains terms which differ from the Mozilla Public License and 423 | Netscape Public License. (Filling in the name of the Initial 424 | Developer, Original Code or Contributor in the notice described in 425 | Exhibit A shall not of themselves be deemed to be modifications of 426 | this License.) 427 | 428 | 7. DISCLAIMER OF WARRANTY. 429 | 430 | COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, 431 | WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, 432 | WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF 433 | DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. 434 | THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE 435 | IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, 436 | YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE 437 | COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER 438 | OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF 439 | ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 440 | 441 | 442 | 443 | Y 444 | N 445 | 446 | 447 | 448 | -------------------------------------------------------------------------------- /Exe/CodeCoverage.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Exe/CodeCoverage.exe -------------------------------------------------------------------------------- /Exe/CodeCoverage_x32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Exe/CodeCoverage_x32.exe -------------------------------------------------------------------------------- /Exe/CodeCoverage_x64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Exe/CodeCoverage_x64.exe -------------------------------------------------------------------------------- /Exe/MPL-1.1.txt: -------------------------------------------------------------------------------- 1 | MOZILLA PUBLIC LICENSE 2 | Version 1.1 3 | 4 | --------------- 5 | 6 | 1. Definitions. 7 | 8 | 1.0.1. "Commercial Use" means distribution or otherwise making the 9 | Covered Code available to a third party. 10 | 11 | 1.1. "Contributor" means each entity that creates or contributes to 12 | the creation of Modifications. 13 | 14 | 1.2. "Contributor Version" means the combination of the Original 15 | Code, prior Modifications used by a Contributor, and the Modifications 16 | made by that particular Contributor. 17 | 18 | 1.3. "Covered Code" means the Original Code or Modifications or the 19 | combination of the Original Code and Modifications, in each case 20 | including portions thereof. 21 | 22 | 1.4. "Electronic Distribution Mechanism" means a mechanism generally 23 | accepted in the software development community for the electronic 24 | transfer of data. 25 | 26 | 1.5. "Executable" means Covered Code in any form other than Source 27 | Code. 28 | 29 | 1.6. "Initial Developer" means the individual or entity identified 30 | as the Initial Developer in the Source Code notice required by Exhibit 31 | A. 32 | 33 | 1.7. "Larger Work" means a work which combines Covered Code or 34 | portions thereof with code not governed by the terms of this License. 35 | 36 | 1.8. "License" means this document. 37 | 38 | 1.8.1. "Licensable" means having the right to grant, to the maximum 39 | extent possible, whether at the time of the initial grant or 40 | subsequently acquired, any and all of the rights conveyed herein. 41 | 42 | 1.9. "Modifications" means any addition to or deletion from the 43 | substance or structure of either the Original Code or any previous 44 | Modifications. When Covered Code is released as a series of files, a 45 | Modification is: 46 | A. Any addition to or deletion from the contents of a file 47 | containing Original Code or previous Modifications. 48 | 49 | B. Any new file that contains any part of the Original Code or 50 | previous Modifications. 51 | 52 | 1.10. "Original Code" means Source Code of computer software code 53 | which is described in the Source Code notice required by Exhibit A as 54 | Original Code, and which, at the time of its release under this 55 | License is not already Covered Code governed by this License. 56 | 57 | 1.10.1. "Patent Claims" means any patent claim(s), now owned or 58 | hereafter acquired, including without limitation, method, process, 59 | and apparatus claims, in any patent Licensable by grantor. 60 | 61 | 1.11. "Source Code" means the preferred form of the Covered Code for 62 | making modifications to it, including all modules it contains, plus 63 | any associated interface definition files, scripts used to control 64 | compilation and installation of an Executable, or source code 65 | differential comparisons against either the Original Code or another 66 | well known, available Covered Code of the Contributor's choice. The 67 | Source Code can be in a compressed or archival form, provided the 68 | appropriate decompression or de-archiving software is widely available 69 | for no charge. 70 | 71 | 1.12. "You" (or "Your") means an individual or a legal entity 72 | exercising rights under, and complying with all of the terms of, this 73 | License or a future version of this License issued under Section 6.1. 74 | For legal entities, "You" includes any entity which controls, is 75 | controlled by, or is under common control with You. For purposes of 76 | this definition, "control" means (a) the power, direct or indirect, 77 | to cause the direction or management of such entity, whether by 78 | contract or otherwise, or (b) ownership of more than fifty percent 79 | (50%) of the outstanding shares or beneficial ownership of such 80 | entity. 81 | 82 | 2. Source Code License. 83 | 84 | 2.1. The Initial Developer Grant. 85 | The Initial Developer hereby grants You a world-wide, royalty-free, 86 | non-exclusive license, subject to third party intellectual property 87 | claims: 88 | (a) under intellectual property rights (other than patent or 89 | trademark) Licensable by Initial Developer to use, reproduce, 90 | modify, display, perform, sublicense and distribute the Original 91 | Code (or portions thereof) with or without Modifications, and/or 92 | as part of a Larger Work; and 93 | 94 | (b) under Patents Claims infringed by the making, using or 95 | selling of Original Code, to make, have made, use, practice, 96 | sell, and offer for sale, and/or otherwise dispose of the 97 | Original Code (or portions thereof). 98 | 99 | (c) the licenses granted in this Section 2.1(a) and (b) are 100 | effective on the date Initial Developer first distributes 101 | Original Code under the terms of this License. 102 | 103 | (d) Notwithstanding Section 2.1(b) above, no patent license is 104 | granted: 1) for code that You delete from the Original Code; 2) 105 | separate from the Original Code; or 3) for infringements caused 106 | by: i) the modification of the Original Code or ii) the 107 | combination of the Original Code with other software or devices. 108 | 109 | 2.2. Contributor Grant. 110 | Subject to third party intellectual property claims, each Contributor 111 | hereby grants You a world-wide, royalty-free, non-exclusive license 112 | 113 | (a) under intellectual property rights (other than patent or 114 | trademark) Licensable by Contributor, to use, reproduce, modify, 115 | display, perform, sublicense and distribute the Modifications 116 | created by such Contributor (or portions thereof) either on an 117 | unmodified basis, with other Modifications, as Covered Code 118 | and/or as part of a Larger Work; and 119 | 120 | (b) under Patent Claims infringed by the making, using, or 121 | selling of Modifications made by that Contributor either alone 122 | and/or in combination with its Contributor Version (or portions 123 | of such combination), to make, use, sell, offer for sale, have 124 | made, and/or otherwise dispose of: 1) Modifications made by that 125 | Contributor (or portions thereof); and 2) the combination of 126 | Modifications made by that Contributor with its Contributor 127 | Version (or portions of such combination). 128 | 129 | (c) the licenses granted in Sections 2.2(a) and 2.2(b) are 130 | effective on the date Contributor first makes Commercial Use of 131 | the Covered Code. 132 | 133 | (d) Notwithstanding Section 2.2(b) above, no patent license is 134 | granted: 1) for any code that Contributor has deleted from the 135 | Contributor Version; 2) separate from the Contributor Version; 136 | 3) for infringements caused by: i) third party modifications of 137 | Contributor Version or ii) the combination of Modifications made 138 | by that Contributor with other software (except as part of the 139 | Contributor Version) or other devices; or 4) under Patent Claims 140 | infringed by Covered Code in the absence of Modifications made by 141 | that Contributor. 142 | 143 | 3. Distribution Obligations. 144 | 145 | 3.1. Application of License. 146 | The Modifications which You create or to which You contribute are 147 | governed by the terms of this License, including without limitation 148 | Section 2.2. The Source Code version of Covered Code may be 149 | distributed only under the terms of this License or a future version 150 | of this License released under Section 6.1, and You must include a 151 | copy of this License with every copy of the Source Code You 152 | distribute. You may not offer or impose any terms on any Source Code 153 | version that alters or restricts the applicable version of this 154 | License or the recipients' rights hereunder. However, You may include 155 | an additional document offering the additional rights described in 156 | Section 3.5. 157 | 158 | 3.2. Availability of Source Code. 159 | Any Modification which You create or to which You contribute must be 160 | made available in Source Code form under the terms of this License 161 | either on the same media as an Executable version or via an accepted 162 | Electronic Distribution Mechanism to anyone to whom you made an 163 | Executable version available; and if made available via Electronic 164 | Distribution Mechanism, must remain available for at least twelve (12) 165 | months after the date it initially became available, or at least six 166 | (6) months after a subsequent version of that particular Modification 167 | has been made available to such recipients. You are responsible for 168 | ensuring that the Source Code version remains available even if the 169 | Electronic Distribution Mechanism is maintained by a third party. 170 | 171 | 3.3. Description of Modifications. 172 | You must cause all Covered Code to which You contribute to contain a 173 | file documenting the changes You made to create that Covered Code and 174 | the date of any change. You must include a prominent statement that 175 | the Modification is derived, directly or indirectly, from Original 176 | Code provided by the Initial Developer and including the name of the 177 | Initial Developer in (a) the Source Code, and (b) in any notice in an 178 | Executable version or related documentation in which You describe the 179 | origin or ownership of the Covered Code. 180 | 181 | 3.4. Intellectual Property Matters 182 | (a) Third Party Claims. 183 | If Contributor has knowledge that a license under a third party's 184 | intellectual property rights is required to exercise the rights 185 | granted by such Contributor under Sections 2.1 or 2.2, 186 | Contributor must include a text file with the Source Code 187 | distribution titled "LEGAL" which describes the claim and the 188 | party making the claim in sufficient detail that a recipient will 189 | know whom to contact. If Contributor obtains such knowledge after 190 | the Modification is made available as described in Section 3.2, 191 | Contributor shall promptly modify the LEGAL file in all copies 192 | Contributor makes available thereafter and shall take other steps 193 | (such as notifying appropriate mailing lists or newsgroups) 194 | reasonably calculated to inform those who received the Covered 195 | Code that new knowledge has been obtained. 196 | 197 | (b) Contributor APIs. 198 | If Contributor's Modifications include an application programming 199 | interface and Contributor has knowledge of patent licenses which 200 | are reasonably necessary to implement that API, Contributor must 201 | also include this information in the LEGAL file. 202 | 203 | (c) Representations. 204 | Contributor represents that, except as disclosed pursuant to 205 | Section 3.4(a) above, Contributor believes that Contributor's 206 | Modifications are Contributor's original creation(s) and/or 207 | Contributor has sufficient rights to grant the rights conveyed by 208 | this License. 209 | 210 | 3.5. Required Notices. 211 | You must duplicate the notice in Exhibit A in each file of the Source 212 | Code. If it is not possible to put such notice in a particular Source 213 | Code file due to its structure, then You must include such notice in a 214 | location (such as a relevant directory) where a user would be likely 215 | to look for such a notice. If You created one or more Modification(s) 216 | You may add your name as a Contributor to the notice described in 217 | Exhibit A. You must also duplicate this License in any documentation 218 | for the Source Code where You describe recipients' rights or ownership 219 | rights relating to Covered Code. You may choose to offer, and to 220 | charge a fee for, warranty, support, indemnity or liability 221 | obligations to one or more recipients of Covered Code. However, You 222 | may do so only on Your own behalf, and not on behalf of the Initial 223 | Developer or any Contributor. You must make it absolutely clear than 224 | any such warranty, support, indemnity or liability obligation is 225 | offered by You alone, and You hereby agree to indemnify the Initial 226 | Developer and every Contributor for any liability incurred by the 227 | Initial Developer or such Contributor as a result of warranty, 228 | support, indemnity or liability terms You offer. 229 | 230 | 3.6. Distribution of Executable Versions. 231 | You may distribute Covered Code in Executable form only if the 232 | requirements of Section 3.1-3.5 have been met for that Covered Code, 233 | and if You include a notice stating that the Source Code version of 234 | the Covered Code is available under the terms of this License, 235 | including a description of how and where You have fulfilled the 236 | obligations of Section 3.2. The notice must be conspicuously included 237 | in any notice in an Executable version, related documentation or 238 | collateral in which You describe recipients' rights relating to the 239 | Covered Code. You may distribute the Executable version of Covered 240 | Code or ownership rights under a license of Your choice, which may 241 | contain terms different from this License, provided that You are in 242 | compliance with the terms of this License and that the license for the 243 | Executable version does not attempt to limit or alter the recipient's 244 | rights in the Source Code version from the rights set forth in this 245 | License. If You distribute the Executable version under a different 246 | license You must make it absolutely clear that any terms which differ 247 | from this License are offered by You alone, not by the Initial 248 | Developer or any Contributor. You hereby agree to indemnify the 249 | Initial Developer and every Contributor for any liability incurred by 250 | the Initial Developer or such Contributor as a result of any such 251 | terms You offer. 252 | 253 | 3.7. Larger Works. 254 | You may create a Larger Work by combining Covered Code with other code 255 | not governed by the terms of this License and distribute the Larger 256 | Work as a single product. In such a case, You must make sure the 257 | requirements of this License are fulfilled for the Covered Code. 258 | 259 | 4. Inability to Comply Due to Statute or Regulation. 260 | 261 | If it is impossible for You to comply with any of the terms of this 262 | License with respect to some or all of the Covered Code due to 263 | statute, judicial order, or regulation then You must: (a) comply with 264 | the terms of this License to the maximum extent possible; and (b) 265 | describe the limitations and the code they affect. Such description 266 | must be included in the LEGAL file described in Section 3.4 and must 267 | be included with all distributions of the Source Code. Except to the 268 | extent prohibited by statute or regulation, such description must be 269 | sufficiently detailed for a recipient of ordinary skill to be able to 270 | understand it. 271 | 272 | 5. Application of this License. 273 | 274 | This License applies to code to which the Initial Developer has 275 | attached the notice in Exhibit A and to related Covered Code. 276 | 277 | 6. Versions of the License. 278 | 279 | 6.1. New Versions. 280 | Netscape Communications Corporation ("Netscape") may publish revised 281 | and/or new versions of the License from time to time. Each version 282 | will be given a distinguishing version number. 283 | 284 | 6.2. Effect of New Versions. 285 | Once Covered Code has been published under a particular version of the 286 | License, You may always continue to use it under the terms of that 287 | version. You may also choose to use such Covered Code under the terms 288 | of any subsequent version of the License published by Netscape. No one 289 | other than Netscape has the right to modify the terms applicable to 290 | Covered Code created under this License. 291 | 292 | 6.3. Derivative Works. 293 | If You create or use a modified version of this License (which you may 294 | only do in order to apply it to code which is not already Covered Code 295 | governed by this License), You must (a) rename Your license so that 296 | the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", 297 | "MPL", "NPL" or any confusingly similar phrase do not appear in your 298 | license (except to note that your license differs from this License) 299 | and (b) otherwise make it clear that Your version of the license 300 | contains terms which differ from the Mozilla Public License and 301 | Netscape Public License. (Filling in the name of the Initial 302 | Developer, Original Code or Contributor in the notice described in 303 | Exhibit A shall not of themselves be deemed to be modifications of 304 | this License.) 305 | 306 | 7. DISCLAIMER OF WARRANTY. 307 | 308 | COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, 309 | WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, 310 | WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF 311 | DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. 312 | THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE 313 | IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, 314 | YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE 315 | COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER 316 | OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF 317 | ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 318 | 319 | 8. TERMINATION. 320 | 321 | 8.1. This License and the rights granted hereunder will terminate 322 | automatically if You fail to comply with terms herein and fail to cure 323 | such breach within 30 days of becoming aware of the breach. All 324 | sublicenses to the Covered Code which are properly granted shall 325 | survive any termination of this License. Provisions which, by their 326 | nature, must remain in effect beyond the termination of this License 327 | shall survive. 328 | 329 | 8.2. If You initiate litigation by asserting a patent infringement 330 | claim (excluding declatory judgment actions) against Initial Developer 331 | or a Contributor (the Initial Developer or Contributor against whom 332 | You file such action is referred to as "Participant") alleging that: 333 | 334 | (a) such Participant's Contributor Version directly or indirectly 335 | infringes any patent, then any and all rights granted by such 336 | Participant to You under Sections 2.1 and/or 2.2 of this License 337 | shall, upon 60 days notice from Participant terminate prospectively, 338 | unless if within 60 days after receipt of notice You either: (i) 339 | agree in writing to pay Participant a mutually agreeable reasonable 340 | royalty for Your past and future use of Modifications made by such 341 | Participant, or (ii) withdraw Your litigation claim with respect to 342 | the Contributor Version against such Participant. If within 60 days 343 | of notice, a reasonable royalty and payment arrangement are not 344 | mutually agreed upon in writing by the parties or the litigation claim 345 | is not withdrawn, the rights granted by Participant to You under 346 | Sections 2.1 and/or 2.2 automatically terminate at the expiration of 347 | the 60 day notice period specified above. 348 | 349 | (b) any software, hardware, or device, other than such Participant's 350 | Contributor Version, directly or indirectly infringes any patent, then 351 | any rights granted to You by such Participant under Sections 2.1(b) 352 | and 2.2(b) are revoked effective as of the date You first made, used, 353 | sold, distributed, or had made, Modifications made by that 354 | Participant. 355 | 356 | 8.3. If You assert a patent infringement claim against Participant 357 | alleging that such Participant's Contributor Version directly or 358 | indirectly infringes any patent where such claim is resolved (such as 359 | by license or settlement) prior to the initiation of patent 360 | infringement litigation, then the reasonable value of the licenses 361 | granted by such Participant under Sections 2.1 or 2.2 shall be taken 362 | into account in determining the amount or value of any payment or 363 | license. 364 | 365 | 8.4. In the event of termination under Sections 8.1 or 8.2 above, 366 | all end user license agreements (excluding distributors and resellers) 367 | which have been validly granted by You or any distributor hereunder 368 | prior to termination shall survive termination. 369 | 370 | 9. LIMITATION OF LIABILITY. 371 | 372 | UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT 373 | (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL 374 | DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, 375 | OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR 376 | ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY 377 | CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, 378 | WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER 379 | COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN 380 | INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF 381 | LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY 382 | RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW 383 | PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE 384 | EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO 385 | THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 386 | 387 | 10. U.S. GOVERNMENT END USERS. 388 | 389 | The Covered Code is a "commercial item," as that term is defined in 390 | 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer 391 | software" and "commercial computer software documentation," as such 392 | terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 393 | C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), 394 | all U.S. Government End Users acquire Covered Code with only those 395 | rights set forth herein. 396 | 397 | 11. MISCELLANEOUS. 398 | 399 | This License represents the complete agreement concerning subject 400 | matter hereof. If any provision of this License is held to be 401 | unenforceable, such provision shall be reformed only to the extent 402 | necessary to make it enforceable. This License shall be governed by 403 | California law provisions (except to the extent applicable law, if 404 | any, provides otherwise), excluding its conflict-of-law provisions. 405 | With respect to disputes in which at least one party is a citizen of, 406 | or an entity chartered or registered to do business in the United 407 | States of America, any litigation relating to this License shall be 408 | subject to the jurisdiction of the Federal Courts of the Northern 409 | District of California, with venue lying in Santa Clara County, 410 | California, with the losing party responsible for costs, including 411 | without limitation, court costs and reasonable attorneys' fees and 412 | expenses. The application of the United Nations Convention on 413 | Contracts for the International Sale of Goods is expressly excluded. 414 | Any law or regulation which provides that the language of a contract 415 | shall be construed against the drafter shall not apply to this 416 | License. 417 | 418 | 12. RESPONSIBILITY FOR CLAIMS. 419 | 420 | As between Initial Developer and the Contributors, each party is 421 | responsible for claims and damages arising, directly or indirectly, 422 | out of its utilization of rights under this License and You agree to 423 | work with Initial Developer and Contributors to distribute such 424 | responsibility on an equitable basis. Nothing herein is intended or 425 | shall be deemed to constitute any admission of liability. 426 | 427 | 13. MULTIPLE-LICENSED CODE. 428 | 429 | Initial Developer may designate portions of the Covered Code as 430 | "Multiple-Licensed". "Multiple-Licensed" means that the Initial 431 | Developer permits you to utilize portions of the Covered Code under 432 | Your choice of the NPL or the alternative licenses, if any, specified 433 | by the Initial Developer in the file described in Exhibit A. 434 | 435 | EXHIBIT A -Mozilla Public License. 436 | 437 | ``The contents of this file are subject to the Mozilla Public License 438 | Version 1.1 (the "License"); you may not use this file except in 439 | compliance with the License. You may obtain a copy of the License at 440 | http://www.mozilla.org/MPL/ 441 | 442 | Software distributed under the License is distributed on an "AS IS" 443 | basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 444 | License for the specific language governing rights and limitations 445 | under the License. 446 | 447 | The Original Code is ______________________________________. 448 | 449 | The Initial Developer of the Original Code is ________________________. 450 | Portions created by ______________________ are Copyright (C) ______ 451 | _______________________. All Rights Reserved. 452 | 453 | Contributor(s): ______________________________________. 454 | 455 | Alternatively, the contents of this file may be used under the terms 456 | of the _____ license (the "[___] License"), in which case the 457 | provisions of [______] License are applicable instead of those 458 | above. If you wish to allow use of your version of this file only 459 | under the terms of the [____] License and not to allow others to use 460 | your version of this file under the MPL, indicate your decision by 461 | deleting the provisions above and replace them with the notice and 462 | other provisions required by the [___] License. If you do not delete 463 | the provisions above, a recipient may use your version of this file 464 | under either the MPL or the [___] License." 465 | 466 | [NOTE: The text of this Exhibit A may differ slightly from the text of 467 | the notices in the Source Code files of the Original Code. You should 468 | use the text of this Exhibit A rather than the text found in the 469 | Original Code Source Code for Your Modifications.] 470 | 471 | -------------------------------------------------------------------------------- /Exe/dcov_execute.bat: -------------------------------------------------------------------------------- 1 | CodeCoverage.exe -e DelphiCodeCoverageWizardTests.exe -m DelphiCodeCoverageWizardTests.map -uf dcov_units.lst -spf dcov_paths.lst -od report -lt -xml -html -------------------------------------------------------------------------------- /Exe/dcov_paths.lst: -------------------------------------------------------------------------------- 1 | ..\Source\ 2 | -------------------------------------------------------------------------------- /Exe/dcov_units.lst: -------------------------------------------------------------------------------- 1 | fWizard 2 | uApplicationController 3 | uProjectSettings 4 | uScriptsGenerator 5 | -------------------------------------------------------------------------------- /Exe/delphi-code-coverage-wizard (Google code).url: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | URL=http://code.google.com/p/delphi-code-coverage-wizard/ 3 | IDList= 4 | [{000214A0-0000-0000-C000-000000000046}] 5 | Prop3=19,2 6 | -------------------------------------------------------------------------------- /Release/template/DelphiCodeCoverageWizard_v0.x/MPL-1.1.txt: -------------------------------------------------------------------------------- 1 | MOZILLA PUBLIC LICENSE 2 | Version 1.1 3 | 4 | --------------- 5 | 6 | 1. Definitions. 7 | 8 | 1.0.1. "Commercial Use" means distribution or otherwise making the 9 | Covered Code available to a third party. 10 | 11 | 1.1. "Contributor" means each entity that creates or contributes to 12 | the creation of Modifications. 13 | 14 | 1.2. "Contributor Version" means the combination of the Original 15 | Code, prior Modifications used by a Contributor, and the Modifications 16 | made by that particular Contributor. 17 | 18 | 1.3. "Covered Code" means the Original Code or Modifications or the 19 | combination of the Original Code and Modifications, in each case 20 | including portions thereof. 21 | 22 | 1.4. "Electronic Distribution Mechanism" means a mechanism generally 23 | accepted in the software development community for the electronic 24 | transfer of data. 25 | 26 | 1.5. "Executable" means Covered Code in any form other than Source 27 | Code. 28 | 29 | 1.6. "Initial Developer" means the individual or entity identified 30 | as the Initial Developer in the Source Code notice required by Exhibit 31 | A. 32 | 33 | 1.7. "Larger Work" means a work which combines Covered Code or 34 | portions thereof with code not governed by the terms of this License. 35 | 36 | 1.8. "License" means this document. 37 | 38 | 1.8.1. "Licensable" means having the right to grant, to the maximum 39 | extent possible, whether at the time of the initial grant or 40 | subsequently acquired, any and all of the rights conveyed herein. 41 | 42 | 1.9. "Modifications" means any addition to or deletion from the 43 | substance or structure of either the Original Code or any previous 44 | Modifications. When Covered Code is released as a series of files, a 45 | Modification is: 46 | A. Any addition to or deletion from the contents of a file 47 | containing Original Code or previous Modifications. 48 | 49 | B. Any new file that contains any part of the Original Code or 50 | previous Modifications. 51 | 52 | 1.10. "Original Code" means Source Code of computer software code 53 | which is described in the Source Code notice required by Exhibit A as 54 | Original Code, and which, at the time of its release under this 55 | License is not already Covered Code governed by this License. 56 | 57 | 1.10.1. "Patent Claims" means any patent claim(s), now owned or 58 | hereafter acquired, including without limitation, method, process, 59 | and apparatus claims, in any patent Licensable by grantor. 60 | 61 | 1.11. "Source Code" means the preferred form of the Covered Code for 62 | making modifications to it, including all modules it contains, plus 63 | any associated interface definition files, scripts used to control 64 | compilation and installation of an Executable, or source code 65 | differential comparisons against either the Original Code or another 66 | well known, available Covered Code of the Contributor's choice. The 67 | Source Code can be in a compressed or archival form, provided the 68 | appropriate decompression or de-archiving software is widely available 69 | for no charge. 70 | 71 | 1.12. "You" (or "Your") means an individual or a legal entity 72 | exercising rights under, and complying with all of the terms of, this 73 | License or a future version of this License issued under Section 6.1. 74 | For legal entities, "You" includes any entity which controls, is 75 | controlled by, or is under common control with You. For purposes of 76 | this definition, "control" means (a) the power, direct or indirect, 77 | to cause the direction or management of such entity, whether by 78 | contract or otherwise, or (b) ownership of more than fifty percent 79 | (50%) of the outstanding shares or beneficial ownership of such 80 | entity. 81 | 82 | 2. Source Code License. 83 | 84 | 2.1. The Initial Developer Grant. 85 | The Initial Developer hereby grants You a world-wide, royalty-free, 86 | non-exclusive license, subject to third party intellectual property 87 | claims: 88 | (a) under intellectual property rights (other than patent or 89 | trademark) Licensable by Initial Developer to use, reproduce, 90 | modify, display, perform, sublicense and distribute the Original 91 | Code (or portions thereof) with or without Modifications, and/or 92 | as part of a Larger Work; and 93 | 94 | (b) under Patents Claims infringed by the making, using or 95 | selling of Original Code, to make, have made, use, practice, 96 | sell, and offer for sale, and/or otherwise dispose of the 97 | Original Code (or portions thereof). 98 | 99 | (c) the licenses granted in this Section 2.1(a) and (b) are 100 | effective on the date Initial Developer first distributes 101 | Original Code under the terms of this License. 102 | 103 | (d) Notwithstanding Section 2.1(b) above, no patent license is 104 | granted: 1) for code that You delete from the Original Code; 2) 105 | separate from the Original Code; or 3) for infringements caused 106 | by: i) the modification of the Original Code or ii) the 107 | combination of the Original Code with other software or devices. 108 | 109 | 2.2. Contributor Grant. 110 | Subject to third party intellectual property claims, each Contributor 111 | hereby grants You a world-wide, royalty-free, non-exclusive license 112 | 113 | (a) under intellectual property rights (other than patent or 114 | trademark) Licensable by Contributor, to use, reproduce, modify, 115 | display, perform, sublicense and distribute the Modifications 116 | created by such Contributor (or portions thereof) either on an 117 | unmodified basis, with other Modifications, as Covered Code 118 | and/or as part of a Larger Work; and 119 | 120 | (b) under Patent Claims infringed by the making, using, or 121 | selling of Modifications made by that Contributor either alone 122 | and/or in combination with its Contributor Version (or portions 123 | of such combination), to make, use, sell, offer for sale, have 124 | made, and/or otherwise dispose of: 1) Modifications made by that 125 | Contributor (or portions thereof); and 2) the combination of 126 | Modifications made by that Contributor with its Contributor 127 | Version (or portions of such combination). 128 | 129 | (c) the licenses granted in Sections 2.2(a) and 2.2(b) are 130 | effective on the date Contributor first makes Commercial Use of 131 | the Covered Code. 132 | 133 | (d) Notwithstanding Section 2.2(b) above, no patent license is 134 | granted: 1) for any code that Contributor has deleted from the 135 | Contributor Version; 2) separate from the Contributor Version; 136 | 3) for infringements caused by: i) third party modifications of 137 | Contributor Version or ii) the combination of Modifications made 138 | by that Contributor with other software (except as part of the 139 | Contributor Version) or other devices; or 4) under Patent Claims 140 | infringed by Covered Code in the absence of Modifications made by 141 | that Contributor. 142 | 143 | 3. Distribution Obligations. 144 | 145 | 3.1. Application of License. 146 | The Modifications which You create or to which You contribute are 147 | governed by the terms of this License, including without limitation 148 | Section 2.2. The Source Code version of Covered Code may be 149 | distributed only under the terms of this License or a future version 150 | of this License released under Section 6.1, and You must include a 151 | copy of this License with every copy of the Source Code You 152 | distribute. You may not offer or impose any terms on any Source Code 153 | version that alters or restricts the applicable version of this 154 | License or the recipients' rights hereunder. However, You may include 155 | an additional document offering the additional rights described in 156 | Section 3.5. 157 | 158 | 3.2. Availability of Source Code. 159 | Any Modification which You create or to which You contribute must be 160 | made available in Source Code form under the terms of this License 161 | either on the same media as an Executable version or via an accepted 162 | Electronic Distribution Mechanism to anyone to whom you made an 163 | Executable version available; and if made available via Electronic 164 | Distribution Mechanism, must remain available for at least twelve (12) 165 | months after the date it initially became available, or at least six 166 | (6) months after a subsequent version of that particular Modification 167 | has been made available to such recipients. You are responsible for 168 | ensuring that the Source Code version remains available even if the 169 | Electronic Distribution Mechanism is maintained by a third party. 170 | 171 | 3.3. Description of Modifications. 172 | You must cause all Covered Code to which You contribute to contain a 173 | file documenting the changes You made to create that Covered Code and 174 | the date of any change. You must include a prominent statement that 175 | the Modification is derived, directly or indirectly, from Original 176 | Code provided by the Initial Developer and including the name of the 177 | Initial Developer in (a) the Source Code, and (b) in any notice in an 178 | Executable version or related documentation in which You describe the 179 | origin or ownership of the Covered Code. 180 | 181 | 3.4. Intellectual Property Matters 182 | (a) Third Party Claims. 183 | If Contributor has knowledge that a license under a third party's 184 | intellectual property rights is required to exercise the rights 185 | granted by such Contributor under Sections 2.1 or 2.2, 186 | Contributor must include a text file with the Source Code 187 | distribution titled "LEGAL" which describes the claim and the 188 | party making the claim in sufficient detail that a recipient will 189 | know whom to contact. If Contributor obtains such knowledge after 190 | the Modification is made available as described in Section 3.2, 191 | Contributor shall promptly modify the LEGAL file in all copies 192 | Contributor makes available thereafter and shall take other steps 193 | (such as notifying appropriate mailing lists or newsgroups) 194 | reasonably calculated to inform those who received the Covered 195 | Code that new knowledge has been obtained. 196 | 197 | (b) Contributor APIs. 198 | If Contributor's Modifications include an application programming 199 | interface and Contributor has knowledge of patent licenses which 200 | are reasonably necessary to implement that API, Contributor must 201 | also include this information in the LEGAL file. 202 | 203 | (c) Representations. 204 | Contributor represents that, except as disclosed pursuant to 205 | Section 3.4(a) above, Contributor believes that Contributor's 206 | Modifications are Contributor's original creation(s) and/or 207 | Contributor has sufficient rights to grant the rights conveyed by 208 | this License. 209 | 210 | 3.5. Required Notices. 211 | You must duplicate the notice in Exhibit A in each file of the Source 212 | Code. If it is not possible to put such notice in a particular Source 213 | Code file due to its structure, then You must include such notice in a 214 | location (such as a relevant directory) where a user would be likely 215 | to look for such a notice. If You created one or more Modification(s) 216 | You may add your name as a Contributor to the notice described in 217 | Exhibit A. You must also duplicate this License in any documentation 218 | for the Source Code where You describe recipients' rights or ownership 219 | rights relating to Covered Code. You may choose to offer, and to 220 | charge a fee for, warranty, support, indemnity or liability 221 | obligations to one or more recipients of Covered Code. However, You 222 | may do so only on Your own behalf, and not on behalf of the Initial 223 | Developer or any Contributor. You must make it absolutely clear than 224 | any such warranty, support, indemnity or liability obligation is 225 | offered by You alone, and You hereby agree to indemnify the Initial 226 | Developer and every Contributor for any liability incurred by the 227 | Initial Developer or such Contributor as a result of warranty, 228 | support, indemnity or liability terms You offer. 229 | 230 | 3.6. Distribution of Executable Versions. 231 | You may distribute Covered Code in Executable form only if the 232 | requirements of Section 3.1-3.5 have been met for that Covered Code, 233 | and if You include a notice stating that the Source Code version of 234 | the Covered Code is available under the terms of this License, 235 | including a description of how and where You have fulfilled the 236 | obligations of Section 3.2. The notice must be conspicuously included 237 | in any notice in an Executable version, related documentation or 238 | collateral in which You describe recipients' rights relating to the 239 | Covered Code. You may distribute the Executable version of Covered 240 | Code or ownership rights under a license of Your choice, which may 241 | contain terms different from this License, provided that You are in 242 | compliance with the terms of this License and that the license for the 243 | Executable version does not attempt to limit or alter the recipient's 244 | rights in the Source Code version from the rights set forth in this 245 | License. If You distribute the Executable version under a different 246 | license You must make it absolutely clear that any terms which differ 247 | from this License are offered by You alone, not by the Initial 248 | Developer or any Contributor. You hereby agree to indemnify the 249 | Initial Developer and every Contributor for any liability incurred by 250 | the Initial Developer or such Contributor as a result of any such 251 | terms You offer. 252 | 253 | 3.7. Larger Works. 254 | You may create a Larger Work by combining Covered Code with other code 255 | not governed by the terms of this License and distribute the Larger 256 | Work as a single product. In such a case, You must make sure the 257 | requirements of this License are fulfilled for the Covered Code. 258 | 259 | 4. Inability to Comply Due to Statute or Regulation. 260 | 261 | If it is impossible for You to comply with any of the terms of this 262 | License with respect to some or all of the Covered Code due to 263 | statute, judicial order, or regulation then You must: (a) comply with 264 | the terms of this License to the maximum extent possible; and (b) 265 | describe the limitations and the code they affect. Such description 266 | must be included in the LEGAL file described in Section 3.4 and must 267 | be included with all distributions of the Source Code. Except to the 268 | extent prohibited by statute or regulation, such description must be 269 | sufficiently detailed for a recipient of ordinary skill to be able to 270 | understand it. 271 | 272 | 5. Application of this License. 273 | 274 | This License applies to code to which the Initial Developer has 275 | attached the notice in Exhibit A and to related Covered Code. 276 | 277 | 6. Versions of the License. 278 | 279 | 6.1. New Versions. 280 | Netscape Communications Corporation ("Netscape") may publish revised 281 | and/or new versions of the License from time to time. Each version 282 | will be given a distinguishing version number. 283 | 284 | 6.2. Effect of New Versions. 285 | Once Covered Code has been published under a particular version of the 286 | License, You may always continue to use it under the terms of that 287 | version. You may also choose to use such Covered Code under the terms 288 | of any subsequent version of the License published by Netscape. No one 289 | other than Netscape has the right to modify the terms applicable to 290 | Covered Code created under this License. 291 | 292 | 6.3. Derivative Works. 293 | If You create or use a modified version of this License (which you may 294 | only do in order to apply it to code which is not already Covered Code 295 | governed by this License), You must (a) rename Your license so that 296 | the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", 297 | "MPL", "NPL" or any confusingly similar phrase do not appear in your 298 | license (except to note that your license differs from this License) 299 | and (b) otherwise make it clear that Your version of the license 300 | contains terms which differ from the Mozilla Public License and 301 | Netscape Public License. (Filling in the name of the Initial 302 | Developer, Original Code or Contributor in the notice described in 303 | Exhibit A shall not of themselves be deemed to be modifications of 304 | this License.) 305 | 306 | 7. DISCLAIMER OF WARRANTY. 307 | 308 | COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, 309 | WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, 310 | WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF 311 | DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. 312 | THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE 313 | IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, 314 | YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE 315 | COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER 316 | OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF 317 | ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 318 | 319 | 8. TERMINATION. 320 | 321 | 8.1. This License and the rights granted hereunder will terminate 322 | automatically if You fail to comply with terms herein and fail to cure 323 | such breach within 30 days of becoming aware of the breach. All 324 | sublicenses to the Covered Code which are properly granted shall 325 | survive any termination of this License. Provisions which, by their 326 | nature, must remain in effect beyond the termination of this License 327 | shall survive. 328 | 329 | 8.2. If You initiate litigation by asserting a patent infringement 330 | claim (excluding declatory judgment actions) against Initial Developer 331 | or a Contributor (the Initial Developer or Contributor against whom 332 | You file such action is referred to as "Participant") alleging that: 333 | 334 | (a) such Participant's Contributor Version directly or indirectly 335 | infringes any patent, then any and all rights granted by such 336 | Participant to You under Sections 2.1 and/or 2.2 of this License 337 | shall, upon 60 days notice from Participant terminate prospectively, 338 | unless if within 60 days after receipt of notice You either: (i) 339 | agree in writing to pay Participant a mutually agreeable reasonable 340 | royalty for Your past and future use of Modifications made by such 341 | Participant, or (ii) withdraw Your litigation claim with respect to 342 | the Contributor Version against such Participant. If within 60 days 343 | of notice, a reasonable royalty and payment arrangement are not 344 | mutually agreed upon in writing by the parties or the litigation claim 345 | is not withdrawn, the rights granted by Participant to You under 346 | Sections 2.1 and/or 2.2 automatically terminate at the expiration of 347 | the 60 day notice period specified above. 348 | 349 | (b) any software, hardware, or device, other than such Participant's 350 | Contributor Version, directly or indirectly infringes any patent, then 351 | any rights granted to You by such Participant under Sections 2.1(b) 352 | and 2.2(b) are revoked effective as of the date You first made, used, 353 | sold, distributed, or had made, Modifications made by that 354 | Participant. 355 | 356 | 8.3. If You assert a patent infringement claim against Participant 357 | alleging that such Participant's Contributor Version directly or 358 | indirectly infringes any patent where such claim is resolved (such as 359 | by license or settlement) prior to the initiation of patent 360 | infringement litigation, then the reasonable value of the licenses 361 | granted by such Participant under Sections 2.1 or 2.2 shall be taken 362 | into account in determining the amount or value of any payment or 363 | license. 364 | 365 | 8.4. In the event of termination under Sections 8.1 or 8.2 above, 366 | all end user license agreements (excluding distributors and resellers) 367 | which have been validly granted by You or any distributor hereunder 368 | prior to termination shall survive termination. 369 | 370 | 9. LIMITATION OF LIABILITY. 371 | 372 | UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT 373 | (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL 374 | DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, 375 | OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR 376 | ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY 377 | CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, 378 | WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER 379 | COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN 380 | INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF 381 | LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY 382 | RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW 383 | PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE 384 | EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO 385 | THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 386 | 387 | 10. U.S. GOVERNMENT END USERS. 388 | 389 | The Covered Code is a "commercial item," as that term is defined in 390 | 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer 391 | software" and "commercial computer software documentation," as such 392 | terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 393 | C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), 394 | all U.S. Government End Users acquire Covered Code with only those 395 | rights set forth herein. 396 | 397 | 11. MISCELLANEOUS. 398 | 399 | This License represents the complete agreement concerning subject 400 | matter hereof. If any provision of this License is held to be 401 | unenforceable, such provision shall be reformed only to the extent 402 | necessary to make it enforceable. This License shall be governed by 403 | California law provisions (except to the extent applicable law, if 404 | any, provides otherwise), excluding its conflict-of-law provisions. 405 | With respect to disputes in which at least one party is a citizen of, 406 | or an entity chartered or registered to do business in the United 407 | States of America, any litigation relating to this License shall be 408 | subject to the jurisdiction of the Federal Courts of the Northern 409 | District of California, with venue lying in Santa Clara County, 410 | California, with the losing party responsible for costs, including 411 | without limitation, court costs and reasonable attorneys' fees and 412 | expenses. The application of the United Nations Convention on 413 | Contracts for the International Sale of Goods is expressly excluded. 414 | Any law or regulation which provides that the language of a contract 415 | shall be construed against the drafter shall not apply to this 416 | License. 417 | 418 | 12. RESPONSIBILITY FOR CLAIMS. 419 | 420 | As between Initial Developer and the Contributors, each party is 421 | responsible for claims and damages arising, directly or indirectly, 422 | out of its utilization of rights under this License and You agree to 423 | work with Initial Developer and Contributors to distribute such 424 | responsibility on an equitable basis. Nothing herein is intended or 425 | shall be deemed to constitute any admission of liability. 426 | 427 | 13. MULTIPLE-LICENSED CODE. 428 | 429 | Initial Developer may designate portions of the Covered Code as 430 | "Multiple-Licensed". "Multiple-Licensed" means that the Initial 431 | Developer permits you to utilize portions of the Covered Code under 432 | Your choice of the NPL or the alternative licenses, if any, specified 433 | by the Initial Developer in the file described in Exhibit A. 434 | 435 | EXHIBIT A -Mozilla Public License. 436 | 437 | ``The contents of this file are subject to the Mozilla Public License 438 | Version 1.1 (the "License"); you may not use this file except in 439 | compliance with the License. You may obtain a copy of the License at 440 | http://www.mozilla.org/MPL/ 441 | 442 | Software distributed under the License is distributed on an "AS IS" 443 | basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 444 | License for the specific language governing rights and limitations 445 | under the License. 446 | 447 | The Original Code is ______________________________________. 448 | 449 | The Initial Developer of the Original Code is ________________________. 450 | Portions created by ______________________ are Copyright (C) ______ 451 | _______________________. All Rights Reserved. 452 | 453 | Contributor(s): ______________________________________. 454 | 455 | Alternatively, the contents of this file may be used under the terms 456 | of the _____ license (the "[___] License"), in which case the 457 | provisions of [______] License are applicable instead of those 458 | above. If you wish to allow use of your version of this file only 459 | under the terms of the [____] License and not to allow others to use 460 | your version of this file under the MPL, indicate your decision by 461 | deleting the provisions above and replace them with the notice and 462 | other provisions required by the [___] License. If you do not delete 463 | the provisions above, a recipient may use your version of this file 464 | under either the MPL or the [___] License." 465 | 466 | [NOTE: The text of this Exhibit A may differ slightly from the text of 467 | the notices in the Source Code files of the Original Code. You should 468 | use the text of this Exhibit A rather than the text found in the 469 | Original Code Source Code for Your Modifications.] 470 | 471 | -------------------------------------------------------------------------------- /Release/template/DelphiCodeCoverageWizard_v0.x/delphi-code-coverage-wizard (Google code).url: -------------------------------------------------------------------------------- 1 | [InternetShortcut] 2 | URL=http://code.google.com/p/delphi-code-coverage-wizard/ 3 | IDList= 4 | [{000214A0-0000-0000-C000-000000000046}] 5 | Prop3=19,2 6 | -------------------------------------------------------------------------------- /Source/DelphiCodeCoverageWizard.dpr: -------------------------------------------------------------------------------- 1 | program DelphiCodeCoverageWizard; 2 | 3 | uses 4 | Forms, 5 | fWizard in 'fWizard.pas' {WizardForm}, 6 | uApplicationController in 'uApplicationController.pas', 7 | uProjectSettings in 'uProjectSettings.pas', 8 | uScriptsGenerator in 'uScriptsGenerator.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.Title := 'DelphiCodeCoverageWizard'; 16 | Application.CreateForm(TWizardForm, WizardForm); 17 | Application.Run; 18 | end. 19 | -------------------------------------------------------------------------------- /Source/DelphiCodeCoverageWizard.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {3629547A-7FD7-40B0-BB85-86E8CFF7CCC4} 4 | DelphiCodeCoverageWizard.dpr 5 | 15.4 6 | True 7 | Debug 8 | Application 9 | VCL 10 | DCC32 11 | Win32 12 | 1 13 | 14 | 15 | true 16 | 17 | 18 | true 19 | Base 20 | true 21 | 22 | 23 | true 24 | Base 25 | true 26 | 27 | 28 | true 29 | Base 30 | true 31 | 32 | 33 | true 34 | Cfg_1 35 | true 36 | true 37 | 38 | 39 | true 40 | Base 41 | true 42 | 43 | 44 | DelphiCodeCoverageWizard 45 | true 46 | true 47 | CompanyName=;FileDescription=;FileVersion=0.2.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=0.2.0.0;Comments= 48 | Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 49 | 0 50 | 2 51 | 1036 52 | vclimg;vcl;vclx;dbrtl;Rave90VCL;bdertl;VclSmp;rtl;svnui;svn;TeeUI;TeeDB;Tee;vclactnband;vcldb;vcldbx;vcltouch;xmlrtl;dsnap;dsnapcon;vclib;ibxpress;adortl;IndyCore;IndySystem;IndyProtocols;inet;intrawebdb_110_150;Intraweb_110_150;vclie;websnap;webdsnap;inetdb;inetdbbde;inetdbxpress;soaprtl;vclribbon;dbexpress;DbxCommonDriver;DataSnapIndy10ServerTransport;DataSnapProviderClient;DbxClientDriver;DataSnapClient;dbxcds;DataSnapServer;AzureCloud;DBXInterBaseDriver;DBXMySQLDriver;DBXFirebirdDriver;DBXSybaseASEDriver;DBXSybaseASADriver;DBXOracleDriver;DBXMSSQLDriver;DBXInformixDriver;DBXDb2Driver;JclDeveloperTools;Jcl;JclVcl;JclContainers;JvCore;JvSystem;JvStdCtrls;JvAppFrm;JvBands;JvDB;JvDlgs;JvBDE;JvControls;JvCmp;JvCrypt;JvCustom;JvDocking;JvDotNetCtrls;JvGlobus;JvHMI;JvJans;JvManagedThreads;JvMM;JvNet;JvPageComps;JvPascalInterpreter;JvPluginSystem;JvPrintPreview;JvRuntimeDesign;JvTimeFramework;JvWizards;JvXPCtrls;$(DCC_UsePackage) 53 | 00400000 54 | ..\Tmp 55 | ..\Exe 56 | false 57 | false 58 | false 59 | false 60 | false 61 | 62 | 63 | true 64 | DelphiCodeCoverageWizard_Icon.ico 65 | System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 66 | 1033 67 | $(BDS)\bin\default_app.manifest 68 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= 69 | 70 | 71 | DelphiCodeCoverageWizard_Icon.ico 72 | $(BDS)\bin\default_app.manifest 73 | 74 | 75 | DEBUG;$(DCC_Define) 76 | false 77 | true 78 | 79 | 80 | 3 81 | CompanyName=;FileDescription=;FileVersion=0.3.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=0.3.0.0;Comments= 82 | 1033 83 | 84 | 85 | false 86 | RELEASE;$(DCC_Define) 87 | 0 88 | 0 89 | 90 | 91 | 92 | MainSource 93 | 94 | 95 |
WizardForm
96 |
97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | Cfg_2 112 | Base 113 | 114 | 115 | Base 116 | 117 | 118 | Cfg_1 119 | Base 120 | 121 |
122 | 123 | 124 | 125 | Delphi.Personality.12 126 | 127 | 128 | 129 | 130 | True 131 | False 132 | 0 133 | 2 134 | 0 135 | 0 136 | False 137 | True 138 | False 139 | False 140 | False 141 | 1036 142 | 1252 143 | 144 | 145 | 146 | 147 | 0.2.0.0 148 | 149 | 150 | 151 | 152 | 153 | 0.2.0.0 154 | 155 | 156 | 157 | DelphiCodeCoverageWizard.dpr 158 | 159 | 160 | Microsoft Office 2000 Sample Automation Server Wrapper Components 161 | Microsoft Office XP Sample Automation Server Wrapper Components 162 | 163 | 164 | 165 | True 166 | False 167 | 168 | True 169 | 170 | D:\Dev\Projects\delphi-code-coverage-wizard\Test\DelphiCodeCoverageWizardTests.dproj 171 | 172 | 173 | 12 174 | 175 |
176 | -------------------------------------------------------------------------------- /Source/DelphiCodeCoverageWizard.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/DelphiCodeCoverageWizard.res -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/Class Diagram.txvcls: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/Class Diagram_diagram.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/Collaboration Diagram1_diagram.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/DelphiCodeCoverageWizard/default.txaPackage: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/DelphiCodeCoverageWizard/default.txvpck: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/DelphiCodeCoverageWizard/default_diagram.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/Use Case Diagram1.txvuse: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/Use Case Diagram1_diagram.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/default.txaPackage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/default.txvpck: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/default_diagram.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/fMain/default.txaPackage: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/fMain/default.txvpck: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/fMain/default_diagram.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/uApplicationController/default.txaPackage: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/uApplicationController/default.txvpck: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/ModelSupport_DelphiCodeCoverageWizard/uApplicationController/default_diagram.tvsconfig: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Source/fWizard.pas: -------------------------------------------------------------------------------- 1 | unit fWizard; 2 | 3 | interface 4 | 5 | uses 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 | Dialogs, JvWizard, JvWizardRouteMapNodes, JvExControls, StdCtrls, Mask, 8 | JvExMask, JvToolEdit, CheckLst, JvExCheckLst, JvCheckListBox, JvLabel, 9 | Buttons, JvExButtons, JvBitBtn, JvExStdCtrls, JvCheckBox, pngimage, ExtCtrls, 10 | JvExExtCtrls, JvImage, JvGroupBox, JvMemo, JvRadioGroup; 11 | 12 | type 13 | TWizardForm = class(TForm) 14 | JvWizard1: TJvWizard; 15 | JvWizardWelcomePage: TJvWizardWelcomePage; 16 | JvWizardSourcePage: TJvWizardInteriorPage; 17 | JvWizardExecutablePage: TJvWizardInteriorPage; 18 | JvWizardRouteMapNodes1: TJvWizardRouteMapNodes; 19 | JvWizardSettingsPage: TJvWizardInteriorPage; 20 | JvWizardGeneratePage: TJvWizardInteriorPage; 21 | JvDirectoryEdit_DelphiSourceFiles: TJvDirectoryEdit; 22 | JvLabel1: TJvLabel; 23 | lbSelectedFilesForCoverage: TJvCheckListBox; 24 | JvLabel2: TJvLabel; 25 | editProgramToAnalyze: TJvFilenameEdit; 26 | JvLabel3: TJvLabel; 27 | JvLabel4: TJvLabel; 28 | editProgramMapping: TJvFilenameEdit; 29 | btnGenerate: TJvBitBtn; 30 | JvWizardOutputPage: TJvWizardInteriorPage; 31 | JvLabel5: TJvLabel; 32 | JvLabel6: TJvLabel; 33 | cbMakeRelativeToScriptPath: TJvCheckBox; 34 | labelScriptPathReminder: TJvLabel; 35 | editScriptOutput: TJvDirectoryEdit; 36 | editCoverageReport: TJvDirectoryEdit; 37 | btnRunCoverage: TJvBitBtn; 38 | imageWelcome: TJvImage; 39 | JvGroupBox1: TJvGroupBox; 40 | cbOutputFormat_EMMA: TJvCheckBox; 41 | cbOutputFormat_META: TJvCheckBox; 42 | cbOutputFormat_XML: TJvCheckBox; 43 | cbOutputFormat_HTML: TJvCheckBox; 44 | memoPreview: TJvMemo; 45 | JvLabel7: TJvLabel; 46 | JvLabel8: TJvLabel; 47 | procedure JvDirectoryEdit_DelphiSourceFilesAfterDialog(Sender: TObject; var AName: string; 48 | var AAction: Boolean); 49 | procedure editProgramToAnalyzeAfterDialog(Sender: TObject; var AName: string; 50 | var AAction: Boolean); 51 | procedure btnGenerateClick(Sender: TObject); 52 | procedure JvWizardExecutablePageNextButtonClick(Sender: TObject; 53 | var Stop: Boolean); 54 | procedure editScriptOutputAfterDialog(Sender: TObject; var AName: string; 55 | var AAction: Boolean); 56 | procedure btnRunCoverageClick(Sender: TObject); 57 | procedure FormShow(Sender: TObject); 58 | procedure JvWizardOutputPageNextButtonClick(Sender: TObject; 59 | var Stop: Boolean); 60 | procedure JvWizard1HelpButtonClick(Sender: TObject); 61 | procedure imageWelcomeDblClick(Sender: TObject); 62 | procedure JvWizard1CancelButtonClick(Sender: TObject); 63 | procedure lbSelectedFilesForCoverageClickCheck(Sender: TObject); 64 | procedure editCoverageReportAfterDialog(Sender: TObject; var AName: string; 65 | var AAction: Boolean); 66 | procedure cbOutputFormat_EMMAClick(Sender: TObject); 67 | procedure JvWizardSettingsPageNextButtonClick(Sender: TObject; var Stop: Boolean); 68 | procedure cbMakeRelativeToScriptPathClick(Sender: TObject); 69 | private 70 | { Private declarations } 71 | procedure NewSourceFile(Sender: TObject; const AFilename : string); 72 | function FGetRelativePath(const APath: string): string; 73 | public 74 | { Public declarations } 75 | end; 76 | 77 | var 78 | WizardForm: TWizardForm; 79 | 80 | implementation 81 | 82 | {$R *.dfm} 83 | 84 | uses 85 | JclFileUtils, ShellApi, System.UITypes, 86 | uApplicationController, uProjectSettings; 87 | 88 | 89 | procedure TWizardForm.JvDirectoryEdit_DelphiSourceFilesAfterDialog(Sender: TObject; 90 | var AName: string; var AAction: Boolean); 91 | begin 92 | // Exit is user cancel dialog 93 | if(AAction = False) then exit; 94 | // If list is not empty, ask confirmation to clear the list 95 | if(lbSelectedFilesForCoverage.Count <> 0) then 96 | begin 97 | if(MessageDlg('File list selected for coverage is not empty.'+#13+#10 98 | +'Changing delphi source file directory will clear the list.' 99 | +#13+#10+'Press OK to continue.', mtWarning, [mbOK, mbCancel], 0) = mrCancel) then exit 100 | else lbSelectedFilesForCoverage.Clear; 101 | end; 102 | // Fill the list with '*.pas' files found 103 | 104 | ApplicationController.OnNewSourceFile := NewSourceFile; 105 | lbSelectedFilesForCoverage.Items.BeginUpdate; 106 | ApplicationController.BuildSourceList(AName); 107 | lbSelectedFilesForCoverage.CheckAll; 108 | lbSelectedFilesForCoverage.Items.EndUpdate(); 109 | end; 110 | 111 | procedure TWizardForm.JvWizard1CancelButtonClick(Sender: TObject); 112 | begin 113 | // Ask to close application 114 | if(MessageDlg('Are you sure you want to quit the application ?', mtWarning, [mbOK, mbCancel], 0) = mrOk) then 115 | Close; 116 | end; 117 | 118 | procedure TWizardForm.JvWizard1HelpButtonClick(Sender: TObject); 119 | begin 120 | MessageDlg('DelphiCodeCoverageWizard by TridenT.', mtInformation, [mbOK], 0); 121 | end; 122 | 123 | procedure TWizardForm.JvWizardExecutablePageNextButtonClick(Sender: TObject; 124 | var Stop: Boolean); 125 | begin 126 | if(Sender = JvWizardExecutablePage) then 127 | begin 128 | // Propagate Executable folder to source folder 129 | JvDirectoryEdit_DelphiSourceFiles.InitialDir := ExtractFilePath(ApplicationController.ProjectSettings.ProgramToAnalyze); 130 | editScriptOutput.InitialDir := ExtractFilePath(ApplicationController.ProjectSettings.ProgramToAnalyze); 131 | end; 132 | 133 | end; 134 | 135 | procedure TWizardForm.JvWizardOutputPageNextButtonClick(Sender: TObject; 136 | var Stop: Boolean); 137 | begin 138 | if(Sender = JvWizardOutputPage) then 139 | begin 140 | // Propagate Scripts folder to path reminder 141 | labelScriptPathReminder.Caption := editScriptOutput.Directory; 142 | 143 | // Save OutputFormat settings 144 | ApplicationController.ProjectSettings.OutputFormat := []; 145 | // EMMA 146 | if(cbOutputFormat_EMMA.Checked) then ApplicationController.ProjectSettings.OutputFormat := 147 | ApplicationController.ProjectSettings.OutputFormat + [ofEMMA]; 148 | // META 149 | if(cbOutputFormat_META.Checked) then ApplicationController.ProjectSettings.OutputFormat := 150 | ApplicationController.ProjectSettings.OutputFormat + [ofMETA]; 151 | // XML 152 | if(cbOutputFormat_XML.Checked) then ApplicationController.ProjectSettings.OutputFormat := 153 | ApplicationController.ProjectSettings.OutputFormat + [ofXML]; 154 | // HTML 155 | if(cbOutputFormat_HTML.Checked) then ApplicationController.ProjectSettings.OutputFormat := 156 | ApplicationController.ProjectSettings.OutputFormat + [ofHTML]; 157 | end; 158 | end; 159 | 160 | procedure TWizardForm.JvWizardSettingsPageNextButtonClick(Sender: TObject; var Stop: Boolean); 161 | begin 162 | if(Sender = JvWizardSettingsPage) then 163 | begin 164 | ApplicationController.ProjectSettings.RelativeToScriptPath := cbMakeRelativeToScriptPath.Checked; 165 | end; 166 | end; 167 | 168 | procedure TWizardForm.lbSelectedFilesForCoverageClickCheck(Sender: TObject); 169 | begin 170 | MessageDlg(lbSelectedFilesForCoverage.Items[lbSelectedFilesForCoverage.ItemIndex], mtWarning, [mbOK], 0); 171 | end; 172 | 173 | procedure TWizardForm.NewSourceFile(Sender: TObject; const AFilename: string); 174 | begin 175 | lbSelectedFilesForCoverage.AddItem(ExtractRelativePath(ApplicationController.ProjectSettings.ProgramSourcePath, AFilename), nil); 176 | end; 177 | 178 | procedure TWizardForm.btnGenerateClick(Sender: TObject); 179 | begin 180 | ApplicationController.Generate; 181 | MessageDlg(Format('Scripts generated in [%s] folder.',[ApplicationController.ProjectSettings.ScriptsPath]), mtInformation, [mbOK], 0); 182 | end; 183 | 184 | procedure TWizardForm.btnRunCoverageClick(Sender: TObject); 185 | var 186 | ScriptFilename : string; 187 | begin 188 | // Execute 189 | ScriptFilename := ApplicationController.ProjectSettings.ScriptsPath + 'dcov_execute.bat'; 190 | ShellExecute(Handle, 'OPEN', PChar('explorer.exe') 191 | , PChar('/select, "' + ScriptFilename + '"'), nil, SW_NORMAL) ; 192 | end; 193 | 194 | procedure TWizardForm.cbMakeRelativeToScriptPathClick(Sender: TObject); 195 | begin 196 | if(cbMakeRelativeToScriptPath.Checked) then 197 | begin 198 | memoPreview.Lines.Add('DelphiCoverage.exe: [' + FGetRelativePath(ApplicationController.ProjectSettings.ApplicationPath) + ']'); 199 | memoPreview.Lines.Add('ProgramToAnalyze: [' + FGetRelativePath(ApplicationController.ProjectSettings.ProgramToAnalyze) + ']'); 200 | memoPreview.Lines.Add('ProgramMapping: [' + FGetRelativePath(ApplicationController.ProjectSettings.ProgramMapping) + ']'); 201 | memoPreview.Lines.Add('ProgramSourcePath: [' + FGetRelativePath(ApplicationController.ProjectSettings.ProgramSourcePath) + ']'); 202 | memoPreview.Lines.Add('ReportPath: [' + FGetRelativePath(ApplicationController.ProjectSettings.ReportPath) + ']'); 203 | end 204 | else memoPreview.Clear; 205 | end; 206 | 207 | procedure TWizardForm.cbOutputFormat_EMMAClick(Sender: TObject); 208 | begin 209 | if(not cbOutputFormat_EMMA.Checked) then cbOutputFormat_META.Checked := False; 210 | end; 211 | 212 | procedure TWizardForm.editCoverageReportAfterDialog(Sender: TObject; 213 | var AName: string; var AAction: Boolean); 214 | begin 215 | // Exit if user cancel dialog 216 | if(AAction = False) then exit; 217 | ApplicationController.ProjectSettings.ReportPath := AName + '\'; 218 | end; 219 | 220 | procedure TWizardForm.editProgramToAnalyzeAfterDialog(Sender: TObject; 221 | var AName: string; var AAction: Boolean); 222 | begin 223 | // Exit if user cancel dialog 224 | if(AAction = False) then exit; 225 | // Assign Program to analyze to settings 226 | ApplicationController.ProjectSettings.ProgramToAnalyze := AName; 227 | editProgramMapping.FileName := ApplicationController.ProjectSettings.ProgramMapping; 228 | end; 229 | 230 | procedure TWizardForm.editScriptOutputAfterDialog(Sender: TObject; 231 | var AName: string; var AAction: Boolean); 232 | begin 233 | // Exit is user cancel dialog 234 | if(AAction = False) then exit; 235 | // Propagate Script output to Report 236 | ApplicationController.ProjectSettings.ScriptsPath := AName + '\'; 237 | editCoverageReport.InitialDir := AName; 238 | end; 239 | 240 | procedure TWizardForm.FormShow(Sender: TObject); 241 | begin 242 | Caption := ApplicationController.Title; 243 | end; 244 | 245 | procedure TWizardForm.imageWelcomeDblClick(Sender: TObject); 246 | begin 247 | ShellExecute(Handle, 'open', 'http://code.google.com/p/delphi-code-coverage-wizard',nil,nil, SW_SHOWNORMAL) ; 248 | end; 249 | 250 | function TWizardForm.FGetRelativePath(const APath: string): string; 251 | begin 252 | // Extract path relative to scripts relative 253 | Result := ExtractRelativepath(ApplicationController.ProjectSettings.ScriptsPath , APath) 254 | end; 255 | 256 | end. 257 | -------------------------------------------------------------------------------- /Source/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/images/background.png -------------------------------------------------------------------------------- /Source/images/save_64.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/images/save_64.bmp -------------------------------------------------------------------------------- /Source/images/save_64_h.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/images/save_64_h.bmp -------------------------------------------------------------------------------- /Source/images/search_64.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/images/search_64.bmp -------------------------------------------------------------------------------- /Source/images/search_64_h.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/images/search_64_h.bmp -------------------------------------------------------------------------------- /Source/images/wizard google-project logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/images/wizard google-project logo_small.png -------------------------------------------------------------------------------- /Source/images/wizard.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Source/images/wizard.ico -------------------------------------------------------------------------------- /Source/uApplicationController.pas: -------------------------------------------------------------------------------- 1 | unit uApplicationController; 2 | 3 | interface 4 | 5 | uses 6 | Classes, SysUtils, 7 | uProjectSettings; 8 | 9 | type 10 | TOnNewSourceFile = procedure(Sender: TObject; const AFilename : string) of object; 11 | 12 | TApplicationController = class 13 | private 14 | FProjectSettings: TProjectSettings; 15 | FTitle: string; 16 | FOnNewSourceFile: TOnNewSourceFile; 17 | FApplicationExeName : TFilename; 18 | procedure FReadExeVersion; 19 | procedure FBuildFileList(const ARootFolder: string; AFileList : TStrings); 20 | public 21 | property ProjectSettings : TProjectSettings read FProjectSettings write FProjectSettings; 22 | property Title : string read FTitle; 23 | constructor Create(const AApplicationExeName : TFilename); 24 | destructor Destroy; override; 25 | procedure BuildSourceList(const ASourcePath : TFilename); 26 | property OnNewSourceFile : TOnNewSourceFile read FOnNewSourceFile write FOnNewSourceFile; 27 | procedure Generate; 28 | end; 29 | 30 | var 31 | ApplicationController : TApplicationController; 32 | 33 | implementation 34 | 35 | uses 36 | Forms, JvVersionInfo, JclFileUtils, 37 | uScriptsGenerator; 38 | 39 | { TApplicationController } 40 | 41 | {*------------------------------------------------------------------------------ 42 | Test if file is Pascal source file 43 | Function is defined as JclUtilsFile needs : TFileMatchFunc = 44 | function(const Attr: Integer; const FileInfo: TSearchRec): Boolean; 45 | @param Attr Attribute of file 46 | @param FileInfo Search record holding the search context 47 | @return TRUE if extension match with '*.pas filter', FALSE otherwise 48 | -------------------------------------------------------------------------------} 49 | function PasMatchFunc(const Attr: Integer; const FileInfo: TSearchRec): Boolean; 50 | const 51 | PAS_FILE_EXT = '.pas'; 52 | begin 53 | Result := ((Attr and FileInfo.Attr) <> 0) 54 | and SameText(ExtractFileExt(FileInfo.Name),PAS_FILE_EXT); 55 | end; 56 | 57 | {*------------------------------------------------------------------------------ 58 | Build a file list filtered with PAS extension 59 | Start is the input directory, and eventually the sub-directories, 60 | it then add all matching files in the FileList. 61 | @param RootFolder Starting folder to build list from 62 | -------------------------------------------------------------------------------} 63 | procedure TApplicationController.FBuildFileList(const ARootFolder: string; AFileList : TStrings); 64 | const 65 | PAS_FILE_FILTER : string = '*.pas'; 66 | {$WARN SYMBOL_PLATFORM OFF} 67 | FA_ALL_FILES_EX = faNormalFile + 68 | faReadOnly + faHidden + faSysFile + faArchive + faTemporary + faSparseFile 69 | + faReparsePoint + faCompressed + faOffline + faNotContentIndexed + faEncrypted; 70 | {$WARN SYMBOL_PLATFORM ON} 71 | begin 72 | // $80 must be added because if the file's archive attribute is not set, 73 | // then FindFirst return [FindoInfo.Attr = 128] ... 74 | AdvBuildFileList(ARootFolder + PAS_FILE_FILTER, FA_ALL_FILES_EX, AFileList,{amAny} amCustom, 75 | [flRecursive, flFullNames], '', {nil}PasMatchFunc); 76 | end; 77 | 78 | procedure TApplicationController.Generate; 79 | var 80 | ScriptsGenerator : TScriptsGenerator; 81 | begin 82 | // Generate 83 | ScriptsGenerator := TScriptsGenerator.Create(FProjectSettings); 84 | ScriptsGenerator.Generate; 85 | FreeAndNil(ScriptsGenerator); 86 | end; 87 | 88 | constructor TApplicationController.Create(const AApplicationExeName : TFilename); 89 | begin 90 | FApplicationExeName := AApplicationExeName; 91 | FProjectSettings := TProjectSettings.Create(ExtractFilePath(AApplicationExeName)); 92 | FReadExeVersion(); 93 | end; 94 | 95 | destructor TApplicationController.Destroy; 96 | begin 97 | FreeAndNil(FProjectSettings); 98 | inherited; 99 | end; 100 | 101 | procedure TApplicationController.BuildSourceList(const ASourcePath : TFilename); 102 | var 103 | SourceFileList : TStringList; 104 | MyString : string; 105 | begin 106 | ProjectSettings.ProgramSourcePath := ASourcePath + '\'; 107 | 108 | SourceFileList := TStringList.Create; 109 | FBuildFileList(ASourcePath + '\', SourceFileList); 110 | for MyString in SourceFileList do 111 | begin 112 | ProjectSettings.ProgramSourceFiles.AddFile(MyString); 113 | if(assigned(FOnNewSourceFile)) then FOnNewSourceFile(self, MyString); 114 | end; 115 | FreeAndNil(SourceFileList); 116 | end; 117 | 118 | procedure TApplicationController.FReadExeVersion; 119 | var 120 | AppVersionInfo : TJvVersionInfo; 121 | begin 122 | // Get version info 123 | AppVersionInfo := TJvVersionInfo.Create(FApplicationExeName); 124 | FTitle := 'DelphiCodeCoverageWizard' + ' v' + AppVersionInfo.FileVersion; 125 | FreeAndNil(AppVersionInfo); 126 | end; 127 | 128 | initialization 129 | ApplicationController := TApplicationController.Create(Application.ExeName); 130 | 131 | finalization 132 | FreeAndNil(ApplicationController); 133 | 134 | end. 135 | -------------------------------------------------------------------------------- /Source/uProjectSettings.pas: -------------------------------------------------------------------------------- 1 | unit uProjectSettings; 2 | 3 | interface 4 | 5 | uses 6 | SysUtils, Generics.Collections, Classes; 7 | 8 | type 9 | 10 | TProgramSourceFileItem = class 11 | private 12 | FFilename: string; 13 | FSelected: Boolean; 14 | public 15 | constructor Create(const AFilename : string); 16 | property Filename : string read FFilename write FFilename; 17 | property Selected : Boolean read FSelected write FSelected; 18 | end; 19 | 20 | TProgramSourceFiles = class 21 | private 22 | FBasePath: TFilename; 23 | FItemList : TObjectList; 24 | public 25 | property BasePath : TFilename read FBasePath write FBasePath; 26 | constructor Create; 27 | destructor Destroy; override; 28 | procedure AddFile(const AItemFilename : TFilename); 29 | procedure GetCheckedItemsList(const ACheckedList : TStrings); 30 | end; 31 | 32 | 33 | TProjectSettings = class 34 | public 35 | type TOutputFormat = (ofEMMA, ofMETA, ofXML, ofHTML); 36 | type TOutputFormatSet = set of TOutputFormat; 37 | private 38 | FProgramToAnalyze: TFilename; 39 | FProgramMapping: TFilename; 40 | FProgramSourceFiles: TProgramSourceFiles; 41 | FScriptsPath: TFilename; 42 | FReportPath: TFilename; 43 | FApplicationPath: TFilename; 44 | FOutputFormat: TOutputFormatSet; 45 | FRelativeToScriptPath: Boolean; 46 | function FGetProgramToAnalyze: TFilename; 47 | function FGetProgramMapping: TFilename; 48 | function FGetProgramSourcePath: TFilename; 49 | procedure FSetProgramToAnalyze(const Value: TFilename); 50 | procedure FSetProgramSourcePath(const Value: TFilename); 51 | public 52 | property ProgramToAnalyze : TFilename read FGetProgramToAnalyze write FSetProgramToAnalyze; 53 | property ProgramMapping : TFilename read FGetProgramMapping write FProgramMapping; 54 | property ProgramSourcePath : TFilename read FGetProgramSourcePath write FSetProgramSourcePath; 55 | property ProgramSourceFiles : TProgramSourceFiles read FProgramSourceFiles write FProgramSourceFiles; 56 | property ScriptsPath : TFilename read FScriptsPath write FScriptsPath; 57 | property ReportPath : TFilename read FReportPath write FReportPath; 58 | property ApplicationPath : TFilename read FApplicationPath; 59 | property OutputFormat : TOutputFormatSet read FOutputFormat write FOutputFormat; 60 | property RelativeToScriptPath : Boolean read FRelativeToScriptPath write FRelativeToScriptPath; 61 | constructor Create(const AApplicationPath : TFilename); virtual; 62 | destructor Destroy; override; 63 | end; 64 | 65 | implementation 66 | 67 | uses 68 | JvCheckListBox; 69 | 70 | { TProjectSettings } 71 | 72 | constructor TProjectSettings.Create(const AApplicationPath : TFilename); 73 | begin 74 | FApplicationPath := AApplicationPath; 75 | FProgramSourceFiles := TProgramSourceFiles.Create; 76 | end; 77 | 78 | destructor TProjectSettings.Destroy; 79 | begin 80 | FreeAndNil(FProgramSourceFiles); 81 | inherited; 82 | end; 83 | 84 | function TProjectSettings.FGetProgramMapping: TFilename; 85 | begin 86 | Result := FProgramMapping; 87 | end; 88 | 89 | function TProjectSettings.FGetProgramSourcePath: TFilename; 90 | begin 91 | Result := FProgramSourceFiles.FBasePath; 92 | end; 93 | 94 | function TProjectSettings.FGetProgramToAnalyze: TFilename; 95 | begin 96 | Result := FProgramToAnalyze; 97 | end; 98 | 99 | procedure TProjectSettings.FSetProgramSourcePath(const Value: TFilename); 100 | begin 101 | FProgramSourceFiles.FBasePath := Value; 102 | end; 103 | 104 | procedure TProjectSettings.FSetProgramToAnalyze(const Value: TFilename); 105 | var 106 | PossibleMappingFilename : TFilename; 107 | begin 108 | FProgramToAnalyze := Value; 109 | // test EXE file exists 110 | if(FileExists(Value)) then 111 | begin 112 | PossibleMappingFilename := ChangeFileExt(Value, '.map'); 113 | if(FileExists(PossibleMappingFilename)) then 114 | FProgramMapping := PossibleMappingFilename; 115 | end; 116 | end; 117 | 118 | { TProgramSourceFiles } 119 | 120 | procedure TProgramSourceFiles.AddFile(const AItemFilename: TFilename); 121 | var 122 | NewItem : TProgramSourceFileItem; 123 | NewItemRelativePath : TFilename; 124 | begin 125 | NewItemRelativePath := ExtractRelativePath(FBasePath, AItemFilename); 126 | NewItem := TProgramSourceFileItem.Create(NewItemRelativePath); 127 | FItemList.Add(NewItem); 128 | end; 129 | 130 | constructor TProgramSourceFiles.Create; 131 | begin 132 | inherited; 133 | FItemList := TObjectList.Create(True); 134 | end; 135 | 136 | destructor TProgramSourceFiles.Destroy; 137 | begin 138 | FreeAndNil(FItemList); 139 | end; 140 | 141 | procedure TProgramSourceFiles.GetCheckedItemsList(const ACheckedList: TStrings); 142 | var 143 | SourceFileItem: TProgramSourceFileItem; 144 | begin 145 | ACheckedList.Clear; 146 | ACheckedList.BeginUpdate; 147 | for SourceFileItem in FItemList do 148 | begin 149 | if(SourceFileItem.Selected) then 150 | ACheckedList.Add(SourceFileItem.Filename); 151 | end; 152 | ACheckedList.EndUpdate; 153 | end; 154 | 155 | { TProgramSourceFileItem } 156 | 157 | constructor TProgramSourceFileItem.Create(const AFilename: string); 158 | begin 159 | FFilename := AFilename; 160 | FSelected := True; 161 | end; 162 | 163 | end. 164 | -------------------------------------------------------------------------------- /Source/uScriptsGenerator.pas: -------------------------------------------------------------------------------- 1 | unit uScriptsGenerator; 2 | 3 | interface 4 | 5 | uses 6 | uProjectSettings; 7 | 8 | type 9 | TScriptsGenerator = class 10 | private 11 | FSettings : TProjectSettings; 12 | procedure GenerateDCovExecuteFile; 13 | procedure GenerateDCovUnitsAndPathFiles; 14 | function FGetOutputFormatSwitches : string; 15 | function FGetPath(const APath : string) : string; 16 | public 17 | constructor Create(const ASettings : TProjectSettings); virtual; 18 | destructor Destroy; override; 19 | procedure Generate; 20 | end; 21 | 22 | implementation 23 | 24 | uses 25 | Classes, SysUtils, IOUtils; 26 | 27 | constructor TScriptsGenerator.Create(const ASettings: TProjectSettings); 28 | begin 29 | FSettings := ASettings; 30 | end; 31 | 32 | destructor TScriptsGenerator.Destroy; 33 | begin 34 | FSettings := nil; 35 | end; 36 | 37 | procedure TScriptsGenerator.Generate; 38 | begin 39 | // Generate 40 | GenerateDCovExecuteFile(); 41 | GenerateDCovUnitsAndPathFiles(); 42 | end; 43 | 44 | procedure TScriptsGenerator.GenerateDCovExecuteFile; 45 | const 46 | // Application path, ProgramToAnalyze, ProgramMapping, ReportPath 47 | DCOV_EXECUTE_FORMAT = '"%sCodeCoverage.exe" -e "%s" -m "%s" -uf dcov_units.lst -spf dcov_paths.lst -od "%s" -lt'; 48 | var 49 | DCovExecuteText : TStringList; 50 | begin 51 | // Create 'dcov_execute.bat' 52 | DCovExecuteText := TStringList.Create; 53 | // Fill 54 | DCovExecuteText.Add(Format(DCOV_EXECUTE_FORMAT, [FGetPath(FSettings.ApplicationPath), FGetPath(FSettings.ProgramToAnalyze), 55 | FGetPath(FSettings.ProgramMapping), FGetPath(FSettings.ReportPath)]) + FGetOutputFormatSwitches()); 56 | // Save 57 | DCovExecuteText.SaveToFile(FSettings.ScriptsPath + 'dcov_execute.bat'); 58 | FreeAndNil(DCovExecuteText); 59 | end; 60 | 61 | procedure TScriptsGenerator.GenerateDCovUnitsAndPathFiles; 62 | var 63 | DCovUnitsText : TStringList; 64 | DCovPathsText : TStringList; 65 | CheckedUnitList : TStrings; 66 | UnitFilename: string; 67 | begin 68 | // Create 'dcov_execute.bat' 69 | DCovUnitsText := TStringList.Create; 70 | DCovUnitsText.Sorted := True; 71 | DCovUnitsText.Duplicates := dupIgnore; 72 | 73 | DCovPathsText := TStringList.Create; 74 | DCovPathsText.Sorted := True; 75 | DCovPathsText.Duplicates := dupIgnore; 76 | 77 | // Get Checked unit list 78 | CheckedUnitList := TStringList.Create; 79 | FSettings.ProgramSourceFiles.GetCheckedItemsList(CheckedUnitList); 80 | 81 | for UnitFilename in CheckedUnitList do 82 | begin 83 | // Add Unit name 84 | DCovUnitsText.Add(ChangeFileExt(ExtractFileName(UnitFilename), '')); 85 | // Add unit path 86 | DCovPathsText.Add(FSettings.ProgramSourcePath + ExtractFilePath(UnitFilename)); 87 | end; 88 | // Save 89 | DCovUnitsText.SaveToFile(FSettings.ScriptsPath + 'dcov_units.lst'); 90 | DCovPathsText.SaveToFile(FSettings.ScriptsPath + 'dcov_paths.lst'); 91 | // Free 92 | FreeAndNil(CheckedUnitList); 93 | FreeAndNil(DCovUnitsText); 94 | FreeAndNil(DCovPathsText); 95 | end; 96 | 97 | function TScriptsGenerator.FGetOutputFormatSwitches: string; 98 | begin 99 | Result := ''; 100 | if(ofEMMA in FSettings.OutputFormat) then Result := Result + ' -emma'; 101 | if(ofMETA in FSettings.OutputFormat) then Result := Result + ' -meta'; 102 | if(ofXML in FSettings.OutputFormat) then Result := Result + ' -xml'; 103 | if(ofHTML in FSettings.OutputFormat) then Result := Result + ' -html'; 104 | end; 105 | 106 | function TScriptsGenerator.FGetPath(const APath: string): string; 107 | begin 108 | if(FSettings.RelativeToScriptPath) then 109 | // Extract path relative to scripts relative 110 | Result := ExtractRelativepath(FSettings.ScriptsPath , APath) 111 | else Result := APath; 112 | end; 113 | 114 | end. 115 | -------------------------------------------------------------------------------- /Test/DUnit_addon/XmlTestRunner2.pas: -------------------------------------------------------------------------------- 1 | (* 2 | * The contents of this file are subject to the Mozilla Public 3 | * License Version 1.1 (the "License"); you may not use this file 4 | * except in compliance with the License. You may obtain a copy of 5 | * the License at http://www.mozilla.org/MPL/ 6 | * 7 | * Software distributed under the License is distributed on an "AS 8 | * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 9 | * implied. See the License for the specific language governing 10 | * rights and limitations under the License. 11 | * 12 | * The Original Code is DUnit. 13 | * 14 | * The Initial Developers of the Original Code are Kent Beck, Erich Gamma, 15 | * and Juancarlo Aez. 16 | * Portions created The Initial Developers are Copyright (C) 1999-2000. 17 | * Portions created by The DUnit Group are Copyright (C) 2000-2003. 18 | * All rights reserved. 19 | * 20 | * Contributor(s): 21 | * Kent Beck 22 | * Erich Gamma 23 | * Juanco Aez 24 | * Chris Morris 25 | * Jeff Moore 26 | * Kris Golko 27 | * The DUnit group at SourceForge 28 | * 29 | *) 30 | 31 | { 32 | Contributor : Laurent Laffont 33 | } 34 | 35 | unit XMLTestRunner2; 36 | 37 | interface 38 | uses 39 | SysUtils, 40 | Classes, 41 | TestFramework; 42 | 43 | const 44 | DEFAULT_FILENAME = 'dunit-report.xml'; 45 | 46 | type 47 | TXMLTestListener = class(TInterfacedObject, ITestListener, ITestListenerX) 48 | private 49 | FOutputFile : TextFile; 50 | FFileName : String; 51 | 52 | protected 53 | startTime : Integer; 54 | dtStartTime : TDateTime; 55 | 56 | testStart : TDateTime; 57 | FSuiteStack : TStringList; 58 | 59 | procedure writeReport(str: String); 60 | 61 | function GetCurrentSuiteName : string; 62 | public 63 | // implement the ITestListener interface 64 | procedure AddSuccess(test: ITest); virtual; 65 | procedure AddError(error: TTestFailure); virtual; 66 | procedure AddFailure(failure: TTestFailure); virtual; 67 | function ShouldRunTest(test :ITest):boolean; virtual; 68 | procedure StartSuite(suite: ITest); virtual; 69 | procedure EndSuite(suite: ITest); virtual; 70 | procedure StartTest(test: ITest); virtual; 71 | procedure EndTest(test: ITest); virtual; 72 | procedure TestingStarts; virtual; 73 | procedure TestingEnds(testResult: TTestResult); virtual; 74 | procedure Status(test :ITest; const Msg :string); 75 | procedure Warning(test :ITest; const Msg :string); 76 | 77 | constructor Create; overload; 78 | constructor Create(outputFile : String); overload; 79 | destructor Destroy; override; 80 | 81 | class function RunTest(suite: ITest; outputFile:String): TTestResult; overload; 82 | class function RunRegisteredTests(outputFile:String): TTestResult; 83 | class function text2sgml(text : String) : String; 84 | class function StringReplaceAll (text,byt,mot : string ) :string; 85 | 86 | //:Report filename. If an empty string, then standard output is used (compile with -CC option) 87 | property FileName : String read FFileName write FFileName; 88 | end; 89 | 90 | {: Run the given test suite 91 | } 92 | function RunTest(suite: ITest; outputFile:String=DEFAULT_FILENAME) : TTestResult; overload; 93 | function RunRegisteredTests(outputFile:String=DEFAULT_FILENAME) : TTestResult; overload; 94 | 95 | implementation 96 | 97 | uses Forms, Windows; 98 | 99 | const 100 | CRLF = #13#10; 101 | MAX_DEEP = 5; 102 | 103 | { TXMLTestListener } 104 | 105 | constructor TXMLTestListener.Create; 106 | begin 107 | Create(DEFAULT_FILENAME); 108 | end; 109 | 110 | constructor TXMLTestListener.Create(outputFile : String); 111 | begin 112 | inherited Create; 113 | FileName := outputFile; 114 | FSuiteStack := TStringList.Create; 115 | end; 116 | 117 | {: 118 | Write F in the report file or on standard output if none specified 119 | } 120 | procedure TXMLTestListener.writeReport(str : String); 121 | begin 122 | if TTextRec(FOutputFile).Mode = fmOutput then 123 | writeln(FOutputFile, str) 124 | else 125 | writeln(str); 126 | end; 127 | 128 | const 129 | TrueFalse : array[Boolean] of string = ('False', 'True'); 130 | 131 | procedure TXMLTestListener.AddSuccess(test: ITest); 132 | begin 133 | if test.tests.Count<=0 then 134 | begin 135 | writeReport(Format('', 136 | [GetCurrentSuiteName, test.GetName, TrueFalse[test.Enabled], test.ElapsedTestTime / 1000])); 137 | end; 138 | end; 139 | 140 | procedure TXMLTestListener.AddError(error: TTestFailure); 141 | begin 142 | writeReport(Format('', 143 | [GetCurrentSuiteName, error.FailedTest.GetName, TrueFalse[error.FailedTest.Enabled], error.FailedTest.ElapsedTestTime / 1000])); 144 | writeReport(Format('', [error.ThrownExceptionName, error.LocationInfo])); 145 | writeReport('' + text2sgml(error.ThrownExceptionMessage) + ''); 146 | writeReport(''); 147 | end; 148 | 149 | procedure TXMLTestListener.AddFailure(failure: TTestFailure); 150 | begin 151 | writeReport(Format('', 152 | [GetCurrentSuiteName, failure.FailedTest.GetName, TrueFalse[failure.FailedTest.Enabled], failure.FailedTest.ElapsedTestTime / 1000])); 153 | writeReport(Format('', [failure.ThrownExceptionName, failure.LocationInfo])); 154 | writeReport('' + text2sgml(failure.ThrownExceptionMessage) + ''); 155 | writeReport(''); 156 | end; 157 | 158 | 159 | procedure TXMLTestListener.StartTest(test: ITest); 160 | begin 161 | end; 162 | 163 | procedure TXMLTestListener.EndTest(test: ITest); 164 | begin 165 | end; 166 | 167 | procedure TXMLTestListener.TestingStarts; 168 | begin 169 | startTime := GetTickCount; 170 | dtStartTime := Now; 171 | 172 | if FFileName<>'' then 173 | begin 174 | AssignFile(FOutputFile, FFileName); 175 | Rewrite(FOutputFile); 176 | end; 177 | 178 | writeReport(''); 179 | writeReport(Format('', 180 | [RegisteredTests.CountTestCases, 181 | RegisteredTests.CountTestCases - RegisteredTests.CountEnabledTestCases, 182 | DateToStr(Now), 183 | TimeToStr(Now)])); 184 | end; 185 | 186 | procedure TXMLTestListener.TestingEnds(testResult: TTestResult); 187 | var 188 | runTime : Double; 189 | successRate : Integer; 190 | begin 191 | runtime := (GetTickCount - startTime) / 1000; 192 | if testResult.RunCount > 0 then 193 | successRate := Trunc( 194 | ((testResult.runCount - testResult.failureCount - testResult.errorCount) 195 | /testResult.runCount) 196 | *100) 197 | else 198 | successRate := 100; 199 | 200 | writeReport(''+CRLF+ 201 | ''+CRLF+ 202 | ''+CRLF+ 203 | ''+CRLF+ 204 | ''+CRLF+ 205 | ''+CRLF+ 206 | ''+CRLF+ 207 | Format('', [runtime])+CRLF+ 208 | ''+CRLF+ 209 | ''); 210 | 211 | if TTextRec(FOutputFile).Mode = fmOutput then 212 | Close(FOutputFile); 213 | end; 214 | 215 | class function TXMLTestListener.RunTest(suite: ITest; outputFile:String): TTestResult; 216 | begin 217 | Result := TestFramework.RunTest(suite, [TXMLTestListener.Create(outputFile)]); 218 | end; 219 | 220 | class function TXMLTestListener.RunRegisteredTests(outputFile:String): TTestResult; 221 | begin 222 | Result := RunTest(registeredTests, outputFile); 223 | end; 224 | 225 | function RunTest(suite: ITest; outputFile:String=DEFAULT_FILENAME): TTestResult; 226 | begin 227 | Result := TestFramework.RunTest(suite, [TXMLTestListener.Create(outputFile)]); 228 | end; 229 | 230 | function RunRegisteredTests(outputFile:String=DEFAULT_FILENAME): TTestResult; 231 | begin 232 | Result := RunTest(registeredTests, outputFile); 233 | end; 234 | 235 | 236 | procedure TXMLTestListener.Status(test: ITest; const Msg: string); 237 | begin 238 | writeReport(Format('INFO: %s: %s', [test.Name, Msg])); 239 | end; 240 | 241 | procedure TXMLTestListener.Warning(test :ITest; const Msg :string); 242 | begin 243 | writeReport(Format('WARNING: %s: %s', [test.Name, Msg])); 244 | end; 245 | 246 | function TXMLTestListener.ShouldRunTest(test: ITest): boolean; 247 | begin 248 | Result := test.Enabled; 249 | if not Result then 250 | writeReport(Format('', 251 | [GetCurrentSuiteName, test.GetName])); 252 | end; 253 | 254 | procedure TXMLTestListener.EndSuite(suite: ITest); 255 | begin 256 | if CompareText(suite.Name, ExtractFileName(Application.ExeName)) = 0 then 257 | Exit; 258 | writeReport(''); 259 | writeReport(''); 260 | FSuiteStack.Delete(0); 261 | end; 262 | 263 | procedure TXMLTestListener.StartSuite(suite: ITest); 264 | var 265 | s : string; 266 | begin 267 | if CompareText(suite.Name, ExtractFileName(Application.ExeName)) = 0 then 268 | Exit; 269 | s := GetCurrentSuiteName + suite.Name; 270 | writeReport(Format('', [s, suite.CountTestCases, suite.CountTestCases - suite.CountEnabledTestCases])); 271 | FSuiteStack.Insert(0, suite.getName); 272 | writeReport(''); 273 | end; 274 | 275 | {: 276 | Replace byt string by mot in text string 277 | } 278 | class function TXMLTestListener.StringReplaceAll (text,byt,mot : string ) :string; 279 | var 280 | plats : integer; 281 | begin 282 | While pos(byt,text) > 0 do 283 | begin 284 | plats := pos(byt,text); 285 | delete (text,plats,length(byt)); 286 | insert (mot,text,plats); 287 | end; 288 | result := text; 289 | end; 290 | 291 | {: 292 | Replace special character by sgml compliant characters 293 | } 294 | class function TXMLTestListener.text2sgml(text : String) : String; 295 | begin 296 | text := stringreplaceall (text,'<','<'); 297 | text := stringreplaceall (text,'>','>'); 298 | result := text; 299 | end; 300 | 301 | destructor TXMLTestListener.Destroy; 302 | begin 303 | FreeAndNil(FSuiteStack); 304 | inherited Destroy; 305 | end; 306 | 307 | function TXMLTestListener.GetCurrentSuiteName: string; 308 | var 309 | c : Integer; 310 | begin 311 | Result := ''; 312 | for c := 0 to FSuiteStack.Count - 1 do 313 | Result := FSuiteStack[c] + '.' + Result; 314 | end; 315 | 316 | end. 317 | -------------------------------------------------------------------------------- /Test/DelphiCodeCoverageWizardTests.dpr: -------------------------------------------------------------------------------- 1 | program DelphiCodeCoverageWizardTests; 2 | { 3 | 4 | Delphi DUnit Test Project 5 | ------------------------- 6 | This project contains the DUnit test framework and the GUI/Console test runners. 7 | Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options 8 | to use the console test runner. Otherwise the GUI test runner will be used by 9 | default. 10 | 11 | } 12 | 13 | {$IFDEF CONSOLE_TESTRUNNER} 14 | {$APPTYPE CONSOLE} 15 | {$ENDIF} 16 | 17 | uses 18 | Forms, 19 | TestFramework, 20 | GUITestRunner, 21 | TextTestRunner, 22 | Test_uProjectSettings in 'Test_uProjectSettings.pas', 23 | uProjectSettings in '..\Source\uProjectSettings.pas', 24 | XmlTestRunner2 in 'DUnit_addon\XmlTestRunner2.pas'; 25 | 26 | {R *.RES} 27 | 28 | begin 29 | Application.Initialize; 30 | if IsConsole then 31 | {$IFDEF XML_OUTPUT} 32 | with XmlTestRunner2.RunRegisteredTests do 33 | {$ELSE} 34 | with TextTestRunner.RunRegisteredTests do 35 | {$ENDIF} 36 | Free 37 | else 38 | GUITestRunner.RunRegisteredTests; 39 | end. 40 | 41 | -------------------------------------------------------------------------------- /Test/DelphiCodeCoverageWizardTests.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {F3732C11-5132-4CCB-B276-65098EAB938E} 4 | DelphiCodeCoverageWizardTests.dpr 5 | 15.4 6 | True 7 | Debug 8 | Application 9 | VCL 10 | DCC32 11 | Win32 12 | 1 13 | 14 | 15 | true 16 | 17 | 18 | true 19 | Base 20 | true 21 | 22 | 23 | true 24 | Base 25 | true 26 | 27 | 28 | true 29 | Base 30 | true 31 | 32 | 33 | true 34 | Cfg_1 35 | true 36 | true 37 | 38 | 39 | true 40 | Cfg_3 41 | true 42 | true 43 | true 44 | 45 | 46 | true 47 | Base 48 | true 49 | 50 | 51 | DelphiCodeCoverageWizardTests 52 | 1036 53 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= 54 | Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) 55 | $(BDS)\Source\DUnit\src;$(DCC_UnitSearchPath) 56 | 00400000 57 | ..\Exe 58 | _CONSOLE_TESTRUNNER;$(DCC_Define) 59 | ..\Tmp 60 | false 61 | false 62 | false 63 | false 64 | false 65 | 66 | 67 | true 68 | DelphiCodeCoverageWizardTests_Icon.ico 69 | System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 70 | 1033 71 | $(BDS)\bin\default_app.manifest 72 | 73 | 74 | DelphiCodeCoverageWizardTests_Icon.ico 75 | $(BDS)\bin\default_app.manifest 76 | 77 | 78 | 3 79 | DEBUG;$(DCC_Define) 80 | false 81 | true 82 | 83 | 84 | CONSOLE_TESTRUNNER;$(DCC_Define) 85 | 86 | 87 | XML_OUTPUT;$(DCC_Define) 88 | 89 | 90 | false 91 | RELEASE;$(DCC_Define) 92 | 0 93 | 0 94 | 95 | 96 | 97 | MainSource 98 | 99 | 100 | 101 | 102 | 103 | Cfg_4 104 | Cfg_3 105 | 106 | 107 | Cfg_2 108 | Base 109 | 110 | 111 | Cfg_3 112 | Cfg_1 113 | 114 | 115 | Base 116 | 117 | 118 | Cfg_1 119 | Base 120 | 121 | 122 | 123 | 124 | 125 | Delphi.Personality.12 126 | 127 | 128 | 129 | 130 | False 131 | False 132 | 1 133 | 0 134 | 0 135 | 0 136 | False 137 | False 138 | False 139 | False 140 | False 141 | 1036 142 | 1252 143 | 144 | 145 | 146 | 147 | 1.0.0.0 148 | 149 | 150 | 151 | 152 | 153 | 1.0.0.0 154 | 155 | 156 | 157 | DelphiCodeCoverageWizardTests.dpr 158 | 159 | 160 | 161 | True 162 | False 163 | 164 | 165 | D:\Dev\Projects\delphi-code-coverage-wizard\Source\DelphiCodeCoverageWizard.dproj 166 | DUnit / Delphi Win32 167 | GUI 168 | 169 | 170 | 171 | 12 172 | 173 | 174 | -------------------------------------------------------------------------------- /Test/DelphiCodeCoverageWizardTests.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trident-job/delphi-code-coverage-wizard/1a1525790fe917137c09f0de24a8f66128bdfada/Test/DelphiCodeCoverageWizardTests.res -------------------------------------------------------------------------------- /Test/Test_uProjectSettings.pas: -------------------------------------------------------------------------------- 1 | unit Test_uProjectSettings; 2 | { 3 | 4 | Delphi DUnit Test Case 5 | ---------------------- 6 | This unit contains a skeleton test case class generated by the Test Case Wizard. 7 | Modify the generated code to correctly setup and call the methods from the unit 8 | being tested. 9 | 10 | } 11 | 12 | interface 13 | 14 | uses 15 | TestFramework, Classes, Generics.Collections, SysUtils, uProjectSettings; 16 | 17 | type 18 | // Test methods for class TProgramSourceFiles 19 | 20 | TestTProgramSourceFiles = class(TTestCase) 21 | strict private 22 | FProgramSourceFiles: TProgramSourceFiles; 23 | FTmpList : TStringList; 24 | public 25 | procedure SetUp; override; 26 | procedure TearDown; override; 27 | published 28 | procedure TestAddFile; 29 | procedure TestGetCheckedItemsList; 30 | end; 31 | // Test methods for class TProgramSourceFileItem 32 | 33 | TestTProgramSourceFileItem = class(TTestCase) 34 | strict private 35 | FProgramSourceFileItem: TProgramSourceFileItem; 36 | public 37 | procedure SetUp; override; 38 | procedure TearDown; override; 39 | published 40 | Procedure TestConstructor; 41 | end; 42 | 43 | implementation 44 | 45 | procedure TestTProgramSourceFiles.SetUp; 46 | begin 47 | FProgramSourceFiles := TProgramSourceFiles.Create; 48 | FTmpList := TStringList.Create; 49 | end; 50 | 51 | procedure TestTProgramSourceFiles.TearDown; 52 | begin 53 | FProgramSourceFiles.Free; 54 | FProgramSourceFiles := nil; 55 | FreeAndNil(FTmpList); 56 | end; 57 | 58 | procedure TestTProgramSourceFiles.TestAddFile; 59 | begin 60 | FProgramSourceFiles.BasePath := 'C:\Dummy\'; 61 | // TODO: Setup method call parameters 62 | FProgramSourceFiles.AddFile('C:\Dummy\MyFile1.pas'); 63 | FProgramSourceFiles.AddFile('C:\Dummy\DummyFolder\MyFile2.pas'); 64 | // TODO: Validate method results 65 | 66 | FProgramSourceFiles.GetCheckedItemsList(FTmpList); 67 | CheckEquals(2, FTmpList.Count); 68 | CheckEquals('MyFile1.pas', FTmpList[0]); 69 | CheckEquals('DummyFolder\MyFile2.pas', FTmpList[1]); 70 | end; 71 | 72 | procedure TestTProgramSourceFiles.TestGetCheckedItemsList; 73 | begin 74 | // TODO: Setup method call parameters 75 | FProgramSourceFiles.GetCheckedItemsList(FTmpList); 76 | // TODO: Validate method results 77 | CheckEquals(0, FTmpList.Count); 78 | end; 79 | 80 | procedure TestTProgramSourceFileItem.SetUp; 81 | begin 82 | FProgramSourceFileItem := TProgramSourceFileItem.Create('C:\MyFolder\MyFile.pas'); 83 | end; 84 | 85 | procedure TestTProgramSourceFileItem.TearDown; 86 | begin 87 | FProgramSourceFileItem.Free; 88 | FProgramSourceFileItem := nil; 89 | end; 90 | 91 | procedure TestTProgramSourceFileItem.TestConstructor; 92 | begin 93 | CheckEquals('C:\MyFolder\MyFile.pas', FProgramSourceFileItem.Filename); 94 | CheckEquals(True, FProgramSourceFileItem.Selected); 95 | end; 96 | 97 | initialization 98 | // Register any test cases with the test runner 99 | RegisterTest(TestTProgramSourceFiles.Suite); 100 | end. 101 | 102 | -------------------------------------------------------------------------------- /dccw_ProjectAndTests.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {3B9BF963-3058-4CBA-B7A0-EBFDC4CF8035} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # DelphiCodeCoverageWizard # 2 | 3 | ## Introduction ## 4 | **DelphiCodeCoverageWizard** is a simple wizard to setup and build scripts for [DelphiCodeCoverage](http://code.google.com/p/delphi-code-coverage) - a simple Code Coverage command-line tool for **Delphi**. 5 | 6 | ## Preconditions ## 7 | * A Delphi project executable (.exe) 8 | * A detailed mapping file for this project (.map). 9 | _Note : The wizard has it own copy of DelphiCodeCoverage.exe_ 10 | 11 | ## What help does it provide ## 12 | DelphiCodeCoverageWizard will generate the command-line and additional files to run the coverage for this project. 13 | 14 | You can also choose which unit to cover. 15 | 16 | ## Usage ## 17 | Download the application. 18 | Run it and follow the wizard ! 19 | 20 | ## Output ## 21 | ### Script ### 22 | A batch file (.bat) is created for a easier one-click coverage execution. 23 | 24 | Two listing files (.lst) containing units list and units folder list will be created. 25 | 26 | ### Coverage output ### 27 | The coverage report is from DelphiCodeCoverage. For further information, see the project page. 28 | 29 | ## Credit ## 30 | A really big thanks to [Christer Fahlgren](http://christerblog.wordpress.com/) for his delphi-code-coverage release. 31 | 32 | Find more here : http://code.google.com/p/delphi-code-coverage/ 33 | 34 | ## Version history ## 35 | 36 | ### v0.3 ### 37 | * Added DelphiCodeCoverage V1.0RC8 new switches for output format 38 | 39 | ### v0.2 ### 40 | * Fixed bugs 41 | * Refactored source code 42 | 43 | ### v0.1 ### 44 | * First prototype to validate the features. 45 | * It works with minimal features. 46 | * No error check. 47 | * Ugly code ;) --------------------------------------------------------------------------------