This is an automated email from the git hooks/post-receive script. sylvestre pushed a commit to branch master in repository jscover.
commit db2855e0d314248bfeacb9b7bbc9bc857563b2ac Author: tntim96 <[email protected]> Date: Tue Jul 1 23:00:00 2014 +1000 Remove checked exception from public API --- build.xml | 2 +- .../jscover/{MainHelper.java => ExitHelper.java} | 698 ++++++++++----------- src/main/java/jscover/Main.java | 35 +- src/main/java/jscover/MainHelper.java | 27 +- src/main/java/jscover/report/Main.java | 8 +- ...ServerUnloadedJSProxyOnlyInstrumentRegTest.java | 6 +- .../server/HtmlServerUnloadedJSProxyTest.java | 6 +- .../HtmlServerUnloadedJSProxyUriToFileTest.java | 6 +- .../jscover/server/HtmlServerUnloadedJSTest.java | 6 +- .../java/jscover/server/HtmlUnitJSTest.java | 6 +- .../jscover/server/HtmlUnitLocalStorageTest.java | 6 +- .../java/jscover/server/HtmlUnitMergeTest.java | 6 +- .../java/jscover/server/HtmlUnitProxyTest.java | 6 +- .../HtmlUnitServerBranchAndFunctionTest.java | 6 +- .../java/jscover/server/HtmlUnitServerTest.java | 6 +- .../java/jscover/server/WebDaemonTest.java | 6 +- .../java/jscover/ui/HtmlUnitUITest.java | 6 +- src/test/java/jscover/MainHelperTest.java | 46 ++ src/test/java/jscover/MainInstanceTest.java | 34 +- src/test/java/jscover/MainParsingTest.java | 36 +- src/test/java/jscover/report/MainTest.java | 20 +- 21 files changed, 481 insertions(+), 497 deletions(-) diff --git a/build.xml b/build.xml index d53f6fe..6941321 100644 --- a/build.xml +++ b/build.xml @@ -145,7 +145,7 @@ <ignore regex="org.apache.log4j.*" /> <fileset dir="${classes.main.dir}"> <include name="**/*.class" /> - <exclude name="jscover/MainHelper.class" /> + <exclude name="jscover/ExitHelper.class" /> <exclude name="**/SimpleWebServer.class" /> </fileset> <classpath> diff --git a/src/main/java/jscover/MainHelper.java b/src/main/java/jscover/ExitHelper.java similarity index 97% copy from src/main/java/jscover/MainHelper.java copy to src/main/java/jscover/ExitHelper.java index 5094f70..fe030bc 100644 --- a/src/main/java/jscover/MainHelper.java +++ b/src/main/java/jscover/ExitHelper.java @@ -1,349 +1,349 @@ -/** - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your - freedom to share and change it. By contrast, the GNU General Public - License is intended to guarantee your freedom to share and change free - software--to make sure the software is free for all its users. This - General Public License applies to most of the Free Software - Foundation's software and to any other program whose authors commit to - using it. (Some other Free Software Foundation software is covered by - the GNU Lesser General Public License instead.) You can apply it to - your programs, too. - - When we speak of free software, we are referring to freedom, not - price. Our General Public Licenses are designed to make sure that you - have the freedom to distribute copies of free software (and charge for - this service if you wish), that you receive source code or can get it - if you want it, that you can change the software or use pieces of it - in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid - anyone to deny you these rights or to ask you to surrender the rights. - These restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether - gratis or for a fee, you must give the recipients all the rights that - you have. You must make sure that they, too, receive or can get the - source code. And you must show them these terms so they know their - rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software - patents. We wish to avoid the danger that redistributors of a free - program will individually obtain patent licenses, in effect making the - program proprietary. To prevent this, we have made it clear that any - patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains - a notice placed by the copyright holder saying it may be distributed - under the terms of this General Public License. The "Program", below, - refers to any such program or work, and a "work based on the Program" - means either the Program or any derivative work under copyright law: - that is to say, a work containing the Program or a portion of it, - either verbatim or with modifications and/or translated into another - language. (Hereinafter, translation is included without limitation in - the term "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of - running the Program is not restricted, and the output from the Program - is covered only if its contents constitute a work based on the - Program (independent of having been made by running the Program). - Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's - source code as you receive it, in any medium, provided that you - conspicuously and appropriately publish on each copy an appropriate - copyright notice and disclaimer of warranty; keep intact all the - notices that refer to this License and to the absence of any warranty; - and give any other recipients of the Program a copy of this License - along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion - of it, thus forming a work based on the Program, and copy and - distribute such modifications or work under the terms of Section 1 - above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, - and can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based - on the Program, the distribution of the whole must be on the terms of - this License, whose permissions for other licensees extend to the - entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of - a storage or distribution medium does not bring the other work under - the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source - code means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to - control compilation and installation of the executable. However, as a - special exception, the source code distributed need not include - anything that is normally distributed (in either source or binary - form) with the major components (compiler, kernel, and so on) of the - operating system on which the executable runs, unless that component - itself accompanies the executable. - - If distribution of executable or object code is made by offering - access to copy from a designated place, then offering equivalent - access to copy the source code from the same place counts as - distribution of the source code, even though third parties are not - compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt - otherwise to copy, modify, sublicense or distribute the Program is - void, and will automatically terminate your rights under this License. - However, parties who have received copies, or rights, from you under - this License will not have their licenses terminated so long as such - parties remain in full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and - all its terms and conditions for copying, distributing or modifying - the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further - restrictions on the recipients' exercise of the rights granted herein. - You are not responsible for enforcing compliance by third parties to - this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot - distribute so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you - may not distribute the Program at all. For example, if a patent - license would not permit royalty-free redistribution of the Program by - all those who receive copies directly or indirectly through you, then - the only way you could satisfy both it and this License would be to - refrain entirely from distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is willing - to distribute software through any other system and a licensee cannot - impose that choice. - - This section is intended to make thoroughly clear what is believed to - be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License - may add an explicit geographical distribution limitation excluding - those countries, so that distribution is permitted only in or among - countries not thus excluded. In such case, this License incorporates - the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions - of the General Public License from time to time. Such new versions will - be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and conditions - either of that version or of any later version published by the Free - Software Foundation. If the Program does not specify a version number of - this License, you may choose any version ever published by the Free Software - Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the author - to ask for permission. For software which is copyrighted by the Free - Software Foundation, write to the Free Software Foundation; we sometimes - make exceptions for this. Our decision will be guided by the two goals - of preserving the free status of all derivatives of our free software and - of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY - FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN - OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES - PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED - OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS - TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE - PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, - REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING - WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR - REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, - INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING - OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED - TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY - YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER - PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest - to attach them to the start of each source file to most effectively - convey the exclusion of warranty; and each file should have at least - the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - Also add information on how to contact you by electronic and paper mail. - - If the program is interactive, make it output a short notice like this - when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the appropriate - parts of the General Public License. Of course, the commands you use may - be called something other than `show w' and `show c'; they could even be - mouse-clicks or menu items--whatever suits your program. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the program, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - - This General Public License does not permit incorporating your program into - proprietary programs. If your program is a subroutine library, you may - consider it more useful to permit linking proprietary applications with the - library. If this is what you want to do, use the GNU Lesser General - Public License instead of this License. - */ - -package jscover; - -public class MainHelper { - public void exit(int statusCode) { - System.exit(statusCode); - } -} +/** + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public + License is intended to guarantee your freedom to share and change free + software--to make sure the software is free for all its users. This + General Public License applies to most of the Free Software + Foundation's software and to any other program whose authors commit to + using it. (Some other Free Software Foundation software is covered by + the GNU Lesser General Public License instead.) You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + this service if you wish), that you receive source code or can get it + if you want it, that you can change the software or use pieces of it + in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid + anyone to deny you these rights or to ask you to surrender the rights. + These restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must give the recipients all the rights that + you have. You must make sure that they, too, receive or can get the + source code. And you must show them these terms so they know their + rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software + patents. We wish to avoid the danger that redistributors of a free + program will individually obtain patent licenses, in effect making the + program proprietary. To prevent this, we have made it clear that any + patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains + a notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The "Program", below, + refers to any such program or work, and a "work based on the Program" + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term "modification".) Each licensee is addressed as "you". + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running the Program is not restricted, and the output from the Program + is covered only if its contents constitute a work based on the + Program (independent of having been made by running the Program). + Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program. + + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the executable. However, as a + special exception, the source code distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of the + operating system on which the executable runs, unless that component + itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this License. + However, parties who have received copies, or rights, from you under + this License will not have their licenses terminated so long as such + parties remain in full compliance. + + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties to + this License. + + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent + license would not permit royalty-free redistribution of the Program by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Program. + + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License + may add an explicit geographical distribution limitation excluding + those countries, so that distribution is permitted only in or among + countries not thus excluded. In such case, this License incorporates + the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions + of the General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and conditions + either of that version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number of + this License, you may choose any version ever published by the Free Software + Foundation. + + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the author + to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes + make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN + OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES + PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED + OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS + TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, + REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR + REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, + INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING + OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED + TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY + YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + convey the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + Also add information on how to contact you by electronic and paper mail. + + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the appropriate + parts of the General Public License. Of course, the commands you use may + be called something other than `show w' and `show c'; they could even be + mouse-clicks or menu items--whatever suits your program. + + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a "copyright disclaimer" for the program, if + necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + + This General Public License does not permit incorporating your program into + proprietary programs. If your program is a subroutine library, you may + consider it more useful to permit linking proprietary applications with the + library. If this is what you want to do, use the GNU Lesser General + Public License instead of this License. + */ + +package jscover; + +public class ExitHelper { + public void exit(int statusCode) { + System.exit(statusCode); + } +} \ No newline at end of file diff --git a/src/main/java/jscover/Main.java b/src/main/java/jscover/Main.java index 4b9c77b..c501799 100644 --- a/src/main/java/jscover/Main.java +++ b/src/main/java/jscover/Main.java @@ -358,13 +358,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.SortedMap; -import java.util.jar.Attributes; -import java.util.jar.Manifest; import java.util.logging.Level; import java.util.logging.Logger; -import static java.lang.String.format; - public class Main { private static final Logger logger = Logger.getLogger(Main.class.getName()); public static final String HELP_PREFIX1 = "-h"; @@ -382,34 +378,19 @@ public class Main { private List<String> dependantClasses = new ArrayList<String>() {{ add("org.mozilla.javascript.ast.AstNode"); }}; + private ExitHelper exitHelper = new ExitHelper(); private MainHelper mainHelper = new MainHelper(); private WebDaemon webDaemon = new WebDaemon(); private FileSystemInstrumenter fileSystemInstrumenter = new FileSystemInstrumenter(); private StdOutInstrumenter stdOutInstrumenter = new StdOutInstrumenter(); private IoUtils ioUtils = IoUtils.getInstance(); - public void initialize() throws IOException { - properties.load(Main.class.getResourceAsStream("configuration.properties")); - checkDependantClasses(); - } - - private void checkDependantClasses() throws IOException { + public void initialize() { try { - for (String dependantClass : dependantClasses) { - Class.forName(dependantClass); - } - } catch (ClassNotFoundException e) { - Manifest mf = new Manifest(getClass().getResourceAsStream("/META-INF/" + manifestName)); - Attributes mainAttributes = mf.getMainAttributes(); - String name = mainAttributes.get(Attributes.Name.IMPLEMENTATION_TITLE).toString(); - if (mainAttributes.containsKey(Attributes.Name.CLASS_PATH)) { - String classPathJARs = mainAttributes.get(Attributes.Name.CLASS_PATH).toString(); - String message = "%nEnsure these JARs are in the same directory as %s.jar:%n%s"; - throw new IllegalStateException(format(message, name , classPathJARs), e); - } else { - String message = "Could not find the '%s' attribute in the manifest '%s'"; - throw new IllegalStateException(format(message, Attributes.Name.CLASS_PATH, manifestName), e); - } + properties.load(Main.class.getResourceAsStream("configuration.properties")); + mainHelper.checkDependantClasses(dependantClasses, manifestName); + } catch (IOException e) { + throw new RuntimeException(e); } } @@ -429,7 +410,7 @@ public class Main { webDaemon.stop(); } - public void runMain(String[] args) throws IOException { + public void runMain(String[] args) { logger.log(Level.INFO, "Args: {0}", getArgsLogger(args)); parse(args); initialize(); @@ -437,7 +418,7 @@ public class Main { if (LoggerUtils.getInstance().isExceptionThrown()) exitStatus = 1; if (exitStatus != 0) - mainHelper.exit(exitStatus); + exitHelper.exit(exitStatus); } Object getArgsLogger(final String[] args) { diff --git a/src/main/java/jscover/MainHelper.java b/src/main/java/jscover/MainHelper.java index 5094f70..432d964 100644 --- a/src/main/java/jscover/MainHelper.java +++ b/src/main/java/jscover/MainHelper.java @@ -342,8 +342,31 @@ package jscover; +import java.io.IOException; +import java.util.List; +import java.util.jar.Attributes; +import java.util.jar.Manifest; + +import static java.lang.String.format; + public class MainHelper { - public void exit(int statusCode) { - System.exit(statusCode); + public void checkDependantClasses(List<String> dependantClasses, String manifestName) throws IOException { + try { + for (String dependantClass : dependantClasses) { + Class.forName(dependantClass); + } + } catch (ClassNotFoundException e) { + Manifest mf = new Manifest(getClass().getResourceAsStream("/META-INF/" + manifestName)); + Attributes mainAttributes = mf.getMainAttributes(); + String name = mainAttributes.get(Attributes.Name.IMPLEMENTATION_TITLE).toString(); + if (mainAttributes.containsKey(Attributes.Name.CLASS_PATH)) { + String classPathJARs = mainAttributes.get(Attributes.Name.CLASS_PATH).toString(); + String message = "%nEnsure these JARs are in the same directory as %s.jar:%n%s"; + throw new IllegalStateException(format(message, name , classPathJARs), e); + } else { + String message = "Could not find the '%s' attribute in the manifest '%s'"; + throw new IllegalStateException(format(message, Attributes.Name.CLASS_PATH, manifestName), e); + } + } } } diff --git a/src/main/java/jscover/report/Main.java b/src/main/java/jscover/report/Main.java index 3c6cf6d..34d08ab 100644 --- a/src/main/java/jscover/report/Main.java +++ b/src/main/java/jscover/report/Main.java @@ -342,7 +342,7 @@ Public License instead of this License. package jscover.report; -import jscover.MainHelper; +import jscover.ExitHelper; import jscover.report.coberturaxml.CoberturaData; import jscover.report.coberturaxml.CoberturaXmlGenerator; import jscover.report.lcov.LCovGenerator; @@ -368,7 +368,7 @@ public class Main { properties.load(jscover.Main.class.getResourceAsStream("/jscover/configuration.properties")); } - private MainHelper mainHelper = new MainHelper(); + private ExitHelper exitHelper = new ExitHelper(); private XMLSummary xmlSummary = new XMLSummary(); private CoberturaXmlGenerator coberturaXmlGenerator = new CoberturaXmlGenerator(); private LCovGenerator lCovGenerator = new LCovGenerator(); @@ -390,7 +390,7 @@ public class Main { private void runReport() throws IOException { if (config.isInvalid()) { System.out.println(config.getHelpText()); - mainHelper.exit(1); + exitHelper.exit(1); } else if (config.showHelp()) { System.out.println(config.getHelpText()); } else if (config.getReportFormat() == ReportFormat.LCOV) { @@ -403,7 +403,7 @@ public class Main { mergeReports(); } else { System.out.println(config.getHelpText()); - mainHelper.exit(1); + exitHelper.exit(1); } } diff --git a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyOnlyInstrumentRegTest.java b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyOnlyInstrumentRegTest.java index 9cfc13e..10a53df 100644 --- a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyOnlyInstrumentRegTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyOnlyInstrumentRegTest.java @@ -393,11 +393,7 @@ public class HtmlServerUnloadedJSProxyOnlyInstrumentRegTest { public static void setUpOnce() throws IOException { proxyServer = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); proxyServer.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyTest.java b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyTest.java index f992895..ec2aa30 100644 --- a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyTest.java @@ -381,11 +381,7 @@ public class HtmlServerUnloadedJSProxyTest extends HtmlServerUnloadedJSTest { public static void setUpOnce() throws IOException { proxyServer = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); proxyServer.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyUriToFileTest.java b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyUriToFileTest.java index a1498bb..75adb80 100644 --- a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyUriToFileTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSProxyUriToFileTest.java @@ -393,11 +393,7 @@ public class HtmlServerUnloadedJSProxyUriToFileTest extends HtmlServerUnloadedJS public static void setUpOnce() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSTest.java b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSTest.java index 715a5b7..ab58c63 100644 --- a/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlServerUnloadedJSTest.java @@ -385,11 +385,7 @@ public class HtmlServerUnloadedJSTest { public static void setUpOnce() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlUnitJSTest.java b/src/test-acceptance/java/jscover/server/HtmlUnitJSTest.java index 53c9cf9..499a8ac 100644 --- a/src/test-acceptance/java/jscover/server/HtmlUnitJSTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlUnitJSTest.java @@ -378,11 +378,7 @@ public class HtmlUnitJSTest { public static void setUpOnce() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlUnitLocalStorageTest.java b/src/test-acceptance/java/jscover/server/HtmlUnitLocalStorageTest.java index d0e1bd4..4b8249b 100644 --- a/src/test-acceptance/java/jscover/server/HtmlUnitLocalStorageTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlUnitLocalStorageTest.java @@ -380,11 +380,7 @@ public class HtmlUnitLocalStorageTest { public static void setUpOnce() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlUnitMergeTest.java b/src/test-acceptance/java/jscover/server/HtmlUnitMergeTest.java index 04572d8..4f922d7 100644 --- a/src/test-acceptance/java/jscover/server/HtmlUnitMergeTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlUnitMergeTest.java @@ -382,11 +382,7 @@ public class HtmlUnitMergeTest { public static void setUpOnce() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlUnitProxyTest.java b/src/test-acceptance/java/jscover/server/HtmlUnitProxyTest.java index d00acb3..055adee 100644 --- a/src/test-acceptance/java/jscover/server/HtmlUnitProxyTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlUnitProxyTest.java @@ -382,11 +382,7 @@ public class HtmlUnitProxyTest extends HtmlUnitServerTest { public static void setUpOnce() throws IOException { proxyServer = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); proxyServer.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlUnitServerBranchAndFunctionTest.java b/src/test-acceptance/java/jscover/server/HtmlUnitServerBranchAndFunctionTest.java index 0fe8175..538f689 100644 --- a/src/test-acceptance/java/jscover/server/HtmlUnitServerBranchAndFunctionTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlUnitServerBranchAndFunctionTest.java @@ -375,11 +375,7 @@ public class HtmlUnitServerBranchAndFunctionTest extends HtmlUnitServerTest { public static void setUpOnce() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/server/HtmlUnitServerTest.java b/src/test-acceptance/java/jscover/server/HtmlUnitServerTest.java index 9906140..b0f7b8a 100644 --- a/src/test-acceptance/java/jscover/server/HtmlUnitServerTest.java +++ b/src/test-acceptance/java/jscover/server/HtmlUnitServerTest.java @@ -388,11 +388,7 @@ public class HtmlUnitServerTest { public static void setUpOnce() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/server/WebDaemonTest.java b/src/test-acceptance/java/jscover/server/WebDaemonTest.java index 7c69073..cc279bf 100644 --- a/src/test-acceptance/java/jscover/server/WebDaemonTest.java +++ b/src/test-acceptance/java/jscover/server/WebDaemonTest.java @@ -25,11 +25,7 @@ public class WebDaemonTest { public void setUp() throws IOException { server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test-acceptance/java/jscover/ui/HtmlUnitUITest.java b/src/test-acceptance/java/jscover/ui/HtmlUnitUITest.java index 02d37af..3fc20b0 100644 --- a/src/test-acceptance/java/jscover/ui/HtmlUnitUITest.java +++ b/src/test-acceptance/java/jscover/ui/HtmlUnitUITest.java @@ -401,11 +401,7 @@ public class HtmlUnitUITest { FileUtils.deleteDirectory(reportDir); server = new Thread(new Runnable() { public void run() { - try { - main.runMain(args); - } catch (IOException e) { - throw new RuntimeException(e); - } + main.runMain(args); } }); server.start(); diff --git a/src/test/java/jscover/MainHelperTest.java b/src/test/java/jscover/MainHelperTest.java new file mode 100644 index 0000000..98477fd --- /dev/null +++ b/src/test/java/jscover/MainHelperTest.java @@ -0,0 +1,46 @@ +package jscover; + +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; + +public class MainHelperTest { + private MainHelper mainHelper = new MainHelper(); + + @Test + public void shouldDetectMissingJARs() throws IOException { + List<String> dependantClasses = new ArrayList<String>() {{ + add("this.shouldn't.Exist"); + }}; + try { + mainHelper.checkDependantClasses(dependantClasses, "MANIFEST-TEST.MF"); + fail("Should have thrown exception"); + } catch(IllegalStateException e) { + String message = e.getMessage(); + assertThat(message, containsString("Ensure these JARs are in the same directory as JSCover.jar:")); + assertThat(message, containsString("js.jar")); + } + } + + @Test + public void shouldDetectMissingClassPath() throws IOException { + ArrayList<String> dependantClasses = new ArrayList<String>() {{ + add("this.shouldn't.Exist"); + }}; + try { + mainHelper.checkDependantClasses(dependantClasses, "MANIFEST-NO-CLASS-PATH.MF"); + fail("Should have thrown exception"); + } catch(IllegalStateException e) { + String message = e.getMessage(); + assertThat(message, equalTo("Could not find the 'Class-Path' attribute in the manifest 'MANIFEST-NO-CLASS-PATH.MF'")); + } + } + +} \ No newline at end of file diff --git a/src/test/java/jscover/MainInstanceTest.java b/src/test/java/jscover/MainInstanceTest.java index 44f1ea3..dfa0899 100644 --- a/src/test/java/jscover/MainInstanceTest.java +++ b/src/test/java/jscover/MainInstanceTest.java @@ -358,6 +358,8 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.sameInstance; @@ -366,10 +368,12 @@ import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Matchers.argThat; import static org.mockito.Mockito.*; +import static org.mockito.Mockito.verifyZeroInteractions; @RunWith(MockitoJUnitRunner.class) public class MainInstanceTest { private Main main = new Main(); + private @Mock ExitHelper exitHelper; private @Mock MainHelper mainHelper; private @Mock WebDaemon webDaemon; private @Mock FileSystemInstrumenter fileSystemInstrumenter; @@ -377,6 +381,7 @@ public class MainInstanceTest { @Before public void setUp() { + ReflectionUtils.setField(main, "exitHelper", exitHelper); ReflectionUtils.setField(main, "mainHelper", mainHelper); ReflectionUtils.setField(main, "webDaemon", webDaemon); ReflectionUtils.setField(main, "fileSystemInstrumenter", fileSystemInstrumenter); @@ -384,39 +389,50 @@ public class MainInstanceTest { } @Test + public void shouldWrapIoException() throws IOException { + doThrow(new IOException("Ouch!")).when(mainHelper).checkDependantClasses(anyList(), any(String.class)); + + try { + main.initialize(); + } catch(RuntimeException e) { + assertThat(e.getMessage(), equalTo("java.io.IOException: Ouch!")); + } + } + + @Test public void shouldExitWithError() throws IOException, InterruptedException { main.runMain(new String[]{"--unknown"}); verifyZeroInteractions(webDaemon); verifyZeroInteractions(fileSystemInstrumenter); - verify(mainHelper).exit(1); + verify(exitHelper).exit(1); } @Test public void shouldPrintVersion() throws IOException, InterruptedException { main.runMain(new String[]{"-V"}); verifyZeroInteractions(webDaemon); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test public void shouldPrintCharSets() throws IOException, InterruptedException { main.runMain(new String[]{"-h","encoding"}); verifyZeroInteractions(webDaemon); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test public void shouldShowWebServerHelp() throws IOException, InterruptedException { main.runMain(new String[]{"-ws", "-h"}); verifyZeroInteractions(webDaemon); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test public void shouldShowFileSystemHelp() throws IOException, InterruptedException { main.runMain(new String[]{"-ws", "-h"}); verifyZeroInteractions(fileSystemInstrumenter); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -434,7 +450,7 @@ public class MainInstanceTest { } }; verify(webDaemon, times(1)).start(argThat(matcher)); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -452,7 +468,7 @@ public class MainInstanceTest { } }; verify(fileSystemInstrumenter, times(1)).run(argThat(matcher)); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -470,7 +486,7 @@ public class MainInstanceTest { } }; verify(stdOutInstrumenter, times(1)).run(argThat(matcher)); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -487,7 +503,7 @@ public class MainInstanceTest { } catch(RuntimeException rte) { assertThat((InterruptedException)rte.getCause(), sameInstance(toBeThrown)); } - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test diff --git a/src/test/java/jscover/MainParsingTest.java b/src/test/java/jscover/MainParsingTest.java index d110c5e..e090996 100644 --- a/src/test/java/jscover/MainParsingTest.java +++ b/src/test/java/jscover/MainParsingTest.java @@ -347,6 +347,7 @@ import org.junit.Test; import java.io.IOException; import java.util.ArrayList; +import java.util.List; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; @@ -368,41 +369,6 @@ public class MainParsingTest { } @Test - public void shouldDetectMissingJARs() throws IOException { - main.parse(new String[]{}); - ArrayList<String> dependantClasses = new ArrayList<String>() {{ - add("this.shouldn't.Exist"); - }}; - ReflectionUtils.setField(main, "manifestName", "MANIFEST-TEST.MF"); - ReflectionUtils.setField(main, "dependantClasses", dependantClasses); - try { - main.initialize(); - fail("Should have thrown exception"); - } catch(IllegalStateException e) { - String message = e.getMessage(); - assertThat(message, containsString("Ensure these JARs are in the same directory as JSCover.jar:")); - assertThat(message, containsString("js.jar")); - } - } - - @Test - public void shouldDetectMissingClassPath() throws IOException { - main.parse(new String[]{}); - ArrayList<String> dependantClasses = new ArrayList<String>() {{ - add("this.shouldn't.Exist"); - }}; - ReflectionUtils.setField(main, "manifestName", "MANIFEST-NO-CLASS-PATH.MF"); - ReflectionUtils.setField(main, "dependantClasses", dependantClasses); - try { - main.initialize(); - fail("Should have thrown exception"); - } catch(IllegalStateException e) { - String message = e.getMessage(); - assertThat(message, equalTo("Could not find the 'Class-Path' attribute in the manifest 'MANIFEST-NO-CLASS-PATH.MF'")); - } - } - - @Test public void shouldParseVersion() { assertThat(main.parse(new String[]{"-V"}).printVersion(), equalTo(true)); assertThat(main.parse(new String[]{"--version"}).printVersion(), equalTo(true)); diff --git a/src/test/java/jscover/report/MainTest.java b/src/test/java/jscover/report/MainTest.java index 1f5b584..1fcf6ae 100644 --- a/src/test/java/jscover/report/MainTest.java +++ b/src/test/java/jscover/report/MainTest.java @@ -342,7 +342,7 @@ Public License instead of this License. package jscover.report; -import jscover.MainHelper; +import jscover.ExitHelper; import jscover.report.coberturaxml.CoberturaData; import jscover.report.coberturaxml.CoberturaXmlGenerator; import jscover.report.lcov.LCovGenerator; @@ -380,7 +380,7 @@ import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class MainTest { private Main main = new Main(); - private @Mock MainHelper mainHelper; + private @Mock ExitHelper exitHelper; private @Mock XMLSummary xmlSummary; private @Mock CoberturaXmlGenerator coberturaXmlGenerator; private @Mock LCovGenerator lCovGenerator; @@ -390,7 +390,7 @@ public class MainTest { @Before public void setUp() { - ReflectionUtils.setField(main, "mainHelper", mainHelper); + ReflectionUtils.setField(main, "exitHelper", exitHelper); ReflectionUtils.setField(main, "xmlSummary", xmlSummary); ReflectionUtils.setField(main, "coberturaXmlGenerator", coberturaXmlGenerator); ReflectionUtils.setField(main, "lCovGenerator", lCovGenerator); @@ -403,7 +403,7 @@ public class MainTest { public void shouldExitIfInvalid() throws IOException { given(config.isInvalid()).willReturn(true); main.runMain(new String[]{}); - verify(mainHelper).exit(1); + verify(exitHelper).exit(1); } @Test @@ -416,7 +416,7 @@ public class MainTest { @Test public void shouldExitUnknown() throws IOException { main.runMain(new String[]{}); - verify(mainHelper).exit(1); + verify(exitHelper).exit(1); } @Test @@ -424,7 +424,7 @@ public class MainTest { given(config.showHelp()).willReturn(true); main.runMain(new String[]{}); verify(config).getHelpText(); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -443,7 +443,7 @@ public class MainTest { File lcovFile = new File(jsonDirectory, "jscover.lcov"); verify(lCovGenerator).saveData(list.values(), srcDir.getCanonicalPath(), lcovFile); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -477,7 +477,7 @@ public class MainTest { File xmlFile = new File(jsonDirectory, "cobertura-coverage.xml"); verify(coberturaXmlGenerator).generateXml(argThat(coberturaDataMatcher), argThat(is(srcDir.getCanonicalPath())), argThat(is("version"))); verify(ioUtils).copy("<xml/>", xmlFile); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -522,7 +522,7 @@ public class MainTest { }; verify(xmlSummary).saveSummary(argThat(coverableMatcher), argThat(fileMatcher), argThat(is("version"))); - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } @Test @@ -575,6 +575,6 @@ public class MainTest { File srcDest = new File(destDir, reportSrcSubDir); verify(ioUtils).copyDir(src2, srcDest); } - verifyZeroInteractions(mainHelper); + verifyZeroInteractions(exitHelper); } } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jscover.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

