brebis-0.10/AUTHORS0000644000000000000000000000004712462537262012110 0ustar 00000000000000Carl Chenet brebis-0.10/LICENSE0000644000000000000000000010451312462537262012050 0ustar 00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. 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 them 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 prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. 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. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 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 state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU 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. But first, please read . brebis-0.10/README0000644000000000000000000000021512462537262011715 0ustar 00000000000000Brebis ------ Brebis is a backup checker. Read the documentation in docs/ or read it online at https://brebis.readthedocs.org/en/latest/ brebis-0.10/brebis.py0000755000000000000000000000142612462537262012665 0ustar 00000000000000#!/usr/bin/python3.4 # -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . from brebis.main import Main if __name__ == '__main__': Main() brebis-0.10/brebis/__init__.py0000644000000000000000000000000012462537262014404 0ustar 00000000000000brebis-0.10/brebis/applogger.py0000644000000000000000000000236312462537262014643 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Application logger '''Application logger''' import logging import sys class AppLogger(object): '''The application logger''' def __init__(self, __logfile): '''The constructor for the AppLogger class. Keyword arguments: __logfile -- the path of the log ''' try: logging.basicConfig(filename=__logfile, level=logging.WARNING, filemode='w') except (IOError,OSError) as __msg: print('Brebis output file could not be created: {}'.format(__msg)) sys.exit(1) brebis-0.10/brebis/archiveinfomsg.py0000644000000000000000000002232012462537262015662 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Generate the information message about an archive '''Generate the information message about an archive''' import logging class ArchiveInfoMsg(object): '''Generate the information message about an archive''' def __init__(self, __bck, __cfgvalues): '''The constructor for the ArchiveInfoMsg class. __bck -- the retrieved value for the archive __cfgvalues -- the expected values for the archive ''' self.__main(__bck, __cfgvalues) def __main(self, __bck, __cfgvalues): '''The main for the ArchiveInfoMsg class''' if __cfgvalues['type'] == 'archive' or __cfgvalues['type'] == 'tree': self.__missing_files(__bck.missing_files, __cfgvalues['path']) self.__unexpected_files(__bck.unexpected_files, __cfgvalues['path']) self.__classify_differences(__bck, __cfgvalues['path']) self.__uid_gid_mismatches(__bck, __cfgvalues['path']) self.__mode_mismatches(__bck, __cfgvalues['path']) self.__type_mismatches(__bck, __cfgvalues['path']) self.__mtime_mismatches(__bck, __cfgvalues['path']) self.__hash_mismatches(__bck, __cfgvalues['path']) self.__target_mismatches(__bck, __cfgvalues['path']) def __missing_files(self, __missing, __archivepath): '''Warn about the missing files in an archive''' if __missing: __msg= 'file' if len(__missing) > 1: __msg = 'files' logging.warning('{} {} missing in {}: '.format( len(__missing), __msg, __archivepath)) for __path in __missing: logging.warning('{}'.format(__path)) def __unexpected_files(self, __unexpected, __archivepath): '''Warn about the unexpected files in the archive''' if __unexpected: __msg= 'file' if len(__unexpected) > 1: __msg = 'files' logging.warning('{} unexpected {} checking {}: '.format( len(__unexpected), __msg, __archivepath)) for __path in __unexpected: logging.warning('{}'.format(__path)) def __classify_differences(self, __bck, __archivepath): '''Report differences between expected files and files in the archive ''' if __bck.missing_equality: __topic = '{} {} with unexpected size while checking {}: ' self.__log_differences( __bck.missing_equality, __archivepath, __topic) if __bck.missing_smaller_than: __topic = '{} {} bigger than expected while checking {}: ' self.__log_differences( __bck.missing_smaller_than, __archivepath, __topic, 'smaller than') if __bck.missing_bigger_than: __topic = '{} {} smaller than expected while checking {}: ' self.__log_differences( __bck.missing_bigger_than, __archivepath, __topic, 'bigger than') def __log_differences(self, __files, __archivepath, __topic, __qty=''): '''Log the differences between the expected files and the files in the archive ''' __fileword = 'file' if len(__files) > 1: __fileword = 'files' logging.warning(__topic.format(len(__files), __fileword, __archivepath)) if __qty: for __file in __files: logging.warning('{} size is {}. Should have been {} {}.'.format( __file['path'], __file['size'], __qty, __file['expected'])) else: for __file in __files: logging.warning('{} size is {}. Should have been {}.'.format( __file['path'], __file['size'], __file['expected'])) def __uid_gid_mismatches(self, __bck, __archivepath): '''Log the uids and gids mismatches''' # Uid if __bck.mismatched_uids: __errnb = len(__bck.mismatched_uids) __fileword = 'file' __uidword = 'uid' if __errnb > 1: __fileword = 'files' __uidword = 'uids' logging.warning('{} {} with unexpected {} while checking {}:'.format(__errnb, __fileword, __uidword, __archivepath)) for __file in __bck.mismatched_uids: logging.warning('{} uid is {!s}. Should have been {!s}.'.format(__file['path'], __file['uid'], __file['expecteduid'])) # Gid if __bck.mismatched_gids: __errnb = len(__bck.mismatched_gids) __fileword = 'file' __gidword = 'gid' if __errnb > 1: __fileword = 'files' __gidword = 'gids' logging.warning('{} {} with unexpected {} while checking {}:'.format(__errnb, __fileword, __gidword, __archivepath)) for __file in __bck.mismatched_gids: logging.warning('{} gid is {!s}. Should have been {!s}.'.format(__file['path'], __file['gid'], __file['expectedgid'])) def __mode_mismatches(self, __bck, __archivepath): '''Log the file mode mismatches''' if __bck.mismatched_modes: __errnb = len(__bck.mismatched_modes) __fileword = 'file' __modeword = 'mode' if __errnb > 1: __fileword = 'files' __modeword = 'modes' logging.warning('{} {} with unexpected {} while checking {}:'.format( __errnb, __fileword, __modeword, __archivepath, )) for __file in __bck.mismatched_modes: logging.warning('{} mode is {}. Should have been {}.'.format(__file['path'], __file['mode'], __file['expectedmode'])) def __target_mismatches(self, __bck, __archivepath): '''Log the targe mismatches''' if __bck.mismatched_targets: __errnb = len(__bck.mismatched_targets) __fileword = 'link' __modeword = 'target' if __errnb > 1: __fileword = 'links' __modeword = 'targets' logging.warning('{} {} with unexpected {} while checking {}:'.format( __errnb, __fileword, __modeword, __archivepath, )) for __file in __bck.mismatched_targets: logging.warning('{} target is {}. Should have been {}.'.format(__file['path'], __file['target'], __file['expectedtarget'])) def __type_mismatches(self, __bck, __archivepath): '''Log the file type mismatches''' __types = {'f': 'regular file', 'c': 'character', 'd': 'directory', 's': 'symbolic link', 'l': 'hard link', 'b': 'block', 'o': 'fifo', 'k': 'socket'} if __bck.mismatched_types: __errnb = len(__bck.mismatched_types) __fileword = 'file' __typeword = 'type' if __errnb > 1: __fileword = 'files' __typeword = 'types' logging.warning('{} contains {} {} with unexpected {}:'.format(__archivepath, __errnb, __fileword, __typeword)) for __file in __bck.mismatched_types: logging.warning('{} is a {}. Should have been a {}.'.format(__file['path'], __types[__file['type']], __types[__file['expectedtype']])) def __mtime_mismatches(self, __bck, __archivepath): '''Log the file mtime mismatches''' if __bck.mismatched_mtimes: __errnb = len(__bck.mismatched_mtimes) __fileword = 'file' __mtimeword = 'mtime' if __errnb > 1: __fileword = 'files' __mtimeword = 'types' logging.warning('{} contains {} {} with unexpected {}:'.format(__archivepath, __errnb, __fileword, __mtimeword)) for __file in __bck.mismatched_mtimes: logging.warning('{} mtime is {}. Should have been {}.'.format(__file['path'], __file['mtime'], __file['expectedmtime'])) def __hash_mismatches(self, __bck, __archivepath): '''Log the file hash mismatches''' if __bck.mismatched_hashes: __errnb = len(__bck.mismatched_hashes) __fileword = 'file' __hashword = 'hash' if __errnb > 1: __fileword = 'files' __hashword = 'hashes' logging.warning('{} {} with unexpected {} while checking {}:'.format(__errnb, __fileword, __hashword, __archivepath)) for __file in __bck.mismatched_hashes: logging.warning('{} hash is {}. Should have been {}.'.format(__file['path'], __file['hash'], __file['expectedhash'])) brebis-0.10/brebis/checkbackups/__init__.py0000644000000000000000000000000012462537262017032 0ustar 00000000000000brebis-0.10/brebis/checkbackups/checkarchive.py0000644000000000000000000003000312462537262017720 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check an archive '''Check an archive''' import os import stat from logging import warn import brebis.checkhashes class CheckArchive(object): '''Check an archive''' def __init__(self, _cfgvalues, _options): '''The constructor of the CheckArchive class. _cfgvalues -- the expected values for the archive ''' self._missing_files = [] self._missing_equality = [] self._missing_bigger_than = [] self._missing_smaller_than = [] self._unexpected_files = [] self._mismatched_uids = [] self._mismatched_gids = [] self._mismatched_modes = [] self._mismatched_types = [] self._mismatched_mtimes = [] self._mismatched_targets = [] self._mismatched_hashes = [] self.__fileinfo = False self._main(_cfgvalues, _options) def _check_path(self, __arcinfo, _data): '''Check if the expected path exists in the archive''' for _ind, _file in enumerate(_data): if __arcinfo['path'] == _file['path']: # Tests of files in the archive and expected ones ### Compare the sizes of the file in the archive and the ### expected file self._compare_sizes(__arcinfo['size'], __arcinfo['path'], _file) ### Check if an unexpected file is in the archive self._check_unexpected_files(__arcinfo['path'], _file) ### Compare the uid of the file in the archive and the ### expected one if 'uid' in __arcinfo and 'uid' in _file: self.__check_uid(__arcinfo['uid'], _file) ### Compare the gid of the file in the archive and the ### expected one if 'gid' in __arcinfo and 'gid' in _file: self.__check_gid(__arcinfo['gid'], _file) ### Compare the filemode and the mode of the expected file if 'mode' in __arcinfo and 'mode' in _file: self._check_mode(__arcinfo['mode'], _file) ### Compare the file type and the type of the expected file if 'type' in __arcinfo and 'type' in _file: self._check_type(__arcinfo['type'], _file) if 'target' in __arcinfo and 'target' in _file: self._check_target(__arcinfo['target'], _file) ### Compare the file mtime and the mtime of the expected file if 'mtime' in __arcinfo and 'mtime' in _file: self._check_mtime(__arcinfo['mtime'], _file) ### Compare the hash of the file and the one of the expected file if 'hash' in _file: self._check_hash(__arcinfo['path'], _file) # We reduce the number of files to work with del(_data[_ind]) return _data def __extract_archive_info(self, __arcpath): '''Extract the archive file system information''' if not self.__fileinfo: try: self.__fileinfo = os.stat(__arcpath) except (OSError, IOError) as __msg: logging.warning(__msg) return self.__fileinfo def __find_archive_size(self, __arcpath): '''Find the size of the archive''' __fileinfo = self.__extract_archive_info(__arcpath) return __fileinfo.st_size def __find_archive_mode(self, __arcpath): '''Find the mode of the archive''' __fileinfo = self.__extract_archive_info(__arcpath) __mode= stat.S_IMODE(__fileinfo.st_mode) return __mode def __find_archive_uid_gid(self, __arcpath): '''Find the uid of the archive''' __fileinfo = self.__extract_archive_info(__arcpath) return __fileinfo.st_uid, __fileinfo.st_gid def _compare_sizes(self, _arcsize, _arcname, _file): '''Compare the sizes of the files in the archive and the expected files ''' if 'equals' in _file and _arcsize != _file['equals']: self.missing_equality.append({'path': _arcname, 'size': _arcsize, 'expected': _file['equals']}) elif 'biggerthan' in _file and _arcsize < _file['biggerthan']: self.missing_bigger_than.append({'path': _arcname, 'size': _arcsize, 'expected': _file['biggerthan']}) elif 'smallerthan' in _file and _arcsize > _file['smallerthan']: self.missing_smaller_than.append({'path': _arcname, 'size': _arcsize, 'expected': _file['smallerthan']}) def _normalize_path(self, __path): '''Remove last slash of a directory path if present''' if __path.endswith('/'): return __path[:-1] else: return __path def _check_unexpected_files(self, __arcname, __file): '''Check if an unexpected file exists in the archive''' if 'unexpected' in __file: self.unexpected_files.append(__arcname) def __check_uid(self, __arcuid, __file): '''Check if the file uid in the archive matches the expected one ''' if __file['uid'] != __arcuid: self.mismatched_uids.append({'path':__file['path'], 'expecteduid':__file['uid'], 'uid':__arcuid}) def __check_gid(self, __arcgid, __file): '''Check if the file gid in the archive matches the expected one ''' if __file['gid'] != __arcgid: self.mismatched_gids.append({'path':__file['path'], 'expectedgid':__file['gid'], 'gid':__arcgid}) def _check_mode(self, __arcmode, __file): '''Check if the file mode in the archive matches the expected one ''' __arcmode = oct(__arcmode).split('o')[-1] # if the file has no right, need to manipulate the output - solving #15 if __arcmode == '0': __arcmode = '000' if __file['mode'] != __arcmode: self.mismatched_modes.append({'path': __file['path'], 'expectedmode': __file['mode'], 'mode': __arcmode}) def _check_type(self, __arctype, __file): '''Check if the file type in the archive matches the expected one ''' if __file['type'] != __arctype: self.mismatched_types.append({'path': __file['path'], 'expectedtype': __file['type'], 'type': __arctype}) def _check_mtime(self, __arcmtime, __file): '''Check if the file mtime in the archive matches the expected one ''' if __file['mtime'] != __arcmtime: self.mismatched_mtimes.append({'path': __file['path'], 'expectedmtime': __file['mtime'], 'mtime': __arcmtime}) def _check_hash(self, __arcpath, __file): '''Check if the file hash in the archive matches the expected one ''' __arcfile = self._extract_stored_file(__arcpath) __arcfilehash = brebis.checkhashes.get_hash(__arcfile, __file['hash']['hashtype']) self._report_hash(__file['path'], __file['hash']['hashvalue'], __arcfilehash) def _report_hash(self, __arcpath, __expectedhash, __archash): '''Check if the hashes are different and report the fact''' if __expectedhash != __archash: self._mismatched_hashes.append({'path': __arcpath, 'expectedhash': __expectedhash, 'hash': __archash}) def _check_target(self, __arctarget, __file): '''Check if the target field in the archive matches the expected one ''' if __file['target'] != __arctarget: self._mismatched_targets.append({'path': __file['path'], 'expectedtarget' : __file['target'], 'target': __arctarget}) def _archive_checks(self, __arcdata, __arcpath): '''Launch the checks for the archive itself''' if __arcdata: # Store the path into archive data __arcdata['path'] = __arcpath # archive size if 'equals' in __arcdata or 'biggerthan' in __arcdata or 'smallerthan' in __arcdata: __arcsize = self.__find_archive_size(__arcdata['path']) self._compare_sizes(__arcsize, __arcdata['path'], __arcdata) # archive hash if 'hash' in __arcdata: with open(__arcdata['path'], 'rb') as __archive: __archash = brebis.checkhashes.get_hash(__archive, __arcdata['hash']['hashtype']) self._report_hash(__arcdata['path'], __arcdata['hash']['hashvalue'], __archash) # archive mode if 'mode' in __arcdata: __arcmode = self.__find_archive_mode(__arcdata['path']) self._check_mode(__arcmode, __arcdata) # archive uid and gid if 'uid' in __arcdata: __arcuid, _ = self.__find_archive_uid_gid(__arcdata['path']) self.__check_uid(__arcuid, __arcdata) if 'gid' in __arcdata: _, __arcgid = self.__find_archive_uid_gid(__arcdata['path']) self.__check_gid(__arcgid, __arcdata) @property def missing_equality(self): '''A list containing the paths of the files missing the equality parameters in the archive ''' return self._missing_equality @property def missing_files(self): '''A list containing the paths of the missing files in the archive ''' return self._missing_files @property def missing_bigger_than(self): '''A list containing the path and the size of the files missing the bigger than parameter in the archive ''' return self._missing_bigger_than @property def missing_smaller_than(self): '''A list containing the path and the size of the files missing the smaller than parameter in the archive ''' return self._missing_smaller_than @property def unexpected_files(self): ''' A list containing the unexpected files in the archive''' return self._unexpected_files @property def mismatched_uids(self): '''A list containing a {path,uid,expecteduid} of the files in the archive with an unexpected uid ''' return self._mismatched_uids @property def mismatched_gids(self): '''A list containing a {path,gid,expectedgid} of the files in the archive with an unexpected gid ''' return self._mismatched_gids @property def mismatched_modes(self): '''A list containing {path,mode,expectedmode} of the files in the archive with an unexpected mode ''' return self._mismatched_modes @property def mismatched_types(self): '''A list containing {path,type,expectedtype} of the files in the archive with an unexpected type ''' return self._mismatched_types @property def mismatched_mtimes(self): '''A list containing {path,mtime,expectedmtime} of the files in the archive with an unexpected mtime ''' return self._mismatched_mtimes @property def mismatched_hashes(self): '''A list containing {path,hash,expectedhash} of the files in the archive with an unexpected hash ''' return self._mismatched_hashes @property def mismatched_targets(self): '''A list containing {target,expectedtarget} of the targets of the links in the archive with an unexpected target ''' return self._mismatched_targets brebis-0.10/brebis/checkbackups/checkbackups.py0000644000000000000000000000672712462537262017747 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check the given backups '''Check the given backups''' import logging from tarfile import is_tarfile from zipfile import is_zipfile from brebis.archiveinfomsg import ArchiveInfoMsg from brebis.checkbackups.checktar import CheckTar from brebis.checkbackups.checkgzip import CheckGzip from brebis.checkbackups.checkbzip2 import CheckBzip2 from brebis.checkbackups.checklzma import CheckLzma from brebis.checkbackups.checkzip import CheckZip from brebis.checkbackups.checktree import CheckTree class CheckBackups(object): '''The backup checker class''' def __init__(self, __confs, __options): '''The constructor for the Checkbackups class. __confs -- the different configurations of the backups __options -- global options from the command line ''' self.__main(__confs, __options) def __main(self, __confs, __options): '''Main for CheckBackups''' __cfgsets = __confs.values() for __cfgvalues in __cfgsets: # check a file tree if __cfgvalues['type'] == 'tree': __bck = CheckTree(__cfgvalues, __options) # check a tar file, by name elif __cfgvalues['type'] == 'archive' and (__cfgvalues['path'].lower().endswith('.tar') \ or __cfgvalues['path'].lower().endswith('.tar.gz') \ or __cfgvalues['path'].lower().endswith('.tar.bz2') \ or __cfgvalues['path'].lower().endswith('.tar.xz') \ or __cfgvalues['path'].lower().endswith('.tgz') \ or __cfgvalues['path'].lower().endswith('.tbz') \ or __cfgvalues['path'].lower().endswith('.tbz2')): __bck = CheckTar(__cfgvalues, __options) # check a gzip file, by name elif __cfgvalues['type'] == 'archive' and __cfgvalues['path'].lower().endswith('.gz'): __bck = CheckGzip(__cfgvalues, __options) # check a bzip2 file, by name elif __cfgvalues['type'] == 'archive' and __cfgvalues['path'].lower().endswith('.bz2'): __bck = CheckBzip2(__cfgvalues, __options) # check a xz file, by name elif __cfgvalues['type'] == 'archive' and __cfgvalues['path'].lower().endswith('.xz'): __bck = CheckLzma(__cfgvalues, __options) # check a zip file, by name elif __cfgvalues['type'] == 'archive' and __cfgvalues['path'].lower().endswith('.zip'): __bck = CheckZip(__cfgvalues, __options) elif __cfgvalues['type'] == 'archive' and __cfgvalues['path'].lower().endswith('.apk'): __bck = CheckZip(__cfgvalues, __options) else: __errmsg = 'The type of the archive is not supported.' sys.exit(1) ArchiveInfoMsg(__bck, __cfgvalues) brebis-0.10/brebis/checkbackups/checkbzip2.py0000644000000000000000000000564412462537262017342 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check a bzip2 archive '''Check a bzip2 archive''' import sys import logging import os.path import bz2 from brebis.checkbackups.checkarchive import CheckArchive from brebis.expectedvalues import ExpectedValues from brebis.identifylimitations import IdentifyLimitations class CheckBzip2(CheckArchive): '''Check a bzip2 archive''' def _main(self, _cfgvalues, _options): '''Main for CheckBzip2''' _data = [] _data, __arcdata = ExpectedValues(_cfgvalues, _options).data self.__arcpath = _cfgvalues['path'] ######################### # Test the archive itself ######################### self._archive_checks(__arcdata, _cfgvalues['path']) ############################### # Test the file in the archive ############################### if _data: # Identify limitations given the features asked by the user # retrieve every keys of every files in _data configkeys = set() for i in _data: configkeys = configkeys | set(i.keys()) IdentifyLimitations(_cfgvalues['path'], 'bz2', configkeys) ############################################## # Looking for data corruption # Have to read the whole archive to check CRC ############################################## try: with bz2.BZ2File(_cfgvalues['path'], 'r') as __bz2: __bz2.read() except IOError as __msg: __warn = '. You should investigate for a data corruption.' logging.warning('{}: {}{}'.format(_cfgvalues['path'], str(__msg), __warn)) else: __name = os.path.split(_cfgvalues['path'])[-1].split('.')[0] # Bzip2 does not allow to know the compressed file size, default to 0 __arcinfo = {'path': __name, 'type': 'f', 'size': 0} _data = self._check_path(__arcinfo, _data) self._missing_files = [_file['path'] for _file in _data] def _extract_stored_file(self, __nouse): '''Extract a file from the archive and return a file object''' __fileobj = bz2.BZ2File(self.__arcpath, 'r') return __fileobj brebis-0.10/brebis/checkbackups/checkgzip.py0000644000000000000000000001112712462537262017256 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check a gzip archive '''Check a gzip archive''' import sys import logging import os.path import gzip from brebis.checkbackups.checkarchive import CheckArchive from brebis.expectedvalues import ExpectedValues from brebis.identifylimitations import IdentifyLimitations class CheckGzip(CheckArchive): '''Check a gzip archive''' def _main(self, _cfgvalues, _options): '''Main for CheckGzip''' _data = [] _data, __arcdata = ExpectedValues(_cfgvalues, _options).data self.__arcpath = _cfgvalues['path'] ######################### # Test the archive itself ######################### self._archive_checks(__arcdata, _cfgvalues['path']) ############################### # Test the file in the archive ############################### if _data: # Identify limitations given the features asked by the user # retrieve every keys of every files in _data configkeys = set() for i in _data: configkeys = configkeys | set(i.keys()) IdentifyLimitations(_cfgvalues['path'], 'gz', configkeys) ############################################## # Looking for data corruption # Have to read the whole archive to check CRC ############################################## try: with gzip.open(_cfgvalues['path'], 'rb') as __gzip: __gzip.read() except IOError as __msg: __warn = '. You should investigate for a data corruption.' logging.warning('{}: {}{}'.format(_cfgvalues['path'], str(__msg), __warn)) else: ######################################## # No corruption, extracting information ######################################## with open(_cfgvalues['path'], 'rb') as __gzip: __filesize = self.__extract_size(__gzip) __name = self.__extract_initial_filename(__gzip, os.path.split(_cfgvalues['path'])[-1].rstrip('.gz')) __arcinfo = {'path': __name, 'size': __filesize, 'type': 'f'} _data = self._check_path(__arcinfo, _data) self._missing_files = [_file['path'] for _file in _data] def __extract_size(self, __binary): '''Extract the size of the uncompressed file inside the archive - 4 last bytes of the archive ''' __binary.seek(-4, 2) return int.from_bytes(__binary.read(), 'little') def __extract_initial_filename(self, __binary, __arcname): '''Extract initial filename of the uncompressed file''' # We move the cursor on the 4th byte __binary.seek(3,0) # Read a byte __flag = __binary.read(1) # Store flag byte __intflag = int.from_bytes(__flag,'little') # If the extra field flag is on, extract the size of its data field __extralen = 0 if __intflag & 4 != 0: __binary.seek(9,0) __extralenbyte = __binary.read(2) __extralen = int.from_byte(__extralenbyte,'little') + 2 # If the flag "name" is on, skip to it and read the associated content __binaryname = b'' if __intflag & 8 != 0: __binary.seek(10 + __extralen) # until zero byte is found, read the initial filename in bytes while True: __newbyte = __binary.read(1) if __newbyte != b'\x00': __binaryname += __newbyte else: break return __binaryname.decode('latin1') else: return __arcname def _extract_stored_file(self, __arcfilepath): '''Extract a file from the archive and return a file object''' __fileobj = gzip.open(self.__arcpath, 'rb') return __fileobj brebis-0.10/brebis/checkbackups/checklzma.py0000644000000000000000000000567012462537262017256 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check a lzma archive '''Check a lzma archive''' import sys import logging import os.path import lzma from brebis.checkbackups.checkarchive import CheckArchive from brebis.expectedvalues import ExpectedValues from brebis.identifylimitations import IdentifyLimitations class CheckLzma(CheckArchive): '''Check a lzma archive''' def _main(self, _cfgvalues, _options): '''Main for CheckLzma''' _data = [] _data, __arcdata = ExpectedValues(_cfgvalues, _options).data self.__arcpath = _cfgvalues['path'] ######################### # Test the archive itself ######################### self._archive_checks(__arcdata, _cfgvalues['path']) ############################### # Test the file in the archive ############################### if _data: # Identify limitations given the features asked by the user # retrieve every keys of every files in _data configkeys = set() for i in _data: configkeys = configkeys | set(i.keys()) IdentifyLimitations(_cfgvalues['path'], 'lzma', configkeys) ############################################## # Looking for data corruption # Have to read the whole archive to check CRC ############################################## try: with lzma.LZMAFile(_cfgvalues['path'], 'r') as __lzma: __lzma.read() except (lzma.LZMAError, IOError) as __msg: __warn = '. You should investigate for a data corruption.' logging.warning('{}: {}{}'.format(_cfgvalues['path'], str(__msg), __warn)) else: __name = os.path.split(_cfgvalues['path'])[-1].split('.')[0] # lzma does not allow to know the compressed file size, default to 0 __arcinfo = {'path': __name, 'type': 'f', 'size': 0} _data = self._check_path(__arcinfo, _data) self._missing_files = [_file['path'] for _file in _data] def _extract_stored_file(self, __nouse): '''Extract a file from the archive and return a file object''' __fileobj = lzma.LZMAFile(self.__arcpath, 'r') return __fileobj brebis-0.10/brebis/checkbackups/checktar.py0000644000000000000000000000602312462537262017072 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check a tar archive '''Check a tar archive''' import sys import tarfile import logging from brebis.expectedvalues import ExpectedValues from brebis.checkbackups.checkarchive import CheckArchive class CheckTar(CheckArchive): '''Check a tar archive''' def _main(self, _cfgvalues, _options): '''Main for CheckTar''' _data = [] _data, __arcdata = ExpectedValues(_cfgvalues, _options).data ######################### # Test the archive itself ######################### self._archive_checks(__arcdata, _cfgvalues['path']) ############################### # Test the files in the archive ############################### if _data: try: self._tar = tarfile.open(_cfgvalues['path'], 'r') for _tarinfo in self._tar: _tarinfo.name = self._normalize_path(_tarinfo.name) __type = self.__translate_type(_tarinfo.type) __arcinfo = {'path':_tarinfo.name, 'size':_tarinfo.size, 'uid':_tarinfo.uid, 'gid':_tarinfo.gid, 'mode':_tarinfo.mode, 'type': __type, 'target':_tarinfo.linkname, 'mtime':_tarinfo.mtime} _data = self._check_path(__arcinfo, _data) self._missing_files = [_file['path'] for _file in _data] except (tarfile.TarError, EOFError) as _msg: __warn = '. You should investigate for a data corruption.' logging.warning('{}: {}{}'.format(_cfgvalues['path'], str(_msg), __warn)) def __translate_type(self, __arctype): '''Translate the type of the file inside the tar by a generic name ''' __types = {tarfile.REGTYPE: 'f', tarfile.AREGTYPE: 'a', tarfile.CHRTYPE: 'c', tarfile.DIRTYPE: 'd', tarfile.LNKTYPE: 'l', tarfile.SYMTYPE: 's', tarfile.CONTTYPE: 'n', tarfile.BLKTYPE: 'b', tarfile.GNUTYPE_SPARSE: 'g', tarfile.FIFOTYPE: 'o'} return __types[__arctype] def _extract_stored_file(self, __arcfilepath): '''Extract a file from the archive and return a file object''' __file = self._tar.extractfile(__arcfilepath) return __file brebis-0.10/brebis/checkbackups/checktree.py0000644000000000000000000001001512462537262017237 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check a file tree '''Check a file tree''' import os import stat from brebis.expectedvalues import ExpectedValues from brebis.checkbackups.checkarchive import CheckArchive class CheckTree(CheckArchive): '''Check a file tree''' def _main(self, _cfgvalues, _options): '''Main for CheckTree''' _data = [] self.__treepath = _cfgvalues['path'] _data, __arcdata = ExpectedValues(_cfgvalues, _options).data # Save the tree root to determine the relative path in the file tree self.__treepath = self.__treepath for __dirpath, __dirnames, __filenames, in os.walk(_cfgvalues['path']): __dirinfo = os.lstat(__dirpath) __dirmode = stat.S_IMODE(__dirinfo.st_mode) # Translate file type in brebis intern file type __type = self.__translate_type(__dirinfo.st_mode) # Extract file data __arcinfo = {'path': os.path.relpath(__dirpath, self.__treepath), 'size': __dirinfo.st_size, 'uid': __dirinfo.st_uid, 'gid': __dirinfo.st_gid, 'mode': __dirmode, 'type': __type} _data = self._check_path(__arcinfo, _data) for __filename in __filenames: __filepath = os.path.join(__dirpath, __filename) __filepath = self._normalize_path(__filepath) self.__fileinfo = os.lstat(__filepath) __filemode = stat.S_IMODE(self.__fileinfo.st_mode) __type = self.__translate_type(self.__fileinfo.st_mode) if __type == 's': __arcinfo = {'path': os.path.relpath(__filepath, self.__treepath), 'size': self.__fileinfo.st_size, 'uid': self.__fileinfo.st_uid, 'gid': self.__fileinfo.st_gid, 'mode': __filemode, 'type': __type, 'target': os.readlink(__filepath)} else: __arcinfo = {'path': os.path.relpath(__filepath, self.__treepath), 'size': self.__fileinfo.st_size, 'uid': self.__fileinfo.st_uid, 'gid': self.__fileinfo.st_gid, 'mode': __filemode, 'type': __type} _data = self._check_path(__arcinfo, _data) self._missing_files = [_file['path'] for _file in _data] def __translate_type(self, __mode): '''Translate the type of the file to a generic name''' if stat.S_ISREG(__mode): if self.__fileinfo[stat.ST_NLINK] > 1: return 'l' else: return 'f' elif stat.S_ISDIR(__mode): return 'd' elif stat.S_ISCHR(__mode): return 'c' elif stat.S_ISLNK(__mode): return 's' elif stat.S_BLK(__mode): return 'b' elif stat.S_ISSOCK(__mode): return 'k' elif stat.S_ISFIFO(__mode): return 'o' def _extract_stored_file(self, __arcfilepath): '''extract a file from the tree and return a file object''' if os.path.isabs(__arcfilepath): __file = open(__arcfilepath, 'rb') else: __fullpath = os.path.normpath(os.path.join(self.__treepath, __arcfilepath)) __file = open(__fullpath, 'rb') return __file brebis-0.10/brebis/checkbackups/checkzip.py0000644000000000000000000001075012462537262017110 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check a zip archive '''Check a zip archive''' import datetime import logging import stat import sys import zipfile from brebis.checkbackups.checkarchive import CheckArchive from brebis.expectedvalues import ExpectedValues from brebis.identifylimitations import IdentifyLimitations class CheckZip(CheckArchive): '''Check a zip archive''' def _main(self, _cfgvalues, _options): '''Main for CheckZip''' _crcerror = '' _data = [] _data, __arcdata = ExpectedValues(_cfgvalues, _options).data ######################### # Test the archive itself ######################### self._archive_checks(__arcdata, _cfgvalues['path']) try: self._zip = zipfile.ZipFile(_cfgvalues['path'], 'r', allowZip64=True) ############################### # Test the files in the archive ############################### if _data: # Identify limitations given the features asked by the user # retrieve every keys of every files in _data configkeys = set() for i in _data: configkeys = configkeys | set(i.keys()) IdentifyLimitations(_cfgvalues['path'], 'zip', configkeys) _crcerror = self._zip.testzip() if _crcerror: # corrupted archive logging.warning('{} has at least one file corrupted:{}'.format(_cfgvalues['path'], _crcerror)) else: _zipinfo = self._zip.infolist() # iterate through the files in the archive for _fileinfo in _zipinfo: _fileinfo.filename = self._normalize_path(_fileinfo.filename) # Prepare a timestamp for the ctime object __dt = _fileinfo.date_time try: __mtime = float(datetime.datetime(__dt[0],__dt[1],__dt[2],__dt[3],__dt[4],__dt[5]).timestamp()) except ValueError as __msg: __warn = 'Issue with timestamp while controlling {} in {}'.format(_fileinfo.filename,_cfgvalues['path']) logging.warning(__warn) __uid, __gid = self.__extract_uid_gid(_fileinfo) __type = self.__translate_type(_fileinfo.external_attr >> 16) __arcinfo = {'path': _fileinfo.filename, 'size': _fileinfo.file_size, 'mode': stat.S_IMODE((_fileinfo.external_attr >> 16)), 'uid': __uid, 'gid': __gid, 'type': __type, 'mtime': __mtime} _data = self._check_path(__arcinfo, _data) self._missing_files = [_file['path'] for _file in _data] except zipfile.BadZipfile as _msg: # corrupted archive __warn = '. You should investigate for a data corruption.' logging.warning('{}: {}{}'.format(_cfgvalues['path'], str(_msg), __warn)) def _extract_stored_file(self, __arcfilepath): '''Extract a file from the archive and return a file object''' __file = self._zip.open(__arcfilepath, 'r') return __file def __extract_uid_gid(self, __binary): '''Extract uid and gid from a zipinfo.extra object (platform dependant)''' __uid, __gid = int.from_bytes(__binary.extra[15:17], 'little'), \ int.from_bytes(__binary.extra[20:22], 'little') return (__uid, __gid) def __translate_type(self, __mode): '''Translate the type of the file to a generic name''' if stat.S_ISREG(__mode): return 'f' elif stat.S_ISDIR(__mode): return 'd' brebis-0.10/brebis/checkfilelist.py0000644000000000000000000000325412462537262015474 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Check the hash of the list of files by comparing it to the expected value '''Check the hash of the list of files by comparing it to the expected value''' import sys from brebis.checkhashes import get_hash class CheckFileList(object): '''Check the hash of the list of files by comparing it to the expected value''' def __init__(self, __bckconf): '''The constructor of the CheckFileList class.''' self.__main(__bckconf) def __main(self, __bckconf): '''The main for the CheckFileList class''' if 'sha512' in __bckconf and __bckconf['sha512'] != None: __hashtype = 'sha512' with open(__bckconf['files_list'], 'rb') as __conf: __realhash = get_hash(__conf, __hashtype) if __realhash != __bckconf['sha512']: print('The list of files {} should have a {} hash sum of {}. Current value: {}'.format(__bckconf['files_list'], __hashtype, __bckconf['sha512'], __realhash)) sys.exit(1) brebis-0.10/brebis/checkhashes.py0000644000000000000000000000170112462537262015127 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Get the hash of a file '''Get the hash of a file''' import hashlib def get_hash(__arcfile, __hashtype): '''return the hash of a file.''' __res = getattr(hashlib, __hashtype)(__arcfile.read()).hexdigest() __arcfile.close() return __res brebis-0.10/brebis/cliparse.py0000644000000000000000000001742112462537262014466 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Retrieve the command line options '''Retrieve the command line options''' import logging from argparse import ArgumentParser import os import sys from hashlib import algorithms_guaranteed from brebis.applogger import AppLogger class CliParse: '''Retrieve the command line options''' def __init__(self): '''The constructor for the CliParse class.''' self._options = () brebisdescription = 'Fully automated backup checker' brebisepilog = 'For more information: http://www.brebisproject.org' __parser = ArgumentParser(prog='brebis', description=brebisdescription, epilog=brebisepilog) self.__define_options(__parser) def __define_options(self, __parser): '''Define the options''' # define mutually exclusive arguments __group = __parser.add_mutually_exclusive_group(required=True) __group.add_argument('-c', '--configpath', dest='confpath', action='store', default=os.getcwd(), help='the path to the configurations', metavar='DIR') __parser.add_argument('-C', '--output-conf-dir', dest='confoutput', action='store', default='', help='the directory to store the configuration file', metavar='DIR') __parser.add_argument('-d', '--delimiter', dest='delimiter', action='store', default='|', help='delimiter of the fields for the list of files', metavar='DELIMITER') __parser.add_argument('-E', '--exceptions-file', dest='parsingexceptions', action='store', default='', help='the file with exceptions to normal Brebis behaviour while generating configuration files', metavar='FILE') __group.add_argument('-g', '--gen-list', dest='genlist', action='store_true', help='generate a list of files inside a backup') __group.add_argument('-G', '--gen-full', dest='genfull', action='store_true', help='generate the configuration file and the list of files for the backup') __parser.add_argument('-H', '--hashes', dest='getallhashes', action='store_true', help='generate the hash sum of each encountered file in the backup') __parser.add_argument('--hashtype', dest='hashtype', action='store', default='', help='the type of the hash sum to use while generating configurations for the archive', metavar='HASHTYPE') __parser.add_argument('-l', '--log', dest='logfile', action='store', default=os.path.join(os.getcwd(), 'a.out'), help='the log file', metavar='FILE') __parser.add_argument('-L', '--output-list-dir', dest='listoutput', action='store', default='', help='the directory to store the list of files inside an archive or tree', metavar='DIR') __parser.add_argument('-O', '--output-list-and-conf-dir', dest='fulloutput', action='store', default='', help='the directory to store the configuration file and the list of files inside an archive or tree', metavar='DIR') __parser.add_argument('-v', '--version', action='version', version='%(prog)s 0.10', help='print the version of this program and exit') __parser.add_argument('archives', nargs='*', help='archives to check') __args = __parser.parse_args() self.__verify_options(__args) def __verify_options(self, __options): '''Verify the options given on the command line''' # check if the archives exist for __i, __path in enumerate(__options.archives): if not os.path.exists(__path): print('{} : no file or directory at this path. Exiting.'.format(__path)) sys.exit(1) else: # using absolute path in order to be consistent __path = os.path.abspath(__path) # if the path exists, check if it is a regular file, a link or # a directory otherwise exits if not os.path.isfile(__path) and not os.path.isdir(__path): print('{}: not a file or a directory. Exiting.'.format(__path)) sys.exit(1) else: __options.archives[__i] = __path # Check the logfile __logdir = os.path.split(__options.logfile)[0] if __logdir and not os.path.exists(__logdir): print('The directory where to write the log file {} does not exist'.format(__logdir)) sys.exit(1) # Check the exceptions parsing file __parsingexceptions = os.path.split(__options.parsingexceptions)[0] if __parsingexceptions and not os.path.exists(__parsingexceptions): print('The file with exceptions to comply while generating configurations file {} does not exist'.format(__parsingexceptions)) sys.exit(1) # Check the configuration output directory __confoutput = __options.confoutput if __confoutput and not os.path.exists(__confoutput): print('The directory where to write the configuration file {} does not exist'.format(__confoutput)) sys.exit(1) # Check the directory where the list of files is written __listoutput= __options.listoutput if __listoutput and not os.path.exists(__listoutput): print('The directory where to write the list of files inside the archive {} does not exist'.format(__listoutput)) sys.exit(1) # Check the directory where the list of files and the configuration are written __fulloutput= __options.fulloutput if __fulloutput and not os.path.exists(__fulloutput): print('The directory where to write the list of files inside the archive and the configuration file {} does not exist'.format(__fulloutput)) sys.exit(1) # using absolute path in order to be consistent __options.logfile = os.path.abspath(__options.logfile) # Configure the logger AppLogger(__options.logfile) # Verify if --gen-list option is not invoked before calling configuration path control if not __options.genlist: # Check the configuration directory or file if not os.path.exists(__options.confpath): print('The configuration directory or file does not exist: {}'.format(__options.confpath)) sys.exit(1) __options.confpath = os.path.abspath(__options.confpath) # Check that the hash type for the option --hashtype is available if __options.hashtype and (__options.hashtype not in algorithms_guaranteed): print('The hash type {} you specified is not available'.format(__options.hashtype)) sys.exit(1) self.__options = __options @property def options(self): '''Return the command line options''' return self.__options brebis-0.10/brebis/configurations.py0000644000000000000000000001501312462537262015711 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . #Parse the configurations '''Parse the configurations''' import sys from configparser import ConfigParser from configparser import ParsingError, NoSectionError, NoOptionError import os class Configurations: '''Retrieve the different configurations''' def __init__(self, __confpath): '''The constructor of the Configurations class. __confpath -- the path to the directory with the configuration files ''' self.__configs = {} self.__parse_configurations(__confpath) def __parse_configurations(self, __confpath): '''Parse the different configurations''' try: # check if the path to the confs is a directory or a file if os.path.isdir(__confpath): __confs = [__file for __file in os.listdir(__confpath) if __file.endswith('.conf')] else: __confpath, __conft = os.path.split(__confpath) __confs = [__conft] # check if at least one configuration file is availabe if not __confs: __errmsg = 'Could not find any .conf file in {}' print(__errmsg.format(__confpath)) sys.exit(1) # parse the configuration files for __conf in __confs: __currentconf = {} __config = ConfigParser() __fullconfpath = os.path.join('/'.join([__confpath, __conf])) try: with open(__fullconfpath, 'r') as __file: # strip GPG/PGP header and footer if it is a signed file __stripres = self.strip_gpg_header(__file, __fullconfpath) __config.read_string(__stripres) except UnicodeDecodeError as __err: __msg = 'Error while parsing the configuration file {}:'.format(__fullconfpath) print(__msg) print(__err) sys.exit(1) # Common information for the backups ### The type of the backups __currentconf['type'] = __config.get('main', 'type') # Common information for the archives ### The archive path __confsettings = [{'main': 'path'}, ### The list of the expected files in the archive {'main': 'files_list'}, ### The delimiter to use in the list of files {'main': 'delimiter'}, ### The hash sum to identify the list of files {'main': 'sha512'} ] for __element in __confsettings: __key, __value = __element.popitem() if __config.has_option(__key, __value): __currentconf[__value] = __config.get( __key, __value) else: __currentconf[__value] = __config.set( __key, __value, '') # Checking the information ### Check the paths in the configuration __confkeys= ('path', 'files_list') for __confkey in __confkeys: __path = __currentconf[__confkey] if not __path: print('A path is missing in {}.'.format(__config.get('main', 'name'))) sys.exit(1) if not os.path.isabs(__path): __path = os.path.normpath(os.path.join(os.path.abspath(__confpath), __path)) __currentconf[__confkey] = __path if not os.path.exists(__path): print('{} does not exist.'.format(__path)) sys.exit(1) # If the backup type is archive, path must not be a directory if __currentconf['type'] == 'archive' and os.path.isdir(__currentconf['path']): __errmsg = '{} is a directory but appears as an archive in configuration {}.' print(__errmsg.format(__currentconf['path'], __config.get('main', 'name'))) sys.exit(1) # check if the name of the conf does not exist yet if __config.get('main', 'name') in self.__configs: __errmsg = 'The configuration name in {} already exists. Please rename it.' print(__errmsg.format(__fullconfpath)) sys.exit(1) else: self.__configs[__config.get('main', 'name')] = __currentconf except (ParsingError, NoSectionError, NoOptionError, OSError, IOError) as __err: print(__err) sys.exit(1) def strip_gpg_header(self, __file, __confpath): '''strip the GPG/PGP header and footer if it is a signed file''' __pgpheader = '-----BEGIN PGP SIGNED MESSAGE-----\n' __pgpfooter = '-----BEGIN PGP SIGNATURE-----\n' __pgpfootermissing = 'Found PGP header but could not find PGP footer for {}' __pgpheadermissing = 'Found PGP footer but could not find PGP header for {}' __content = __file.read() if __pgpheader in __content and __pgpfooter not in __content: print(__pgpfootermissing.format(__confpath)) sys.exit(1) if __pgpheader not in __content and __pgpfooter in __content: print(__pgpheadermissing.format(__confpath)) sys.exit(1) if __pgpheader in __content and __pgpfooter: __content = __content[__content.index('[main]'):] __content = __content[0:__content.index(__pgpfooter)] return __content @property def configs(self): '''Return the different configurations parameters''' return self.__configs brebis-0.10/brebis/exceptionsparsing.py0000644000000000000000000000531212462537262016425 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Extract from the parsing exceptions file the exceptions to comply with '''Extract from the parsing exceptions file the exceptions to comply with''' import configparser from hashlib import algorithms_guaranteed import os.path import sys class ExceptionsParsing: '''The ExceptionsParsing class''' def __init__(self, __filepath, __delimiter): '''The constructor for the ExceptionsParsing class ''' self.__parsingexceptions = {} self.__delimiter = __delimiter self.__main(__filepath) def __main(self, __filepath): '''Main for ExceptionsFile class''' try: with open(__filepath, 'r') as __exceptfile: self.__retrieve_data(__exceptfile) except (configparser.Error, IOError, OSError) as __err: print(__err) sys.exit(1) def __retrieve_data(self, __file): '''Retrieve data from the expected files''' # Using default delimiter __config = configparser.ConfigParser(delimiters=(self.__delimiter,)) __config.optionxform = str __config.read_file(__file) if __config.has_section('files'): __files = __config.items('files') for __fileitems in __files: if __fileitems[0].endswith('/'): self.__parsingexceptions[__fileitems[0][:-1]] = '' __key = __fileitems[0][:-1] else: self.__parsingexceptions[__fileitems[0]] = '' __key = __fileitems[0] if len(__fileitems) == 2: for __item in __fileitems[1].split(' '): # Test if a hash is provided for this file for __hash in algorithms_guaranteed: if __item.startswith('{}'.format(__hash)): self.__parsingexceptions[__key] = __item @property def exceptions(self): '''Return the parsing exceptions''' return self.__parsingexceptions brebis-0.10/brebis/expectedvalues.py0000644000000000000000000002326712462537262015712 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Extract information about the archive (if it is one) and expected saved files '''Extract information about the archive (if it is one) and expected saved files''' import logging import os import sys import configparser from configparser import ConfigParser from hashlib import algorithms_guaranteed from brebis.checkfilelist import CheckFileList class ExpectedValues(object): '''Extract information about the archive (if it is one) and expected saved files. ''' def __init__(self, __bckconf, __options): '''The constructor of the ExpectedValues class. ''' self.__bckfiles= [] self.__arcdata = {} __path = __bckconf['files_list'] # Define delimiter value if not __bckconf['delimiter']: __delimiter = __options.delimiter else: __delimiter = __bckconf['delimiter'] # test if the expected value of the hash of the list of file is correct CheckFileList(__bckconf) # launch the main of the class self.__main(__path, __delimiter) def __main(self, __path, __delimiter): '''Main of the ExpectedValues class''' try: with open(__path, 'r') as __file: self.__retrieve_data(__file, __path, __delimiter) except (configparser.Error, IOError, OSError) as __err: print(__err) sys.exit(1) def __retrieve_data(self, __file, __path, __delimiter): '''Retrieve data from the expected files''' # Using default delimiter __config = ConfigParser(delimiters=(__delimiter)) __config.optionxform = str __config.read_file(__file) ######################### # Test the archive itself ######################### if __config.has_section('archive'): __archive = __config.items('archive') # Testing the size of the archive if 'size' in __config['archive']: ### Test if the equality is required if __config['archive']['size'].startswith('='): self.__arcdata['equals'] = self.__convert_arg(__config['archive']['size']) ### Test if bigger than is required elif __config['archive']['size'].startswith('>'): self.__arcdata['biggerthan'] = self.__convert_arg(__config['archive']['size']) ### Test if smaller than is required elif __config['archive']['size'].startswith('<'): self.__arcdata['smallerthan'] = self.__convert_arg(__config['archive']['size']) # Test the mode of the archive if 'mode' in __config['archive']: if len(__config['archive']['mode']) < 3 or len(__config['archive']['mode']) > 4: logging.warning('{}: Wrong format for the mode.'.format(__path)) else: self.__arcdata['mode'] = __config['archive']['mode'] try: # Testing the uid of the archive if 'uid' in __config['archive']: self.__arcdata['uid'] = int(__config['archive']['uid']) # Testing the gid of the archive if 'gid' in __config['archive']: self.__arcdata['gid'] = int(__config['archive']['gid']) except ValueError as __msg: logging.warning(__msg) # Testing the hash of the archive for __hash in algorithms_guaranteed: if __hash in __config['archive']: self.__arcdata['hash'] = {'hashtype':__hash, 'hashvalue':__config['archive'][__hash]} ###################### # Test expected files ###################### if __config.has_section('files'): __files = __config.items('files') for __fileitems in __files: __data = {} __data['path'] = __fileitems[0] if __data['path'].endswith('/'): __data['path'] = __data['path'][:-1] if len(__fileitems) == 2: for __item in __fileitems[1].split(' '): try: # Testing the items for an expected file if __item == 'unexpected': __data['unexpected'] = True # The uid of the expected file elif __item.startswith('uid{}'.format(__delimiter)): __data['uid'] = int(__item.split(__delimiter)[-1]) # The gid of the expected file elif __item.startswith('gid{}'.format(__delimiter)): __data['gid'] = int(__item.split(__delimiter)[-1]) # The mode of the expected file elif __item.startswith('mode{}'.format(__delimiter)): __mode =__item.split(__delimiter)[-1] if len(__mode) < 3 or len(__mode) > 4: logging.warning('{}: Wrong format for the mode.'.format(__data['path'])) else: __data['mode'] = __mode # Testing the type of the file elif __item.startswith('type{}'.format(__delimiter)): __type =__item.split(__delimiter)[-1] ### f for file, c for character, d for directory ### s for symbolink link, b for block, o for fifo, ### k for socket, l for hard link __types = ('f','c','d','s','b','o','k', 'l') if __type not in __types: logging.warning('{}: Unknown type {} for file parameter'.format(__data['path'], __type)) else: __data['type'] = __type # Testing the mtime of the file elif __item.startswith('mtime{}'.format(__delimiter)): try: __data['mtime'] = float(__item.split(__delimiter)[-1]) except ValueError as __msg: logging.warning(__msg) __data['mtime'] = 0.0 # Testing the size of the file ### Test if the equality is required elif __item.startswith('='): __data['equals'] = self.__convert_arg(__item) ### Test if bigger than is required elif __item.startswith('>'): __data['biggerthan'] = self.__convert_arg(__item) ### Test if smaller than is required elif __item.startswith('<'): __data['smallerthan'] = self.__convert_arg(__item) # Testing if there is a target for this file elif __item.startswith('target{}'.format(__delimiter)): if __data['type'] and (__data['type'] == 'l' or __data['type'] == 's'): __data['target'] = __item.split(__delimiter)[-1] else: __errmsg = 'The list of your file contains a target field although the file is not a symlink or a hard link' print(__errmsg) sys.exit(1) # Test if a hash is provided for this file for __hash in algorithms_guaranteed: if __item.startswith('{}{}'.format(__hash, __delimiter)): __hashtype, __hashvalue = __item.split(__delimiter) __data['hash'] = {'hashtype':__hashtype, 'hashvalue':__hashvalue} except ValueError as __msg: logging.warning(__msg) self.__bckfiles.append(__data) def __convert_arg(self, __arg): '''Convert the given file length to bytes''' __res = 0 __arg = ''.join([__arg[:-1], __arg[-1].lower()]) try: for __value, __power in [('k', 1),('m', 2),('g', 3),('p', 4), ('e', 5),('z', 6),('y', 7)]: if __arg.endswith(__value): __res = int(__arg[1:-1]) * 1024**__power if __res == 0: __res = int(__arg[1:]) except ValueError as __msg: logging.warning(__msg) __res = 0 finally: return __res @property def data(self): '''Return the paths of the expected files in the archive''' return self.__bckfiles, self.__arcdata brebis-0.10/brebis/generatelist/__init__.py0000644000000000000000000000000012462537262017072 0ustar 00000000000000brebis-0.10/brebis/generatelist/generatelist.py0000644000000000000000000000513612462537262020040 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Generate a list of files in a backup '''Generate a list of files in a backup''' import logging import os.path import sys from brebis.checkhashes import get_hash class GenerateList: '''The GenerateList class''' def _generate_list(self, __listconfinfo): '''Write the list of file information inside the archive in a file''' try: with open(__listconfinfo['arclistpath'], 'w') as __file: __file.writelines(__listconfinfo['listoffiles']) except (OSError, IOError) as __msg: print(__msg) sys.exit(1) except UnicodeEncodeError as __msg: print(__msg) print('The encoding of the archive and the one of this system differs.\nThe result will not be reliable. Aborting.') sys.exit(1) def _generate_conf(self, __confinfo): '''Write the configuration file for the archive''' __confcontent = '[main]\nname={name}\ntype={type}\npath={path}\nfiles_list={listoffiles}\nsha512={sha512}\n'.format(name=__confinfo['arcname'],type=__confinfo['arctype'],path=__confinfo['arcpath'],listoffiles=__confinfo['arclistpath'], sha512=__confinfo['sha512']) try: with open(__confinfo['arcconfpath'], 'w') as __file: __file.write(__confcontent) except (OSError, IOError) as __msg: print(__msg) sys.exit(1) def _normalize_path(self, __path): '''Remove last slash of a directory path if present''' if __path.endswith('/'): return __path[:-1] else: return __path def _get_list_hash(self, __listpath): '''Get the hash sum of the list of files''' try: with open(__listpath, 'rb') as __file: __listhash = get_hash(__file, 'sha512') except (OSError, IOError) as __msg: print(__msg) sys.exit(1) return __listhash brebis-0.10/brebis/generatelist/generatelistforbzip2.py0000644000000000000000000001324212462537262021513 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . import bz2 import fnmatch import os import os.path import stat from brebis.checkhashes import get_hash from brebis.generatelist.generatelist import GenerateList # Generate a list of files from a bzip2 archive '''Generate a list of files from a bzip2 archive''' class GenerateListForBzip2(GenerateList): '''Generate a list of files from a bzip2 archive''' def __init__(self, __genparams): '''The constructor for the GenerateListForBzip2 class''' __arcpath = __genparams['arcpath'] __delimiter = __genparams['delimiter'] self._genfull = __genparams['genfull'] self.__listoutput = __genparams['listoutput'] self.__confoutput = __genparams['confoutput'] self.__fulloutput = __genparams['fulloutput'] self.__getallhashes = __genparams['getallhashes'] self.__hashtype = __genparams['hashtype'] self.__parsingexceptions = __genparams['parsingexceptions'] __listoffiles = ['[files]\n'] __filetype = 'f' __filehash = get_hash(bz2.BZ2File(__arcpath, 'r'), 'md5') if self.__getallhashes: if not self.__hashtype: __onelinewithhash = '{value}{delimiter} type{delimiter}{value} md5{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) else: __onelinewithhash = '{value}{delimiter} type{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__hashtype, delimiter=__delimiter) __listoffiles.append(__onelinewithhash.format( os.path.split(__arcpath)[-1][:-4], __filetype, __filehash)) else: if self.__parsingexceptions : for __file in self.__parsingexceptions: if fnmatch.fnmatch(os.path.split(__arcpath)[-1][:-4], __file): __filehash = get_hash(bz2.BZ2File(__arcpath, 'r'), self.__parsingexceptions[__file]) __onelinewithhash = '{value}{delimiter} type{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__parsingexceptions[__file], delimiter=__delimiter) __listoffiles.append(__onelinewithhash.format( os.path.split(__arcpath)[-1][:-4], __filetype, __filehash)) else: __onelinewithouthash = '{value}{delimiter} type{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) __listoffiles.append(__onelinewithouthash.format( os.path.split(__arcpath)[-1][:-4], __filetype)) else: __onelinewithouthash = '{value}{delimiter} type{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) __listoffiles.append(__onelinewithouthash.format( os.path.split(__arcpath)[-1][:-4], __filetype)) # define the flexible file list path __arcwithext = os.path.split(''.join([__arcpath[:-3], 'list']))[1] if self.__listoutput: __arclistpath = os.path.join(self.__listoutput, __arcwithext) elif self.__fulloutput: __arclistpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arclistpath = ''.join([__arcpath[:-3], 'list']) # call the method to write information in a file __listconfinfo = {'arclistpath': __arclistpath, 'listoffiles': __listoffiles} self.__lci = __listconfinfo self._generate_list(__listconfinfo) # call the method to write the configuration file if --gen-full was required if self._genfull: # generate the hash sum of the list of files __listhashsum = self._get_list_hash(__listconfinfo['arclistpath']) # define the flexible configuration file path __arcwithext = os.path.split(''.join([__arcpath[:-3], 'conf']))[1] if self.__confoutput: __arcconfpath = os.path.join(self.__confoutput, __arcwithext) elif self.__fulloutput: __arcconfpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arcconfpath = ''.join([__arcpath[:-3], 'conf']) __arcname = os.path.basename(__arcpath[:-4]) __confinfo = {'arcname': __arcname, 'arcpath': __arcpath, 'arcconfpath': __arcconfpath, 'arclistpath': __listconfinfo['arclistpath'], 'arctype': 'archive', 'sha512': __listhashsum} self.__ci = __confinfo self._generate_conf(__confinfo) brebis-0.10/brebis/generatelist/generatelistforgzip.py0000644000000000000000000001677612462537262021455 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . import fnmatch import gzip import os import os.path import stat from brebis.checkhashes import get_hash from brebis.generatelist.generatelist import GenerateList # Generate a list of files from a gzip archive '''Generate a list of files from a gzip archive''' class GenerateListForGzip(GenerateList): '''Generate a list of files from a gzip archive''' def __init__(self, __genparams): '''The constructor for the GenerateListForGzip class''' __arcpath = __genparams['arcpath'] __delimiter = __genparams['delimiter'] self._genfull = __genparams['genfull'] self.__confoutput = __genparams['confoutput'] self.__listoutput = __genparams['listoutput'] self.__fulloutput = __genparams['fulloutput'] self.__getallhashes = __genparams['getallhashes'] self.__hashtype = __genparams['hashtype'] self.__parsingexceptions = __genparams['parsingexceptions'] __listoffiles = ['[files]\n'] __fileinfo = os.lstat(__arcpath) __filetype = 'f' if not self.__hashtype: __filehash = get_hash(gzip.open(__arcpath, 'rb'), 'md5') else: __filehash = get_hash(gzip.open(__arcpath, 'rb'), self.__hashtype) with open(__arcpath, 'rb') as __gzip: __filesize = self.__extract_size(__gzip) __filename = self.__extract_initial_filename(__gzip, os.path.split(__arcpath)[-1][:-2]) if self.__getallhashes: if not self.__hashtype: __onelinewithhash = '{value}{delimiter} ={value} type{delimiter}{value} md5{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) else: __onelinewithhash = '{value}{delimiter} ={value} type{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__hashtype, delimiter=__delimiter) __listoffiles.append(__onelinewithhash.format( __filename, str(__filesize), __filetype, __filehash)) else: if self.__parsingexceptions : for __file in self.__parsingexceptions: if fnmatch.fnmatch(__filename, __file): __filehash = get_hash(gzip.open(__arcpath, 'rb'), self.__parsingexceptions[__file]) __onelinewithhash = '{value}{delimiter} ={value} type{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__parsingexceptions[__file], delimiter=__delimiter) __listoffiles.append(__onelinewithhash.format( __filename, str(__filesize), __filetype, __filehash)) else: __onelinewithouthash = '{value}{delimiter} ={value} type{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) __listoffiles.append(__onelinewithouthash.format( __filename, str(__filesize), __filetype)) else: __onelinewithouthash = '{value}{delimiter} ={value} type{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) __listoffiles.append(__onelinewithouthash.format( __filename, str(__filesize), __filetype)) # define the flexible file list path __arcwithext = os.path.split(''.join([__arcpath[:-2], 'list']))[1] if self.__listoutput: __arclistpath = os.path.join(self.__listoutput, __arcwithext) elif self.__fulloutput: __arclistpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arclistpath = ''.join([__arcpath[:-2], 'list']) # call the method to write information in a file __listconfinfo = {'arclistpath': __arclistpath, 'listoffiles': __listoffiles} self._generate_list(__listconfinfo) # call the method to write the configuration file if --gen-full was required if self._genfull: # generate the hash sum of the list of files __listhashsum = self._get_list_hash(__listconfinfo['arclistpath']) # define the flexible configuration file path __arcwithext = os.path.split(''.join([__arcpath[:-2], 'conf']))[1] if self.__confoutput: __arcconfpath = os.path.join(self.__confoutput, __arcwithext) elif self.__fulloutput: __arcconfpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arcconfpath = ''.join([__arcpath[:-2], 'conf']) __arcname = os.path.basename(__arcpath[:-3]) __confinfo = {'arcname': __arcname, 'arcpath': __arcpath, 'arcconfpath': __arcconfpath, 'arclistpath': __listconfinfo['arclistpath'], 'arctype': 'archive', 'sha512': __listhashsum} self._generate_conf(__confinfo) def __extract_size(self, __binary): '''Extract the size of the uncompressed file inside the archive - 4 last bytes of the archive ''' __binary.seek(-4, 2) return int.from_bytes(__binary.read(), 'little') def __extract_initial_filename(self, __binary, __arcname): '''Extract initial filename of the uncompressed file''' # We move the cursor on the 4th byte __binary.seek(3,0) # Read a byte __flag = __binary.read(1) # Store flag byte __intflag = int.from_bytes(__flag,'little') # If the extra field flag is on, extract the size of its data field __extralen = 0 if __intflag & 4 != 0: __binary.seek(9,0) __extralenbyte = __binary.read(2) __extralen = int.from_byte(__extralenbyte,'little') + 2 # If the flag "name" is on, skip to it and read the associated content __binaryname = b'' if __intflag & 8 != 0: __binary.seek(10 + __extralen) # until zero byte is found, read the initial filename in bytes while True: __newbyte = __binary.read(1) if __newbyte != b'\x00': __binaryname += __newbyte else: break return __binaryname.decode('latin1') else: return __arcname brebis-0.10/brebis/generatelist/generatelistforlzma.py0000644000000000000000000001311712462537262021431 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . import fnmatch import lzma import os import os.path import stat from brebis.checkhashes import get_hash from brebis.generatelist.generatelist import GenerateList # Generate a list of files from a lzma archive '''Generate a list of files from a lzma archive''' class GenerateListForLzma(GenerateList): '''Generate a list of files from a lzma archive''' def __init__(self, __genparams): '''The constructor for the GenerateListForlzma class''' __arcpath = __genparams['arcpath'] __delimiter = __genparams['delimiter'] self._genfull = __genparams['genfull'] self.__confoutput = __genparams['confoutput'] self.__listoutput = __genparams['listoutput'] self.__fulloutput = __genparams['fulloutput'] self.__getallhashes = __genparams['getallhashes'] self.__hashtype = __genparams['hashtype'] self.__parsingexceptions = __genparams['parsingexceptions'] __listoffiles = ['[files]\n'] __filetype = 'f' __filehash = get_hash(lzma.LZMAFile(__arcpath, 'r'), 'md5') if self.__getallhashes: if not self.__hashtype: __onelinewithhash = '{value}{delimiter} type{delimiter}{value} md5{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) else: __onelinewithhash = '{value}{delimiter} type{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__hashtype, delimiter=__delimiter) __listoffiles.append(__onelinewithhash.format( os.path.split(__arcpath)[-1][:-3], __filetype, __filehash)) else: if self.__parsingexceptions: for __file in self.__parsingexceptions: if fnmatch.fnmatch(os.path.split(__arcpath)[-1][:-3], __file): __filehash = get_hash(lzma.LZMAFile(__arcpath, 'r'), self.__parsingexceptions[__file]) __onelinewithhash = '{value}{delimiter} type{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__parsingexceptions[__file], delimiter=__delimiter) __listoffiles.append(__onelinewithhash.format( os.path.split(__arcpath)[-1][:-3], __filetype, __filehash)) else: __onelinewithouthash = '{value}{delimiter} type{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) __listoffiles.append(__onelinewithouthash.format( os.path.split(__arcpath)[-1][:-3], __filetype)) else: __onelinewithouthash = '{value}{delimiter} type{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) __listoffiles.append(__onelinewithouthash.format( os.path.split(__arcpath)[-1][:-3], __filetype)) # define the flexible file list path __arcwithext = os.path.split(''.join([__arcpath[:-2], 'list']))[1] if self.__listoutput: __arclistpath = os.path.join(self.__listoutput, __arcwithext) elif self.__fulloutput: __arclistpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arclistpath = ''.join([__arcpath[:-2], 'list']) # call the method to write information in a file __listconfinfo = {'arclistpath': __arclistpath, 'listoffiles': __listoffiles} self._generate_list(__listconfinfo) # call the method to write the configuration file if --gen-full was required if self._genfull: # generate the hash sum of the list of files __listhashsum = self._get_list_hash(__listconfinfo['arclistpath']) # define the flexible configuration file path __arcwithext = os.path.split(''.join([__arcpath[:-2], 'conf']))[1] if self.__confoutput: __arcconfpath = os.path.join(self.__confoutput, __arcwithext) elif self.__fulloutput: __arcconfpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arcconfpath = ''.join([__arcpath[:-2], 'conf']) __arcname = os.path.basename(__arcpath[:-3]) __confinfo = {'arcname': __arcname, 'arcpath': __arcpath, 'arcconfpath': __arcconfpath, 'arclistpath': __listconfinfo['arclistpath'], 'arctype': 'archive', 'sha512': __listhashsum} self._generate_conf(__confinfo) brebis-0.10/brebis/generatelist/generatelistfortar.py0000644000000000000000000003163412462537262021260 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Generate a list of files from a tar archive '''Generate a list of files from a tar archive''' import fnmatch import logging import os.path import tarfile from brebis.generatelist.generatelist import GenerateList from brebis.checkhashes import get_hash class GenerateListForTar(GenerateList): '''Generate a list of files from a tar archive''' def __init__(self, __genparams): '''The constructor for the GenerateListForTar class''' self.__arcpath = __genparams['arcpath'] self.__delimiter = __genparams['delimiter'] self._genfull = __genparams['genfull'] self.__listoutput = __genparams['listoutput'] self.__confoutput = __genparams['confoutput'] self.__fulloutput = __genparams['fulloutput'] self.__getallhashes = __genparams['getallhashes'] self.__hashtype = __genparams['hashtype'] self.__parsingexceptions = __genparams['parsingexceptions'] try: __tar = tarfile.open(self.__arcpath, 'r') self.__main(__tar) except (tarfile.TarError, EOFError) as _msg: __warn = '. You should investigate for a data corruption.' logging.warning('{}: {}{}'.format(self.__arcpath, str(_msg), __warn)) def __main(self, __tar): '''Main for the GenerateListForTar class''' __listoffiles = ['[files]\n'] __oneline = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) if self.__getallhashes: # we get all the hash sums of files inside the backup if not self.__hashtype: __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} md5{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) else: # we switch the default hash sum __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__hashtype, delimiter=self.__delimiter) else: __onelinewithouthash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) __onelinewithtarget = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} target{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) for __tarinfo in __tar: # Pick up tar information __tarinfo.name = self._normalize_path(__tarinfo.name) __type = self.__translate_type(__tarinfo.type) __mode = oct(__tarinfo.mode).split('o')[-1] # if the file has no right, need to manipulate the output - solving #15 if __mode == '0': __mode = '000' if __type == 'f': if self.__getallhashes: # extract all hash sums from the archive if not self.__hashtype: # extract hash sum of the file inside the archive __hash = get_hash(__tar.extractfile(__tarinfo.name), 'md5') else: # switch the default hash sum type __hash = get_hash(__tar.extractfile(__tarinfo.name), self.__hashtype) # format the retrieved information __listoffiles.append(__onelinewithhash.format(__tarinfo.name, str(__tarinfo.size), str(__tarinfo.uid), str(__tarinfo.gid), __mode, __type, float(__tarinfo.mtime), __hash, __tarinfo.linkname)) else: # check if there are exceptions while parsing if self.__parsingexceptions: for __file in self.__parsingexceptions: if fnmatch.fnmatch(__tarinfo.name, __file): __hash = get_hash(__tar.extractfile(__tarinfo.name), self.__parsingexceptions[__file]) __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__parsingexceptions[__file], delimiter=self.__delimiter) __listoffiles.append(__onelinewithhash.format(__tarinfo.name, str(__tarinfo.size), str(__tarinfo.uid), str(__tarinfo.gid), __mode, __type, float(__tarinfo.mtime), __hash, __tarinfo.linkname)) else: # we use exceptions-file option but the file is not concerned by an exception __listoffiles.append(__onelinewithouthash.format(__tarinfo.name, str(__tarinfo.size), str(__tarinfo.uid), str(__tarinfo.gid), __mode, __type, float(__tarinfo.mtime), __tarinfo.linkname)) else: # we don't use the --exceptions-file option __listoffiles.append(__onelinewithouthash.format(__tarinfo.name, str(__tarinfo.size), str(__tarinfo.uid), str(__tarinfo.gid), __mode, __type, float(__tarinfo.mtime), __tarinfo.linkname)) elif __type == 'l' or __type == 's': # format the retrieved information __listoffiles.append(__onelinewithtarget.format(__tarinfo.name, str(__tarinfo.size), str(__tarinfo.uid), str(__tarinfo.gid), __mode, __type, float(__tarinfo.mtime), __tarinfo.linkname)) else: # if file is not regular file, ignoring its hash sum __listoffiles.append(__oneline.format(__tarinfo.name, str(__tarinfo.size), str(__tarinfo.uid), str(__tarinfo.gid), __mode, __type, float(__tarinfo.mtime))) # Compose the name of the generated list ### for tar archive if self.__arcpath.lower().endswith('.tar'): self.__make_conf_and_list_paths('.tar') ### for tar.gz archive elif self.__arcpath.lower().endswith('.tar.gz'): self.__make_conf_and_list_paths('.tar.gz') ### for tar.bz2 archive elif self.__arcpath.lower().endswith('.tar.bz2'): self.__make_conf_and_list_paths('.tar.bz2') ### for tar.xz archive elif self.__arcpath.lower().endswith('.tar.xz'): self.__make_conf_and_list_paths('.tar.xz') ### for tgz archive elif self.__arcpath.lower().endswith('.tgz'): self.__make_conf_and_list_paths('.tgz') ### for tbz archive elif self.__arcpath.lower().endswith('.tbz'): self.__make_conf_and_list_paths('.tbz') ### for tbz2 archive elif self.__arcpath.lower().endswith('.tbz2'): self.__make_conf_and_list_paths('.tbz2') # call the method to write information in a file __listconfinfo = {'arclistpath': self.__arclistpath, 'listoffiles':__listoffiles} self._generate_list(__listconfinfo) # call the method to write the configuration file if --gen-full was required if self._genfull: # generate the hash sum of the list of files __listhashsum = self._get_list_hash(__listconfinfo['arclistpath']) __confinfo = {'arcname':self.__arcname, 'arcpath':self.__arcpath, 'arcconfpath': self.__arcconfpath, 'arclistpath': self.__arclistpath, 'arctype': 'archive', 'sha512': __listhashsum} self._generate_conf(__confinfo) def __translate_type(self, __arctype): '''Translate the type of the file inside the tar by a generic name ''' __types = {tarfile.REGTYPE: 'f', tarfile.AREGTYPE: 'a', tarfile.CHRTYPE: 'c', tarfile.DIRTYPE: 'd', tarfile.LNKTYPE: 'l', tarfile.SYMTYPE: 's', tarfile.CONTTYPE: 'n', tarfile.BLKTYPE: 'b', tarfile.GNUTYPE_SPARSE: 'g', tarfile.FIFOTYPE: 'o'} return __types[__arctype] def __make_conf_and_list_paths(self, __tartype): '''Make conf file path and list file paths''' __arcwithext = os.path.split(self.__arcpath[:-(len(__tartype)-1)])[1] # define custom path for the filelist or use the default one if self.__listoutput: self.__arclistpath = os.path.join(self.__listoutput, ''.join([__arcwithext, 'list'])) elif self.__fulloutput: self.__arclistpath = os.path.join(self.__fulloutput, ''.join([__arcwithext, 'list'])) else: # default one self.__arclistpath = ''.join([self.__arcpath[:-(len(__tartype)-1)], 'list']) if self._genfull: # define custom path for the conf file or use the default one if self.__confoutput: self.__arcconfpath = os.path.join(self.__confoutput, ''.join([__arcwithext, 'conf'])) elif self.__fulloutput: self.__arcconfpath = os.path.join(self.__fulloutput, ''.join([__arcwithext, 'conf'])) else: # default one self.__arcconfpath = ''.join([self.__arcpath[:-(len(__tartype)-1)], 'conf']) self.__arcname = os.path.basename(self.__arcpath[:-len(__tartype)]) brebis-0.10/brebis/generatelist/generatelistfortree.py0000644000000000000000000003022012462537262021417 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . import fnmatch import os import os.path import stat from brebis.generatelist.generatelist import GenerateList from brebis.checkhashes import get_hash # Generate a list of files from a tree '''Generate a list of files from a tree''' class GenerateListForTree(GenerateList): '''Generate a list of files from a tree''' def __init__(self, __genparams): '''The constructor for the GenerateListForTree class''' __arcpath = __genparams['arcpath'] __delimiter = __genparams['delimiter'] self._genfull = __genparams['genfull'] self.__listoutput = __genparams['listoutput'] self.__confoutput = __genparams['confoutput'] self.__fulloutput = __genparams['fulloutput'] self.__getallhashes = __genparams['getallhashes'] self.__hashtype = __genparams['hashtype'] self.__parsingexceptions = __genparams['parsingexceptions'] __listoffiles = ['[files]\n'] __oneline = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) if self.__getallhashes: if not self.__hashtype: __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} md5{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) else: __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__hashtype, delimiter=__delimiter) else: __onelinewithouthash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) # we also need parameters for symbolic links __onelinewithtarget = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} target{delimiter}{value}\n'.format(value='{}', delimiter=__delimiter) for __dirpath, __dirnames, __filenames, in os.walk(__arcpath): # ignoring the uppest directory if os.path.relpath(__dirpath, __arcpath) != '.': # studying directories __dirinfo = os.lstat(__dirpath) __dirmode = oct(stat.S_IMODE(__dirinfo.st_mode)).split('o')[-1] # translate file type in brebis intern file type __type = self.__translate_type(__dirinfo.st_mode) # extract file data __listoffiles.append(__oneline.format( os.path.relpath(__dirpath, __arcpath), str(__dirinfo.st_size), str(__dirinfo.st_uid), str(__dirinfo.st_gid), __dirmode, __type, str(__dirinfo.st_mtime))) # studying files for __filename in __filenames: __filepath = os.path.join(__dirpath, __filename) __filepath = self._normalize_path(__filepath) self.__fileinfo = os.lstat(__filepath) __filemode = oct(stat.S_IMODE(self.__fileinfo.st_mode)).split('o')[-1] __type = self.__translate_type(self.__fileinfo.st_mode) if __type == 'f': if self.__getallhashes: if not self.__hashtype: # extract hash sum of the file inside the archive __hash = get_hash(open(__filepath, 'rb'), 'md5') else: # extract hash sum of the file inside the archive __hash = get_hash(open(__filepath, 'rb'), self.__hashtype) # extract file data and prepare data __listoffiles.append(__onelinewithhash.format( os.path.relpath(__filepath, __arcpath), str(self.__fileinfo.st_size), str(self.__fileinfo.st_uid), str(self.__fileinfo.st_gid), __filemode, __type, str(self.__fileinfo.st_mtime), __hash)) else: # check if there are exceptions while parsing if self.__parsingexceptions: for __file in self.__parsingexceptions: if fnmatch.fnmatch(os.path.relpath(__filepath, __arcpath), __file): __hash = get_hash(open(__filepath, 'rb'), self.__parsingexceptions[__file]) __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__parsingexceptions[__file], delimiter=__delimiter) __listoffiles.append(__onelinewithhash.format( os.path.relpath(__filepath, __arcpath), str(self.__fileinfo.st_size), str(self.__fileinfo.st_uid), str(self.__fileinfo.st_gid), __filemode, __type, str(self.__fileinfo.st_mtime), __hash)) else: # we use exceptions-file option but the file is not concerned by an exception __listoffiles.append(__onelinewithouthash.format( os.path.relpath(__filepath, __arcpath), str(self.__fileinfo.st_size), str(self.__fileinfo.st_uid), str(self.__fileinfo.st_gid), __filemode, __type, str(self.__fileinfo.st_mtime))) else: # we don't use the --exceptions-file option __listoffiles.append(__onelinewithouthash.format( os.path.relpath(__filepath, __arcpath), str(self.__fileinfo.st_size), str(self.__fileinfo.st_uid), str(self.__fileinfo.st_gid), __filemode, __type, str(self.__fileinfo.st_mtime))) elif __type == 's': # extract hash sum of the file inside the archive # extract file data and prepare data __listoffiles.append(__onelinewithtarget.format( os.path.relpath(__filepath, __arcpath), str(self.__fileinfo.st_size), str(self.__fileinfo.st_uid), str(self.__fileinfo.st_gid), __filemode, __type, str(self.__fileinfo.st_mtime), os.readlink(__filepath))) else: # if file is not regular file, ignoring its hash sum __listoffiles.append(__oneline.format( os.path.relpath(__filepath, __arcpath), str(self.__fileinfo.st_size), str(self.__fileinfo.st_uid), str(self.__fileinfo.st_gid), __filemode, __type, str(__fileinfo.st_mtime))) # include custom paths for output conf files __reparc = os.path.split(__arcpath)[-1] if self.__listoutput: __arclistpath = os.path.join(self.__listoutput, ''.join([__reparc, '.list'])) elif self.__fulloutput: __arclistpath = os.path.join(self.__fulloutput, ''.join([__reparc, '.list'])) else: __arclistpath = ''.join([__arcpath, '.list']) __listconfinfo = {'arclistpath': __arclistpath, 'listoffiles': __listoffiles} # call the method to write information in a file self._generate_list(__listconfinfo) # call the method to write the configuration file if --gen-full was required if self._genfull: if self.__confoutput: __arcconfpath = os.path.join(self.__confoutput, ''.join([__reparc, '.conf'])) elif self.__fulloutput: __arcconfpath = os.path.join(self.__fulloutput, ''.join([__reparc, '.conf'])) else: __arcconfpath = ''.join([__arcpath, '.conf']) # generate the hash sum of the list of files __listhashsum = self._get_list_hash(__listconfinfo['arclistpath']) __arcname = os.path.basename(__arcpath) # include custom paths for output conf files __confinfo = {'arcname': __arcname, 'arcpath': __arcpath, 'arcconfpath': __arcconfpath, 'arclistpath': __arclistpath, 'arctype': 'tree', 'sha512': __listhashsum} self._generate_conf(__confinfo) def __translate_type(self, __mode): '''Translate the type of the file to a generic name''' if stat.S_ISREG(__mode): if self.__fileinfo[stat.ST_NLINK] > 1: return 'l' else: return 'f' elif stat.S_ISDIR(__mode): return 'd' elif stat.S_ISCHR(__mode): return 'c' elif stat.S_ISLNK(__mode): return 's' elif stat.S_ISBLK(__mode): return 'b' elif stat.S_ISSOCK(__mode): return 'k' elif stat.S_ISFIFO(__mode): return 'o' pass brebis-0.10/brebis/generatelist/generatelistforzip.py0000644000000000000000000002753112462537262021275 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Generate a list of files from a zip archive '''Generate a list of files from a zip archive''' import datetime import fnmatch import logging import os.path import stat import sys import zipfile from brebis.checkhashes import get_hash from brebis.generatelist.generatelist import GenerateList class GenerateListForZip(GenerateList): '''Generate a list of files from a zip archive''' def __init__(self, __genparams): '''The constructor for the GenerateListForZip class''' self.__arcpath = __genparams['arcpath'] self.__delimiter = __genparams['delimiter'] self._genfull = __genparams['genfull'] self.__listoutput = __genparams['listoutput'] self.__confoutput = __genparams['confoutput'] self.__fulloutput = __genparams['fulloutput'] self.__getallhashes = __genparams['getallhashes'] self.__hashtype = __genparams['hashtype'] self.__parsingexceptions = __genparams['parsingexceptions'] try: __zip = zipfile.ZipFile(self.__arcpath, 'r', allowZip64=True) self.__main(__zip) except zipfile.BadZipfile as _msg: __warn = '. You should investigate for a data corruption.' logging.warning('{}: {}{}'.format(__self.arcpath, str(__msg), __warn)) def __main(self, __zip): '''Main of the GenerateListForZip class''' __listoffiles = ['[files]\n'] __oneline = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) if self.__getallhashes: if not self.__hashtype: __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} md5{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) else: __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__hashtype, delimiter=self.__delimiter) else: __onelinewithouthash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) __onelinenoexternalattr = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mtime{delimiter}{value}\n'.format(value='{}', delimiter=self.__delimiter) __crcerror = __zip.testzip() if __crcerror: logging.warning('{} has at least one file corrupted:{}'.format(self.__arcpath, __crcerror)) else: __zipinfo = __zip.infolist() for __fileinfo in __zipinfo: __fileinfo.filename = self._normalize_path(__fileinfo.filename) __uid, __gid = self.__extract_uid_gid(__fileinfo) # check if external_attr is available if __fileinfo.external_attr != 0: __type = self.__translate_type(__fileinfo.external_attr >> 16) __mode = oct(stat.S_IMODE((__fileinfo.external_attr >> 16))).split('o')[-1] # Prepare a timestamp for the ctime object __dt = __fileinfo.date_time try: __mtime = float(datetime.datetime(__dt[0], __dt[1], __dt[2], __dt[3], __dt[4], __dt[5]).timestamp()) except ValueError as __msg: __warn = 'Issue with timestamp while controlling {} in {}'.format(_fileinfo.filename,_cfgvalues['path']) logging.warning(__warn) if __fileinfo.external_attr != 0 and __type == 'f': if self.__getallhashes: if not self.__hashtype: __hash = get_hash(__zip.open(__fileinfo.filename, 'r'), 'md5') else: __hash = get_hash(__zip.open(__fileinfo.filename, 'r'), self.__hashtype) __listoffiles.append(__onelinewithhash.format(__fileinfo.filename, str(__fileinfo.file_size), str(__uid), str(__gid), __mode, __type, __mtime, __hash)) else: # check if there are exceptions while parsing if self.__parsingexceptions: for __file in self.__parsingexceptions: if fnmatch.fnmatch(__fileinfo.filename, __file): __hash = get_hash(__zip.open(__fileinfo.filename, 'r'), self.__parsingexceptions[__file]) __onelinewithhash = '{value}{delimiter} ={value} uid{delimiter}{value} gid{delimiter}{value} mode{delimiter}{value} type{delimiter}{value} mtime{delimiter}{value} {hashtype}{delimiter}{value}\n'.format(value='{}', hashtype=self.__parsingexceptions[__file], delimiter=self.__delimiter) __listoffiles.append(__onelinewithhash.format(__fileinfo.filename, str(__fileinfo.file_size), str(__uid), str(__gid), __mode, __type, __mtime, __hash)) else: # we use exceptions-file option but the file is not concerned by an exception __listoffiles.append(__onelinewithouthash.format(__fileinfo.filename, str(__fileinfo.file_size), str(__uid), str(__gid), __mode, __type, __mtime)) else: # we don't use the --exceptions-file option __listoffiles.append(__onelinewithouthash.format(__fileinfo.filename, str(__fileinfo.file_size), str(__uid), str(__gid), __mode, __type, __mtime)) elif __fileinfo.external_attr != 0 and __type == 'd': __listoffiles.append(__oneline.format(__fileinfo.filename, str(__fileinfo.file_size), str(__uid), str(__gid), __mode, __type, __mtime)) else: __listoffiles.append(__onelinenoexternalattr.format(__fileinfo.filename, str(__fileinfo.file_size), str(__uid), str(__gid), __mtime)) # define the flexible file list path __arcwithext = os.path.split(''.join([self.__arcpath[:-3], 'list']))[1] if self.__listoutput: __arclistpath = os.path.join(self.__listoutput, __arcwithext) elif self.__fulloutput: __arclistpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arclistpath = ''.join([self.__arcpath[:-3], 'list']) __listconfinfo = {'arclistpath': __arclistpath, 'listoffiles': __listoffiles} # call the method to write the list of files inside the archive self._generate_list(__listconfinfo) # call the method to write the configuration file if --gen-full was required if self._genfull: # generate the hash sum of the list of files __listhashsum = self._get_list_hash(__listconfinfo['arclistpath']) # define the flexible configuration file path __arcwithext = os.path.split(''.join([self.__arcpath[:-3], 'conf']))[1] if self.__confoutput: __arcconfpath = os.path.join(self.__confoutput, __arcwithext) elif self.__fulloutput: __arcconfpath = os.path.join(self.__fulloutput, __arcwithext) else: # default __arcconfpath = ''.join([self.__arcpath[:-3], 'conf']) __arcname = os.path.basename(self.__arcpath[:-4]) __confinfo = {'arcname': __arcname, 'arcpath': self.__arcpath, 'arcconfpath': __arcconfpath, 'arclistpath': __listconfinfo['arclistpath'], 'arctype': 'archive', 'sha512': __listhashsum} self._generate_conf(__confinfo) def __extract_uid_gid(self, __binary): '''Extract uid and gid from a zipinfo.extra object (platform dependant)''' __uid, __gid = int.from_bytes(__binary.extra[15:17], sys.byteorder), \ int.from_bytes(__binary.extra[20:22], sys.byteorder) return (__uid, __gid) def __translate_type(self, __mode): '''Translate the type of the file to a generic name''' if stat.S_ISREG(__mode): return 'f' elif stat.S_ISDIR(__mode): return 'd' brebis-0.10/brebis/identifylimitations.py0000644000000000000000000000540712462537262016755 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Identify limitations for this archive type given the checks asked by the user '''Identify limitations for this archive type given the checks asked by the user''' import logging class IdentifyLimitations: '''Identify limitations for this archive type given the checks asked by the user''' def __init__(self, __arcpath, __arctype, __data): self.__data = __data self.__arcpath = __arcpath self.__main(__arctype) def __main(self, __arctype): '''Main for IdentifyLimitations''' getattr(self, ''.join(['_IdentifyLimitations__study_', __arctype]))() def __study_gz(self): '''Study the required checks for the gzip archive type''' __unsupported_gz = {'uid', 'gid', 'mode', 'target', 'mtime'} for __param in self.__data: if __param in __unsupported_gz: self.__warn(__param) def __study_bz2(self): '''Study the required checks for the gzip archive type''' __unsupported_bz2 = {'uid', 'gid', 'mode', 'equals', 'biggerthan', 'smallerthan', 'target' 'mtime'} for __param in self.__data: if __param in __unsupported_bz2: self.__warn(__param) def __study_zip(self): '''Study the required checks for the zip archive type''' __unsupported_zip = {'target'} for __param in self.__data: if __param in __unsupported_zip: self.__warn(__param) def __study_lzma(self): '''Study the required checks for the lzma archive type''' # seems pretty hard to get xz/lzma archive size - maybe in another release __unsupported_lzma = {'uid', 'gid', 'mode', 'equals', 'biggerthan', 'smallerthan', 'target', 'mtime'} for __param in self.__data: if __param in __unsupported_lzma: self.__warn(__param) def __warn(self, __param): '''Warn the user that parameter is not supported by message in logging''' logging.warning('{}: The required parameter {} is not supported by this type of archive. Ignoring it.'.format(self.__arcpath, __param)) brebis-0.10/brebis/listtype.py0000644000000000000000000001006312462537262014534 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # Analyze the type of the backup to produce the list '''Analyze the type of the backup to produce the list''' import logging import os.path from brebis.generatelist.generatelistforbzip2 import GenerateListForBzip2 from brebis.generatelist.generatelistforlzma import GenerateListForLzma from brebis.generatelist.generatelistforgzip import GenerateListForGzip from brebis.generatelist.generatelistfortar import GenerateListForTar from brebis.generatelist.generatelistfortree import GenerateListForTree from brebis.generatelist.generatelistforzip import GenerateListForZip class ListType(object): '''The ListType class''' def __init__(self, __options, __parsingexceptions={}): '''The constructor for the ListType class. ''' self.__parsingexceptions = __parsingexceptions self.__main(__options) def __main(self, __options): '''Main for ListType class''' __arcpaths = __options.archives __delimiter = __options.delimiter __genfull = __options.genfull __fulloutput = __options.fulloutput __confoutput = __options.confoutput __listoutput = __options.listoutput __getallhashes = __options.getallhashes __hashtype = __options.hashtype for __arcpath in __arcpaths: # create a tuple with the different parameters # for the generation of the archives's files __genparams = {'arcpath': __arcpath, 'delimiter': __delimiter, 'genfull': __genfull, 'confoutput': __confoutput, 'listoutput': __listoutput, 'fulloutput': __fulloutput, 'getallhashes': __getallhashes, 'hashtype': __hashtype, 'parsingexceptions': self.__parsingexceptions} # generate a list of files for a tree if os.path.isdir(__arcpath): self.__bck = GenerateListForTree(__genparams) # generate a list of files for a tar.gz/bz2 archive elif __arcpath.lower().endswith('.tar') or\ __arcpath.lower().endswith('.tar.gz') or\ __arcpath.lower().endswith('.tar.bz2') or\ __arcpath.lower().endswith('.tar.xz') or\ __arcpath.lower().endswith('.tgz') or\ __arcpath.lower().endswith('.tbz') or\ __arcpath.lower().endswith('.tbz2'): self.__bck = GenerateListForTar(__genparams) # generate a list of files for a gzip archive elif __arcpath.lower().endswith('.gz'): self.__bck = GenerateListForGzip(__genparams) # generate a list of files for a bzip2 archive elif __arcpath.lower().endswith('.bz2'): self.__bck = GenerateListForBzip2(__genparams) # generate a list of files for a lzma archive elif __arcpath.lower().endswith('.xz'): self.__bck = GenerateListForLzma(__genparams) # generate a list of files for a zip archive elif __arcpath.lower().endswith('.zip'): self.__bck = GenerateListForZip(__genparams) # generate a list of files for a apk archive elif __arcpath.lower().endswith('.apk'): self.__bck = GenerateListForZip(__genparams) # A MESSAGE RESUMING OPERATION FOR GENERATING THE LIST OF FILES IS MISSING HERE brebis-0.10/brebis/main.py0000644000000000000000000000336012462537262013605 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . # The application main '''The application main''' import sys from brebis.checkbackups.checkbackups import CheckBackups from brebis.cliparse import CliParse from brebis.configurations import Configurations from brebis.exceptionsparsing import ExceptionsParsing from brebis.listtype import ListType class Main(object): '''The main class''' def __init__(self): '''The constructor of the Main class.''' self.__main() def __main(self): '''The main for the Main class''' __options = CliParse().options # no list generation mode, check backups if not __options.genlist and not __options.genfull: __confs = Configurations(__options.confpath) CheckBackups(__confs.configs, __options) else: # Analyze the type of the list to produce if __options.parsingexceptions: __exps = ExceptionsParsing(__options.parsingexceptions, __options.delimiter) ListType(__options, __exps.exceptions) else: ListType(__options) brebis-0.10/changelog0000644000000000000000000057665712462537262012743 0ustar 000000000000002014-12-29 Carl Chenet * docs/source/use.rst: update the doc for new --exceptions-file option [c376e2fd8644] [tip] 2014-12-28 Carl Chenet * man/brebis.1: update brebis manpage [3de1ec608c64] * brebis.py, brebis/applogger.py, brebis/archiveinfomsg.py, brebis/checkbackups/checkarchive.py, brebis/checkbackups/checkbackups.py, brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checklzma.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checktree.py, brebis/checkbackups/checkzip.py, brebis/checkfilelist.py, brebis/checkhashes.py, brebis/cliparse.py, brebis/configurations.py, brebis/exceptionsparsing.py, brebis/expectedvalues.py, brebis/generatelist/generatelist.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, brebis/identifylimitations.py, brebis/listtype.py, brebis/main.py, docs/source/conf.py, generate-archive.sh, scripts/brebis, setup.py, tests.py: update copyright email addresses and year [9f4f23ff94ae] * functionaltests.py: decomment all test [09cbbf9b9d1b] * tests.py: removing excpected failure/success tests [106c42b6eac5] * README: minimal README indicating readthedocs [cf19aa7d9322] * --exceptions-file option allowing to select to generate hash sum only for selected files [1bc529d25ebc] 2014-12-25 Carl Chenet * tests.py: unit tests work with --exceptions-file option [b4a8b27cd530] 2014-12-24 Carl Chenet * .hgignore: new files related to functional tests to ignore [06b3698906da] * brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortree.py, functional-tests /exceptions-file-option/bzip2/bzip2exceptionsfile, functional-tests /exceptions-file-option/bzip2/exceptions-file-option.bz2, functional-tests/exceptions-file-option/gzip/exceptions-file- option.gz, functional-tests/exceptions-file- option/gzip/gzipexceptionsfile, functional-tests/exceptions-file- option/lzma/exceptions-file-option.xz, functional-tests/exceptions- file-option/lzma/lzmaexceptionsfile, functional-tests/exceptions- file-option/tree/exceptions-file-option/bar/bar2, functional-tests /exceptions-file-option/tree/exceptions-file-option/foo, functional- tests/exceptions-file-option/tree/treeexceptionsfile, functionaltests.py: --exceptions-file works for gzip,bzip2,lzma,tree archive, with functional tests [f001093b4222] 2014-12-22 Carl Chenet * brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistforzip.py: --exceptions-file works for zip archive, with functional test [b089ecda8cb3] * .hgignore: ignoring files for --exceptions-file option for both tar.gz and zip archives [a8c91a1fb0b4] * brebis/cliparse.py, brebis/exceptionsparsing.py, brebis/generatelist/generatelistfortar.py, brebis/listtype.py, brebis/main.py, functional-tests/exceptions-file-option/tar-gz /exceptions-file-option.tar.gz, functional-tests/exceptions-file- option/tar-gz/targzexceptionsfile, functional-tests/exceptions-file- option/zip/exceptions-file-option.zip, functional-tests/exceptions- file-option/zip/zipexceptionsfile, functionaltests.py: --exceptions-file works for tar.gz archive, with functional test [ea69ad18d5e4] 2014-12-21 Carl Chenet * brebis/cliparse.py: add -E/--exceptions-file option [c7ae5e48ca9e] * --hashtype option to switch the default hash sum while generating configuration files for an archive. fixes #59 [767d953e9f4c] * .hgignore: add files to ignore related to functional tests of the hashtype option [2843272e8fdc] 2014-12-19 Carl Chenet * brebis/cliparse.py, brebis/generatelist/generatelistfortree.py, functional-tests/hashtype-option/bzip2/hashtype-option.bz2, functional-tests/hashtype-option/gzip/hashtype-option.gz, functional-tests/hashtype-option/lzma/hashtype-option.xz, functional-tests/hashtype-option/tar-gz/hashtype-option.tar.gz, functional-tests/hashtype-option/tree/hashtype-option/bar/bar1, functional-tests/hashtype-option/tree/hashtype-option/foo, functional-tests/hashtype-option/tree/hashtype-option/foo2, functional-tests/hashtype-option/zip/hashtype-option.zip, functionaltests.py, tests.py: --hashtype option to change the default hash sum to generate configuration files [f14d6fc2b43a] * brebis/cliparse.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, brebis/listtype.py: --hashtype option works with tar.gz archive [31c392a2dcb4] * option -H or --hashes to explicitly required all hash sums for files in the archive. fixes #64 [6db12999cb60] 2014-12-18 Carl Chenet * docs/source/conf.py: update version number of doc [792321952d70] * use sphinx format docs to publish on readthedocs. fixes #45 [d930edca77f4] * docs/Makefile, docs/source/authors.rst, docs/source/conf.py, docs/source/configure.rst, docs/source/index.rst, docs/source/install.rst, docs/source/license.rst, docs/source/unsupported.rst, docs/source/use.rst: add sphinx format docs to publish on readthedocs [f7fa6b39c35e] * add sphinx format docs to publish on readthedocs [3ba5b400c15a] 2014-12-16 Carl Chenet * brebis/generatelist/generatelist.py: catches unicode exception and exits gracefully. fixes #65 [4ad756f09351] 2014-12-15 Carl Chenet * brebis/cliparse.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistforzip.py, brebis/listtype.py, functionaltests.py, tests.py: option -H or --hashes to explicitly required all hash sums for files in the archive [5cba591d0b08] * create the correct directories for tests using {list,both} directories. fixes #63 [8896f1dcbca1] * functionaltests.py: create the correct directories for tests using {list,both} directories [b8de46d2803c] 2014-10-11 Carl Chenet * .hgignore, functional-tests/check-mtime-tar/check-mtime-tar.conf, functional-tests/check-mtime-zip/check-mtime-zip.conf, functional- tests/generate-apk-conf-files/generate-apk-conf-files.conf, functionaltests.py: fixing issues while switching laptops [e83777833234] 2014-07-30 Carl Chenet * changelog: update changelog [1f3d990e20a3] * brebis/cliparse.py: bump to 0.10 [37c1106b2741] * README: bump to python3.4 and update brebis version [aa3ef02df80a] * setup.py: bump python3.3 to python 3.4 and bump brebis version [75ead57d9c8b] * brebis.py, functionaltests.py, tests.py: bump shebang to python3.4 [67a6ff8bfb11] 2014-07-26 Carl Chenet * remove hash generation for symlinks. closes #61 [7cc565eeeb1b] * brebis/generatelist/generatelistfortar.py: remove md5 generation for symlink in a tar file [f165429e2b34] 2014-07-25 Carl Chenet * brebis/generatelist/generatelistfortree.py: remove hash for links while parsing a tree of files [1e811378adf4] * brebis/generatelist/generatelistfortar.py: remove hash for links [6c3eb451ca4c] 2014-01-28 Carl Chenet * functionaltests.py: add support for user-defined number of workers for functionaltests.py [b400b09b6278] * functionaltests.py: add pool of workers to launch tests [a6e46f7cc12d] 2013-12-22 Carl Chenet * .hgtags: Added tag 0.9 for changeset dc231b2f8d78 [95f132e6c34c] * .hgtags: Added tag 0.8 for changeset 008c44e19317 [dc231b2f8d78] [0.9] * man/brebis.1: update man page [2b7008cadc48] * changelog: update changelog [1ce81169da4b] * README: update README for 0.9 [ed78e933bacf] * README: add doc for -C -L -O options [fc51637d70ae] * brebis/cliparse.py, setup.py: update version number to 0.9 [9bc1b9a47f85] * offer new -C -L -O options to define the directory where to write conf file, filelist or both files. fixes #49 [b47228efc5ed] * functionaltests.py: put back all tests in functionaltests.py [dda6e072b970] * tests.py: unit test support for new generatelisttree parameters [d16cba921f6e] 2013-12-20 Carl Chenet * .hgignore, brebis/generatelist/generatelistfortree.py, functional- tests/custom-conf-filelist-bzip2/custom-conf-filelist-bzip2.bz2, functional-tests/custom-conf-filelist-gzip/custom-conf-filelist- gzip.gz, functional-tests/custom-conf-filelist-lzma/custom-conf- filelist-lzma.xz, functional-tests/custom-conf-filelist-tar/custom- conf-filelist-tar.tar.gz, functional-tests/custom-conf-filelist-tree /custom-conf-filelist-tree/bar, functional-tests/custom-conf- filelist-tree/custom-conf-filelist-tree/foo, functional-tests /custom-conf-filelist-zip/custom-conf-filelist-zip.zip, functionaltests.py: functional tests for -C -L -O options [8e1a2dda7f6b] 2013-12-05 Carl Chenet * brebis/generatelist/generatelistforlzma.py: update unit tests to support new optional conf/list/full output directory for lzma archives [b2f3ba49ab76] * tests.py: update unit tests to support new optional conf/list/full output directory for bzip2 archives [5e373f29660d] * brebis/generatelist/generatelistforbzip2.py: support to print configuration file and file list to different directories or to swith default output directory for bzip2 archives [4e007c688eeb] * tests.py: update unit tests to support new optional conf/list/full output directory for gzip archives [5365b10bf00a] * brebis/generatelist/generatelistforgzip.py: support to print configuration file and file list to different directories or to swith default output directory for gzip archives [7d9b78b732b6] * tests.py: update unit tests to support new optional conf/list/full output directory [94e614e74914] * brebis/generatelist/generatelistforzip.py: support to print configuration file and file list to different directories or to swith default output directory for zip archives [96685daad2dc] * brebis/generatelist/generatelistfortar.py: support to print configuration file and file list to different directories or to swith default output directory for tar archives [779554eb43bd] * tests.py: update unit tests to support new optional conf/list/full output directory [5ee5fdb8ba04] * brebis/cliparse.py, brebis/listtype.py: support to print configuration file and file list to different directories or to swith default output directory [ca08a9bf8be0] 2013-11-30 Carl Chenet * functional-tests/expected-generated-list-for-zip-archive/expected- generated-list-for-zip-archive.zip, functional-tests/expected- generated-list-for-zip-archive/expectedlist.list, functional-tests /generate-conf-and-file-list-zip/conf.conf.bck, functional-tests /generate-conf-and-file-list-zip/generate-conf-and-file-list- zip.zip, functional-tests/generate-conf-and-file-list-zip/list.list: support apk files. fixes #51 [5005d8f2fb2f] * .hgignore, brebis/checkbackups/checkbackups.py, brebis/generatelist/generatelistforzip.py, brebis/listtype.py, functional-tests/expected-generated-list-for-zip-archive/expected- generated-list-for-zip-archive.zip, functional-tests/expected- generated-list-for-zip-archive/expectedlist.list, functional-tests /generate-apk-conf-files/generate-apk-conf-files.apk, functional- tests/generate-conf-and-file-list-zip/conf.conf.bck, functional- tests/generate-conf-and-file-list-zip/generate-conf-and-file-list- zip.zip, functional-tests/generate-conf-and-file-list-zip/list.list, functionaltests.py: add support for apk archive, functional test for generating apk archive. correct a bug with functional tests embedding timestamp [a50f38be138f] 2013-11-16 Carl Chenet * tests.py, tests/checkbzip2_private_methods/mybz2.conf, tests/checkbzip2_private_methods/mybz2.list, tests/listtype/mybz2.bz2, tests/listtype/mygzip.gz, tests/listtype/mylzma.xz, tests/listtype/mytargz.tar.gz, tests/listtype/mytree/hello, tests/listtype/mytree/riri, tests/listtype/myzip.zip, tests/test_conf_gpg/archive.conf, tests/test_conf_gpg/essai.list, tests/test_conf_gpg/essai.tar.gz, tests/test_conf_gpg/result: add new unit tests [a1adb59fb51e] * .hgignore: adding new files to ignore for unit testing [c2558ea465da] * brebis/listtype.py: add private variables to self to authorize unit tests [02712124b488] * brebis/generatelist/generatelistforbzip2.py: add a private variable to self to authorize unit testing [775e84148d83] * brebis/generatelist/generatelistfortree.py: fix uncorrect variable name [2fca6eb74a2a] 2013-11-15 Carl Chenet * brebis/checkbackups/checkzip.py, functional-tests/expected- generated-list-for-zip-archive/expectedlist.list, functional-tests /generate-conf-and-file-list-zip/conf.conf.bck, functional-tests /generate-conf-and-file-list-zip/list.list: fixing timestamp int/float related errors [2eee11cb39cd] 2013-11-14 Carl Chenet * .hgignore, functionaltests.py, tests.py: merge mtime branch with default branch. fixes #46 [4fc5c7135a9f] * .hgignore, tests.py, tests/expected_hash/bar.xz, tests/expected_hash /lzma-list, tests/lzma/mylzma-list, tests/lzma/mylzma.xz: add unit tests for checklzma module [d5d72fa59e8c] 2013-11-13 Carl Chenet * tests.py: add unit tests for the module archiveinfomsg [a7c8c2cec153] * tests.py: add unit test for archiveinfomsg.ArchiveInfoMsg__missing_files method [99f1eace9b1a] * brebis/identifylimitations.py: add limitation mtime for gz,bz2 and lzma [f083e976edb1] * .hgignore: add new files to ignore [9c416ba245f9] * brebis/archiveinfomsg.py, brebis/checkbackups/checkarchive.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checkzip.py, brebis/expectedvalues.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, functional-tests/check- mtime-tar/check-mtime-tar.tar.gz, functional-tests/check-mtime-tree /check-mtime-tree/bar, functional-tests/check-mtime-tree/check- mtime-tree/foo, functional-tests/check-mtime-tree/check-mtime- tree/rab/oof, functional-tests/check-mtime-zip/check-mtime-zip.zip, functional-tests/expected-generated-list-for-tar- archive/expectedlist.list, functional-tests/expected-generated-list- for-zip-archive/expectedlist.list, functional-tests/generate-conf- and-file-list-tar-bz2/conf.conf.bck, functional-tests/generate-conf- and-file-list-tar-bz2/list.list, functional-tests/generate-conf-and- file-list-tar-gz/conf.conf.bck, functional-tests/generate-conf-and- file-list-tar-gz/list.list, functional-tests/generate-conf-and-file- list-tar-xz/conf.conf.bck, functional-tests/generate-conf-and-file- list-tar-xz/list.list, functional-tests/generate-conf-and-file-list- tar/conf.conf.bck, functional-tests/generate-conf-and-file-list- tar/list.list, functional-tests/generate-conf-and-file-list- zip/conf.conf.bck, functional-tests/generate-conf-and-file-list- zip/list.list, functionaltests.py: add support for mtime on tar,zip and tree - associated functional tests [caaf4b48c3d9] 2013-11-06 Carl Chenet * changelog: update the changelog [008c44e19317] [0.8] * README: update README with new information and parameters [86ddf7d51759] * brebis/cliparse.py, setup.py: bump version number to 0.8 [7365125121fd] * functional-tests/generate-conf-and-file-list-tree/conf.conf.bck, functional-tests/generate-conf-and-file-list-tree/list.list, functionaltests.py: fix Test_generate_conf_and_file_list_tree test by adding sha512 sum of the list of files [17ddb86c1b48] * brebis/generatelist/generatelistfortree.py: generate the hash sum of the list of files for zip archive and add it in the conf file when -G is invoked [aa9ecbd1b96d] * functional-tests/generate-conf-and-file-list-zip/conf.conf.bck: fix Test_generate_conf_and_file_list_zip test by adding sha512 sum of the list of files [dbe2ebf19998] * brebis/generatelist/generatelistforzip.py: generate the hash sum of the list of files for zip archive and add it in the conf file when -G is invoked [3ba9c3173a02] * brebis/generatelist/generatelistforlzma.py: generate the hash sum of the list of files for xz archive and add it in the conf file when -G is invoked [53faa3eedfa0] * functional-tests/generate-conf-and-file-list-xz/conf.conf.bck: fix Test_generate_conf_and_file_list_xz test by adding sha512 sum of the list of files [e38fe7b910f1] * functional-tests/generate-conf-and-file-list-bz2/conf.conf.bck: fix Test_generate_conf_and_file_list_bz2 test by adding sha512 sum of the list of files [ac4201fff23a] * brebis/generatelist/generatelistforbzip2.py: generate the hash sum of the list of files for gzip archive and add it in the conf file when -G is invoked [b60d6fb2edc7] 2013-11-05 Carl Chenet * functional-tests/generate-conf-and-file-list-gz/conf.conf.bck: fix Test_generate_conf_and_file_list_gz test by adding sha512 sum of the list of files [674d0c2ee0df] * brebis/generatelist/generatelistforgzip.py: generate the hash sum of the list of files for gzip archive and add it in the conf file when -G is invoked [82772eee40d6] * functional-tests/generate-conf-and-file-list-tar/conf.conf.bck: fix Test_generate_conf_and_file_list_tar test by adding sha512 sum of the list of files [0462fc3e6c80] * functional-tests/generate-conf-and-file-list-tar-xz/conf.conf.bck: fix Test_generate_conf_and_file_list_tar_xz test by adding sha512 sum of the list of files [156afdfa9d05] * functional-tests/generate-conf-and-file-list-tar-bz2/conf.conf.bck: fix Test_generate_conf_and_file_list_tar_bz2 test by adding sha512 sum of the list of files [0ab0850c259d] * functional-tests/generate-conf-and-file-list-tar-gz/conf.conf.bck: fix Test_generate_conf_and_file_list_tar_gz test by adding sha512 sum of the list of files [253c6e7bfb3c] * brebis/generatelist/generatelist.py, brebis/generatelist/generatelistfortar.py: generate the hash sum of the list of files for tar archive and add it in the conf file when -G is invoked [0f3320b85737] 2013-10-22 Carl Chenet * brebis/checkfilelist.py, brebis/configurations.py, functionaltests.py: sha512 parameter must be explicitly managed (None value when not defined in the conf file) and strip gpg header and footer of the configuration file. fixes #44 [cdfe4bc6b35a] * merge to support hashum in the configuration file. fixes #43 [20b9567a6f7b] 2013-10-20 Carl Chenet * brebis/checkfilelist.py, brebis/configurations.py, functional-tests /sha-sum-in-conf/sha-sum-in-conf.conf: modify the configuration parameter called hash by sha512 [50820bead4c2] * brebis/configurations.py, functional-tests/missing-gpg-footer /missing-gpg-footer.conf, functional-tests/missing-gpg-footer /missing-gpg-footer.list, functional-tests/missing-gpg-footer /missing-gpg-footer.tar.gz, functional-tests/missing-gpg-header /missing-gpg-header.conf, functional-tests/missing-gpg-header /missing-gpg-header.list, functional-tests/missing-gpg-header /missing-gpg-header.tar.gz, functional-tests/strip-gpg-header-tar-gz /strip-gpg-header-tar-gz.conf, functional-tests/strip-gpg-header- tar-gz/strip-gpg-header-tar-gz.list, functional-tests/strip-gpg- header-tar-gz/strip-gpg-header-tar-gz.tar.gz, functionaltests.py: add missing gpg footer test, missing gpg header test and strip gpg header for tar gz archive test [3ec0175cf127] * functional-tests/sha-sum-in-conf/sha-sum-in-conf.conf, functional- tests/sha-sum-in-conf/sha-sum-in-conf.list, functional-tests/sha- sum-in-conf/sha-sum-in-conf.tar.gz, functionaltests.py: add sha sum in configuration file test [442d9fa25fb5] 2013-10-19 Carl Chenet * brebis/checkfilelist.py, brebis/configurations.py, brebis/expectedvalues.py: support for hash sum of the list of files in the configuration file [5c083053bc76] 2013-10-15 Carl Chenet * .hgtags: Added tag 0.7 for changeset abdba4451b0a [b81180411215] * functionaltests.py: uncomment all the test suite [abdba4451b0a] [0.7] * functionaltests.py: remove list of files from the scop of the generate conf and file list of a tree of files test [da584ecb19b6] * functional-tests/generate-conf-and-file-list-tree/list.list, functionaltests.py: exclude mode from generate conf and file list tree test [6e1970062e0c] * functionaltests.py: recompose list file to exclude uid/gid [4586c90847cc] * functional-tests/generate-conf-and-file-list-tree/list.list: remove uid/gid because triggers errors for functional tests while executed on a computer not having the sames users [dae83b86ef0e] * README: update README for 0.7 [36e31ffab9dc] * man/brebis.1: update README for 0.7 [57d2477722c2] * changelog: update the changelog for 0.7 [3aca993da51d] * .hgignore: add generate conf and file list for tree of files test temporary files in .hgignore [4688a898220b] * functional-tests/generate-conf-and-file-list-tree/conf.conf.bck, functional-tests/generate-conf-and-file-list-tree/generate-conf-and- file-list-tree/foo/tata, functional-tests/generate-conf-and-file- list-tree/generate-conf-and-file-list-tree/foo2/titi, functional- tests/generate-conf-and-file-list-tree/generate-conf-and-file-list- tree/toto, functional-tests/generate-conf-and-file-list- tree/list.list, functionaltests.py: add generate conf and file list for tree of files test [f74939e01254] * .hgignore: add generate conf and file list in xz test temporary files in .hgignore [4e87dfdfc3cb] * functional-tests/generate-conf-and-file-list-xz/conf.conf.bck, functional-tests/generate-conf-and-file-list-xz/generate-conf-and- file-list-xz.xz, functional-tests/generate-conf-and-file-list- xz/list.list, functionaltests.py: add generate conf and file list for xz archive test [f662039111f4] * .hgignore: add generate conf and file list in gz and bz2 tests temporary files in .hgignore [a1eb2a0ec3bc] * functional-tests/generate-conf-and-file-list-bz2/conf.conf.bck, functional-tests/generate-conf-and-file-list-bz2/generate-conf-and- file-list-bz2.bz2, functional-tests/generate-conf-and-file-list- bz2/list.list, functional-tests/generate-conf-and-file-list- gz/conf.conf.bck, functional-tests/generate-conf-and-file-list-gz /generate-conf-and-file-list-gz.gz, functional-tests/generate-conf- and-file-list-gz/list.list, functionaltests.py: add generate conf and file liste for gzip and bzip archives test [2e126b2fadc7] 2013-10-14 Carl Chenet * .hgignore: ignore temporary files of generate conf and file list for zip archive test [ddfff32c9eee] * functional-tests/generate-conf-and-file-list-zip/conf.conf.bck, functional-tests/generate-conf-and-file-list-zip/generate-conf-and- file-list-zip.zip, functional-tests/generate-conf-and-file-list- zip/list.list, functionaltests.py: add generate conf an file list for zip archive test [a14ca97e1672] * .hgignore: ignore temporary files for the generate conf and file list for tar archive test [e348ca1dd686] * functional-tests/generate-conf-and-file-list-tar/conf.conf.bck, functional-tests/generate-conf-and-file-list-tar/generate-conf-and- file-list-tar.tar, functional-tests/generate-conf-and-file-list- tar/list.list, functionaltests.py: add generate conf and file list for tar archive test [5dbdff67a431] * .hgignore: add generate conf and file list in tar xz test temporary files in .hgignore [db6130be1f98] * functional-tests/generate-conf-and-file-list-tar-xz/conf.conf.bck, functional-tests/generate-conf-and-file-list-tar-xz/generate-conf- and-file-list-tar-xz.tar.xz, functional-tests/generate-conf-and- file-list-tar-xz/list.list, functionaltests.py: add generate conf and file list tar xz test [07706cd360f8] * .hgignore: add generate conf and file list in tar bz2 test temporary files in .hgignore [0b6f2fb596d6] * functional-tests/generate-conf-and-file-list-tar-bz2/conf.conf.bck, functional-tests/generate-conf-and-file-list-tar-bz2/generate-conf- and-file-list-tar-bz2.tar.bz2, functional-tests/generate-conf-and- file-list-tar-bz2/list.list, functionaltests.py: add generate conf and file list tar bz2 test [01793a8c7fc9] * functional-tests/generate-conf-and-file-list-tar-gz/list.list, functionaltests.py: improve generate conf and file list tar gz test - support list file [dfd26ba8fcbb] * functional-tests/generate-conf-and-file-list-tar-gz/conf.conf.bck, functional-tests/generate-conf-and-file-list-tar-gz/generate-conf- and-file-list-tar-gz.tar.gz, functionaltests.py: add generate conf and file list for tar gz archive test [fc9efdca978c] * .hgignore: add new files to ignore for genereate conf and file list for tar gz archive test [db5a91d157d2] * README: bump 0.6 to 0.7 [4ed3bbdff01a] 2013-10-11 Carl Chenet * functional-tests/unsupported-parameters-zip-archive/a.out, functional-tests/unsupported-parameters-zip-archive/unsupported- parameters-zip-archive.conf, functional-tests/unsupported- parameters-zip-archive/unsupported-parameters-zip-archive.list, functional-tests/unsupported-parameters-zip-archive/unsupported- parameters-zip-archive.zip, functionaltests.py: add unsupported parameters for zip archive test [ef5f584db8c5] * brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checklzma.py, brebis/checkbackups/checkzip.py, brebis/identifylimitations.py: check every files from the .list files to find unsupported actions for a given kind of archive. fixes #42 [020c983a739d] 2013-10-10 Carl Chenet * brebis/expectedvalues.py: correct typo in error message [abfe291c3b62] * brebis/cliparse.py, setup.py: bump brebis version to 0.7 [8c9ecf367651] * brebis2backupchecker.sh: uncorrect substitutions for the AUTHORS file while generating backupchecker [83a567d86895] * brebis2backupchecker.sh: upgrade brebis2backupchecker.sh script to follow upstream [13e8f2840a00] * merge check-target-link branch into default branch [cbd930285492] * merge check-target-link branch into default branch [99f9e603a49c] * functional-tests/full-criteria-multiple-backups/a.out: merge with current default [6d1f50b4b24b] * functional-tests/wrong-target-in-tar-bz2-archive/wrong-target-in- tar-bz2-archive.conf, functional-tests/wrong-target-in-tar- bz2-archive/wrong-target-in-tar-bz2-archive.list, functional-tests /wrong-target-in-tar-bz2-archive/wrong-target-in-tar- bz2-archive.tar.bz2, functional-tests/wrong-target-in-tar-gz-archive /wrong-target-in-tar-gz-archive.conf, functional-tests/wrong-target- in-tar-gz-archive/wrong-target-in-tar-gz-archive.list, functional- tests/wrong-target-in-tar-gz-archive/wrong-target-in-tar-gz- archive.tar.gz, functional-tests/wrong-target-in-tar-xz-archive /wrong-target-in-tar-xz-archive.conf, functional-tests/wrong-target- in-tar-xz-archive/wrong-target-in-tar-xz-archive.list, functional- tests/wrong-target-in-tar-xz-archive/wrong-target-in-tar-xz- archive.tar.xz, functional-tests/wrong-target-in-tree/test/foo/bar, functional-tests/wrong-target-in-tree/test/foo2/toto2, functional- tests/wrong-target-in-tree/test/toto, functional-tests/wrong-target- in-tree/wrong-target-in-tree.conf, functional-tests/wrong-target-in- tree/wrong-target-in-tree.list, functional-tests/wrong_target_in_tar _bz2_archive/wrong_target_in_tar_bz2_archive.conf, functional-tests/ wrong_target_in_tar_bz2_archive/wrong_target_in_tar_bz2_archive.list , functional-tests/wrong_target_in_tar_bz2_archive/wrong_target_in_t ar_bz2_archive.tar.bz2, functional-tests/wrong_target_in_tar_gz_arch ive/wrong_target_in_tar_gz_archive.conf, functional-tests/wrong_targ et_in_tar_gz_archive/wrong_target_in_tar_gz_archive.list, functional-tests/wrong_target_in_tar_gz_archive/wrong_target_in_tar_ gz_archive.tar.gz, functional-tests/wrong_target_in_tar_xz_archive/w rong_target_in_tar_xz_archive.conf, functional-tests/wrong_target_in _tar_xz_archive/wrong_target_in_tar_xz_archive.list, functional-test s/wrong_target_in_tar_xz_archive/wrong_target_in_tar_xz_archive.tar. xz, functionaltests.py: rename wrong-target* tests and add wrong target in tree test [6b5470658a5b] 2013-10-09 Carl Chenet * functional-tests/wrong_target_in_tar_bz2_archive/wrong_target_in_tar _bz2_archive.conf, functional-tests/wrong_target_in_tar_bz2_archive/ wrong_target_in_tar_bz2_archive.list, functional-tests/wrong_target_ in_tar_bz2_archive/wrong_target_in_tar_bz2_archive.tar.bz2, functional-tests/wrong_target_in_tar_xz_archive/wrong_target_in_tar_ xz_archive.conf, functional-tests/wrong_target_in_tar_xz_archive/wro ng_target_in_tar_xz_archive.list, functional-tests/wrong_target_in_t ar_xz_archive/wrong_target_in_tar_xz_archive.tar.xz, functionaltests.py: add wrong targe in tar {bz2,xz} archive tests [061f1cde979a] 2013-10-07 Carl Chenet * brebis/checkbackups/checktree.py, brebis/generatelist/generatelistfortree.py: update the code to use targe in generatelistfortree and checktree [5f549cc662d0] * tests.py: update test_listfortree_translate_type_file test [d60af1213301] 2013-08-29 Carl Chenet * brebis/identifylimitations.py: add target as unsupported feature for gz bz2 zip and lzma archive. rename lists for unsupported features to correct old bug [6cd8df739c2e] 2013-08-28 Carl Chenet * functional-tests/wrong_target_in_tar_gz_archive/wrong_target_in_tar_ gz_archive.conf, functional-tests/wrong_target_in_tar_gz_archive/wro ng_target_in_tar_gz_archive.list, functional-tests/wrong_target_in_t ar_gz_archive/wrong_target_in_tar_gz_archive.tar.gz, functionaltests.py: add wrong target in tar gz archive test [1d650fdc5c54] * brebis/archiveinfomsg.py, brebis/checkbackups/checkarchive.py, brebis/checkbackups/checktar.py, brebis/expectedvalues.py, brebis/generatelist/generatelistfortar.py: add target test on tar gz archive [476e61c1f717] 2013-08-27 Carl Chenet * brebis/configurations.py: control the behaviour when wrong data are in input. fixes #39 [5d212623ec78] * define option -G to generate the .conf file. fixes #38 [4a9dd1ea542f] 2013-08-25 Carl Chenet * .hgignore, tests.py: modify existing tests for generatelist [03480e9e57c8] * brebis/cliparse.py, brebis/generatelist/generatelist.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, brebis/listtype.py, brebis/main.py: add option -G to generate configuration file [aa30c6b57e19] 2013-08-16 Carl Chenet * .hgtags: Added tag 0.6 for changeset 3b7e8e691fd0 [5a2c6141a10b] * changelog: update the changelog for version 0.6 [3b7e8e691fd0] [0.6] * README, changelog: update the README for the version 0.6 [e2f6739dda3b] * brebis/cliparse.py, setup.py: bump version to 0.6 [d8564da2454d] 2013-08-15 Carl Chenet * brebis/generatelist/generatelistfortree.py: give the good name to a (rather unused) stat module function S_ISBLK. fixes #28 [0db0fc6ccd3e] * catch EOFError exception triggered while generating/checking a (big) tar archive. fixes #36 [930679aa1b85] * brebis/checkbackups/checktar.py: catch EOFError while checking tar file because it is a sign of corruption of the file [e9d4ccf7e267] * brebis/generatelist/generatelistfortar.py: catch EOFError while manipulating tar file because it is a sign of corruption of the file [530aeab6b84e] * brebis.py: update shebang with debian python3.3 [9d688bba150c] 2013-08-13 Carl Chenet * .hgignore, functional-tests/generate-list-and-parse-tbz2-archive /generate-list-and-parse-tbz2-archive.conf, functional-tests /generate-list-and-parse-tbz2-archive/generate-list-and-parse- tbz2-archive.tbz2, functional-tests/generate-list-and-parse-tgz- archive/generate-list-and-parse-tgz-archive.conf, functional-tests /generate-list-and-parse-tgz-archive/generate-list-and-parse-tgz- archive.tgz, functionaltests.py: add generate list and parse tgz and tbz2 archive tests. fixes #31 [cb312c17bc0a] * brebis/generatelist/generatelistfortar.py: fix code error about support for tbz2 [e47e51b36a00] 2013-08-11 Carl Chenet * brebis/cliparse.py, brebis/configurations.py: check if configuration paths exist. fixes #34 [fe980e6b5de2] * provide only one configuration file on the cli. fixes #21 [acd7acce000a] * brebis/configurations.py: merge to check if only one conf file feature works with latest version in head [2ff4690b5da6] 2013-08-10 Carl Chenet * .hgignore, functionaltests.py: create the need directory for wrong file type (hard link) in tree test [80e54b3dfa6a] * functional-tests/wrong-file-type-l-in-tree/wrong-file-type-l-in- tree.list, functional-tests/wrong-file-type-l-in-tree/wrong-file- type-l-in-tree/bar, functional-tests/wrong-file-type-l-in-tree /wrong-file-type-l-in-tree/foo, functionaltests.py: update to wrong file type (hard link) to generate the needed hard link itself [f74fb1351d99] * detect hard link with stat. fixes #33 [34decdc22d4c] * functional-tests/wrong-file-type-l-in-tree/wrong-file-type-l-in- tree.list: activate wrong file type hard link in tree test [1eb2e4f05ff0] * brebis/checkbackups/checktree.py: detect hard link for uncompressed tree of files [c890198c8588] * functional-tests/wrong-file-type-l-in-tree/wrong-file-type-l-in- tree.conf, functional-tests/wrong-file-type-l-in-tree/wrong-file- type-l-in-tree.list, functional-tests/wrong-file-type-l-in-tree /wrong-file-type-l-in-tree/bar, functional-tests/wrong-file-type-l -in-tree/wrong-file-type-l-in-tree/foo: add wrong file type hard link in tree - test is useless for now, need #33 to be solved [04ae3ce63d6e] * functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file- type-l-in-tar-bz2-archive.conf, functional-tests/wrong-file-type-l -in-tar-bz2-archive/wrong-file-type-l-in-tar-bz2-archive.list, functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file- type-l-in-tar-bz2-archive.tar.bz2, functional-tests/wrong-file- type-l-in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive.conf, functional-tests/wrong-file-type-l-in-tar-gz-archive/wrong-file- type-l-in-tar-gz-archive.list, functional-tests/wrong-file-type-l -in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive.tar.gz, functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file- type-l-in-tar-xz-archive.conf, functional-tests/wrong-file-type-l -in-tar-xz-archive/wrong-file-type-l-in-tar-xz-archive.list, functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file- type-l-in-tar-xz-archive.tar.xz, functional-tests/wrong-file-type-s -in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archive.conf, functional-tests/wrong-file-type-s-in-tar-bz2-archive/wrong-file- type-s-in-tar-bz2-archive.list, functional-tests/wrong-file-type-s -in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archive.tar.bz2, functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file- type-s-in-tar-gz-archive.conf, functional-tests/wrong-file-type-s -in-tar-gz-archive/wrong-file-type-s-in-tar-gz-archive.list, functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file- type-s-in-tar-gz-archive.tar.gz, functional-tests/wrong-file-type-s -in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive.conf, functional-tests/wrong-file-type-s-in-tar-xz-archive/wrong-file- type-s-in-tar-xz-archive.list, functional-tests/wrong-file-type-s -in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive.tar.xz, functional-tests/wrong-file-type-s-in-tree/wrong-file-type-s-in- tree.conf, functional-tests/wrong-file-type-s-in-tree/wrong-file- type-s-in-tree.list, functional-tests/wrong-file-type-s-in-tree /wrong-file-type-s-in-tree/bar, functional-tests/wrong-file-type-s -in-tree/wrong-file-type-s-in-tree/foo, functionaltests.py: add wrong file type (hard link and symbolic link) detection tests in tar.gz, tar.bz2, tar.xe and tree of files [48c0fcddd1d4] 2013-08-09 Carl Chenet * functional-tests/expecting-hard-link-for-tar-gz/expecting-hard-link- for-tar-gz.conf, functional-tests/expecting-hard-link-for-tar-gz /expecting-hard-link-for-tar-gz.list, functional-tests/expecting- hard-link-for-tar-gz/expecting-hard-link-for-tar-gz.tar.gz, functionaltests.py: add expecting hard link for tar gz archive functional test [5bcd6ff974a2] * brebis/archiveinfomsg.py: add hard link type support for the error message. fixes #32 [12b43f07b4df] 2013-08-08 Carl Chenet * brebis/expectedvalues.py: add type l for hard link. fixes #29 [be47033ae68b] * merge support for tbz archive. fixes #25 [9035cb947333] * .hgignore, functional-tests/generate-list-and-parse-tbz-archive /generate-list-and-parse-tbz-archive.conf, functional-tests /generate-list-and-parse-tbz-archive/generate-list-and-parse-tbz- archive.tbz, functionaltests.py: add generate list and parse tbz archive functional test [3448660d6e6c] * brebis/checkbackups/checkbackups.py, brebis/generatelist/generatelistfortar.py, brebis/listtype.py: add support for tbz archive [781123901dae] * brebis/cliparse.py: bump to good current version in cli help message [9fd289298b41] * tests.py: add a test for version consistency in setup.py and cliparse.py. fixes #26 [c2fec04f1fbd] * merge alert-message-for-no-conf-files branch to check if configuration files exist at the user-specified path. fixes #27 [fac205eee4fc] * brebis/configurations.py: check if configuration files exist at the user-specified path. fixes #27 [49007100a873] 2013-08-07 Carl Chenet * add new option to globally switch the default delimiter to a user- defined delimiter to generate the list of files of an archive/path and to check an archive/patch. fixes #22 [38664bce0f74] 2013-08-05 Carl Chenet * man/brebis.1: update the manual page [b2c24310faac] 2013-08-03 Carl Chenet * .hgignore, functional-tests/generate-list-changing-default- separator/bzip2/generate-list-changing-default-separator-for- bzip2.bz2, functional-tests/generate-list-changing-default- separator/bzip2/generate-list-changing-default-separator-for- bzip2.conf, functional-tests/generate-list-changing-default- separator/gzip/generate-list-changing-default-separator-for- gzip.conf, functional-tests/generate-list-changing-default- separator/gzip/generate-list-changing-default-separator-for-gzip.gz, functional-tests/generate-list-changing-default-separator/tar.bz2 /generate-list-changing-default-separator-for-tar-bz2.conf, functional-tests/generate-list-changing-default-separator/tar.bz2 /generate-list-changing-default-separator-for-tar-bz2.tar.bz2, functional-tests/generate-list-changing-default-separator/tar.gz /generate-list-changing-default-separator-for-tar-gz.conf, functional-tests/generate-list-changing-default-separator/tar.gz /generate-list-changing-default-separator-for-tar-gz.tar.gz, functional-tests/generate-list-changing-default-separator/tar.xz /generate-list-changing-default-separator-for-tar-xz.conf, functional-tests/generate-list-changing-default-separator/tar.xz /generate-list-changing-default-separator-for-tar-xz.tar.xz, functional-tests/generate-list-changing-default-separator/tree /generate-list-changing-default-separator-for-tree.conf, functional- tests/generate-list-changing-default-separator/tree/generate-list- changing-default-separator-for-tree/foo, functional-tests/generate- list-changing-default-separator/zip/generate-list-changing-default- separator-for-zip.conf, functional-tests/generate-list-changing- default-separator/zip/generate-list-changing-default-separator-for- zip.zip, functionaltests.py: add generate list changing default separator for {tar.gz,tar.bz2,tar.xz,gzip,bz2,zip,tree} tests [c936c80a003e] * tests.py: fix broken tests by the changes for adding the option to swith the delimiter [37981c869489] * brebis/checkbackups/checkarchive.py, brebis/checkbackups/checkbackups.py, brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checklzma.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checktree.py, brebis/checkbackups/checkzip.py, brebis/cliparse.py, brebis/expectedvalues.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, brebis/listtype.py, brebis/main.py: add delimiter option to replace default delimiter in the list of files, both working to generate lists and check backups [1794e768849b] * brebis/expectedvalues.py: saving the current wip, going another way [19d87c89a871] 2013-08-02 Carl Chenet * functional-tests/expected-generated-list-for-archive-with-path- using-default-separator/expected-generated-list-for-archive-with- path-using-default-separator.list, functional-tests/expected- generated-list-for-archive-with-path-using-default-separator /expected-generated-list-for-archive-with-path-using-default- separator.tar.gz, functionaltests.py: expected generated list for archive with path using default separator test [62d2d7cd39c8] * brebis/generatelist/generatelist.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py: escape the default separator when it appears in the name of a file in an archive or a treefile [2e67a26a20f1] * check if supported archives in listtype.py and checkbackups.py are consistent.fixes #24 [ba90e8ca4959] 2013-08-01 Carl Chenet * functionaltests.py: add a test to detect missing archive types between listtype.py and checkbackups.py [9518468cdeba] * brebis/checkbackups/checkbackups.py: add missing support for tbz2 [421b5ed1e816] 2013-07-30 Carl Chenet * brebis/configurations.py: -c option now manages a single configuration file [d642b5a62a69] * debian/copyright: update the copyright [0ee26bef09ac] * setup.py: merge with default branch [7b0bdd53b1bc] * .hgtags: Added tag 0.5 for changeset 1616effdc58d [f71f6bd25d81] * changelog: add the brebis changelog [1616effdc58d] [0.5] * generate-archive.sh: add a small script to generate archive given the current version in setup.py [012eb591b54c] 2013-07-29 Carl Chenet * tests.py: switch the shebang to system path for python3.3 on debian linux [72eeeab125b0] * brebis/archiveinfomsg.py, brebis/checkbackups/checkarchive.py, brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checklzma.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checkzip.py, brebis/expectedvalues.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistforzip.py, brebis/identifylimitations.py: replace logging.warn (deprecated) by logging.warning [b80be56716e5] * functionaltests.py: switch the shebang to system path for python3.3 on debian linux [5ef18e59dbab] * brebis.py, brebis/applogger.py, brebis/archiveinfomsg.py, brebis/checkbackups/checkarchive.py, brebis/checkbackups/checkbackups.py, brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checklzma.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checktree.py, brebis/checkbackups/checkzip.py, brebis/checkhashes.py, brebis/cliparse.py, brebis/configurations.py, brebis/expectedvalues.py, brebis/generatelist/generatelist.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, brebis/identifylimitations.py, brebis/listtype.py, brebis/main.py, functionaltests.py, scripts/brebis, tests.py: bump the date of the copyright to 2013 [b79d117a249f] * brebis.py, brebis/applogger.py, brebis/archiveinfomsg.py, brebis/checkbackups/checkarchive.py, brebis/checkbackups/checkbackups.py, brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checklzma.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checktree.py, brebis/checkbackups/checkzip.py, brebis/checkhashes.py, brebis/cliparse.py, brebis/configurations.py, brebis/expectedvalues.py, brebis/generatelist/generatelist.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, brebis/identifylimitations.py, brebis/listtype.py, brebis/main.py, functionaltests.py, setup.py, tests.py: bump to 2013 the date of the copyright [9e967f038496] * debian/manpage: add support of the manual page for the debian package of Brebis [9b4177cec4b7] * man/brebis.1, setup.py: add a manual page for brebis. fixes #23 [e9ae6bb524b3] 2013-07-28 Carl Chenet * README: add in the README that using .conf for the configuration file is mandatory. fixes #19 [87f075c98eb4] 2013-07-27 Carl Chenet * README: update the README for python 3.3 and brebis 0.5 [b97acbc23bb3] 2013-07-21 Carl Chenet * scripts/brebis, setup.py: update to python 3.3 and brebis 0.5 [db5f5dc17542] * debian/changelog, debian/control, debian/install, debian/rules: upgrade to python 3.3 and brebis 0.5 [a02c4973299d] 2013-07-19 Carl Chenet * debian/changelog, debian/compat, debian/control: update debian files [607af167aabb] * functional-tests/full-criteria-multiple-backups/a.out: merge the debian branch with the new default branch [6c5c96687064] * functional-tests/full-criteria-multiple-backups/a.out: merge support for lzma in the default branch [88268374a9aa] * .hgignore, functional-tests/expected-generated-list-for-xz-archive /expected-generated-list-for-xz-archive.list, functional-tests /expected-generated-list-for-xz-archive/expected-generated-list-for- xz-archive.xz, functional-tests/expected-generated-list-for-xz- archive/expectedlist.list, functionaltests.py: add expected generated list for xz archive test [97f04c8ee099] * brebis/generatelist/generatelistforlzma.py, functional-tests /generate-list-and-parse-xz-archive/a.out, functional-tests /generate-list-and-parse-xz-archive/generate-list-and-parse-xz- archive-list, functional-tests/generate-list-and-parse-xz-archive /generate-list-and-parse-xz-archive.conf, functional-tests/generate- list-and-parse-xz-archive/generate-list-and-parse-xz-archive.xz, functional-tests/unsupported-parameters-xz-archive/a.out, functionaltests.py: fix bug with the filename in the .list of a xz generated archive & add generate liste and parse parameters xz archive test [f66d16cdb36d] 2013-07-18 Carl Chenet * functional-tests/unsupported-parameters-xz-archive/a.out, functional-tests/unsupported-parameters-xz-archive/unsupported- parameters-xz-archive-list, functional-tests/unsupported-parameters- xz-archive/unsupported-parameters-xz-archive.conf, functional-tests /unsupported-parameters-xz-archive/unsupported-parameters-xz- archive.xz, functionaltests.py: add unsupported parameters xz archive test [1ded157b6cef] * functional-tests/file-missing-in-xz/a.out, functional-tests/file- missing-in-xz/file-missing-in-xz-list, functional-tests/file- missing-in-xz/file-missing-in-xz.conf, functional-tests/file- missing-in-xz/file-missing-in-xz.xz, functionaltests.py: add file missing in xz test [e86a4b65689b] * brebis/identifylimitations.py: not easily possible to get lzma/xz uncompressed file size - maybe later [1f998d4a0954] * brebis/checkbackups/checklzma.py, functional-tests/corrupted-xz- archive/a.out, functional-tests/corrupted-xz-archive/corrupted-xz- archive-list, functional-tests/corrupted-xz-archive/corrupted-xz- archive.conf, functional-tests/corrupted-xz-archive/corrupted-xz- archive.xz, functionaltests.py: add corrupted xz archive test [ffc71ac8142b] * functional-tests/expected-file-smaller-than-file-in-tar-xz- archive/a.out, functional-tests/expected-file-smaller-than-file-in- tar-xz-archive/expected-file-smaller-than-file-in-tar-xz-archive- list, functional-tests/expected-file-smaller-than-file-in-tar-xz- archive/expected-file-smaller-than-file-in-tar-xz-archive.conf, functional-tests/expected-file-smaller-than-file-in-tar-xz-archive /expected-file-smaller-than-file-in-tar-xz-archive.tar.xz, functionaltests.py: add expected file smaller than file in tar xz archive test [c4a8385e6fe4] * functional-tests/expected-file-not-equals-file-in-tar-xz- archive/a.out, functional-tests/expected-file-not-equals-file-in- tar-xz-archive/expected-file-not-equals-file-in-tar-xz-archive-list, functional-tests/expected-file-not-equals-file-in-tar-xz-archive /expected-file-not-equals-file-in-tar-xz-archive.conf, functional- tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file- not-equals-file-in-tar-xz-archive.tar.xz, functionaltests.py: add expected file not equals file in tar xz archive test [f245cd1fef6c] * functional-tests/expected-file-greater-than-file-in-tar-xz- archive/a.out, functional-tests/expected-file-greater-than-file-in- tar-xz-archive/expected-file-greater-than-file-in-tar-xz-archive- list, functional-tests/expected-file-greater-than-file-in-tar-xz- archive/expected-file-greater-than-file-in-tar-xz-archive.conf, functional-tests/expected-file-greater-than-file-in-tar-xz-archive /expected-file-greater-than-file-in-tar-xz-archive.tar.xz, functionaltests.py: add expected file greater than file in tar xz archive test [94585a5ab762] * functional-tests/corrupted-tar-xz-archive/a.out, functional-tests /corrupted-tar-xz-archive/corrupted-tar-xz-archive-list, functional- tests/corrupted-tar-xz-archive/corrupted-tar-xz-archive.conf, functional-tests/corrupted-tar-xz-archive/corrupted-tar-xz- archive.tar.xz, functionaltests.py: add corrupted tar xz archive test [ba7f21e27363] * functional-tests/unexpected-file-in-tar-xz-archive/a.out, functional-tests/unexpected-file-in-tar-xz-archive/unexpected-file- in-tar-xz-archive-list, functional-tests/unexpected-file-in-tar-xz- archive/unexpected-file-in-tar-xz-archive.conf, functional-tests /unexpected-file-in-tar-xz-archive/unexpected-file-in-tar-xz- archive.tar.xz, functionaltests.py: add unexpected file in tar xz archive test [8711a8fc3db5] 2013-04-27 Carl Chenet * functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file- sha512-hash-in-xz-archive-list, functional-tests/wrong-file-sha512 -hash-in-xz-archive/wrong-file-sha512-hash-in-xz-archive.conf, functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file- sha512-hash-in-xz-archive.xz, functionaltests.py: add wrong file sha512 in xz archive test [e1db3dda42c1] * functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file- sha384-hash-in-xz-archive-list, functional-tests/wrong-file-sha384 -hash-in-xz-archive/wrong-file-sha384-hash-in-xz-archive.conf, functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file- sha384-hash-in-xz-archive.xz, functionaltests.py: add wrong file sha384 hash in xz archive test [e7aa654019e2] * functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file- sha256-hash-in-xz-archive-list, functional-tests/wrong-file-sha256 -hash-in-xz-archive/wrong-file-sha256-hash-in-xz-archive.conf, functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file- sha256-hash-in-xz-archive.xz, functionaltests.py: add wrong file sha256 hash in xz archive test [b39e8eeb73c4] * functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file- sha224-hash-in-xz-archive-list, functional-tests/wrong-file-sha224 -hash-in-xz-archive/wrong-file-sha224-hash-in-xz-archive.conf, functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file- sha224-hash-in-xz-archive.xz, functionaltests.py: add wrong file sha224 in xz archive test [56c92b70e96a] * functional-tests/wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1 -hash-in-xz-archive-list, functional-tests/wrong-file-sha1-hash-in- xz-archive/wrong-file-sha1-hash-in-xz-archive.conf, functional-tests /wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1-hash-in-xz- archive.xz, functionaltests.py: add wrong file sha1 in xz archive test [53dd4c5a0812] * functional-tests/wrong-file-md5-hash-in-xz-archive/wrong-file-md5 -hash-in-xz-archive-list, functional-tests/wrong-file-md5-hash-in- xz-archive/wrong-file-md5-hash-in-xz-archive.conf, functional-tests /wrong-file-md5-hash-in-xz-archive/wrong-file-md5-hash-in-xz- archive.xz, functionaltests.py: add wrong file md5 hash in xz archive test [4b6c11c3df41] * functional-tests/wrong-file-sha512-hash-in-tar-xz-archive/wrong- file-sha512-hash-in-tar-xz-archive-list, functional-tests/wrong- file-sha512-hash-in-tar-xz-archive/wrong-file-sha512-hash-in-tar-xz- archive.conf, functional-tests/wrong-file-sha512-hash-in-tar-xz- archive/wrong-file-sha512-hash-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file sha512 hash in tar xz archive test [de1d62379a14] * functional-tests/wrong-file-sha384-hash-in-tar-xz-archive/wrong- file-sha384-hash-in-tar-xz-archive-list, functional-tests/wrong- file-sha384-hash-in-tar-xz-archive/wrong-file-sha384-hash-in-tar-xz- archive.conf, functional-tests/wrong-file-sha384-hash-in-tar-xz- archive/wrong-file-sha384-hash-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file sha384 hash in tar xz archive test [58153e37817f] * functional-tests/wrong-file-sha256-hash-in-tar-xz-archive/wrong- file-sha256-hash-in-tar-xz-archive-list, functional-tests/wrong- file-sha256-hash-in-tar-xz-archive/wrong-file-sha256-hash-in-tar-xz- archive.conf, functional-tests/wrong-file-sha256-hash-in-tar-xz- archive/wrong-file-sha256-hash-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file sha256 hash in tar xz archive test [553a1a95c54a] 2013-04-26 Carl Chenet * functional-tests/wrong-file-sha224-hash-in-tar-xz-archive/wrong- file-sha224-hash-in-tar-xz-archive-list, functional-tests/wrong- file-sha224-hash-in-tar-xz-archive/wrong-file-sha224-hash-in-tar-xz- archive.conf, functional-tests/wrong-file-sha224-hash-in-tar-xz- archive/wrong-file-sha224-hash-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file sha224 hash in tar xz archive test [756f357d22a2] * functional-tests/wrong-file-sha1-hash-in-tar-xz-archive/wrong-file- sha1-hash-in-tar-xz-archive-list, functional-tests/wrong-file-sha1 -hash-in-tar-xz-archive/wrong-file-sha1-hash-in-tar-xz-archive.conf, functional-tests/wrong-file-sha1-hash-in-tar-xz-archive/wrong-file- sha1-hash-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file sha1 hash in tar xz archive test [c4496117a84f] * functional-tests/wrong-file-md5-hash-in-tar-xz-archive/wrong-file- md5-hash-in-tar-xz-archive-list, functional-tests/wrong-file-md5 -hash-in-tar-xz-archive/wrong-file-md5-hash-in-tar-xz-archive.conf, functional-tests/wrong-file-md5-hash-in-tar-xz-archive/wrong-file- md5-hash-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file md5 hash in tar xz archive test [118c21d77df4] * functional-tests/wrong-file-type-f-in-tar-xz-archive/wrong-file- type-f-in-tar-xz-archive-list, functional-tests/wrong-file-type-f -in-tar-xz-archive/wrong-file-type-f-in-tar-xz-archive.conf, functional-tests/wrong-file-type-f-in-tar-xz-archive/wrong-file- type-f-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file type f in tar xz archive test [42e0e28f1b5d] * functional-tests/wrong-file-type-d-in-tar-xz-archive/wrong-file- type-d-in-tar-xz-archive-list, functional-tests/wrong-file-type-d -in-tar-xz-archive/wrong-file-type-d-in-tar-xz-archive.conf, functional-tests/wrong-file-type-d-in-tar-xz-archive/wrong-file- type-d-in-tar-xz-archive.tar.xz, functionaltests.py: add wrong file type d in tar xz archive test [8fe2183023ac] * functional-tests/wrong-file-gid-in-tar-xz-archive/wrong-file-gid-in- tar-xz-archive-list, functional-tests/wrong-file-gid-in-tar-xz- archive/wrong-file-gid-in-tar-xz-archive.conf, functional-tests /wrong-file-gid-in-tar-xz-archive/wrong-file-gid-in-tar-xz- archive.tar.xz, functionaltests.py: add wrong file gid in tar xz archive test [d935f1e9134b] * functional-tests/wrong-file-uid-in-tar-xz-archive/wrong-file-uid-in- tar-xz-archive-list, functional-tests/wrong-file-uid-in-tar-xz- archive/wrong-file-uid-in-tar-xz-archive.conf, functional-tests /wrong-file-uid-in-tar-xz-archive/wrong-file-uid-in-tar-xz- archive.tar.xz, functionaltests.py: add wrong file uid in tar xz archive test [864775f2b213] 2013-04-25 Carl Chenet * functional-tests/wrong-file-mode-in-tar-xz-archive/wrong-file-mode- in-tar-xz-archive-list, functional-tests/wrong-file-mode-in-tar-xz- archive/wrong-file-mode-in-tar-xz-archive.conf, functional-tests /wrong-file-mode-in-tar-xz-archive/wrong-file-mode-in-tar-xz- archive.tar.xz, functionaltests.py: add wrong file mode in tar xz archive test [80ef137c28f7] 2013-04-16 Carl Chenet * functional-tests/wrong-bz2-archive-gid/wrong-bz2-archive-gid-list, functional-tests/wrong-bz2-archive-gid/wrong-bz2-archive-gid.bz2, functional-tests/wrong-bz2-archive-gid/wrong-bz2-archive-gid.conf, functionaltests.py: add wrong bzip2 archive gid test [064b24083310] * functional-tests/wrong-bz2-archive-uid/wrong-bz2-archive-uid-list, functional-tests/wrong-bz2-archive-uid/wrong-bz2-archive-uid.bz2, functional-tests/wrong-bz2-archive-uid/wrong-bz2-archive-uid.conf, functionaltests.py: add wrong bz2 archive uid test [72ff4ad80b92] * functional-tests/wrong-xz-archive-sha512-hash/wrong-xz-archive- sha512-hash-list, functional-tests/wrong-xz-archive-sha512-hash /wrong-xz-archive-sha512-hash.conf, functional-tests/wrong-xz- archive-sha512-hash/wrong-xz-archive-sha512-hash.xz, functionaltests.py: add wrong xz archive sha512 hash test [7cf704ae6631] * functional-tests/wrong-xz-archive-sha384-hash/wrong-xz-archive- sha384-hash-list, functional-tests/wrong-xz-archive-sha384-hash /wrong-xz-archive-sha384-hash.conf, functional-tests/wrong-xz- archive-sha384-hash/wrong-xz-archive-sha384-hash.xz, functionaltests.py: add wrong xz archive sha384 hash test [9b70f325cba4] * functional-tests/wrong-xz-archive-sha256-hash/wrong-xz-archive- sha256-hash-list, functional-tests/wrong-xz-archive-sha256-hash /wrong-xz-archive-sha256-hash.conf, functional-tests/wrong-xz- archive-sha256-hash/wrong-xz-archive-sha256-hash.xz, functionaltests.py: add wrong xz archive sha256 hash test [fe212036aa56] * functional-tests/wrong-xz-archive-sha224-hash/wrong-xz-archive- sha224-hash-list, functional-tests/wrong-xz-archive-sha224-hash /wrong-xz-archive-sha224-hash.conf, functional-tests/wrong-xz- archive-sha224-hash/wrong-xz-archive-sha224-hash.xz, functionaltests.py: add wrong xz archive sha224 hash test [510eb33134ff] * functional-tests/wrong-xz-archive-sha1-hash/wrong-xz-archive-sha1 -hash-list, functional-tests/wrong-xz-archive-sha1-hash/wrong-xz- archive-sha1-hash.conf, functional-tests/wrong-xz-archive-sha1-hash /wrong-xz-archive-sha1-hash.xz, functionaltests.py: add wrong xz archive sha1 hash test [ddfae809ea50] * functional-tests/wrong-xz-archive-md5-hash/wrong-xz-archive-md5 -hash-list, functional-tests/wrong-xz-archive-md5-hash/wrong-xz- archive-md5-hash.conf, functional-tests/wrong-xz-archive-md5-hash /wrong-xz-archive-md5-hash.xz, functionaltests.py: add wrong xz archive md5 hash test [ab3d9da8e3d2] * functional-tests/wrong-xz-archive-mode/wrong-xz-archive-mode-list, functional-tests/wrong-xz-archive-mode/wrong-xz-archive-mode.conf, functional-tests/wrong-xz-archive-mode/wrong-xz-archive-mode.xz, functionaltests.py: add wrong xz archive mode test [2786e008b811] * functional-tests/wrong-xz-archive-gid/wrong-xz-archive-gid-list, functional-tests/wrong-xz-archive-gid/wrong-xz-archive-gid.conf, functional-tests/wrong-xz-archive-gid/wrong-xz-archive-gid.xz, functionaltests.py: add wrong xz archive gid test [3364f0888632] * functional-tests/wrong-xz-archive-uid/wrong-xz-archive-uid-list, functional-tests/wrong-xz-archive-uid/wrong-xz-archive-uid.conf, functional-tests/wrong-xz-archive-uid/wrong-xz-archive-uid.xz, functionaltests.py: add wrong xz archive uid test [4c644c3665dd] 2013-04-15 Carl Chenet * functional-tests/wrong-tar-xz-archive-sha512-hash/wrong-tar-xz- archive-sha512-hash-list, functional-tests/wrong-tar-xz-archive- sha512-hash/wrong-tar-xz-archive-sha512-hash.conf, functional-tests /wrong-tar-xz-archive-sha512-hash/wrong-tar-xz-archive- sha512-hash.tar.xz, functionaltests.py: add wrong tar xz archive sha512 hash test [eb0d451c53a3] * functional-tests/wrong-tar-xz-archive-sha384-hash/wrong-tar-xz- archive-sha384-hash-list, functional-tests/wrong-tar-xz-archive- sha384-hash/wrong-tar-xz-archive-sha384-hash.conf, functional-tests /wrong-tar-xz-archive-sha384-hash/wrong-tar-xz-archive- sha384-hash.tar.xz, functionaltests.py: add wrong tar xz archive sha384 hash test [5a75120bd4f5] * functional-tests/wrong-tar-xz-archive-sha256-hash/wrong-tar-xz- archive-sha256-hash-list, functional-tests/wrong-tar-xz-archive- sha256-hash/wrong-tar-xz-archive-sha256-hash.conf, functional-tests /wrong-tar-xz-archive-sha256-hash/wrong-tar-xz-archive- sha256-hash.tar.xz, functionaltests.py: add wrong tar xz archive sha256 hash test [9d573aa226e9] * functional-tests/wrong-tar-xz-archive-sha224-hash/wrong-tar-xz- archive-sha224-hash-list, functional-tests/wrong-tar-xz-archive- sha224-hash/wrong-tar-xz-archive-sha224-hash.conf, functional-tests /wrong-tar-xz-archive-sha224-hash/wrong-tar-xz-archive- sha224-hash.tar.xz, functionaltests.py: add wrong tar xz archive sha224 hash test [66a23e56690f] * functional-tests/wrong-tar-xz-archive-sha1-hash/wrong-tar-xz- archive-sha1-hash-list, functional-tests/wrong-tar-xz-archive- sha1-hash/wrong-tar-xz-archive-sha1-hash.conf, functional-tests /wrong-tar-xz-archive-sha1-hash/wrong-tar-xz-archive- sha1-hash.tar.xz: add wrong tar xz archive sha1 hash test [c184e470893f] * functionaltests.py: add wrong tar xz archive sha1 hash test [bf7602b7101c] 2013-04-09 Carl Chenet * functional-tests/wrong-tar-xz-archive-md5-hash/wrong-tar-xz-archive- md5-hash-list, functional-tests/wrong-tar-xz-archive-md5-hash/wrong- tar-xz-archive-md5-hash.conf, functional-tests/wrong-tar-xz-archive- md5-hash/wrong-tar-xz-archive-md5-hash.tar.xz, functionaltests.py: add wrong tar xz archive md5 hash test [0af39d438b49] 2013-04-07 Carl Chenet * functional-tests/wrong-tar-xz-archive-mode/wrong-tar-xz-archive- mode-list, functional-tests/wrong-tar-xz-archive-mode/wrong-tar-xz- archive-mode.conf, functional-tests/wrong-tar-xz-archive-mode/wrong- tar-xz-archive-mode.tar.xz, functionaltests.py: add wrong tar xz archive mode test [5d90c3425e92] 2013-04-06 Carl Chenet * functional-tests/wrong-tar-xz-archive-gid/wrong-tar-xz-archive-gid- list, functional-tests/wrong-tar-xz-archive-gid/wrong-tar-xz- archive-gid.conf, functional-tests/wrong-tar-xz-archive-gid/wrong- tar-xz-archive-gid.tar.xz, functional-tests/wrong-tar-xz-archive-uid /wrong-tar-xz-archive-uid-list, functional-tests/wrong-tar-xz- archive-uid/wrong-tar-xz-archive-uid.conf, functional-tests/wrong- tar-xz-archive-uid/wrong-tar-xz-archive-uid.tar.xz, functionaltests.py: add wrong tar xz archive uid and gid tests [8aa912cd7ba1] * functional-tests/tar-xz-archive-size-smaller-than-expected-size/tar- xz-archive-size-smaller-than-expected-size-list, functional-tests /tar-xz-archive-size-smaller-than-expected-size/tar-xz-archive-size- smaller-than-expected-size.conf, functional-tests/tar-xz-archive- size-smaller-than-expected-size/tar-xz-archive-size-smaller-than- expected-size.tar.xz, functionaltests.py: add tar xz archive size smaller than expected size test [71c0fa329999] * functional-tests/tar-xz-archive-size-not-equals-expected-size/tar- xz-archive-size-not-equals-expected-size-list, functional-tests/tar- xz-archive-size-not-equals-expected-size/tar-xz-archive-size-not- equals-expected-size.conf, functional-tests/tar-xz-archive-size-not- equals-expected-size/tar-xz-archive-size-not-equals-expected- size.tar.xz, functionaltests.py: add tar.xz archive size not equals expected size test [e4e817afa2c8] 2013-04-04 Carl Chenet * functional-tests/full-criteria-multiple-backups/a.out, functionaltests.py: add a test for tar zx archive size bigger than an expected size and removing unexpected a.out file [aa1eafc541b5] * functional-tests/tar-xz-archive-size-bigger-than-expected-size/tar- xz-archive-size-bigger-than-expected-size-list, functional-tests /tar-xz-archive-size-bigger-than-expected-size/tar-xz-archive-size- bigger-than-expected-size.conf, functional-tests/tar-xz-archive- size-bigger-than-expected-size/tar-xz-archive-size-bigger-than- expected-size.tar.xz: add test tar-xz archive size bigger than an expected size [f3b7668fdd25] 2012-07-24 Carl Chenet * .hgignore, brebis/checkbackups/checkbackups.py, brebis/generatelist/generatelistforlzma.py, brebis/generatelist/generatelistfortar.py, brebis/listtype.py, functional-tests/file-missing-in-tar-xz/file-missing-in-tar-xz-list, functional-tests/file-missing-in-tar-xz/file-missing-in-tar-xz.conf, functional-tests/file-missing-in-tar-xz/file-missing-in-tar- xz.tar.xz, functional-tests/full-criteria-multiple-backups/a.out, functional-tests/generate-list-from-xz-archive/generate-list-from- xz-archive.xz, functionaltests.py, tests.py: add support for tar.xz files and add two functional tests for xm format [13c26f403373] 2012-07-23 Carl Chenet * brebis.py, brebis/checkbackups/checkbackups.py, brebis/checkbackups/checklzma.py, brebis/generatelist/generatelistforlzma.py, brebis/identifylimitations.py, brebis/listtype.py, functional-tests /wrong-file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma- archive-list, functional-tests/wrong-file-md5-hash-in-lzma-archive /wrong-file-md5-hash-in-lzma-archive.conf, functional-tests/wrong- file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma- archive.xz, functionaltests.py: support for lzma and first functional test [b4775f504955] 2012-07-22 Carl Chenet * brebis2backupchecker.sh: add new tool to convert the brebis repository to backupchecker [804f0361283e] 2012-02-19 Carl Chenet * debian/copyright, debian/install, debian/rules: automated building of the debian package [7670c997b223] 2012-02-17 Carl Chenet * debian/changelog, debian/compat, debian/control, debian/copyright, debian/rules, debian/source/format, debian/watch: first version of the debian package [c39a39354d12] 2011-11-21 Carl Chenet * .hgsigs: Added signature for changeset 955e902e51c8 [043914617340] * .hgtags: Added tag v0.4 for changeset 955e902e51c8 [78c1d05a91ab] * README: add comment about delimiter optional field [955e902e51c8] [v0.4] * setup.py: modify setup.py in order to manage new packages brebis.checkbackups and brebis.generatelist while installing [06d381967008] * README: update for version 0.4 [8b5c8c98d662] 2011-11-20 Carl Chenet * brebis/generatelist/generatelistfortar.py: fixing issue with no perm, in generatelist part [6eeabda9dcc9] 2011-11-19 Carl Chenet * brebis/expectedvalues.py: fixes #14, size unit can now be lower or upper case [24cdaca722a3] * brebis/checkbackups/checkarchive.py: fixes #15 managing special cas when mode == '0' -> transforming into '000' [88c8e0409605] * brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, functional-tests /expected-generated-list-for-gzip-archive/expectedlist.list, functional-tests/expected-generated-list-for-tar- archive/expectedlist.list, functional-tests/expected-generated-list- for-zip-archive/expectedlist.list, functionaltests.py: fixed #16 correcting a bad format using non-existing keyword size (should have been =) [abc2a005695c] 2011-11-18 Carl Chenet * merging branch for archive size functional tests [7563d7fed1f8] * functional-tests/bzip2-archive-size-smaller-than-expected-size/bzip2 -archive-size-smaller-than-expected-size-list, functional- tests/bzip2-archive-size-smaller-than-expected-size/bzip2-archive- size-smaller-than-expected-size.bz2, functional-tests/bzip2-archive- size-smaller-than-expected-size/bzip2-archive-size-smaller-than- expected-size.conf, functional-tests/gzip-archive-size-smaller-than- expected-size/gzip-archive-size-smaller-than-expected-size-list, functional-tests/gzip-archive-size-smaller-than-expected-size/gzip- archive-size-smaller-than-expected-size.conf, functional-tests/gzip- archive-size-smaller-than-expected-size/gzip-archive-size-smaller- than-expected-size.gz, functional-tests/tar-archive-size-smaller- than-expected-size/tar-archive-size-smaller-than-expected-size-list, functional-tests/tar-archive-size-smaller-than-expected-size/tar- archive-size-smaller-than-expected-size.conf, functional-tests/tar- archive-size-smaller-than-expected-size/tar-archive-size-smaller- than-expected-size.tar, functional-tests/tar-bz2-archive-size- smaller-than-expected-size/tar-bz2-archive-size-smaller-than- expected-size-list, functional-tests/tar-bz2-archive-size-smaller- than-expected-size/tar-bz2-archive-size-smaller-than-expected- size.conf, functional-tests/tar-bz2-archive-size-smaller-than- expected-size/tar-bz2-archive-size-smaller-than-expected- size.tar.bz2, functional-tests/tar-gz-archive-size-smaller-than- expected-size/tar-gz-archive-size-smaller-than-expected-size-list, functional-tests/tar-gz-archive-size-smaller-than-expected-size/tar- gz-archive-size-smaller-than-expected-size.conf, functional-tests /tar-gz-archive-size-smaller-than-expected-size/tar-gz-archive-size- smaller-than-expected-size.tar.gz, functional-tests/zip-archive- size-smaller-than-expected-size/zip-archive-size-smaller-than- expected-size-list, functional-tests/zip-archive-size-smaller-than- expected-size/zip-archive-size-smaller-than-expected-size.conf, functional-tests/zip-archive-size-smaller-than-expected-size/zip- archive-size-smaller-than-expected-size.zip, functionaltests.py: adding functional tests for testing smaller than parameter of the size of an archive [f1b24c80fd6a] 2011-11-17 Carl Chenet * functional-tests/bzip2-archive-size-bigger-than-expected-size/bzip2 -archive-size-bigger-than-expected-size-list, functional-tests/bzip2 -archive-size-bigger-than-expected-size/bzip2-archive-size-bigger- than-expected-size.bz2, functional-tests/bzip2-archive-size-bigger- than-expected-size/bzip2-archive-size-bigger-than-expected- size.conf, functional-tests/gzip-archive-size-bigger-than-expected- size/gzip-archive-size-bigger-than-expected-size-list, functional- tests/gzip-archive-size-bigger-than-expected-size/gzip-archive-size- bigger-than-expected-size.conf, functional-tests/gzip-archive-size- bigger-than-expected-size/gzip-archive-size-bigger-than-expected- size.gz, functional-tests/tar-archive-size-bigger-than-expected-size /tar-archive-size-bigger-than-expected-size-list, functional-tests /tar-archive-size-bigger-than-expected-size/tar-archive-size-bigger- than-expected-size.conf, functional-tests/tar-archive-size-bigger- than-expected-size/tar-archive-size-bigger-than-expected-size.tar, functional-tests/tar-bz2-archive-size-bigger-than-expected-size/tar- bz2-archive-size-bigger-than-expected-size-list, functional-tests /tar-bz2-archive-size-bigger-than-expected-size/tar-bz2-archive- size-bigger-than-expected-size.conf, functional-tests/tar-bz2 -archive-size-bigger-than-expected-size/tar-bz2-archive-size-bigger- than-expected-size.tar.bz2, functional-tests/tar-gz-archive-size- bigger-than-expected-size/tar-gz-archive-size-bigger-than-expected- size-list, functional-tests/tar-gz-archive-size-bigger-than- expected-size/tar-gz-archive-size-bigger-than-expected-size.conf, functional-tests/tar-gz-archive-size-bigger-than-expected-size/tar- gz-archive-size-bigger-than-expected-size.tar.gz, functional-tests /zip-archive-size-bigger-than-expected-size/zip-archive-size-bigger- than-expected-size-list, functional-tests/zip-archive-size-bigger- than-expected-size/zip-archive-size-bigger-than-expected-size.conf, functional-tests/zip-archive-size-bigger-than-expected-size/zip- archive-size-bigger-than-expected-size.zip, functionaltests.py: adding functional tests for testing bigger than parameter of the size of an archive [77e56cb9e9a0] * functional-tests/bzip2-archive-size-not-equals-expected-size/bzip2 -archive-size-not-equals-expected-size-list, functional-tests/bzip2 -archive-size-not-equals-expected-size/bzip2-archive-size-not- equals-expected-size.bz2, functional-tests/bzip2-archive-size-not- equals-expected-size/bzip2-archive-size-not-equals-expected- size.conf, functional-tests/gzip-archive-size-not-equals-expected- size/gzip-archive-size-not-equals-expected-size-list, functional- tests/gzip-archive-size-not-equals-expected-size/gzip-archive-size- not-equals-expected-size.conf, functional-tests/gzip-archive-size- not-equals-expected-size/gzip-archive-size-not-equals-expected- size.gz, functional-tests/tar-archive-size-not-equals-expected-size /tar-archive-size-not-equals-expected-size-list, functional-tests /tar-archive-size-not-equals-expected-size/tar-archive-size-not- equals-expected-size.conf, functional-tests/tar-archive-size-not- equals-expected-size/tar-archive-size-not-equals-expected-size.tar, functional-tests/tar-bz2-archive-size-not-equals-expected-size/tar- bz2-archive-size-not-equals-expected-size-list, functional-tests /tar-bz2-archive-size-not-equals-expected-size/tar-bz2-archive-size- not-equals-expected-size.conf, functional-tests/tar-bz2-archive- size-not-equals-expected-size/tar-bz2-archive-size-not-equals- expected-size.tar.bz2, functional-tests/tar-gz-archive-size-not- equals-expected-size/tar-gz-archive-size-not-equals-expected-size- list, functional-tests/tar-gz-archive-size-not-equals-expected-size /tar-gz-archive-size-not-equals-expected-size.conf, functional-tests /tar-gz-archive-size-not-equals-expected-size/tar-gz-archive-size- not-equals-expected-size.tar.gz, functional-tests/zip-archive-size- not-equals-expected-size/zip-archive-size-not-equals-expected-size- list, functional-tests/zip-archive-size-not-equals-expected-size /zip-archive-size-not-equals-expected-size.conf, functional-tests /zip-archive-size-not-equals-expected-size/zip-archive-size-not- equals-expected-size.zip, functionaltests.py: adding functional tests for testing equality of the size of an archive [903d6d833e61] * brebis/cliparse.py: merging -g option branch and updating version number [b96d0c55cd5d] 2011-11-14 Carl Chenet * functional-tests/a.out, functional-tests/expected-file-greater-than- file-in-tar-archive/expected-file-greater-than-file-in-tar-archive- list, functional-tests/expected-file-greater-than-file-in-tar- archive/expected-file-greater-than-file-in-tar-archive.conf, functional-tests/expected-file-greater-than-file-in-tar-archive /expected-file-greater-than-file-in-tar-archive.tar, functional- tests/expected-file-not-equals-file-in-tar-archive/expected-file- not-equals-file-in-tar-archive-list, functional-tests/expected-file- not-equals-file-in-tar-archive/expected-file-not-equals-file-in-tar- archive.conf, functional-tests/expected-file-not-equals-file-in-tar- archive/expected-file-not-equals-file-in-tar-archive.tar, functional-tests/expected-file-smaller-than-file-in-tar-archive /expected-file-smaller-than-file-in-tar-archive-list, functional- tests/expected-file-smaller-than-file-in-tar-archive/expected-file- smaller-than-file-in-tar-archive.conf, functional-tests/expected- file-smaller-than-file-in-tar-archive/expected-file-smaller-than- file-in-tar-archive.tar, functional-tests/wrong-file-md5-hash-in- tar-archive/wrong-file-md5-hash-in-tar-archive-list, functional- tests/wrong-file-md5-hash-in-tar-archive/wrong-file-md5-hash-in-tar- archive.conf, functional-tests/wrong-file-md5-hash-in-tar-archive /wrong-file-md5-hash-in-tar-archive.tar, functional-tests/wrong- file-sha1-hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive- list, functional-tests/wrong-file-sha1-hash-in-tar-archive/wrong- file-sha1-hash-in-tar-archive.conf, functional-tests/wrong-file-sha1 -hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive.tar, functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file- sha224-hash-in-tar-archive-list, functional-tests/wrong-file-sha224 -hash-in-tar-archive/wrong-file-sha224-hash-in-tar-archive.conf, functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file- sha224-hash-in-tar-archive.tar, functional-tests/wrong-file-sha256 -hash-in-tar-archive/wrong-file-sha256-hash-in-tar-archive-list, functional-tests/wrong-file-sha256-hash-in-tar-archive/wrong-file- sha256-hash-in-tar-archive.conf, functional-tests/wrong-file-sha256 -hash-in-tar-archive/wrong-file-sha256-hash-in-tar-archive.tar, functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file- sha384-hash-in-tar-archive-list, functional-tests/wrong-file-sha384 -hash-in-tar-archive/wrong-file-sha384-hash-in-tar-archive.conf, functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file- sha384-hash-in-tar-archive.tar, functional-tests/wrong-file-sha512 -hash-in-tar-archive/wrong-file-sha512-hash-in-tar-archive-list, functional-tests/wrong-file-sha512-hash-in-tar-archive/wrong-file- sha512-hash-in-tar-archive.conf, functional-tests/wrong-file-sha512 -hash-in-tar-archive/wrong-file-sha512-hash-in-tar-archive.tar, functionaltests.py: achieved to write functional tests for the tar-only archive [154707c9ce58] 2011-11-13 Carl Chenet * functional-tests/unexpected-file-in-tar-archive/unexpected-file-in- tar-archive-list, functional-tests/unexpected-file-in-tar-archive /unexpected-file-in-tar-archive.conf, functional-tests/unexpected- file-in-tar-archive/unexpected-file-in-tar-archive.tar, functional- tests/wrong-file-gid-in-tar-archive/wrong-file-gid-in-tar-archive- list, functional-tests/wrong-file-gid-in-tar-archive/wrong-file-gid- in-tar-archive.conf, functional-tests/wrong-file-gid-in-tar-archive /wrong-file-gid-in-tar-archive.tar, functional-tests/wrong-file-uid- in-tar-archive/wrong-file-uid-in-tar-archive-list, functional-tests /wrong-file-uid-in-tar-archive/wrong-file-uid-in-tar-archive.conf, functional-tests/wrong-file-uid-in-tar-archive/wrong-file-uid-in- tar-archive.tar, functional-tests/wrong-tar-archive-gid/wrong-tar- archive-gid-list, functional-tests/wrong-tar-archive-gid/wrong-tar- archive-gid.conf, functional-tests/wrong-tar-archive-gid/wrong-tar- archive-gid.tar, functional-tests/wrong-tar-archive-md5-hash/wrong- tar-archive-md5-hash-list, functional-tests/wrong-tar-archive- md5-hash/wrong-tar-archive-md5-hash.conf, functional-tests/wrong- tar-archive-md5-hash/wrong-tar-archive-md5-hash.tar, functional- tests/wrong-tar-archive-mode/wrong-tar-archive-mode-list, functional-tests/wrong-tar-archive-mode/wrong-tar-archive-mode.conf, functional-tests/wrong-tar-archive-mode/wrong-tar-archive-mode.tar, functional-tests/wrong-tar-archive-sha1-hash/wrong-tar-archive-sha1 -hash-list, functional-tests/wrong-tar-archive-sha1-hash/wrong-tar- archive-sha1-hash.conf, functional-tests/wrong-tar-archive-sha1-hash /wrong-tar-archive-sha1-hash.tar, functional-tests/wrong-tar- archive-sha224-hash/wrong-tar-archive-sha224-hash-list, functional- tests/wrong-tar-archive-sha224-hash/wrong-tar-archive- sha224-hash.conf, functional-tests/wrong-tar-archive-sha224-hash /wrong-tar-archive-sha224-hash.tar, functional-tests/wrong-tar- archive-sha256-hash/wrong-tar-archive-sha256-hash-list, functional- tests/wrong-tar-archive-sha256-hash/wrong-tar-archive- sha256-hash.conf, functional-tests/wrong-tar-archive-sha256-hash /wrong-tar-archive-sha256-hash.tar, functional-tests/wrong-tar- archive-sha384-hash/wrong-tar-archive-sha384-hash-list, functional- tests/wrong-tar-archive-sha384-hash/wrong-tar-archive- sha384-hash.conf, functional-tests/wrong-tar-archive-sha384-hash /wrong-tar-archive-sha384-hash.tar, functional-tests/wrong-tar- archive-sha512-hash/wrong-tar-archive-sha512-hash-list, functional- tests/wrong-tar-archive-sha512-hash/wrong-tar-archive- sha512-hash.conf, functional-tests/wrong-tar-archive-sha512-hash /wrong-tar-archive-sha512-hash.tar, functional-tests/wrong-tar- archive-uid/wrong-tar-archive-uid-list, functional-tests/wrong-tar- archive-uid/wrong-tar-archive-uid.conf, functional-tests/wrong-tar- archive-uid/wrong-tar-archive-uid.tar, functionaltests.py: added unit tests for tar-only archive type [d68b2ebc3740] 2011-11-09 Carl Chenet * brebis/expectedvalues.py, functional-tests/user-specified-delimiter /user-specified-delimiter.conf, functional-tests/user-specified- delimiter/user-specified-delimiter.list, functional-tests/user- specified-delimiter/user-specified-delimiter.tar.gz, functionaltests.py, tests.py, tests/expected_hash/bzip2-list, tests/expected_hash/files-list, tests/expected_hash/filetree-list, tests/expected_hash/gzip-list, tests/expected_hash/zip-list, tests/expected_mode/files-list, tests/expected_mode/treefiles-list, tests/expected_type/files-list, tests/expected_type/filetree-list, tests/expected_uid_gid/files-list, tests/expected_uid_gid /multiplefiles-list, tests/test_conf/archive.conf: support for user-specified delimiter, unit tests and functional tests, removed number for each functional test [81310bbf9ddb] 2011-11-07 Carl Chenet * brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checktree.py, brebis/checkbackups/checkzip.py, brebis/configurations.py, brebis/expectedvalues.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, functional-tests /corrupted-bz2-archive/corrupted-bz2-archive-list, functional-tests /corrupted-gz-archive/corrupted-gz-archive-list, functional-tests /corrupted-tar-bz2-archive/corrupted-tar-bz2-archive-list, functional-tests/corrupted-tar-gz-archive/corrupted-tar-gz-archive- list, functional-tests/corrupted-zip-archive/corrupted-zip-archive- list, functional-tests/expected-file-greater-than-file-in-gz-archive /expected-file-greater-than-file-in-gz-archive-list, functional- tests/expected-file-greater-than-file-in-tar-bz2-archive/expected- file-greater-than-file-in-tar-bz2-archive-list, functional-tests /expected-file-greater-than-file-in-tar-gz-archive/expected-file- greater-than-file-in-tar-gz-archive-list, functional-tests/expected- file-greater-than-file-in-tree/expected-file-greater-than-file-in- tree-list, functional-tests/expected-file-greater-than-file-in-zip- archive/expected-file-greater-than-file-in-zip-archive-list, functional-tests/expected-file-not-equals-file-in-gz-archive /expected-file-not-equals-file-in-gz-archive-list, functional-tests /expected-file-not-equals-file-in-tar-bz2-archive/expected-file-not- equals-file-in-tar-bz2-archive-list, functional-tests/expected-file- not-equals-file-in-tar-gz-archive/expected-file-not-equals-file-in- tar-gz-archive-list, functional-tests/expected-file-not-equals-file- in-tree/expected-file-not-equals-file-in-tree-list, functional-tests /expected-file-not-equals-file-in-zip-archive/expected-file-not- equals-file-in-zip-archive-list, functional-tests/expected-file- smaller-than-file-in-gz-archive/expected-file-smaller-than-file-in- gz-archive-list, functional-tests/expected-file-smaller-than-file- in-tar-bz2-archive/expected-file-smaller-than-file-in-tar-bz2 -archive-list, functional-tests/expected-file-smaller-than-file-in- tar-gz-archive/expected-file-smaller-than-file-in-tar-gz-archive- list, functional-tests/expected-file-smaller-than-file-in-tree /expected-file-smaller-than-file-in-tree-list, functional-tests /expected-file-smaller-than-file-in-zip-archive/expected-file- smaller-than-file-in-zip-archive-list, functional-tests/expected- generated-list-for-bzip2-archive/expectedlist.list, functional-tests /expected-generated-list-for-gzip-archive/expectedlist.list, functional-tests/expected-generated-list-for-tar- archive/expectedlist.list, functional-tests/expected-generated-list- for-zip-archive/expectedlist.list, functional-tests/file-missing-in- gzip/file-missing-in-gzip-list, functional-tests/file-missing-in- tar-bz2/file-missing-in-tar-bz2-list, functional-tests/file-missing- in-tar-gz/file-missing-in-tar-gz-list, functional-tests/file- missing-in-tar/file-missing-in-tar-list, functional-tests/file- missing-in-tree/file-missing-in-tree-list, functional-tests/file- missing-in-zip/file-missing-in-zip-list, functional-tests/full- criteria-multiple-backups/full-criteria-multiple-backups-gz-list, functional-tests/full-criteria-multiple-backups/full-criteria- multiple-backups-tar-bz2-list, functional-tests/full-criteria- multiple-backups/full-criteria-multiple-backups-tar-gz-list, functional-tests/full-criteria-multiple-backups/full-criteria- multiple-backups-tree-list, functional-tests/full-criteria-multiple- backups/full-criteria-multiple-backups-zip-list, functional-tests /mixing-dir-path-and-archive-type-in-conf/mixing-dir-path-and- archive-type-in-conf-list, functional-tests/name-in-gzip-and-gzip- archive-are-not-the-same/name-in-gzip-and-gzip-archive-are-not-the- same-list, functional-tests/unexpected-file-in-gz-archive /unexpected-file-in-gz-archive-list, functional-tests/unexpected- file-in-tar-bz2-archive/unexpected-file-in-tar-bz2-archive-list, functional-tests/unexpected-file-in-tar-gz-archive/unexpected-file- in-tar-gz-archive-list, functional-tests/unexpected-file-in-tree /unexpected-file-in-tree-list, functional-tests/unexpected-file-in- zip-archive/unexpected-file-in-zip-archive-list, functional-tests /unsupported-parameters-bz2-archive/unsupported-parameters-bz2 -archive-list, functional-tests/unsupported-parameters-gz-archive /unsupported-parameters-gz-archive-list, functional-tests/wrong-bz2 -archive-md5-hash/wrong-bz2-archive-md5-hash-list, functional-tests /wrong-bz2-archive-sha1-hash/wrong-bz2-archive-sha1-hash-list, functional-tests/wrong-bz2-archive-sha224-hash/wrong-bz2-archive- sha224-hash-list, functional-tests/wrong-bz2-archive-sha256-hash /wrong-bz2-archive-sha256-hash-list, functional-tests/wrong-bz2 -archive-sha384-hash/wrong-bz2-archive-sha384-hash-list, functional- tests/wrong-bz2-archive-sha512-hash/wrong-bz2-archive-sha512-hash- list, functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file- gid-in-tar-bz2-archive-list, functional-tests/wrong-file-gid-in-tar- gz-archive/wrong-file-gid-in-tar-gz-archive-list, functional-tests /wrong-file-gid-in-tree/wrong-file-gid-in-tree-list, functional- tests/wrong-file-gid-in-zip-archive/wrong-file-gid-in-zip-archive- list, functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong- file-md5-hash-in-bzip2-archive-list, functional-tests/wrong-file-md5 -hash-in-gz-archive/wrong-file-md5-hash-in-gz-archive-list, functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file- md5-hash-in-tar-bz2-archive-list, functional-tests/wrong-file-md5 -hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-archive-list, functional-tests/wrong-file-md5-hash-in-tree/wrong-file-md5-hash-in- tree-list, functional-tests/wrong-file-md5-hash-in-zip-archive /wrong-file-md5-hash-in-zip-archive-list, functional-tests/wrong- file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar-bz2-archive- list, functional-tests/wrong-file-mode-in-tar-gz-archive/wrong-file- mode-in-tar-gz-archive-list, functional-tests/wrong-file-mode-in- tree/wrong-file-mode-in-tree-list, functional-tests/wrong-file-mode- in-zip-archive/wrong-file-mode-in-zip-archive-list, functional-tests /wrong-file-sha1-hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2 -archive-list, functional-tests/wrong-file-sha1-hash-in-gz-archive /wrong-file-sha1-hash-in-gz-archive-list, functional-tests/wrong- file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz2 -archive-list, functional-tests/wrong-file-sha1-hash-in-tar-gz- archive/wrong-file-sha1-hash-in-tar-gz-archive-list, functional- tests/wrong-file-sha1-hash-in-tree/wrong-file-sha1-hash-in-tree- list, functional-tests/wrong-file-sha1-hash-in-zip-archive/wrong- file-sha1-hash-in-zip-archive-list, functional-tests/wrong-file- sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in-bzip2 -archive-list, functional-tests/wrong-file-sha224-hash-in-gz-archive /wrong-file-sha224-hash-in-gz-archive-list, functional-tests/wrong- file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar- bz2-archive-list, functional-tests/wrong-file-sha224-hash-in-tar-gz- archive/wrong-file-sha224-hash-in-tar-gz-archive-list, functional- tests/wrong-file-sha224-hash-in-tree/wrong-file-sha224-hash-in-tree- list, functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong- file-sha224-hash-in-zip-archive-list, functional-tests/wrong-file- sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in-bzip2 -archive-list, functional-tests/wrong-file-sha256-hash-in-gz-archive /wrong-file-sha256-hash-in-gz-archive-list, functional-tests/wrong- file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar- bz2-archive-list, functional-tests/wrong-file-sha256-hash-in-tar-gz- archive/wrong-file-sha224-hash-in-tar-gz-archive-list, functional- tests/wrong-file-sha256-hash-in-tree/wrong-file-sha256-hash-in-tree- list, functional-tests/wrong-file-sha256-hash-in-zip-archive/wrong- file-sha256-hash-in-zip-archive-list, functional-tests/wrong-file- sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in-bzip2 -archive-list, functional-tests/wrong-file-sha384-hash-in-gz-archive /wrong-file-sha384-hash-in-gz-archive-list, functional-tests/wrong- file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar- bz2-archive-list, functional-tests/wrong-file-sha384-hash-in-tar-gz- archive/wrong-file-sha384-hash-in-tar-gz-archive-list, functional- tests/wrong-file-sha384-hash-in-tree/wrong-file-sha384-hash-in-tree- list, functional-tests/wrong-file-sha384-hash-in-zip-archive/wrong- file-sha384-hash-in-zip-archive-list, functional-tests/wrong-file- sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in-bzip2 -archive-list, functional-tests/wrong-file-sha512-hash-in-gz-archive /wrong-file-sha512-hash-in-gz-archive-list, functional-tests/wrong- file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar- bz2-archive-list, functional-tests/wrong-file-sha512-hash-in-tar-gz- archive/wrong-file-sha512-hash-in-tar-gz-archive-list, functional- tests/wrong-file-sha512-hash-in-tree/wrong-file-sha512-hash-in-tree- list, functional-tests/wrong-file-sha512-hash-in-zip-archive/wrong- file-sha512-hash-in-zip-archive-list, functional-tests/wrong-file- type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar-bz2-archive-list, functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file- type-d-in-tar-gz-archive-list, functional-tests/wrong-file-type-d -in-tree/wrong-file-type-d-in-tree-list, functional-tests/wrong- file-type-d-in-zip-archive/wrong-file-type-d-in-zip-archive-list, functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file- type-f-in-tar-bz2-archive-list, functional-tests/wrong-file-type-f -in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive-list, functional-tests/wrong-file-type-f-in-tree/wrong-file-type-f-in- tree-list, functional-tests/wrong-file-type-f-in-zip-archive/wrong- file-type-f-in-zip-archive-list, functional-tests/wrong-file-uid-in- tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive-list, functional- tests/wrong-file-uid-in-tar-gz-archive/wrong-file-uid-in-tar-gz- archive-list, functional-tests/wrong-file-uid-in-tree/wrong-file- uid-in-tree-list, functional-tests/wrong-file-uid-in-zip-archive /wrong-file-uid-in-zip-archive-list, functional-tests/wrong-gz- archive-gid/wrong-gz-archive-gid-list, functional-tests/wrong-gz- archive-md5-hash/wrong-gz-archive-md5-hash-list, functional-tests /wrong-gz-archive-mode/wrong-gz-archive-mode-list, functional-tests /wrong-gz-archive-sha1-hash/wrong-gz-archive-sha1-hash-list, functional-tests/wrong-gz-archive-sha224-hash/wrong-gz-archive- sha224-hash-list, functional-tests/wrong-gz-archive-sha256-hash /wrong-gz-archive-sha256-hash-list, functional-tests/wrong-gz- archive-sha384-hash/wrong-gz-archive-sha384-hash-list, functional- tests/wrong-gz-archive-sha512-hash/wrong-gz-archive-sha512-hash- list, functional-tests/wrong-gz-archive-uid/wrong-gz-archive-uid- list, functional-tests/wrong-tar-bz2-archive-gid/wrong-tar-bz2 -archive-gid-list, functional-tests/wrong-tar-bz2-archive-md5-hash /wrong-tar-bz2-archive-md5-hash-list, functional-tests/wrong-tar-bz2 -archive-mode/wrong-tar-bz2-archive-mode-list, functional-tests /wrong-tar-bz2-archive-sha1-hash/wrong-tar-bz2-archive-sha1-hash- list, functional-tests/wrong-tar-bz2-archive-sha224-hash/wrong-tar- bz2-archive-sha224-hash-list, functional-tests/wrong-tar-bz2 -archive-sha256-hash/wrong-tar-bz2-archive-sha256-hash-list, functional-tests/wrong-tar-bz2-archive-sha384-hash/wrong-tar-bz2 -archive-sha384-hash-list, functional-tests/wrong-tar-bz2-archive- sha512-hash/wrong-tar-bz2-archive-sha512-hash-list, functional-tests /wrong-tar-bz2-archive-uid/wrong-tar-bz2-archive-uid-list, functional-tests/wrong-tar-gz-archive-gid/wrong-tar-gz-archive-gid- list, functional-tests/wrong-tar-gz-archive-md5-hash/wrong-tar-gz- archive-md5-hash-list, functional-tests/wrong-tar-gz-archive-mode /wrong-tar-gz-archive-mode-list, functional-tests/wrong-tar-gz- archive-sha1-hash/wrong-tar-gz-archive-sha1-hash-list, functional- tests/wrong-tar-gz-archive-sha224-hash/wrong-tar-gz-archive-sha224 -hash-list, functional-tests/wrong-tar-gz-archive-sha256-hash/wrong- tar-gz-archive-sha256-hash-list, functional-tests/wrong-tar-gz- archive-sha384-hash/wrong-tar-gz-archive-sha384-hash-list, functional-tests/wrong-tar-gz-archive-sha512-hash/wrong-tar-gz- archive-sha512-hash-list, functional-tests/wrong-tar-gz-archive-uid /wrong-tar-gz-archive-uid-list, functional-tests/wrong-zip-archive- gid/wrong-zip-archive-gid-list, functional-tests/wrong-zip-archive- md5-hash/wrong-zip-archive-md5-hash-list, functional-tests/wrong- zip-archive-mode/wrong-zip-archive-mode-list, functional-tests /wrong-zip-archive-sha1-hash/wrong-zip-archive-sha1-hash-list, functional-tests/wrong-zip-archive-sha224-hash/wrong-zip-archive- sha224-hash-list, functional-tests/wrong-zip-archive-sha256-hash /wrong-zip-archive-sha256-hash-list, functional-tests/wrong-zip- archive-sha384-hash/wrong-zip-archive-sha384-hash-list, functional- tests/wrong-zip-archive-sha512-hash/wrong-zip-archive-sha512-hash- list, functional-tests/wrong-zip-archive-uid/wrong-zip-archive-uid- list, functionaltests.py, tests.py, tests/checkbzip2_private_methods/mybzip2-list, tests/checkgzip_private_methods/mygzip-list, tests/checktar_private_methods/mytargz/mytargz-list, tests/checktree_private_methods/mytargz/mytargz-list, tests/checktree_private_methods/mytree-list, tests/expected_hash/archash/md5hashtararchive-list, tests/expected_hash/archash/md5hashziparchive-list, tests/expected_hash/archash/sha1hashtararchive-list, tests/expected_hash/archash/sha1hashziparchive-list, tests/expected_hash/archash/sha224hashtararchive-list, tests/expected_hash/archash/sha224hashziparchive-list, tests/expected_hash/archash/sha256hashtararchive-list, tests/expected_hash/archash/sha256hashziparchive-list, tests/expected_hash/archash/sha384hashtararchive-list, tests/expected_hash/archash/sha384hashziparchive-list, tests/expected_hash/archash/sha512hashtararchive-list, tests/expected_hash/archash/sha512hashziparchive-list, tests/expected_hash/bzip2-list, tests/expected_hash/files-list, tests/expected_hash/filetree-list, tests/expected_hash/gzip-list, tests/expected_hash/zip-list, tests/expected_mode/arcmode/tarmode4644-list, tests/expected_mode/arcmode/tarmode644-list, tests/expected_mode/arcmode/tarmode755-list, tests/expected_mode/arcmode/zipmode4644-list, tests/expected_mode/arcmode/zipmode644-list, tests/expected_mode/arcmode/zipmode755-list, tests/expected_mode /files-list, tests/expected_mode/treefiles-list, tests/expected_type /files-list, tests/expected_type/filetree-list, tests/expected_uid_gid/arc_uid_gid/tar-uid-gid-list, tests/expected_uid_gid/arc_uid_gid/zip-uid-gid-list, tests/expected_uid_gid/files-list, tests/expected_uid_gid /multiplefiles-list, tests/file_size/arcsize/biggerthantararcsize- list, tests/file_size/arcsize/biggerthanziparcsize-list, tests/file_size/arcsize/equaltararcsize-list, tests/file_size/arcsize/equalziparcsize-list, tests/file_size/arcsize/smallerthantararcsize-list, tests/file_size/arcsize/smallerthanziparcsize-list, tests/file_size /essai-list, tests/file_size/essai-list2, tests/file_size/missing- bigger-than/mygzip-list, tests/file_size/missing-smaller-than /mygzip-list, tests/file_size/mygzip-list, tests/filetree/filelist, tests/gzip/mygzip-list, tests/tar_bz2_archive_content/essai2-list, tests/tar_gz_archive_content/essai-list, tests/test_conf/essai-list, tests/test_conf/subdir/toto/essai-list, tests/unexpected_files /files-list, tests/zip/myzip-list: intermediate commit for -g option and new delimiter and custom delimiter [45c3b6138ee1] 2011-11-05 Carl Chenet * tests/generatelistfortree_private_methods/mydir/bar/rab: adding directory for unit tests [bb1fed78389b] * .hgignore, brebis/generatelist/generatelist.py, tests.py, tests/generatelist_private_methods/mytar.list, tests/generatelistforgzip_private_methods/mygzip.gz, tests/generatelistfortar_private_methods/mytar.tar.gz, tests/generatelistfortree_private_methods/mydir/foo, tests/generatelistfortree_private_methods/mydir/oof, tests/generatelistforzip_private_methods/myzip.zip: adding unit tests for private/protected methods [40441f887838] 2011-11-04 Carl Chenet * setup.py: upgrading version number in setup.py [903f41bf6e02] * README: upgrading version number in README [7c6454aff706] * brebis/cliparse.py: upgrading version number [f0b83a833dbc] * tests.py: correctiong unit tests to manage new check modules organization [cc5b9a3d1e79] * brebis/checkbackups/checkbackups.py, functional-tests/file-missing- in-tar/file-missing-in-tar-list, functional-tests/file-missing-in- tar/file-missing-in-tar.conf, functional-tests/file-missing-in-tar /file-missing-in-tar.tar, functionaltests.py: fixed #9 - support for tar-only file [9be52e2e4a8c] * brebis/checkarchive.py, brebis/checkbackups.py, brebis/checkbzip2.py, brebis/checkgzip.py, brebis/checktar.py, brebis/checktree.py, brebis/checkzip.py: fixed #11 [4872d1196f39] * brebis/checkarchive.py, brebis/checkbackups.py, brebis/checkbackups/__init__.py, brebis/checkbackups/checkarchive.py, brebis/checkbackups/checkbackups.py, brebis/checkbackups/checkbzip2.py, brebis/checkbackups/checkgzip.py, brebis/checkbackups/checktar.py, brebis/checkbackups/checktree.py, brebis/checkbackups/checkzip.py, brebis/checkbzip2.py, brebis/checkgzip.py, brebis/checktar.py, brebis/checktree.py, brebis/checkzip.py, brebis/main.py: fixed #11 - new package checkbackups [8a97ce3a6797] * merging generate-list-files branch and default branch [d8a55579e394] 2011-11-02 Carl Chenet * .hgignore, functional-tests/generate-list-and-parse-bzip2-archive /generate-list-and-parse-bzip2-archive.bz2, functional-tests /generate-list-and-parse-bzip2-archive/generate-list-and-parse- bzip2-archive.conf, functional-tests/generate-list-and-parse-gzip- archive/generate-list-and-parse-gzip-archive.conf, functional-tests /generate-list-and-parse-gzip-archive/generate-list-and-parse-gzip- archive.gz, functional-tests/generate-list-and-parse-tar-archive /generate-list-and-parse-tar-archive.conf, functional-tests /generate-list-and-parse-tar-archive/generate-list-and-parse-tar- archive.tar.gz, functional-tests/generate-list-and-parse-tree /generate-list-and-parse-tree.conf, functional-tests/generate-list- and-parse-tree/generate-list-and-parse-tree/bar/oof, functional- tests/generate-list-and-parse-tree/generate-list-and-parse- tree/bar/rab, functional-tests/generate-list-and-parse-tree /generate-list-and-parse-tree/foo, functional-tests/generate-list- and-parse-tree/generate-list-and-parse-tree/hello, functional-tests /generate-list-and-parse-zip-archive/generate-list-and-parse-zip- archive.conf, functional-tests/generate-list-and-parse-zip-archive /generate-list-and-parse-zip-archive.zip, functionaltests.py: final tests generate and parse for --gen-list option [27890815cb68] 2011-11-01 Carl Chenet * functional-tests/expected-generated-list-for-tree/expected- generated-list-for-tree/bar/oof, functional-tests/expected- generated-list-for-tree/expected-generated-list-for-tree/bar/rab, functional-tests/expected-generated-list-for-tree/expected- generated-list-for-tree/foo, functional-tests/expected-generated- list-for-tree/expected-generated-list-for-tree/hello, functional- tests/expected-generated-list-for-tree/expectedlist.list, functionaltests.py: removing expected-generated-list-for-tree because of lack of portability [cdffb54460d3] * functional-tests/expected-generated-list-for-bzip2-archive/expected- generated-list-for-bzip2-archive.bz2, functional-tests/expected- generated-list-for-bzip2-archive/expectedlist.list, functional-tests /expected-generated-list-for-gzip-archive/expected-generated-list- for-gzip-archive.gz, functional-tests/expected-generated-list-for- gzip-archive/expectedlist.list, functional-tests/expected-generated- list-for-tar-archive/expected-generated-list-for-tar-archive.tar.gz, functional-tests/expected-generated-list-for-tar- archive/expectedlist.list, functional-tests/expected-generated-list- for-tree/expected-generated-list-for-tree/bar/oof, functional-tests /expected-generated-list-for-tree/expected-generated-list-for- tree/bar/rab, functional-tests/expected-generated-list-for-tree /expected-generated-list-for-tree/foo, functional-tests/expected- generated-list-for-tree/expected-generated-list-for-tree/hello, functional-tests/expected-generated-list-for-tree/expectedlist.list, functional-tests/expected-generated-list-for-zip-archive/expected- generated-list-for-zip-archive.zip, functional-tests/expected- generated-list-for-zip-archive/expectedlist.list, functional-tests /generate-list-from-tar-archive/generate-list-from-tar-archive.list, functionaltests.py: functional tests for expected generated list files [ac5e3ec3cfba] * brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/listtype.py, functional-tests/generate-list-from-bzip2-archive/generate-list- from-bzip2-archive.bz2, functional-tests/generate-list-from-gzip- archive/generate-list-from-gzip-archive.gz, functionaltests.py: added the support of generation of list of files for gzip archives [d306e478ed1f] 2011-10-31 Carl Chenet * brebis/generatelist.py, brebis/generatelist/__init__.py, brebis/generatelist/generatelist.py, brebis/generatelist/generatelistforbzip2.py, brebis/generatelist/generatelistforgzip.py, brebis/generatelist/generatelistfortar.py, brebis/generatelist/generatelistfortree.py, brebis/generatelist/generatelistforzip.py, brebis/generatelistforbzip2.py, brebis/generatelistforgzip.py, brebis/generatelistfortar.py, brebis/generatelistfortree.py, brebis/generatelistforzip.py, brebis/listtype.py, functional-tests /generate-list-from-tar-archive/generate-list-from-tar-archive.list, functionaltests.py: complete generated list for tar,zip,tree [a266343fc140] 2011-10-25 Carl Chenet * brebis/generatelist.py, brebis/generatelistfortree.py, functionaltests.py: added the support of generation of list of files for tree of files [33c62b00eb1c] 2011-10-23 Carl Chenet * functional-tests/generate-list-from-zip-archive/generate-list-from- zip-archive.list: removing unwanted file list from hg watched files [9cb0a56240f1] * brebis/cliparse.py, brebis/generatelist.py, brebis/generatelistfortar.py, brebis/generatelistfortree.py, brebis/generatelistforzip.py, brebis/listtype.py, functional-tests /generate-list-from-tar-archive/generate-list-from-tar-archive.list, functional-tests/generate-list-from-tree/generate-list-from- tree/bar/oof, functional-tests/generate-list-from-tree/generate- list-from-tree/bar/rab, functional-tests/generate-list-from-tree /generate-list-from-tree/foo, functional-tests/generate-list-from- tree/generate-list-from-tree/hello, functional-tests/generate-list- from-zip-archive/generate-list-from-zip-archive.list, functional- tests/generate-list-from-zip-archive/generate-list-from-zip- archive.zip, functionaltests.py: generate list of files for tar and zip archives - tree incoming [84edfbb08578] 2011-10-20 Carl Chenet * brebis/generatelistfortar.py: seems to begin to work - issue with name of output file and headers of generated list solved [235ec2e83403] * brebis/cliparse.py, brebis/generatelist.py, brebis/generatelistfortar.py, brebis/listtype.py, brebis/main.py, functional-tests/generate-list-from-tar-archive/generate-list-from- tar-archive.tar.gz: seems to begin to work - a problem remains with the output file named tlist [f613cad61dfb] * brebis/cliparse.py, brebis/generatelist.py, brebis/generatelistforbzip2.py, brebis/generatelistforgzip.py, brebis/generatelistfortar.py, brebis/generatelistfortree.py, brebis/generatelistforzip.py: added generate list modules for archives and tree [b5ae205bb276] 2011-10-17 Carl Chenet * brebis/cliparse.py, brebis/generatelist.py, brebis/main.py: first commit with beginning of support to generate list of files in the archives [6321d8ed7c20] 2011-10-12 Carl Chenet * .hgsigs: Added signature for changeset 5a1340cb05cf [b6cec74a02b8] * .hgtags: Added tag v0.3 for changeset 986f90788294 [5a1340cb05cf] 2011-10-10 Carl Chenet * setup.py: updating version field [986f90788294] [v0.3] * README: updated README [ab724add4338] * brebis/cliparse.py: setting version to 0.3 [f93e0a22da5d] * brebis/identifylimitations.py: replacing parameters tuples by sets [93a94a327d00] 2011-10-09 Carl Chenet * brebis/checkbzip2.py, functional-tests/unsupported-parameters- bz2-archive/unsupported-parameters-bz2-archive-list, functional- tests/unsupported-parameters-bz2-archive/unsupported-parameters- bz2-archive.bz2, functional-tests/unsupported-parameters-bz2-archive /unsupported-parameters-bz2-archive.conf, functionaltests.py: adding support for warning about archive limitation for bzip2 archive [6717d879453f] * brebis/checkbzip2.py, brebis/checkgzip.py, functionaltests.py: merging the branch for test limitations for archive and default [db6650bf145c] * merged support for bzip2 only archive in default branch [fe3dd37cb098] * brebis/checkbzip2.py: added default parameter type for file inside a bzip2 archive [08588637ed4f] * brebis/checkgzip.py, brebis/identifylimitations.py, functional-tests /full-criteria-multiple-backups/a.out, functional-tests/unsupported- parameters-gz-archive/unsupported-parameters-gz-archive-list, functional-tests/unsupported-parameters-gz-archive/unsupported- parameters-gz-archive.conf, functional-tests/unsupported-parameters- gz-archive/unsupported-parameters-gz-archive.gz, functionaltests.py: added support for warning user about current archive limitation [c3fbe4b51334] * functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5 -hash-in-bzip2-archive-list, functional-tests/wrong-file-md5-hash- in-bzip2-archive/wrong-file-md5-hash-in-bzip2-archive.bz2, functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5 -hash-in-bzip2-archive.conf, functional-tests/wrong-file-sha1-hash- in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-archive-list, functional-tests/wrong-file-sha1-hash-in-bzip2-archive/wrong-file- sha1-hash-in-bzip2-archive.bz2, functional-tests/wrong-file-sha1 -hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-archive.conf, functional-tests/wrong-file-sha224-hash-in-bzip2-archive/wrong-file- sha224-hash-in-bzip2-archive-list, functional-tests/wrong-file- sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in- bzip2-archive.bz2, functional-tests/wrong-file-sha224-hash-in- bzip2-archive/wrong-file-sha224-hash-in-bzip2-archive.conf, functional-tests/wrong-file-sha256-hash-in-bzip2-archive/wrong-file- sha256-hash-in-bzip2-archive-list, functional-tests/wrong-file- sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in- bzip2-archive.bz2, functional-tests/wrong-file-sha256-hash-in- bzip2-archive/wrong-file-sha256-hash-in-bzip2-archive.conf, functional-tests/wrong-file-sha384-hash-in-bzip2-archive/wrong-file- sha384-hash-in-bzip2-archive-list, functional-tests/wrong-file- sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in- bzip2-archive.bz2, functional-tests/wrong-file-sha384-hash-in- bzip2-archive/wrong-file-sha384-hash-in-bzip2-archive.conf, functional-tests/wrong-file-sha512-hash-in-bzip2-archive/wrong-file- sha512-hash-in-bzip2-archive-list, functional-tests/wrong-file- sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in- bzip2-archive.bz2, functional-tests/wrong-file-sha512-hash-in- bzip2-archive/wrong-file-sha512-hash-in-bzip2-archive.conf, functionaltests.py, tests.py, tests/expected_hash/bar.bz2, tests/expected_hash/bar.gz, tests/expected_hash/bzip2-list, tests/expected_hash/gzip-list: added functional tests for file hash in bzip2 files - added unit tests for hash in gzip and bzip2 files [5676167f86c8] * functional-tests/wrong-bz2-archive-md5-hash/wrong-bz2-archive-md5 -hash-list, functional-tests/wrong-bz2-archive-md5-hash/wrong-bz2 -archive-md5-hash.bz2, functional-tests/wrong-bz2-archive-md5-hash /wrong-bz2-archive-md5-hash.conf, functional-tests/wrong-bz2 -archive-sha1-hash/wrong-bz2-archive-sha1-hash-list, functional- tests/wrong-bz2-archive-sha1-hash/wrong-bz2-archive-sha1-hash.bz2, functional-tests/wrong-bz2-archive-sha1-hash/wrong-bz2-archive- sha1-hash.conf, functional-tests/wrong-bz2-archive-sha224-hash /wrong-bz2-archive-sha224-hash-list, functional-tests/wrong-bz2 -archive-sha224-hash/wrong-bz2-archive-sha224-hash.bz2, functional- tests/wrong-bz2-archive-sha224-hash/wrong-bz2-archive- sha224-hash.conf, functional-tests/wrong-bz2-archive-sha256-hash /wrong-bz2-archive-sha256-hash-list, functional-tests/wrong-bz2 -archive-sha256-hash/wrong-bz2-archive-sha256-hash.bz2, functional- tests/wrong-bz2-archive-sha256-hash/wrong-bz2-archive- sha256-hash.conf, functional-tests/wrong-bz2-archive-sha384-hash /wrong-bz2-archive-sha384-hash-list, functional-tests/wrong-bz2 -archive-sha384-hash/wrong-bz2-archive-sha384-hash.bz2, functional- tests/wrong-bz2-archive-sha384-hash/wrong-bz2-archive- sha384-hash.conf, functional-tests/wrong-bz2-archive-sha512-hash /wrong-bz2-archive-sha512-hash-list, functional-tests/wrong-bz2 -archive-sha512-hash/wrong-bz2-archive-sha512-hash.bz2, functional- tests/wrong-bz2-archive-sha512-hash/wrong-bz2-archive- sha512-hash.conf, functionaltests.py: functional tests for hash of the bzip2 archive [7c4a4ddd2cee] 2011-10-08 Carl Chenet * brebis/checkbzip2.py, tests.py, tests/checkbzip2_private_methods/mybz2.bz2, tests/checkbzip2_private_methods/mybzip2-list, tests/checkbzip2_private_methods/mybzip2.conf: Support for missing file and default size - associated unittests [a863b4dd396a] * brebis/checkbackups.py, brebis/checkbzip2.py, functional-tests /corrupted-bz2-archive/corrupted-bz2-archive-list, functional-tests /corrupted-bz2-archive/corrupted-bz2-archive.bz2, functional-tests /corrupted-bz2-archive/corrupted-bz2-archive.conf: support for corrupted bz2 archive detection and associated test [80106bf045df] * brebis/checkgzip.py: corrected mistakes in docstring [31ae65cc0362] * brebis/checkbzip2.py: addes first step for support of bzip2 archive [3b11119e3499] * brebis/checkgzip.py: corrected docstrings [c91a599ec01e] 2011-10-07 Carl Chenet * merging support-for-gzip branch with default branch [73f72221e9a6] * brebis/checkgzip.py, functional-tests/corrupted-gz-archive /corrupted-gz-archive-list, functional-tests/corrupted-gz-archive /corrupted-gz-archive.conf, functional-tests/corrupted-gz-archive /corrupted-gz-archive.gz, functionaltests.py: acceptable detection for gzip archive corruption [4faa41801d9a] * synchronzed with default branch [11c01cec1d00] 2011-10-06 Carl Chenet * brebis/checkgzip.py: reverting last fix -not the good way to do it [0bca77eb0e85] * fixed #8 support for error detection in gzip archive [2a98399ff73e] * brebis/checkgzip.py: added support for error detection on gzip archive [eb976b705a79] 2011-10-03 Carl Chenet * .hgsigs: Added signature for changeset b746a25ea5dc [9b147f0ae256] * .hgtags: Added tag 0.2 for changeset b746a25ea5dc [d6302792f021] * README, brebis/cliparse.py, setup.py: fixed version id [b746a25ea5dc] [0.2] * .hgtags: Removed tag 0.2 [78456934b8c9] * .hgsigs: Added signature for changeset 333cde7ecab7 [e10a724eaf2f] * .hgtags: Added tag 0.2 for changeset 333cde7ecab7 [15a4dcf687a2] * merging support-for-gzip in default - fixes #3 #5 [333cde7ecab7] 2011-10-02 Carl Chenet * tests.py, tests/checkgzip_private_methods/mygzip-list, tests/checkgzip_private_methods/mygzip.conf, tests/checkgzip_private_methods/mygzip.gz, tests/file_size/missing- bigger-than/mygzip-list, tests/file_size/missing-bigger- than/mygzip.conf, tests/file_size/missing-bigger-than/mygzip.gz, tests/file_size/missing-smaller-than/mygzip-list, tests/file_size /missing-smaller-than/mygzip.conf, tests/file_size/missing-smaller- than/mygzip.gz, tests/file_size/mygzip-list, tests/file_size/mygzip.conf, tests/file_size/mygzip.gz, tests/gzip /mygzip-list, tests/gzip/mygzip.conf, tests/gzip/mygzip.gz: added unit tests for the new CheckGzip class private and protected methods [bb8abd56e739] * brebis/checkgzip.py: solved an issue with unclosed file object [67ad4fdbf50c] * functional-tests/full-criteria-multiple-backups/a.out, functional- tests/full-criteria-multiple-backups/full-criteria-multiple-backups- gz-list, functional-tests/full-criteria-multiple-backups/full- criteria-multiple-backups-gz.conf, functional-tests/full-criteria- multiple-backups/full-criteria-multiple-backups-gz.gz, functional- tests/full-criteria-multiple-backups/full-criteria-multiple-backups- tar-bz2-list, functional-tests/full-criteria-multiple-backups/full- criteria-multiple-backups-tar-gz-list, functional-tests/full- criteria-multiple-backups/full-criteria-multiple-backups-zip-list, functionaltests.py: added gzip archive to full criteria multiple backups functional tests [45dd78f4a722] * functional-tests/unexpected-file-in-gz-archive/unexpected-file-in- gz-archive-list, functional-tests/unexpected-file-in-gz-archive /unexpected-file-in-gz-archive.conf, functional-tests/unexpected- file-in-gz-archive/unexpected-file-in-gz-archive.gz, functionaltests.py: added functional test for unexpected file in gzip archive [2a3ce0a36e2e] * functional-tests/file-missing-in-gzip/file-missing-in-gzip-list, functional-tests/file-missing-in-gzip/file-missing-in-gzip.conf, functional-tests/file-missing-in-gzip/file-missing-in-gzip.gz, functionaltests.py: added functional test to check a missing file in a gzip archive [03fb014f38bb] * merging current branch and add-missing-types branch [431997e9ffe2] * brebis/checkgzip.py, functional-tests/wrong-file-md5-hash-in-gz- archive/wrong-file-md5-hash-in-gz-archive-list, functional-tests /wrong-file-md5-hash-in-gz-archive/wrong-file-md5-hash-in-gz- archive.conf, functional-tests/wrong-file-md5-hash-in-gz-archive /wrong-file-md5-hash-in-gz-archive.gz, functional-tests/wrong-file- sha1-hash-in-gz-archive/wrong-file-sha1-hash-in-gz-archive-list, functional-tests/wrong-file-sha1-hash-in-gz-archive/wrong-file-sha1 -hash-in-gz-archive.conf, functional-tests/wrong-file-sha1-hash-in- gz-archive/wrong-file-sha1-hash-in-gz-archive.gz, functional-tests /wrong-file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz- archive-list, functional-tests/wrong-file-sha224-hash-in-gz-archive /wrong-file-sha224-hash-in-gz-archive.conf, functional-tests/wrong- file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz- archive.gz, functional-tests/wrong-file-sha256-hash-in-gz-archive /wrong-file-sha256-hash-in-gz-archive-list, functional-tests/wrong- file-sha256-hash-in-gz-archive/wrong-file-sha256-hash-in-gz- archive.conf, functional-tests/wrong-file-sha256-hash-in-gz-archive /wrong-file-sha256-hash-in-gz-archive.gz, functional-tests/wrong- file-sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archive- list, functional-tests/wrong-file-sha384-hash-in-gz-archive/wrong- file-sha384-hash-in-gz-archive.conf, functional-tests/wrong-file- sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archive.gz, functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file- sha512-hash-in-gz-archive-list, functional-tests/wrong-file-sha512 -hash-in-gz-archive/wrong-file-sha512-hash-in-gz-archive.conf, functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file- sha512-hash-in-gz-archive.gz, functionaltests.py: support for hash checking for file in gzip and associated tests [50370e83c74e] * brebis/checktar.py: tarfile.CONTYPE -> tarfile.CONTTYPE [51466c04c909] 2011-09-29 Carl Chenet * brebis/checkgzip.py, functional-tests/expected-file-greater-than- file-in-gz-archive/expected-file-greater-than-file-in-gz-archive- list, functional-tests/expected-file-smaller-than-file-in-gz-archive /expected-file-smaller-than-file-in-gz-archive-list, functional- tests/name-in-gzip-and-gzip-archive-are-not-the-same/name-in-gzip- and-gzip-archive-are-not-the-same-list, functional-tests/name-in- gzip-and-gzip-archive-are-not-the-same/name-in-gzip-and-gzip- archive-are-not-the-same.conf, functional-tests/name-in-gzip-and- gzip-archive-are-not-the-same/name-in-gzip-and-gzip-archive-are-not- the-same.gz, functionaltests.py: added support for initial filename in gzip and associated test with corrections on existing gzip tests [5a1d4d19136f] 2011-09-28 Carl Chenet * functional-tests/expected-file-greater-than-file-in-gz-archive /expected-file-greater-than-file-in-gz-archive-list, functional- tests/expected-file-greater-than-file-in-gz-archive/expected-file- greater-than-file-in-gz-archive.conf, functional-tests/expected- file-greater-than-file-in-gz-archive/expected-file-greater-than- file-in-gz-archive.gz, functional-tests/expected-file-smaller-than- file-in-gz-archive/expected-file-smaller-than-file-in-gz-archive- list, functional-tests/expected-file-smaller-than-file-in-gz-archive /expected-file-smaller-than-file-in-gz-archive.conf, functional- tests/expected-file-smaller-than-file-in-gz-archive/expected-file- smaller-than-file-in-gz-archive.gz, functionaltests.py: added tests bigger than and smaller than for file inside gzip archive [50f54a70e6fc] * functional-tests/expected-file-not-equals-file-in-gz-archive /expected-file-not-equals-file-in-gz-archive-list, functional-tests /expected-file-not-equals-file-in-gz-archive/expected-file-not- equals-file-in-gz-archive.conf, functional-tests/expected-file-not- equals-file-in-gz-archive/expected-file-not-equals-file-in-gz- archive.gz: adding files for equality functional test [c69d02dbd625] * brebis/checkgzip.py, functionaltests.py: added support for size test on a file inside the gzip archive + equality functional test [b5477ade1ef7] * brebis/checkbackups.py, brebis/checkgzip.py, functional-tests/wrong- gz-archive-gid/wrong-gz-archive-gid-list, functional-tests/wrong-gz- archive-gid/wrong-gz-archive-gid.conf, functional-tests/wrong-gz- archive-gid/wrong-gz-archive-gid.gz, functional-tests/wrong-gz- archive-md5-hash/wrong-gz-archive-md5-hash-list, functional-tests /wrong-gz-archive-md5-hash/wrong-gz-archive-md5-hash.conf, functional-tests/wrong-gz-archive-md5-hash/wrong-gz-archive- md5-hash.gz, functional-tests/wrong-gz-archive-mode/wrong-gz- archive-mode-list, functional-tests/wrong-gz-archive-mode/wrong-gz- archive-mode.conf, functional-tests/wrong-gz-archive-mode/wrong-gz- archive-mode.gz, functional-tests/wrong-gz-archive-sha1-hash/wrong- gz-archive-sha1-hash-list, functional-tests/wrong-gz-archive- sha1-hash/wrong-gz-archive-sha1-hash.conf, functional-tests/wrong- gz-archive-sha1-hash/wrong-gz-archive-sha1-hash.gz, functional-tests /wrong-gz-archive-sha224-hash/wrong-gz-archive-sha224-hash-list, functional-tests/wrong-gz-archive-sha224-hash/wrong-gz-archive- sha224-hash.conf, functional-tests/wrong-gz-archive-sha224-hash /wrong-gz-archive-sha224-hash.gz, functional-tests/wrong-gz-archive- sha256-hash/wrong-gz-archive-sha256-hash-list, functional-tests /wrong-gz-archive-sha256-hash/wrong-gz-archive-sha256-hash.conf, functional-tests/wrong-gz-archive-sha256-hash/wrong-gz-archive- sha256-hash.gz, functional-tests/wrong-gz-archive-sha384-hash/wrong- gz-archive-sha384-hash-list, functional-tests/wrong-gz-archive- sha384-hash/wrong-gz-archive-sha384-hash.conf, functional-tests /wrong-gz-archive-sha384-hash/wrong-gz-archive-sha384-hash.gz, functional-tests/wrong-gz-archive-sha512-hash/wrong-gz-archive- sha512-hash-list, functional-tests/wrong-gz-archive-sha512-hash /wrong-gz-archive-sha512-hash.conf, functional-tests/wrong-gz- archive-sha512-hash/wrong-gz-archive-sha512-hash.gz, functional- tests/wrong-gz-archive-uid/wrong-gz-archive-uid-list, functional- tests/wrong-gz-archive-uid/wrong-gz-archive-uid.conf, functional- tests/wrong-gz-archive-uid/wrong-gz-archive-uid.gz, functionaltests.py: added support for gzip file and associated functional tests [e4726295f309] 2011-09-24 Carl Chenet * .hgsigs: Added signature for changeset ec91cf3e3652 [448161715b15] * .hgtags: Added tag 0.1 for changeset 95d79ac84890 [ec91cf3e3652] * README: updating README [95d79ac84890] [0.1] 2011-09-22 Carl Chenet * functional-tests/full-criteria-multiple-backups/a.out, functional- tests/full-criteria-multiple-backups/full-criteria-multiple-backups- tar-bz2-list, functional-tests/full-criteria-multiple-backups/full- criteria-multiple-backups-tar-gz-list, functional-tests/full- criteria-multiple-backups/full-criteria-multiple-backups-tree-list, functional-tests/full-criteria-multiple-backups/full-criteria- multiple-backups-zip-list, functionaltests.py: fixed issues with multiple backups/criterias test [2bdf6c23d400] * functional-tests/full-criteria-multiple-backups-tar-gz/full- criteria-multiple-backups-tar-gz-list, functional-tests/full- criteria-multiple-backups-tar-gz/full-criteria-multiple-backups-tar- gz.conf, functional-tests/full-criteria-multiple-backups-tar-gz /full-criteria-multiple-backups-tar-gz.tar.gz, functional-tests /full-criteria-multiple-backups/a.out, functional-tests/full- criteria-multiple-backups/full-criteria-multiple-backups-tar- bz2-list, functional-tests/full-criteria-multiple-backups/full- criteria-multiple-backups-tar-bz2.conf, functional-tests/full- criteria-multiple-backups/full-criteria-multiple-backups-tar- bz2.tar.bz2, functional-tests/full-criteria-multiple-backups/full- criteria-multiple-backups-tar-gz-list, functional-tests/full- criteria-multiple-backups/full-criteria-multiple-backups-tar- gz.conf, functional-tests/full-criteria-multiple-backups/full- criteria-multiple-backups-tar-gz.tar.gz, functional-tests/full- criteria-multiple-backups/full-criteria-multiple-backups-tree-list, functional-tests/full-criteria-multiple-backups/full-criteria- multiple-backups-tree.conf, functional-tests/full-criteria-multiple- backups/full-criteria-multiple-backups-zip-list, functional-tests /full-criteria-multiple-backups/full-criteria-multiple-backups- zip.conf, functional-tests/full-criteria-multiple-backups/full- criteria-multiple-backups-zip.zip, functional-tests/full-criteria- multiple-backups/tree/bar/foo, functionaltests.py: written test for multiple backups with several criterias [418e5e0409d0] * brebis/expectedvalues.py: fixed a bug with double entries in list file - configparser error not catched [bf2f93e7e579] * functional-tests/full-criteria-multiple-backups-tar-gz/full- criteria-multiple-backups-tar-gz-list, functional-tests/full- criteria-multiple-backups-tar-gz/full-criteria-multiple-backups-tar- gz.conf, functional-tests/full-criteria-multiple-backups-tar-gz /full-criteria-multiple-backups-tar-gz.tar.gz: writing a functional test with all the criterias for several backups in one launch [f92e290cffa3] * functional-tests/mixing-dir-path-and-archive-type-in-conf/tree/toto: empty directory made mercurial skips the repertory and fails the test93 [acadc5156d99] * brebis/configurations.py, functional-tests/mixing-dir-path-and- archive-type-in-conf/mixing-dir-path-and-archive-type-in-conf-list, functional-tests/mixing-dir-path-and-archive-type-in-conf/mixing- dir-path-and-archive-type-in-conf.conf, functional-tests/mixing-dir- path-and-archive-type-in-conf/mixing-dir-path-and-archive-type-in- conf.tar.gz, functionaltests.py: fixed a bug when in configuration type is archive and a path to a directory is given - also wrote functional tests [184684f32f58] 2011-09-21 Carl Chenet * functional-tests/expected-file-greater-than-file-in-tar-bz2-archive /expected-file-greater-than-file-in-tar-bz2-archive-list, functional-tests/expected-file-greater-than-file-in-tar-bz2-archive /expected-file-greater-than-file-in-tar-bz2-archive.conf, functional-tests/expected-file-greater-than-file-in-tar-bz2-archive /expected-file-greater-than-file-in-tar-bz2-archive.tar.bz2, functional-tests/expected-file-greater-than-file-in-tar-gz-archive /expected-file-greater-than-file-in-tar-gz-archive-list, functional- tests/expected-file-greater-than-file-in-tar-gz-archive/expected- file-greater-than-file-in-tar-gz-archive.conf, functional-tests /expected-file-greater-than-file-in-tar-gz-archive/expected-file- greater-than-file-in-tar-gz-archive.tar.gz, functional-tests /expected-file-greater-than-file-in-tree/expected-file-greater-than- file-in-tree-list, functional-tests/expected-file-greater-than-file- in-tree/expected-file-greater-than-file-in-tree.conf, functional- tests/expected-file-greater-than-file-in-tree/tree/bar, functional- tests/expected-file-greater-than-file-in-tree/tree/foo, functional- tests/expected-file-greater-than-file-in-tree/tree/toto, functional- tests/expected-file-greater-than-file-in-zip-archive/expected-file- greater-than-file-in-zip-archive-list, functional-tests/expected- file-greater-than-file-in-zip-archive/expected-file-greater-than- file-in-zip-archive.conf, functional-tests/expected-file-greater- than-file-in-zip-archive/expected-file-greater-than-file-in-zip- archive.zip, functional-tests/expected-file-not-equals-file-in-tar- bz2-archive/expected-file-not-equals-file-in-tar-bz2-archive-list, functional-tests/expected-file-not-equals-file-in-tar-bz2-archive /expected-file-not-equals-file-in-tar-bz2-archive.conf, functional- tests/expected-file-not-equals-file-in-tar-bz2-archive/expected- file-not-equals-file-in-tar-bz2-archive.tar.bz2, functional-tests /expected-file-not-equals-file-in-tar-gz-archive/expected-file-not- equals-file-in-tar-gz-archive-list, functional-tests/expected-file- not-equals-file-in-tar-gz-archive/expected-file-not-equals-file-in- tar-gz-archive.conf, functional-tests/expected-file-not-equals-file- in-tar-gz-archive/expected-file-not-equals-file-in-tar-gz- archive.tar.gz, functional-tests/expected-file-not-equals-file-in- tree/expected-file-not-equals-file-in-tree-list, functional-tests /expected-file-not-equals-file-in-tree/expected-file-not-equals- file-in-tree.conf, functional-tests/expected-file-not-equals-file- in-tree/tree/bar, functional-tests/expected-file-not-equals-file-in- tree/tree/foo, functional-tests/expected-file-not-equals-file-in- tree/tree/toto, functional-tests/expected-file-not-equals-file-in- zip-archive/expected-file-not-equals-file-in-zip-archive-list, functional-tests/expected-file-not-equals-file-in-zip-archive /expected-file-not-equals-file-in-zip-archive.conf, functional-tests /expected-file-not-equals-file-in-zip-archive/expected-file-not- equals-file-in-zip-archive.zip, functional-tests/expected-file- smaller-than-file-in-tar-bz2-archive/expected-file-smaller-than- file-in-tar-bz2-archive-list, functional-tests/expected-file- smaller-than-file-in-tar-bz2-archive/expected-file-smaller-than- file-in-tar-bz2-archive.conf, functional-tests/expected-file- smaller-than-file-in-tar-bz2-archive/expected-file-smaller-than- file-in-tar-bz2-archive.tar.bz2, functional-tests/expected-file- smaller-than-file-in-tar-gz-archive/expected-file-smaller-than-file- in-tar-gz-archive-list, functional-tests/expected-file-smaller-than- file-in-tar-gz-archive/expected-file-smaller-than-file-in-tar-gz- archive.conf, functional-tests/expected-file-smaller-than-file-in- tar-gz-archive/expected-file-smaller-than-file-in-tar-gz- archive.tar.gz, functional-tests/expected-file-smaller-than-file-in- tree/expected-file-smaller-than-file-in-tree-list, functional-tests /expected-file-smaller-than-file-in-tree/expected-file-smaller-than- file-in-tree.conf, functional-tests/expected-file-smaller-than-file- in-tree/tree/bar, functional-tests/expected-file-smaller-than-file- in-tree/tree/foo, functional-tests/expected-file-smaller-than-file- in-tree/tree/toto, functional-tests/expected-file-smaller-than-file- in-zip-archive/expected-file-smaller-than-file-in-zip-archive-list, functional-tests/expected-file-smaller-than-file-in-zip-archive /expected-file-smaller-than-file-in-zip-archive.conf, functional- tests/expected-file-smaller-than-file-in-zip-archive/expected-file- smaller-than-file-in-zip-archive.zip, functionaltests.py: added functional tests on the size of the files inside the archive [5c010d7daeeb] * functionaltests.py: added test2 docstring in functionaltests.py [503cb204f8d4] * added changes from shell-variable-in-functionaltests-py branch [0aad1ef4b566] * functionaltests.py: functionaltests.py is now supported by buildbot [39e0978c4370] * AUTHORS, LICENSE, README: added AUTHORS, LICENSE and README files [4eaff21f66de] 2011-09-19 Carl Chenet * brebis/applogger.py: corrected a permission denied bug while creating the logging brebis file in unauthorized directories [52bd7970786a] * brebis.py, functionaltests.py, scripts/brebis, setup.py: modified root directory structure in order to ease developement process [83c3f9f2b023] * functionaltests.py: functionaltests.py provides error output and error status [9bed6d026905] * functional-tests/two_confs_with_the_same_name/a.out, functional- tests/two_confs_with_the_same_name/first.conf, functional- tests/two_confs_with_the_same_name/notrelevant-list, functional- tests/two_confs_with_the_same_name/notrelevant.tar.gz, functional- tests/two_confs_with_the_same_name/second.conf, functionaltests.py: added a test to check if two config files with the same names are rejected [3ec1cee1352a] 2011-09-18 Carl Chenet * tests.py: fixed unit tests in order to be portable [b1fc7789cbb0] * functionaltests.py: added comment on functional test1 [d632a7e7fbe9] * merged with removed-checkhashes-class in order to removed no more used part of the code [15dffd2d88a6] * brebis/checkhashes.py, brebis/checktar.py, brebis/checkzip.py, brebis/cliparse.py, brebis/main.py, tests.py: removing unused CheckHashes classes and associated tests [c4a4e94782dc] * created remove-checkhashes branch [ad15974ad44e] 2011-09-17 Carl Chenet * functional-tests/corrupted-zip-archive/corrupted-zip-archive-list, functional-tests/corrupted-zip-archive/corrupted-zip-archive.conf, functional-tests/corrupted-zip-archive/corrupted-zip-archive.zip, functionaltests.py: added functional tests to identify corrupted zip archive [58fde8cf9d92] * brebis/checkzip.py: added cleare warning message about zip archive corruption [e6f2e6a07e7f] * functional-tests/corrupted-tar-bz2-archive/corrupted-tar-bz2 -archive-list, functional-tests/corrupted-tar-bz2-archive/corrupted- tar-bz2-archive.conf, functional-tests/corrupted-tar-bz2-archive /corrupted-tar-bz2-archive.tar.bz2, functionaltests.py: added functional test to identify corrupted tar.bz2 archive [3e1eda3f96b8] * functional-tests/corrupted-tar-gz-archive/corrupted-tar-gz-archive- list, functional-tests/corrupted-tar-gz-archive/corrupted-tar-gz- archive.conf, functional-tests/corrupted-tar-gz-archive/corrupted- tar-gz-archive.tar.gz, functionaltests.py: added functional test for tar.gz corrupted archive [948f52e189c2] * brebis/checkbackups.py, brebis/checktar.py: discriminating archives by their extensions [a9bc5a09ef3b] * tests.py, tests/checktree_private_methods/mytargz/mytargz-list, tests/checktree_private_methods/mytargz/mytargz.tar.gz, tests/checktree_private_methods/mytree-list, tests/checktree_private_methods/mytree/hello, tests/checktree_private_methods/mytree/riri: added unit tests for private/protected methods in checktree.CheckTree [a8e07bafbbd8] * brebis/checktree.py: switched from os.stat() to os.lstat() to identify symbolic link [d0d9e16fd8e5] * tests.py, tests/checktar_private_methods/mytargz/mytargz-list, tests/checktar_private_methods/mytargz/mytargz.tar.gz: added unit tests for private/protected methods in checktar.CheckTar [fe6330e7c3a6] * tests.py: added unit test for checkzip.CheckZip__extract_uid_gid private method [8088916baa46] * tests.py: added unit test for checkzip.CheckZip__extract_uid_gid private method [751fda104bb0] * tests.py, tests/checkzip_private_methods/myzip-list, tests/checkzip_private_methods/myzip.zip: added unit tests to check checkzip.CheckZip.__translate_type method [775c5fa8b2f1] * functionaltests.py: simplify functional tests by cutting in half the number of lines of code [b0a3b363a9ed] 2011-09-16 Carl Chenet * brebis/checkarchive.py, brebis/checktar.py, brebis/checktree.py, brebis/checkzip.py, brebis/expectedvalues.py, functional-tests/file- missing-in-tar-bz2/file-missing-in-tar-bz2-list, functionaltests.py: corrected bug on directory, normalizing in striping the trailing slash because of possible wrong user input [c1882d39c088] * brebis/checkzip.py, functional-tests/wrong-file-gid-in-zip-archive /wrong-file-gid-in-zip-archive-list, functional-tests/wrong-file- gid-in-zip-archive/wrong-file-gid-in-zip-archive.conf, functional- tests/wrong-file-gid-in-zip-archive/wrong-file-gid-in-zip- archive.zip, functional-tests/wrong-file-mode-in-zip-archive/wrong- file-mode-in-zip-archive-list, functional-tests/wrong-file-mode-in- zip-archive/wrong-file-mode-in-zip-archive.conf, functional-tests /wrong-file-mode-in-zip-archive/wrong-file-mode-in-zip-archive.zip, functional-tests/wrong-file-type-d-in-zip-archive/wrong-file-type-d -in-zip-archive-list, functional-tests/wrong-file-type-d-in-zip- archive/wrong-file-type-d-in-zip-archive.conf, functional-tests /wrong-file-type-d-in-zip-archive/wrong-file-type-d-in-zip- archive.zip, functional-tests/wrong-file-type-f-in-zip-archive /wrong-file-type-f-in-zip-archive-list, functional-tests/wrong-file- type-f-in-zip-archive/wrong-file-type-f-in-zip-archive.conf, functional-tests/wrong-file-type-f-in-zip-archive/wrong-file-type-f -in-zip-archive.zip, functional-tests/wrong-file-uid-in-zip-archive /wrong-file-uid-in-zip-archive-list, functional-tests/wrong-file- uid-in-zip-archive/wrong-file-uid-in-zip-archive.conf, functional- tests/wrong-file-uid-in-zip-archive/wrong-file-uid-in-zip- archive.zip, functionaltests.py: added tests for wrong file mode in zip, wrong file type directory and file for zip archives and wrong uid and gid for files in zip archive [67231aad07cf] 2011-09-14 Carl Chenet * brebis/checkzip.py, functionaltests.py: added support for mode checking in zip archive and associated functional tests [1d9472d64758] 2011-09-13 Carl Chenet * functional-tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode- in-tar-bz2-archive-list, functional-tests/wrong-file-mode-in-tar- bz2-archive/wrong-file-mode-in-tar-bz2-archive.conf, functional- tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar- bz2-archive.tar.bz2, functional-tests/wrong-file-mode-in-tar-gz- archive/wrong-file-mode-in-tar-gz-archive-list, functional-tests /wrong-file-mode-in-tar-gz-archive/wrong-file-mode-in-tar-gz- archive.conf, functional-tests/wrong-file-mode-in-tar-gz-archive /wrong-file-mode-in-tar-gz-archive.tar.gz, functional-tests/wrong- file-mode-in-tree/tree/bar, functional-tests/wrong-file-mode-in- tree/tree/dir/foo2, functional-tests/wrong-file-mode-in- tree/tree/foo, functional-tests/wrong-file-mode-in-tree/wrong-file- mode-in-tree-list, functional-tests/wrong-file-mode-in-tree/wrong- file-mode-in-tree.conf, functional-tests/wrong-file-type-d-in-tar- bz2-archive/wrong-file-type-d-in-tar-bz2-archive-list, functional- tests/wrong-file-type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar- bz2-archive.conf, functional-tests/wrong-file-type-d-in-tar- bz2-archive/wrong-file-type-d-in-tar-bz2-archive.tar.bz2, functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file- type-d-in-tar-gz-archive-list, functional-tests/wrong-file-type-d -in-tar-gz-archive/wrong-file-type-d-in-tar-gz-archive.conf, functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file- type-d-in-tar-gz-archive.tar.gz, functional-tests/wrong-file-type-d -in-tree/tree/bar, functional-tests/wrong-file-type-d-in- tree/tree/dir/foo2, functional-tests/wrong-file-type-d-in- tree/tree/foo, functional-tests/wrong-file-type-d-in-tree/wrong- file-type-d-in-tree-list, functional-tests/wrong-file-type-d-in-tree /wrong-file-type-d-in-tree.conf, functional-tests/wrong-file-type-f -in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archive-list, functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file- type-f-in-tar-bz2-archive.conf, functional-tests/wrong-file-type-f -in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archive.tar.bz2, functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file- type-f-in-tar-gz-archive-list, functional-tests/wrong-file-type-f -in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive.conf, functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file- type-f-in-tar-gz-archive.tar.gz, functional-tests/wrong-file-type-f -in-tree/tree/bar, functional-tests/wrong-file-type-f-in- tree/tree/dir/foo2, functional-tests/wrong-file-type-f-in- tree/tree/foo, functional-tests/wrong-file-type-f-in-tree/wrong- file-type-f-in-tree-list, functional-tests/wrong-file-type-f-in-tree /wrong-file-type-f-in-tree.conf, functionaltests.py: added tests for file mode and type (f,d) in the archives and trees [e94775ee9c04] * functional-tests/wrong-file-md5-hash-in-tree/tree/bar, functional- tests/wrong-file-md5-hash-in-tree/tree/dir/foo2, functional-tests /wrong-file-md5-hash-in-tree/tree/foo, functional-tests/wrong-file- md5-hash-in-tree/wrong-file-md5-hash-in-tree-list, functional-tests /wrong-file-md5-hash-in-tree/wrong-file-md5-hash-in-tree.conf, functional-tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5 -hash-in-zip-archive-list, functional-tests/wrong-file-md5-hash-in- zip-archive/wrong-file-md5-hash-in-zip-archive.conf, functional- tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5-hash-in-zip- archive.zip, functional-tests/wrong-file-sha1-hash-in-tree/tree/bar, functional-tests/wrong-file-sha1-hash-in-tree/tree/dir/foo2, functional-tests/wrong-file-sha1-hash-in-tree/tree/foo, functional- tests/wrong-file-sha1-hash-in-tree/wrong-file-sha1-hash-in-tree- list, functional-tests/wrong-file-sha1-hash-in-tree/wrong-file-sha1 -hash-in-tree.conf, functional-tests/wrong-file-sha1-hash-in-zip- archive/wrong-file-sha1-hash-in-zip-archive-list, functional-tests /wrong-file-sha1-hash-in-zip-archive/wrong-file-sha1-hash-in-zip- archive.conf, functional-tests/wrong-file-sha1-hash-in-zip-archive /wrong-file-sha1-hash-in-zip-archive.zip, functional-tests/wrong- file-sha224-hash-in-tree/tree/bar, functional-tests/wrong-file- sha224-hash-in-tree/tree/dir/foo2, functional-tests/wrong-file- sha224-hash-in-tree/tree/foo, functional-tests/wrong-file-sha224 -hash-in-tree/wrong-file-sha224-hash-in-tree-list, functional-tests /wrong-file-sha224-hash-in-tree/wrong-file-sha224-hash-in-tree.conf, functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file- sha224-hash-in-zip-archive-list, functional-tests/wrong-file-sha224 -hash-in-zip-archive/wrong-file-sha224-hash-in-zip-archive.conf, functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file- sha224-hash-in-zip-archive.zip, functional-tests/wrong-file-sha256 -hash-in-tree/tree/bar, functional-tests/wrong-file-sha256-hash-in- tree/tree/dir/foo2, functional-tests/wrong-file-sha256-hash-in- tree/tree/foo, functional-tests/wrong-file-sha256-hash-in-tree /wrong-file-sha256-hash-in-tree-list, functional-tests/wrong-file- sha256-hash-in-tree/wrong-file-sha256-hash-in-tree.conf, functional- tests/wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash- in-zip-archive-list, functional-tests/wrong-file-sha256-hash-in-zip- archive/wrong-file-sha256-hash-in-zip-archive.conf, functional-tests /wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash-in- zip-archive.zip, functional-tests/wrong-file-sha384-hash-in- tree/tree/bar, functional-tests/wrong-file-sha384-hash-in- tree/tree/dir/foo2, functional-tests/wrong-file-sha384-hash-in- tree/tree/foo, functional-tests/wrong-file-sha384-hash-in-tree /wrong-file-sha384-hash-in-tree-list, functional-tests/wrong-file- sha384-hash-in-tree/wrong-file-sha384-hash-in-tree.conf, functional- tests/wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash- in-zip-archive-list, functional-tests/wrong-file-sha384-hash-in-zip- archive/wrong-file-sha384-hash-in-zip-archive.conf, functional-tests /wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash-in- zip-archive.zip, functional-tests/wrong-file-sha512-hash-in- tree/tree/bar, functional-tests/wrong-file-sha512-hash-in- tree/tree/dir/foo2, functional-tests/wrong-file-sha512-hash-in- tree/tree/foo, functional-tests/wrong-file-sha512-hash-in-tree /wrong-file-sha512-hash-in-tree-list, functional-tests/wrong-file- sha512-hash-in-tree/wrong-file-sha512-hash-in-tree.conf, functional- tests/wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash- in-zip-archive-list, functional-tests/wrong-file-sha512-hash-in-zip- archive/wrong-file-sha512-hash-in-zip-archive.conf, functional-tests /wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash-in- zip-archive.zip, functionaltests.py: functional tests to check hash in tar.gz,tar.bz2,zip and tree [23772e328b82] 2011-09-12 Carl Chenet * functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file- md5-hash-in-tar-bz2-archive-list, functional-tests/wrong-file-md5 -hash-in-tar-bz2-archive/wrong-file-md5-hash-in-tar- bz2-archive.conf, functional-tests/wrong-file-md5-hash-in-tar- bz2-archive/wrong-file-md5-hash-in-tar-bz2-archive.tar.bz2, functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file- md5-hash-in-tar-gz-archive-list, functional-tests/wrong-file-md5 -hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-archive.conf, functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file- md5-hash-in-tar-gz-archive.tar.gz, functional-tests/wrong-file-sha1 -hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz2-archive- list, functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive /wrong-file-sha1-hash-in-tar-bz2-archive.conf, functional-tests /wrong-file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in- tar-bz2-archive.tar.bz2, functional-tests/wrong-file-sha1-hash-in- tar-gz-archive/wrong-file-sha1-hash-in-tar-gz-archive-list, functional-tests/wrong-file-sha1-hash-in-tar-gz-archive/wrong-file- sha1-hash-in-tar-gz-archive.conf, functional-tests/wrong-file-sha1 -hash-in-tar-gz-archive/wrong-file-sha1-hash-in-tar-gz- archive.tar.gz, functional-tests/wrong-file-sha224-hash-in-tar- bz2-archive/wrong-file-sha224-hash-in-tar-bz2-archive-list, functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive/wrong- file-sha224-hash-in-tar-bz2-archive.conf, functional-tests/wrong- file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar- bz2-archive.tar.bz2, functional-tests/wrong-file-sha224-hash-in-tar- gz-archive/wrong-file-sha224-hash-in-tar-gz-archive-list, functional-tests/wrong-file-sha224-hash-in-tar-gz-archive/wrong- file-sha224-hash-in-tar-gz-archive.conf, functional-tests/wrong- file-sha224-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz- archive.tar.gz, functional-tests/wrong-file-sha256-hash-in-tar- bz2-archive/wrong-file-sha256-hash-in-tar-bz2-archive-list, functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive/wrong- file-sha256-hash-in-tar-bz2-archive.conf, functional-tests/wrong- file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar- bz2-archive.tar.bz2, functional-tests/wrong-file-sha256-hash-in-tar- gz-archive/wrong-file-sha224-hash-in-tar-gz-archive-list, functional-tests/wrong-file-sha256-hash-in-tar-gz-archive/wrong- file-sha224-hash-in-tar-gz-archive.conf, functional-tests/wrong- file-sha256-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz- archive.tar.gz, functional-tests/wrong-file-sha384-hash-in-tar- bz2-archive/wrong-file-sha384-hash-in-tar-bz2-archive-list, functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive/wrong- file-sha384-hash-in-tar-bz2-archive.conf, functional-tests/wrong- file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar- bz2-archive.tar.bz2, functional-tests/wrong-file-sha384-hash-in-tar- gz-archive/wrong-file-sha384-hash-in-tar-gz-archive-list, functional-tests/wrong-file-sha384-hash-in-tar-gz-archive/wrong- file-sha384-hash-in-tar-gz-archive.conf, functional-tests/wrong- file-sha384-hash-in-tar-gz-archive/wrong-file-sha384-hash-in-tar-gz- archive.tar.gz, functional-tests/wrong-file-sha512-hash-in-tar- bz2-archive/wrong-file-sha512-hash-in-tar-bz2-archive-list, functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive/wrong- file-sha512-hash-in-tar-bz2-archive.conf, functional-tests/wrong- file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar- bz2-archive.tar.bz2, functional-tests/wrong-file-sha512-hash-in-tar- gz-archive/wrong-file-sha512-hash-in-tar-gz-archive-list, functional-tests/wrong-file-sha512-hash-in-tar-gz-archive/wrong- file-sha512-hash-in-tar-gz-archive.conf, functional-tests/wrong- file-sha512-hash-in-tar-gz-archive/wrong-file-sha512-hash-in-tar-gz- archive.tar.gz, functionaltests.py: added functional tests for wrong hashes for files inside tar.gz and tar.bz2 [2bfc3500f864] 2011-09-11 Carl Chenet * functional-tests/unexpected-file-in-tar-bz2-archive/unexpected-file- in-tar-bz2-archive-list, functional-tests/unexpected-file-in-tar- bz2-archive/unexpected-file-in-tar-bz2-archive.conf, functional- tests/unexpected-file-in-tar-bz2-archive/unexpected-file-in-tar- bz2-archive.tar.bz2, functional-tests/unexpected-file-in-tar-gz- archive/unexpected-file-in-tar-gz-archive-list, functional-tests /unexpected-file-in-tar-gz-archive/unexpected-file-in-tar-gz- archive.conf, functional-tests/unexpected-file-in-tar-gz-archive /unexpected-file-in-tar-gz-archive.tar.gz, functional-tests /unexpected-file-in-tree/tree/bar, functional-tests/unexpected-file- in-tree/tree/dir/foo2, functional-tests/unexpected-file-in- tree/tree/foo, functional-tests/unexpected-file-in-tree/unexpected- file-in-tree-list, functional-tests/unexpected-file-in-tree /unexpected-file-in-tree.conf, functional-tests/unexpected-file-in- zip-archive/unexpected-file-in-zip-archive-list, functional-tests /unexpected-file-in-zip-archive/unexpected-file-in-zip-archive.conf, functional-tests/unexpected-file-in-zip-archive/unexpected-file-in- zip-archive.zip, functional-tests/wrong-file-gid-in-tree/tree/bar, functional-tests/wrong-file-gid-in-tree/tree/dir/foo2, functional- tests/wrong-file-gid-in-tree/tree/foo, functional-tests/wrong-file- gid-in-tree/wrong-file-gid-in-tree-list, functional-tests/wrong- file-gid-in-tree/wrong-file-gid-in-tree.conf, functional-tests /wrong-file-uid-in-tree/tree/bar, functional-tests/wrong-file-uid- in-tree/tree/dir/foo2, functional-tests/wrong-file-uid-in- tree/tree/foo, functional-tests/wrong-file-uid-in-tree/wrong-file- uid-in-tree-list, functional-tests/wrong-file-uid-in-tree/wrong- file-uid-in-tree.conf, functionaltests.py: added tests for unexpected files and for wrong uid/gid for files inside archives and tree [bc99823787ee] * merge queue use for multiprocessing communication in functionaltests.py [db22434bf8ca] * functionaltests.py: added queue for multiprocessing communication in functionaltests.py [220b09f434e7] * functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file-gid- in-tar-bz2-archive-list, functional-tests/wrong-file-gid-in-tar- bz2-archive/wrong-file-gid-in-tar-bz2-archive.conf, functional-tests /wrong-file-gid-in-tar-bz2-archive/wrong-file-gid-in-tar- bz2-archive.tar.bz2, functional-tests/wrong-file-gid-in-tar-gz- archive/wrong-file-gid-in-tar-gz-archive-list, functional-tests /wrong-file-gid-in-tar-gz-archive/wrong-file-gid-in-tar-gz- archive.conf, functional-tests/wrong-file-gid-in-tar-gz-archive /wrong-file-gid-in-tar-gz-archive.tar.gz, functional-tests/wrong- file-uid-in-tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive-list, functional-tests/wrong-file-uid-in-tar-bz2-archive/wrong-file-uid- in-tar-bz2-archive.conf, functional-tests/wrong-file-uid-in-tar- bz2-archive/wrong-file-uid-in-tar-bz2-archive.tar.bz2, functional- tests/wrong-file-uid-in-tar-gz-archive/wrong-file-uid-in-tar-gz- archive-list, functional-tests/wrong-file-uid-in-tar-gz-archive /wrong-file-uid-in-tar-gz-archive.conf, functional-tests/wrong-file- uid-in-tar-gz-archive/wrong-file-uid-in-tar-gz-archive.tar.gz, functionaltests.py: added locks for functional tests access to print and wrote uid/gid tests for file inside the archive [5a49fca42a81] * functionaltests.py: moving functional tests to functionaltests.py to use introspection in order to simplify the code [776096183e1f] * functional-tests.py, functionaltests.py: moving functional tests to functionaltests.py with introspection to simplify the code [487cc005d8d9] * using multiprocessing for functional tests [39c3bbd3148a] * legacy branch with uniprocess for functional tests [c52d7feef098] * functional-tests.py: added multiprocessing to execute functional tests [a4051701856a] 2011-09-10 Carl Chenet * functional-tests.py, functional-tests/wrong-zip-archive-md5-hash /wrong-zip-archive-md5-hash-list, functional-tests/wrong-zip- archive-md5-hash/wrong-zip-archive-md5-hash.conf, functional-tests /wrong-zip-archive-md5-hash/wrong-zip-archive-md5-hash.zip, functional-tests/wrong-zip-archive-sha1-hash/wrong-zip-archive-sha1 -hash-list, functional-tests/wrong-zip-archive-sha1-hash/wrong-zip- archive-sha1-hash.conf, functional-tests/wrong-zip-archive-sha1-hash /wrong-zip-archive-sha1-hash.zip, functional-tests/wrong-zip- archive-sha224-hash/wrong-zip-archive-sha224-hash-list, functional- tests/wrong-zip-archive-sha224-hash/wrong-zip-archive- sha224-hash.conf, functional-tests/wrong-zip-archive-sha224-hash /wrong-zip-archive-sha224-hash.zip, functional-tests/wrong-zip- archive-sha256-hash/wrong-zip-archive-sha256-hash-list, functional- tests/wrong-zip-archive-sha256-hash/wrong-zip-archive- sha256-hash.conf, functional-tests/wrong-zip-archive-sha256-hash /wrong-zip-archive-sha256-hash.zip, functional-tests/wrong-zip- archive-sha384-hash/wrong-zip-archive-sha384-hash-list, functional- tests/wrong-zip-archive-sha384-hash/wrong-zip-archive- sha384-hash.conf, functional-tests/wrong-zip-archive-sha384-hash /wrong-zip-archive-sha384-hash.zip, functional-tests/wrong-zip- archive-sha512-hash/wrong-zip-archive-sha512-hash-list, functional- tests/wrong-zip-archive-sha512-hash/wrong-zip-archive- sha512-hash.conf, functional-tests/wrong-zip-archive-sha512-hash /wrong-zip-archive-sha512-hash.zip: added functional tests to check the hashes of zip archives [9929a5e71dff] * functional-tests.py, functional-tests/wrong-tar-bz2-archive-md5-hash /wrong-tar-bz2-archive-md5-hash-list, functional-tests/wrong-tar-bz2 -archive-md5-hash/wrong-tar-bz2-archive-md5-hash.conf, functional- tests/wrong-tar-bz2-archive-md5-hash/wrong-tar-bz2-archive- md5-hash.tar.bz2, functional-tests/wrong-tar-bz2-archive-sha1-hash /wrong-tar-bz2-archive-sha1-hash-list, functional-tests/wrong-tar- bz2-archive-sha1-hash/wrong-tar-bz2-archive-sha1-hash.conf, functional-tests/wrong-tar-bz2-archive-sha1-hash/wrong-tar-bz2 -archive-sha1-hash.tar.bz2, functional-tests/wrong-tar-bz2-archive- sha224-hash/wrong-tar-bz2-archive-sha224-hash-list, functional-tests /wrong-tar-bz2-archive-sha224-hash/wrong-tar-bz2-archive- sha224-hash.conf, functional-tests/wrong-tar-bz2-archive-sha224-hash /wrong-tar-bz2-archive-sha224-hash.tar.bz2, functional-tests/wrong- tar-bz2-archive-sha256-hash/wrong-tar-bz2-archive-sha256-hash-list, functional-tests/wrong-tar-bz2-archive-sha256-hash/wrong-tar-bz2 -archive-sha256-hash.conf, functional-tests/wrong-tar-bz2-archive- sha256-hash/wrong-tar-bz2-archive-sha256-hash.tar.bz2, functional- tests/wrong-tar-bz2-archive-sha384-hash/wrong-tar-bz2-archive-sha384 -hash-list, functional-tests/wrong-tar-bz2-archive-sha384-hash /wrong-tar-bz2-archive-sha384-hash.conf, functional-tests/wrong-tar- bz2-archive-sha384-hash/wrong-tar-bz2-archive-sha384-hash.tar.bz2, functional-tests/wrong-tar-bz2-archive-sha512-hash/wrong-tar-bz2 -archive-sha512-hash-list, functional-tests/wrong-tar-bz2-archive- sha512-hash/wrong-tar-bz2-archive-sha512-hash.conf, functional-tests /wrong-tar-bz2-archive-sha512-hash/wrong-tar-bz2-archive- sha512-hash.tar.bz2, functional-tests/wrong-tar-gz-archive-md5-hash /wrong-tar-gz-archive-md5-hash-list, functional-tests/wrong-tar-gz- archive-md5-hash/wrong-tar-gz-archive-md5-hash.conf, functional- tests/wrong-tar-gz-archive-md5-hash/wrong-tar-gz-archive- md5-hash.tar.gz, functional-tests/wrong-tar-gz-archive-sha1-hash /wrong-tar-gz-archive-sha1-hash-list, functional-tests/wrong-tar-gz- archive-sha1-hash/wrong-tar-gz-archive-sha1-hash.conf, functional- tests/wrong-tar-gz-archive-sha1-hash/wrong-tar-gz-archive- sha1-hash.tar.gz, functional-tests/wrong-tar-gz-archive-sha224-hash /wrong-tar-gz-archive-sha224-hash-list, functional-tests/wrong-tar- gz-archive-sha224-hash/wrong-tar-gz-archive-sha224-hash.conf, functional-tests/wrong-tar-gz-archive-sha224-hash/wrong-tar-gz- archive-sha224-hash.tar.gz, functional-tests/wrong-tar-gz-archive- sha256-hash/wrong-tar-gz-archive-sha256-hash-list, functional-tests /wrong-tar-gz-archive-sha256-hash/wrong-tar-gz-archive- sha256-hash.conf, functional-tests/wrong-tar-gz-archive-sha256-hash /wrong-tar-gz-archive-sha256-hash.tar.gz, functional-tests/wrong- tar-gz-archive-sha384-hash/wrong-tar-gz-archive-sha384-hash-list, functional-tests/wrong-tar-gz-archive-sha384-hash/wrong-tar-gz- archive-sha384-hash.conf, functional-tests/wrong-tar-gz-archive- sha384-hash/wrong-tar-gz-archive-sha384-hash.tar.gz, functional- tests/wrong-tar-gz-archive-sha512-hash/wrong-tar-gz-archive-sha512 -hash-list, functional-tests/wrong-tar-gz-archive-sha512-hash/wrong- tar-gz-archive-sha512-hash.conf, functional-tests/wrong-tar-gz- archive-sha512-hash/wrong-tar-gz-archive-sha512-hash.tar.gz: added functional tests to check the hashes of tar.gz and tar.bz2 archives [5c5a23ba7962] * functional-tests.py, functional-tests/wrong-tar-bz2-archive-gid /wrong-tar-bz2-archive-gid-list, functional-tests/wrong-tar-bz2 -archive-gid/wrong-tar-bz2-archive-gid.conf, functional-tests/wrong- tar-bz2-archive-gid/wrong-tar-bz2-archive-gid.tar.bz2, functional- tests/wrong-tar-gz-archive-gid/wrong-tar-gz-archive-gid-list, functional-tests/wrong-tar-gz-archive-gid/wrong-tar-gz-archive- gid.conf, functional-tests/wrong-tar-gz-archive-gid/wrong-tar-gz- archive-gid.tar.gz, functional-tests/wrong-zip-archive-gid/wrong- zip-archive-gid-list, functional-tests/wrong-zip-archive-gid/wrong- zip-archive-gid.conf, functional-tests/wrong-zip-archive-gid/wrong- zip-archive-gid.zip: added functional test to check the gid of an archive [e2bd224cc928] * functional-tests.py, functional-tests/wrong-tar-bz2-archive-uid /wrong-tar-bz2-archive-uid-list, functional-tests/wrong-tar-bz2 -archive-uid/wrong-tar-bz2-archive-uid.conf, functional-tests/wrong- tar-bz2-archive-uid/wrong-tar-bz2-archive-uid.tar.bz2, functional- tests/wrong-tar-gz-archive-uid/wrong-tar-gz-archive-uid-list, functional-tests/wrong-tar-gz-archive-uid/wrong-tar-gz-archive- uid.conf, functional-tests/wrong-tar-gz-archive-uid/wrong-tar-gz- archive-uid.tar.gz, functional-tests/wrong-zip-archive-uid/wrong- zip-archive-uid-list, functional-tests/wrong-zip-archive-uid/wrong- zip-archive-uid.conf, functional-tests/wrong-zip-archive-uid/wrong- zip-archive-uid.zip: added functional test to check the uid of an archive [8ef16e8f6bf9] * functional-tests.py, functional-tests/wrong-tar-bz2-archive-mode /wrong-tar-bz2-archive-mode-list, functional-tests/wrong-tar-bz2 -archive-mode/wrong-tar-bz2-archive-mode.conf, functional-tests /wrong-tar-bz2-archive-mode/wrong-tar-bz2-archive-mode.tar.bz2, functional-tests/wrong-tar-gz-archive-mode/wrong-tar-gz-archive- mode-list, functional-tests/wrong-tar-gz-archive-mode/wrong-tar-gz- archive-mode.conf, functional-tests/wrong-tar-gz-archive-mode/wrong- tar-gz-archive-mode.tar.gz, functional-tests/wrong-zip-archive-mode /wrong-zip-archive-mode-list, functional-tests/wrong-zip-archive- mode/wrong-zip-archive-mode.conf, functional-tests/wrong-zip- archive-mode/wrong-zip-archive-mode.zip: added functional test to check the mode of an archive [954c28ce74ca] * functional-tests.py, functional-tests/file-missing-in-tree/file- missing-in-tree-list, functional-tests/file-missing-in-tree/file- missing-in-tree.conf, functional-tests/file-missing-in- tree/tree/bar, functional-tests/file-missing-in-tree/tree/dir/foo2, functional-tests/file-missing-in-tree/tree/foo: added functional test to check file missing in tree [eed185dada19] 2011-09-09 Carl Chenet * functional-tests.py, functional-tests/file-missing-in-tar-bz2/file- missing-in-tar-bz2-list, functional-tests/file-missing-in-tar-bz2 /file-missing-in-tar-bz2.conf, functional-tests/file-missing-in-tar- bz2/file-missing-in-tar-bz2.tar.bz2, functional-tests/file-missing- in-tar-gz/file-missing-in-tar-gz-list, functional-tests/file- missing-in-tar-gz/file-missing-in-tar-gz.conf, functional-tests /file-missing-in-tar-gz/file-missing-in-tar-gz.tar.gz, functional- tests/file-missing-in-zip/file-missing-in-zip-list, functional-tests /file-missing-in-zip/file-missing-in-zip.conf, functional-tests /file-missing-in-zip/file-missing-in-zip.zip: adding functional tests to complete unittests [0a798939e2bd] 2011-09-07 Carl Chenet * brebis/checktree.py, tests.py, tests/expected_hash/filetree-list, tests/expected_mode/treefiles-list, tests/expected_type/filetree- list, tests/filetree/filelist: improved the syntax of the list of files for tree [8f77dec4298d] * brebis/expectedvalues.py: catch correctly ConfigParser errors from the expected values file [1cc0f941da3f] * brebis/checkbackups.py, brebis/checkzip.py: fixed corrupted zip detection [29a5882881ac] 2011-09-06 Carl Chenet * brebis/configurations.py, brebis/expectedvalues.py, tests/expected_hash/archash/md5hashtararchive-list, tests/expected_hash/archash/md5hashziparchive-list, tests/expected_hash/archash/sha1hashtararchive-list, tests/expected_hash/archash/sha1hashziparchive-list, tests/expected_hash/archash/sha224hashtararchive-list, tests/expected_hash/archash/sha224hashziparchive-list, tests/expected_hash/archash/sha256hashtararchive-list, tests/expected_hash/archash/sha256hashziparchive-list, tests/expected_hash/archash/sha384hashtararchive-list, tests/expected_hash/archash/sha384hashziparchive-list, tests/expected_hash/archash/sha512hashtararchive-list, tests/expected_hash/archash/sha512hashziparchive-list: fixed unpleasant syntax for the hash of the expected archive [f7a4c8ab3f5e] 2011-06-25 Carl Chenet * merge with most recent branch [61e6084cd409] 2011-06-24 Carl Chenet * brebis/configurations.py, tests.py, tests/test_conf/subdir/archive2.conf, tests/test_conf/subdir/toto /essai-list, tests/test_conf/subdir/toto/essai.tar.gz: issues with relative links fixed thanks to absolute links use [16dff99f984f] 2011-06-23 Carl Chenet * brebis/configurations.py, tests.py, tests/test_conf/archive.conf, tests/test_conf/essai-list, tests/test_conf/essai.tar.gz: relative paths issues [56f61a0425bd] * scripts/brebis: correct error in the call of the main module [da5f396fdf2d] * brebis/configurations.py: stop execution when two configurations have the same name [3ed2f003b131] * tests.py: added expectFailure for tests with sticky bits and special files (user should fix it by himself after checking out the repository) [b4274b6c420a] * tests/expected_mode/foo/bar: added missing file bar with 755 rights [84c5c0260ba1] 2011-05-15 Carl Chenet * setup.py: hopefully last test for buildbot [3a8c507b908d] 2011-04-26 Carl Chenet * setup.py: added restrictions on python versions able to install Brebis [d3c7cdf8c4c5] 2011-05-16 Carl Chenet * scripts/brebis: added absolute path to main module [8b42fb41f686] 2011-05-15 Carl Chenet * setup.py: again again a test for buildbot [49ac5f02b5f3] * setup.py: again a simple test [f15e06568dbf] * setup.py: simple test for buildbot [da265bc90b79] 2011-04-22 Carl Chenet * brebis/applogger.py, brebis/archiveinfomsg.py, brebis/checkarchive.py, brebis/checkbackups.py, brebis/checkhashes.py, brebis/checktar.py, brebis/checktree.py, brebis/checkzip.py, brebis/cliparse.py, brebis/configurations.py, brebis/expectedvalues.py, brebis/main.py, tests.py: updated copyright mentions [f738e3d3bac6] * setup.py: good path to brebis script [4d0283251e5a] * applogger.py, archiveinfomsg.py, brebis, brebis/__init__.py, brebis/applogger.py, brebis/archiveinfomsg.py, brebis/checkarchive.py, brebis/checkbackups.py, brebis/checkhashes.py, brebis/checktar.py, brebis/checktree.py, brebis/checkzip.py, brebis/cliparse.py, brebis/configurations.py, brebis/expectedvalues.py, brebis/main.py, checkarchive.py, checkbackups.py, checkhashes.py, checktar.py, checktree.py, checkzip.py, cliparse.py, configurations.py, expectedvalues.py, main.py, scripts/brebis, tests.py: modified package structure [4ed132adb9bb] * setup.py: using distutils with setup.py [81e8e107d79d] * setup.py: corrected an error in setup.py [7de0094b5df5] * setup.py: added setup.py [bf7dd219a794] 2011-04-09 Carl Chenet * tests.py, tests/checkarchive_private_methods/mytar.tar.gz, tests/checkarchive_private_methods/tar-list: added unit tests for private methods of CheckArchive and uid-gid of the archive itself [5e179234a37f] 2011-04-08 Carl Chenet * archiveinfomsg.py, checkarchive.py, expectedvalues.py, tests.py, tests/expected_uid_gid/arc_uid_gid/tar-uid-gid-list, tests/expected_uid_gid/arc_uid_gid/tar-uid-gid.conf, tests/expected_uid_gid/arc_uid_gid/uid-gid.tar.gz, tests/expected_uid_gid/arc_uid_gid/uid-gid.zip, tests/expected_uid_gid/arc_uid_gid/zip-uid-gid-list, tests/expected_uid_gid/arc_uid_gid/zip-uid-gid.conf: added support for checking uid gid of the archive itself [cf19aa68475e] 2011-04-07 Carl Chenet * archiveinfomsg.py, checkarchive.py, checktar.py, checkzip.py, expectedvalues.py, tests.py, tests/expected_mode/arcmode/mode4644.tar.gz, tests/expected_mode/arcmode/mode4644.zip, tests/expected_mode/arcmode/mode644.tar.gz, tests/expected_mode/arcmode/mode644.zip, tests/expected_mode/arcmode/mode755.tar.gz, tests/expected_mode/arcmode/mode755.zip, tests/expected_mode/arcmode/tarmode4644-list, tests/expected_mode/arcmode/tarmode4644.conf, tests/expected_mode/arcmode/tarmode644-list, tests/expected_mode/arcmode/tarmode644.conf, tests/expected_mode/arcmode/tarmode755-list, tests/expected_mode/arcmode/tarmode755.conf, tests/expected_mode/arcmode/zipmode4644-list, tests/expected_mode/arcmode/zipmode4644.conf, tests/expected_mode/arcmode/zipmode644-list, tests/expected_mode/arcmode/zipmode644.conf, tests/expected_mode/arcmode/zipmode755-list, tests/expected_mode/arcmode/zipmode755.conf: added support for checking the mode of the archive itself [034cf411560c] 2011-04-06 Carl Chenet * checkarchive.py, checktar.py, checkzip.py: moved archive checks to checkarchive.py [686717d38a7a] * checkarchive.py, checktar.py, checkzip.py, expectedvalues.py, tests.py, tests/expected_hash/archash/md5hashtararchive-list, tests/expected_hash/archash/md5hashtararchive.conf, tests/expected_hash/archash/md5hashziparchive-list, tests/expected_hash/archash/md5hashziparchive.conf, tests/expected_hash/archash/mytar.tar.gz, tests/expected_hash/archash/myzip.zip, tests/expected_hash/archash /sha1hashtararchive-list, tests/expected_hash/archash/sha1hashtararchive.conf, tests/expected_hash/archash/sha1hashziparchive-list, tests/expected_hash/archash/sha1hashziparchive.conf, tests/expected_hash/archash/sha224hashtararchive-list, tests/expected_hash/archash/sha224hashtararchive.conf, tests/expected_hash/archash/sha224hashziparchive-list, tests/expected_hash/archash/sha224hashziparchive.conf, tests/expected_hash/archash/sha256hashtararchive-list, tests/expected_hash/archash/sha256hashtararchive.conf, tests/expected_hash/archash/sha256hashziparchive-list, tests/expected_hash/archash/sha256hashziparchive.conf, tests/expected_hash/archash/sha384hashtararchive-list, tests/expected_hash/archash/sha384hashtararchive.conf, tests/expected_hash/archash/sha384hashziparchive-list, tests/expected_hash/archash/sha384hashziparchive.conf, tests/expected_hash/archash/sha512hashtararchive-list, tests/expected_hash/archash/sha512hashtararchive.conf, tests/expected_hash/archash/sha512hashziparchive-list, tests/expected_hash/archash/sha512hashziparchive.conf: added support for hash checking for the archive itself [0a1d86e264eb] * archiveinfomsg.py: modified messages to cope with the check results for the archive itself [f0a32af01e78] 2011-04-05 Carl Chenet * tests/file_size/arcsize/biggerthantararcsize-list, tests/file_size/arcsize/biggerthanziparcsize-list, tests/file_size/arcsize/equaltararcsize-list, tests/file_size/arcsize/equalziparcsize-list, tests/file_size/arcsize/smallerthantararcsize-list, tests/file_size/arcsize/smallerthanziparcsize-list: using : instead of = with configparser in attribute lists [a3db5399dcc9] * checkarchive.py, checktar.py, checktree.py, checkzip.py, expectedfiles.py, expectedvalues.py, tests.py, tests/file_size/arcsize/biggerthantararchivesize.conf, tests/file_size/arcsize/biggerthantararcsize-list, tests/file_size/arcsize/biggerthanziparchivesize.conf, tests/file_size/arcsize/biggerthanziparcsize-list, tests/file_size/arcsize/equaltararchivesize.conf, tests/file_size/arcsize/equaltararcsize-list, tests/file_size/arcsize/equalziparchivesize.conf, tests/file_size/arcsize/equalziparcsize-list, tests/file_size/arcsize/smallerthantararchivesize.conf, tests/file_size/arcsize/smallerthantararcsize-list, tests/file_size/arcsize/smallerthanziparchivesize.conf, tests/file_size/arcsize/smallerthanziparcsize-list: checking the size (equal/biggerthan/smallerthan) of the archive itself is now available - tests and uniitests also ready [9caf898e3c52] * brebis: bump shebang to python3.2 [f7bfb55d457d] * archiveinfomsg.py: modified equal/bigger/smaller messages to cope with the archives themselves [8a1bf9634c6b] * tests/file_size/essai-list, tests/file_size/essai.tar.bz2: resized the test archive and fixed the associated value [20cd78504606] 2011-04-04 Carl Chenet * tests.py: replaced expectedfiles class and module by expectedvalues [dcbd04d60cde] * configurations.py: fixed a ResourceWarning warning [08087d62ea45] * cliparse.py: using hashlib.algorithms_guaranteed starting with python3.2 [4645edc3fb75] * checktar.py, checktree.py, checkzip.py: changed expectedfiles class and module by expectedvalues [64779a64f926] * checkhashes.py: fixed descriptor issue triggering a ResourceWarning with python 3.2 [3d16bdc802ae] 2010-12-06 Carl Chenet * applogger.py, archiveinfomsg.py, checkarchive.py, checkbackups.py, checkhashes.py, cliparse.py, configurations.py, expectedfiles.py, expectedobjects.py, main.py: added information in the docstrings [21c5275d10e2] * checkbackups.py, checkdb.py, configurations.py, expecteddbobjects.py, expectedobjects.py, tests.py, tests/db_mysql_test/mysql-list, tests/db_mysql_test/mysql.conf, tests/db_postgresql_test/postgresql-list, tests/db_postgresql_test/postgresql.conf, tests/db_sqlite_test/mydata.db, tests/db_sqlite_test/nothing.db, tests/db_sqlite_test/sqlite-list, tests/db_sqlite_test/sqlite.conf: got rid of database controls - see database support branch from now on [c83b49997410] * tests/db_mysql_database_test/mysql-list: added mysql list of objects to check [d557e0a918cd] * checkdb.py, tests/db_mysql_database_test/mysql.conf, tests/db_mysql_table_test/mysql-list, tests/db_mysql_table_test/mysql.conf, tests/db_mysql_test/mysql- list, tests/db_mysql_test/mysql.conf, tests/db_postgresql_table_test /postgresql-list, tests/db_postgresql_table_test/postgresql.conf, tests/db_postgresql_test/postgresql-list, tests/db_postgresql_test/postgresql.conf, tests/db_sqlite_table_test/mydata.db, tests/db_sqlite_table_test/nothing.db, tests/db_sqlite_table_test /sqlite-list, tests/db_sqlite_table_test/sqlite.conf, tests/db_sqlite_test/mydata.db, tests/db_sqlite_test/nothing.db, tests/db_sqlite_test/sqlite-list, tests/db_sqlite_test/sqlite.conf: created a branch with the database support for further enhancement [607f05119999] 2010-12-01 Carl Chenet * checkbackups.py, tests/db_mysql_test/mysql-list, tests/db_postgresql_test/postgresql.conf: added tests for existing table in mysql and postgresql databases [4748fcc9746e] 2010-11-22 Carl Chenet * added support for hash control of a file inside an archive [272ec06690b8] * archiveinfomsg.py, checkarchive.py, checkhashes.py, checktar.py, checktree.py, checkzip.py, expectedfiles.py, tests.py, tests/expected_hash/bar.zip, tests/expected_hash/bar/bar1, tests/expected_hash/bar/bar2, tests/expected_hash/bar/bar3, tests/expected_hash/bar/bar4, tests/expected_hash/bar/bar5, tests/expected_hash/bar/bar6, tests/expected_hash/files-list, tests/expected_hash/filetree-list, tests/expected_hash/foos.tar.gz, tests/expected_hash/tar.conf, tests/expected_hash/tree.conf, tests/expected_hash/zip-list, tests/expected_hash/zip.conf: added support for hash control in archives (zip,tar and filetree) [c11ff8b2ab04] 2010-11-20 Carl Chenet * expectedfiles.py: changed the string required to identify the mode parameter [245b730f43a2] 2010-11-18 Carl Chenet * archiveinfomsg.py, checkarchive.py, checktar.py, checktree.py, expectedfiles.py, tests.py, tests/expected_type/archive.conf, tests/expected_type/files-list, tests/expected_type/filetree-list, tests/expected_type/foos.tar.gz, tests/expected_type/foos/bar/bar1, tests/expected_type/foos/foo1, tests/expected_type/foos/foo2, tests/expected_type/foos/foo3, tests/expected_type/foos/foo4, tests/expected_type/foos/foo5, tests/expected_type/foos/foo6, tests/expected_type/tree.conf: support for expected types for both tarfiles and filetree [94acb5aafad6] 2010-11-14 Carl Chenet * merge branch dedicated to support for expected modes in filetree [f5b436648582] * checktree.py, tests.py, tests/expected_mode/foo/foo1, tests/expected_mode/tree.conf, tests/expected_mode/treefiles-list, tests/filetree/filelist: added support for expected modes for filetree [0855cdec8c17] * archiveinfomsg.py, checkarchive.py, checktar.py, expectedfiles.py, tests.py, tests/expected_mode/archive.conf, tests/expected_mode /files-list, tests/expected_mode/foos.tar.gz: adde support for expected file mode for archives [8d5a4bb82617] 2010-11-13 Carl Chenet * checktree.py, tests/filetree/filelist, tests/filetree/filetree.conf, tests/filetree/foo/bar/foo3, tests/filetree/foo/foo1, tests/filetree/foo/foo2: added support for uid/gid parameter for filetree [0d842f1fe13c] * checkzip.py: added support for zip64 (zip files > 4G) [65725d9c96ea] * expectedfiles.py: catch uid/gid wrong parameters with ValueError exception [36926fbb20ca] 2010-11-12 Carl Chenet * archiveinfomsg.py, checkarchive.py, checkbackups.py, checktar.py, checktree.py, checkzip.py, expectedfiles.py, tests.py, tests/expected_uid_gid/archive.conf, tests/expected_uid_gid/files- list, tests/expected_uid_gid/foo.tar.gz, tests/expected_uid_gid/foos.tar.gz, tests/expected_uid_gid /multiplefiles-list, tests/expected_uid_gid/multiplefiles.conf, tests/file_size/archive.conf, tests/file_size/zip.conf, tests/zip/cryptedzip.zip, tests/zip/mycryptedzip.conf, tests/zip /myzip-list, tests/zip/myzip.conf, tests/zip/myzip.zip, tests/zip_content/myzip-list, tests/zip_content/myzip.conf, tests/zip_content/myzip.zip: added support for uid/gid checks [334f5364bc10] 2010-11-11 Carl Chenet * archiveinfomsg.py, checkarchive.py, expectedfiles.py, tests.py, tests/unexpected_files/archive.conf, tests/unexpected_files/files- list, tests/unexpected_files/foo.tar.gz: added support for unexpected files [26c8c0f17639] 2010-11-10 Carl Chenet * expectedfiles.py: added support for multiple items for a file [87d72c14ec57] 2010-11-09 Carl Chenet * tests.py: added good test for ExpectedFiles class [37db35704eb8] * cliparse.py: corrected a runtime error [96acb4d8ca5f] 2010-11-08 Carl Chenet * applogger.py, archiveinfomsg.py, checkarchive.py, checkdb.py, checkhashes.py, cliparse.py, configurations.py, expectedfiles.py: conforming to pep008 [c751cb9a5ca9] * tests.py, tests/corrupted_archive/MD5SUMS, tests/corrupted_archive/archive.conf, tests/corrupted_archive/corrupted.conf, tests/corrupted_archive/corrupted.tar.gz, tests/corrupted_archive /essai-list, tests/corrupted_archive/essai.tar.gz, tests/corrupted_archives/MD5SUMS, tests/corrupted_archives/SHA1SUMS, tests/corrupted_archives/SHA224SUMS, tests/corrupted_archives/SHA256SUMS, tests/corrupted_archives/SHA384SUMS, tests/corrupted_archives/SHA512SUMS, tests/corrupted_archives/md5-corrupted.tar.gz, tests/corrupted_archives/sha1-corrupted.tar.gz, tests/corrupted_archives/sha224-corrupted.tar.bz2, tests/corrupted_archives/sha256-corrupted.tar.gz, tests/corrupted_archives/sha384-corrupted.tar.bz2, tests/corrupted_archives/sha512-corrupted.tar.gz: added unittests for md5,sha1,sha224,sha256,sha384 and sha512 sums [dba7700ed8ab] 2010-11-07 Carl Chenet * merging default and with-expectedfiles-configparser branches [fbc1bd2be417] * archiveinfomsg.py, expectedfiles.py, tests.py, tests/corrupted_archive/essai-list, tests/file_size/essai-list, tests/file_size/essai-list2, tests/filetree/filelist, tests/tar_bz2_archive_content/essai2-list, tests/tar_gz_archive_content/essai-list, tests/zip_content/myzip- list: lists of files now use configparser. tests.py modified accordingly [8cdfd18e3214] 2010-07-27 Carl Chenet * new branch : with expectedfiles.py using configparser [e88830c806ac] * tests/db_postgresql_test/postgresql-list, tests/db_postgresql_test/postgresql.conf: added files for postgresql support [d71d95530706] * configurations.py: correcting a regression [9962a59ca205] 2010-06-14 Carl Chenet * checkdb.py: personalizing the error message depending if you use sqlite or other databases [ae75f23e3a1b] * tests/db_mysql_test/mysql-list: using a table which does not exist [dfc6bb155917] * tests/db_mysql_test/mysql.conf: updated the path to mysql-list [b7dff297a240] * tests/db_mysql_test/mysql-list, tests/db_mysql_test/mysql.conf, tests/db_sqlite_test/mydata.db, tests/db_sqlite_test/nothing.db, tests/db_sqlite_test/sqlite-list, tests/db_sqlite_test/sqlite.conf, tests/db_test/mydata.db, tests/db_test/mysql-list, tests/db_test/mysql.conf, tests/db_test/nothing.db, tests/db_test /sqlite-list, tests/db_test/sqlite.conf: splitting db_test/ in db_mysql_test/ and db_sqlite_test/ [e2881915625e] * configurations.py: using 127.0.0.1 as default for dbhost [30a73c57a0b6] * configurations.py: restricting database types allowed to be specified by users [a995f9d3e8b5] 2010-06-11 Carl Chenet * checkdb.py, configurations.py, tests/db_test/mysql-list, tests/db_test/mysql.conf, tests/db_test/nothing.db, tests/db_test/sqlite.conf: added support for mysql database and postgresql database [9cd6782c888a] 2010-05-18 Carl Chenet * checkhashes.py: switch from double quotes to single quotes for comments [ca39eafbcf1f] * configurations.py: fixed a mispelled word [6720446d8225] * applogger.py, brebislogger.py, cliparse.py, main.py, tests.py: removed the brebis name [b4b5249424be] * tests.py: removed absolute paths in zip test [d217cd9f3e95] * tests/myzip-list, tests/myzip.conf, tests/myzip.zip, tests/zip_content/myzip-list, tests/zip_content/myzip.conf, tests/zip_content/myzip.zip: added a new zip_content directory in the test directory [ebad9a034f69] * tests.py: modifying zip test to follow the new test directory structure [67a29ebd764c] * checkdb.py: removed mysql broken support for 1.0 [ebb33236e73b] 2010-05-17 Carl Chenet * tests.py, tests/archive.conf, tests/archive2.conf, tests/essai-list, tests/essai.tar.gz, tests/essai2-list, tests/tar_bz2_archive_content/archive2.conf, tests/tar_bz2_archive_content/essai2-list, tests/tar_bz2_archive_content/titi.tar.bz2, tests/tar_gz_archive_content/archive.conf, tests/tar_gz_archive_content/essai-list, tests/tar_gz_archive_content/essai.tar.gz, tests/titi.tar.bz2: ugly moves to reorganize the test directory [6df83bd518a2] * expectedfiles.py: loop for kilo, mega, giga, whatever [e86f5c86ae5c] 2010-01-05 Carl Chenet * tests/db_test/mysql-list, tests/db_test/mysql.conf: Removing tests on mysql until it's supported by mysql driver from sqlalchemy [66fc4c10941b] * tests.py: Added test on dbname value in the database test [f9a36cee51b7] * checkbackups.py: Removed useless comments [8e8d4a72cba9] * checkarchive.py: Removed a false comment [1be933334371] 2009-12-19 Carl Chenet * checkdb.py: Modifying the checks for db to be more flexible [35a813bd931d] 2009-12-16 Carl Chenet * tests/db_test/db.conf, tests/db_test/sqlite3-list: Remove useless files [ed9c95a0220c] * tests/db_test/mysql.conf: Configuration for mysql [623324a33a31] * configurations.py: Added support for dbname [d99fd8a353cc] * tests/db_test/mysql-list, tests/db_test/mysql.conf: files to test mysql [30c4385e065c] * tests/db_test/sqlite-list, tests/db_test/sqlite.conf: Suppressed data relative to sqlite3 [60db5d611fa2] * checkbackups.py: Removed useless comments [c6726594a881] 2009-12-15 Carl Chenet * tests/db_test/db.conf: Modifying according to the new keyword sqlite to identify a sqlite database [30e73775df19] * archiveinfomsg.py, checkbackups.py: Splitting checkbackups.py [906f930dfc71] * expectedfiles.py: Style improvement: switched from docstrings with double quotes to single quote. [d81d46444ebf] * expecteddbobjects.py: Style improvement: switched from docstrings with double quotes to single quote. [db72bf579f17] * tests.py: Style improvement: switched from docstrings with double quotes to single quote. [e98a0af82a2f] * checkdb.py: Simplifying the process to check a database [f70f9533866a] * checkarchive.py: Style improvement: switched from docstrings with double quotes to single quote. [2ddd2db94b30] * checkzip.py: Style improvement: switched from docstrings with double quotes to single quote. Old comments also removed. [a029a0cd838d] * checktree.py: Style improvement: switched from docstrings with double quotes to single quote [28ff6abc4b47] * main.py: Style improvement: switched from docstrings with double quotes to single quote [bb81288166f1] * cliparse.py: Style improvement: switched from docstrings with double quotes to single quote [6943e119b62f] * checktar.py: Style improvement: switched from docstrings with double quotes to single quote [87924434c5b0] * brebislogger.py: Style improvement: switched from docstrings with double quotes to single quote [0f547a3eaaa6] 2009-12-13 Carl Chenet * checkdb.py, expecteddbobjects.py, tests/db_test/db.conf: Support for sqlite databases [87f4d0d87a23] * expectedobjects.py: expectedobjects.py provides useful methods regarding the expected objects (files, database objects) we need [c80eca6ebcd0] * tests/db_test/sqlite3-list: A file to test what database object exists [fc7c10f4b694] * checkbackups.py: checkbackups.py now supports databases. Also some style improvements [af17dab0dc00] * configurations.py: The Configuration class now manages sqlite databases [3e5288ff9ef1] * tests.py: Modified the configuration class test [a63201cb4c76] 2009-12-11 Carl Chenet * configurations.py, tests.py, tests/db_test/db.conf, tests/db_test/mydata.db: Added files to test sqlite3 db integrity [01143c0cf973] * tests.py, tests/file_size/essai-list, tests/file_size/essai-list2, tests/file_size/essai.tar.bz2, tests/file_size/myzip.zip, tests/filetree/filelist: Added complete series of tests for archive backups [e7f91df8a075] 2009-12-09 Carl Chenet * tests.py: Added unit tests for checktree module [ec31a9f69349] * tests/filetree/filelist: Modified the tests/filetree/filelist for checking equality [52370af9e2f3] * checktree.py: Removed a useless print [ded995212a2a] * tests/filetree/filelist, tests/filetree/foo/bar/foo3, tests/filetree/foo/foo1, tests/filetree/foo/foo2: Added some files to test the tree file backups [e8707c5963fe] * checkbackups.py, checktree.py: Added support for file trees as a backup [639d0319d400] * brebislogger.py: Switched level logging from INFO to WARNING [ceb0190fc3b5] 2009-12-05 Carl Chenet * tests/file_size/essai-list, tests/filetree/filelist, tests/filetree/filetree.conf, tests/filetree/foo/bar/foo3, tests/filetree/foo/foo1, tests/filetree/foo/foo2, tests/test_conf/archive.conf: Added some files for tests [64eb7d52c341] * configurations.py, tests.py: Check if the backup path from the configuration exists [52dd882b8419] * main.py: Removed a useless print [fd7836f2dd04] * configurations.py: Removed useless error messages [6d6b31246ad8] * checkbackups.py, checkhashes.py, checkzip.py, expectedfiles.py, tests.py: Switched logging level from info to warn [01a3ba752a5e] * checkbackups.py: Addes a docstring for __main [ca11818f3028] 2009-12-04 Carl Chenet * expectedfiles.py: Fixed a typo [376086a21d99] * checktar.py: Fixed an issue with managing exceptions [7d89adb1bdda] * cliparse.py: Added a default for logfile and confpath [7d034f952fd3] * cliparse.py: Fixed a small typo. Improved the hashtype option help message. [f73c327503b2] * brebislogger.py, checkhashes.py, checktar.py, checkzip.py, cliparse.py, configurations.py, expectedfiles.py, main.py: Fixed variables visibility issues. Paths from cliparse are now absolute paths [5890abc09f04] 2009-12-03 Carl Chenet * checkarchive.py, checktar.py, checkzip.py, tests.py, tests/file_size /essai-list, tests/file_size/essai-list2, tests/file_size/myzip.zip, tests/file_size/zip.conf: Both zip and tar archive types are supported. The code has been efficiently reduced. [fc8b9ffda817] * checkbackups.py, checktar.py, expectedfiles.py, tests/file_size /essai-list: Reducing redundant code [74532ba88496] * .hgignore: Ignoring files named a.out [44cbe0e302c7] * tests/file_size/archive.conf, tests/file_size/essai-list, tests/file_size/essai.tar.bz2: These files help to test the new code for conditions on file sizes [d19975d935e6] * checkarchive.py, checkbackups.py, checktar.py, checkzip.py, cliparse.py, expectedfiles.py, main.py, tests.py: checkarchive.py will factorize checktar.py and checkzip.py [1bd20b7983ff] 2009-11-28 Carl Chenet * main.py, tests.py, tests/myzip-list: new unit tests [c5edcba85ae6] 2009-11-27 Carl Chenet * .hgignore: .hgignore to get rid of *.pyc [d1d19224fb11] * cliparse.py, tests/corrupted_archive/MD5SUMS, tests/corrupted_archive/archive.conf, tests/corrupted_archive/corrupted.conf, tests/corrupted_archive/corrupted.tar.gz, tests/corrupted_archive /essai-list, tests/corrupted_archive/essai.tar.gz, tests/myzip-list, tests/myzip.conf, tests/myzip.zip: Some files to test Brebis [ff33893ed54c] * checkbackups.py, checkhashes.py, checktar.py, checkzip.py, cliparse.py, main.py, tests.py: checkzip.py provides checks for zip files, checkhashes.py provides md5 sums checks for backups before proceeding [8710ec3bf711] 2009-11-25 Carl Chenet * tests/essai-list, tests/essai2-list, tests/test_conf/archive.conf: some files for the unit tests [44b3b61d35cc] * tests.py: tests.py provides unit tests for Belier - 89% of code coverage for now [b257c6e05b5a] * expectedfiles.py: expectedfiles.py provides the paths for expected files inside the archive [581ab67e4c66] * brebislogger.py, checkbackups.py, checktar.py, cliparse.py, configurations.py, main.py, tests/archive.conf, tests/archive2.conf: brebislogger.py defines a logger for the Brebis events [e30d0846a24c] 2009-11-23 Carl Chenet * tests/archive.conf, tests/archive2.conf, tests/essai.tar.gz, tests/titi.tar.bz2: Added the test directory and some test elements under it. [cac6605d19ea] * checktar.py: Added checktar.py which checks tar files. [113c92d953d6] * checkbackups.py: Added checkbackups.py which knows what to do with each kind of backup we meet. [63b784550502] * configurations.py: Added configurations.py which extracts the different information about archives and (in the future) dumps we have to check. [593062c08ff2] * cliparse.py: Added cliparse.py which parses the command line options and args. [b12493006c30] * main.py: Added main.py which provides the Main class of Brebis. [28c2b982e5a0] * brebis: Added brebis file to call the main. [11f5fc6b4bfc] brebis-0.10/docs/Makefile0000644000000000000000000001516312462537262013435 0ustar 00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/brebis.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/brebis.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/brebis" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/brebis" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." brebis-0.10/docs/source/authors.rst0000644000000000000000000000007012462537262015503 0ustar 00000000000000Authors ======= Carl Chenet brebis-0.10/docs/source/conf.py0000644000000000000000000002014612462537262014571 0ustar 00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # brebis documentation build configuration file, created by # sphinx-quickstart on Wed Dec 17 18:25:26 2014. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys import os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = 'brebis' copyright = '2015, Carl Chenet ' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.10' # The full version, including alpha/beta/rc tags. release = '0.10' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all # documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. #html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'brebisdoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ ('index', 'brebis.tex', 'brebis Documentation', 'Carl Chenet \\textless{}chaica@brebisproject.org\\textgreater{}', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'brebis', 'brebis Documentation', ['Carl Chenet '], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'brebis', 'brebis Documentation', 'Carl Chenet ', 'brebis', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False brebis-0.10/docs/source/configure.rst0000644000000000000000000001062312462537262016004 0ustar 00000000000000Configure Brebis ================ You need two files in order to use Brebis, a file offering the configuration of the archive and another file giving the detail of what's inside the archive, let's call it the list of files. But don't worry, the option -G allows to generate both files from a given archive. The next sections offer the details of what parameter these files contain. Configuration of the archive ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The first one contains general information about the backup checking session. It is mandatory your configuration file uses the .conf extension. Here is an example with all the currently supported parameters::: [main] name=mybackup-checking-session type=archive path=tests/expected_mode/foos.tar.gz files_list=tests/expected_mode/files-list delimiter=| sha512=87d3325d3bb844734c1b011fb0f12a3ae47676153a8b05102a5e1b5347a86096d85b1b239752c3fdc10a8a2226928b64b5f31d8fd09f3e43a8eee3a4228f38b1 * **[main]** is mandatory. * **name** is the name of your backup checking session. If you have several backup checking sessions, they MUST use a different name. * **type** is the type of your backup. Currently you only have archive (tar, tar.gz, tar.bz2, zip files) and tree for a tree of directories and files. * **path** is the path to the archive or the top directory of your files tree. Relative or absolute paths are accepted. * **files_list** is the path to the file containing the information about the archive, the tree or the files inside your backups. Relative or absolute paths are accepted. * **delimiter** (optional field) is the string to use in the list of files to mark the end of the key and the beginning of the value. Default is | (pipe). * **sha512** (optional field) provides the sha512 hash sum of the list of files, in order to check if this file is the expected one. Understanding the parameters of the list of files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The second file you need is the list containing the information about the archive, the tree or the files inside your backups. Here is an example with the full list of the parameters available for now::: [archive] size| <5m mode| 755 uid| 5000 gid| 5001 sha1| e0f58dcc57caad2182f701eb63f0c81f347d3fe5 [files] foos/foo| foos/foo1| >105k type|f mode|755 uid|5022 gid|5023 unexpected md5|3718422a0bf93f7fc46cff6b5e660ff8 * **[archive]** section hosts the parameter for the archive itself. This section is not mandatory if you do not need it. * **size** defines what the archive size should be. You can specify <,> or =. Default value is expressed in bytes, also available are (k)ilo, (m)ega, (g)iga, (p)eta,(e)xa, (z)etta and (y)ottabyte. * **mode** is for the expected mode of the archive. * **uid** is for the expected uid of the archive. * **gid** is for the expected gid of the archive. * **sha1** is for the expected md5 hash sum of the archive. Also available is sha1, sha224, sha256, sha384, sha512. * **[files]** section stands for the files inside the archive or the tree of directories and files. This section is not mandatory if you do not need it. * **foos/foo|** means this file has to exist in the backup, whatever it is. * **foos/foo1| >105k** defines that the file size of foos/foo1 in the archive should be strictly bigger than 105 kilobytes. You can specify <,> or =. Default value is expressed in bytes, also available are (k)ilo, (m)ega, (g)iga, (p)eta,(e)xa, (z)etta and (y)ottabyte. * **foos/foo1| type|f** means the file foos/foo1 is expected to be of type f. Several types are allowed : f for files, d for directory, s for symbolic link, k for socket, b for block, c for character. * **foos/foo1| mode|755** means the file foos/foo1 is expected to have the mode 755 (meaning read, write and execute for the owner, read and execute for the group owner, read and execute for the others). All values respecting this octal representation (including values with setuid bit on four digits) is allowed. * **foos/foo1| uid|5022** means the file foos/foo1 is expected to have a uid of 5022. * **foos/foo1| gid|5023** means the file foos/foo1 is expected to have a gid of 5023. * **foo/bar| unexpected** means that foo/bar is unexpected in this archive of tree of directories and files and that an alert should be launched about it. * **foos/foo1| md5|hashsum** means the file foos/foo1 is expected to have a md5 hash sum of "hashsum". Also available is sha1, sha224, sha256, sha384, sha512. brebis-0.10/docs/source/index.rst0000644000000000000000000000054212462537262015131 0ustar 00000000000000Documentation for the Brebis project ==================================== You'll find below anything you need to install, configure or run Brebis. Guide ===== .. toctree:: :maxdepth: 2 install configure use unsupported license authors Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` brebis-0.10/docs/source/install.rst0000644000000000000000000000063212462537262015470 0ustar 00000000000000How to install Brebis ===================== * You need at least Python 3.4. * Untar the tarball and go to the source directory with the following commands::: $ tar zxvf brebis-0.10.tar.gz $ cd brebis * Next, to install Brebis on your computer, type the following command with the root user::: # python3.4 setup.py install # # or # python3.4 setup.py install --install-scripts=/usr/bin brebis-0.10/docs/source/license.rst0000644000000000000000000000017712462537262015450 0ustar 00000000000000License ======= This software comes under the terms of the GPLv3+. See the LICENSE file for the complete text of the license. brebis-0.10/docs/source/unsupported.rst0000644000000000000000000000067512462537262016421 0ustar 00000000000000Unsupported parameters for a given kind of archive ================================================== Given the very nature of the different kind of archive formats, some parameters are not supported for a given archive type (e.g for a bzip2 file, original rights and mode of the file inside the archive are not saved). An explicit warning will appear in the brebis log file if you are using an unsupported feature for a given type of archive. brebis-0.10/docs/source/use.rst0000644000000000000000000001050512462537262014616 0ustar 00000000000000Use Brebis ========== Two uses of brebis are available: * generate a description of what's inside the archive * scan the content of an archive to compare with the associated description Generate a list of files within a backup ---------------------------------------- Generate the configuration files and the list of files inside for a given archive ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Starting from 0.4, Brebis is able to generate the configuration of a backup and the associated list of files within this backup. Use the following command to generate the list of files::: $ brebis -G mybackup.tar.gz $ ls mybackup.tar.gz mybackup.list mybackup.conf * **mybackup.conf** is the configuration file associated to your archive. See *Configure Brebis* section for more details. * **mybackup.list** is the list of files inside your archive. See *Configure Brebis* section for more details. While generating, compute the hash sums of all files in the archive ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Brebis is able to compute the hash sums of all files inside an archive. That was the default from the start of the project to the version 0.9. Given the fact this behaviour heavily loads the computer brebis runs on and that the final list of files is protected by a sha512 hash sum written in the associated configuration file (e.g yourbackup.conf), it is safe to make this behaviour optional starting from the version 0.10. The associated options is ``--hashes`` or -H.:: $ brebis --hashes -G mybackup.tar.gz $ # or $ brebis -H -G mybackup.tar.gz Specify that brebis need to compute the hash sums of some files inside the archive ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Brebis starting from the version 0.10 by default does not compute any more the hash sum of every files inside an archive except if you use the ``--hashes`` option (heavy compute time for big archives). But you can specify to compute the hash sums of some files - either using the path or a glob syntax - in a list of files you provide thanks to the --exceptions-file option::: $ cat archive-exceptions.list archive/foo| sha1 archive/bar/*.txt| sha256 $ brebis --exceptions-file archive-exceptions.list -G archive.tar.gz The result of this command will be two files : the usual configuration file and the list of files inside the archive where only archive/foo and archive/bar/\*.txt will have a hash sum. Switch the delimiter of fields in the list of files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can also modifiy the default delimiter ('|') that brebis uses and specify your own with the -d or --delimiter option::: $ brebis -d @ -G myarchive.tar.bz $ # or $ brebis --delimiter @ -c myconfs/myconf.conf We use @ as the default delimiter for the two commands just above. Scan the content of an archive to compare with the associated description ------------------------------------------------------------------------- Common use case ^^^^^^^^^^^^^^^ You launch the scan mode of Brebis from the command line with the following command::: $ brebis -c myconfs/ The option -c or ``--configpath`` specifies a path to a directory where your Brebis configurations are stored. If any alert is triggered, it will appear in the your current working directory in a file named a.out. Relative or absolute paths are accepted. You can also specify your own output file::: $ brebis -c myconfs/ -l output/brebis.log The option -l or ``--log`` specifies your own output file. Change the path to the configuration file and the list of files for a given archive ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ By default, the files containing the different parameters of the content of the archive and the configuration file are created in the same directory as the archive itself. From Brebis 0.9, you can specifiy a custom directory for the configuration file (the -C option), for the list of files (the -L option) or both with the -O option.:: $ brebis -c /etc/brebis/ -l /var/log/brebis.log -C /etc/brebis/confs/ -L /etc/brebis/lists/ The example above indicates a /etc/brebis/confs directory to store the configuration files of Brebis and a /etc/brebis/lists/ directory to store the list of files of Brebis. brebis-0.10/functional-tests/a.out0000644000000000000000000000044212462537262015312 0ustar 00000000000000WARNING:root:1 file with unexpected hash while checking /home/chaica/progra/python/brebis/functional-tests/wrong-file-md5-hash-in-gz-archive/wrong-file-md5-hash-in-gz-archive.gz: WARNING:root:wrong-file-md5-hash-in-gz-archive hash is f1e60db75b2ca8581e5165d54dbfed88. Should have been f1e. ././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-bigger-than-expected-size/bzip2-archive-size-bigger-than-expected-size-listbrebis-0.10/functional-tests/bzip2-archive-size-bigger-than-expected-size/bzip2-archive-size-bigger-0000644000000000000000000000002312462537262031557 0ustar 00000000000000[archive] size| <1 ././@LongLink0000000000000000000000000000017300000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-bigger-than-expected-size/bzip2-archive-size-bigger-than-expected-size.bz2brebis-0.10/functional-tests/bzip2-archive-size-bigger-than-expected-size/bzip2-archive-size-bigger-0000644000000000000000000000005512462537262031564 0ustar 00000000000000BZh91AY&SY+ `@ 0@]B@$0././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-bigger-than-expected-size/bzip2-archive-size-bigger-than-expected-size.confbrebis-0.10/functional-tests/bzip2-archive-size-bigger-than-expected-size/bzip2-archive-size-bigger-0000644000000000000000000000027312462537262031566 0ustar 00000000000000[main] name=bzip2-archive-size-bigger-than-expected-size type=archive path=bzip2-archive-size-bigger-than-expected-size.bz2 files_list=bzip2-archive-size-bigger-than-expected-size-list ././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-not-equals-expected-size/bzip2-archive-size-not-equals-expected-size-listbrebis-0.10/functional-tests/bzip2-archive-size-not-equals-expected-size/bzip2-archive-size-not-equa0000644000000000000000000000002312462537262031675 0ustar 00000000000000[archive] size| =4 ././@LongLink0000000000000000000000000000017100000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-not-equals-expected-size/bzip2-archive-size-not-equals-expected-size.bz2brebis-0.10/functional-tests/bzip2-archive-size-not-equals-expected-size/bzip2-archive-size-not-equa0000644000000000000000000000005512462537262031702 0ustar 00000000000000BZh91AY&SY+ `@ 0@]B@$0././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-not-equals-expected-size/bzip2-archive-size-not-equals-expected-size.confbrebis-0.10/functional-tests/bzip2-archive-size-not-equals-expected-size/bzip2-archive-size-not-equa0000644000000000000000000000027012462537262031701 0ustar 00000000000000[main] name=bzip2-archive-size-not-equals-expected-size type=archive path=bzip2-archive-size-not-equals-expected-size.bz2 files_list=bzip2-archive-size-not-equals-expected-size-list ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-smaller-than-expected-size/bzip2-archive-size-smaller-than-expected-size-listbrebis-0.10/functional-tests/bzip2-archive-size-smaller-than-expected-size/bzip2-archive-size-smalle0000644000000000000000000000002512462537262031722 0ustar 00000000000000[archive] size| >10M ././@LongLink0000000000000000000000000000017500000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-smaller-than-expected-size/bzip2-archive-size-smaller-than-expected-size.bz2brebis-0.10/functional-tests/bzip2-archive-size-smaller-than-expected-size/bzip2-archive-size-smalle0000644000000000000000000000005512462537262031725 0ustar 00000000000000BZh91AY&SY+ `@ 0@]B@$0././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/bzip2-archive-size-smaller-than-expected-size/bzip2-archive-size-smaller-than-expected-size.confbrebis-0.10/functional-tests/bzip2-archive-size-smaller-than-expected-size/bzip2-archive-size-smalle0000644000000000000000000000027612462537262031732 0ustar 00000000000000[main] name=bzip2-archive-size-smaller-than-expected-size type=archive path=bzip2-archive-size-smaller-than-expected-size.bz2 files_list=bzip2-archive-size-smaller-than-expected-size-list brebis-0.10/functional-tests/check-mtime-tar/check-mtime-tar.conf0000644000000000000000000000056312462537262023140 0ustar 00000000000000[main] name=check-mtime-tar type=archive path=/home/chaica/progra/python/brebis/functional-tests/check-mtime-tar/check-mtime-tar.tar.gz files_list=/home/chaica/progra/python/brebis/functional-tests/check-mtime-tar/check-mtime-tar.list sha512=6a958b916d11552eac098b779a33f9b2f4e1941eccd84d79375cf44907d665d5f25bcad6d8a3edcfcd1a1620de030da806b29bf3a8ef8c14a41e3965d9c571ef brebis-0.10/functional-tests/check-mtime-tar/check-mtime-tar.tar.gz0000644000000000000000000000030312462537262023410 0ustar 00000000000000PR 0=/l=20{(pB798_:Qe'޹yrSb⌳Vi1U\Z^0mbx?PeV)鿇)5ϘrM/Zz@G* YfoߊqòR/iIc(brebis-0.10/functional-tests/check-mtime-tree/check-mtime-tree/bar0000644000000000000000000000000012462537262023264 0ustar 00000000000000brebis-0.10/functional-tests/check-mtime-tree/check-mtime-tree/foo0000644000000000000000000000000012462537262023303 0ustar 00000000000000brebis-0.10/functional-tests/check-mtime-tree/check-mtime-tree/rab/oof0000644000000000000000000000000012462537262024047 0ustar 00000000000000brebis-0.10/functional-tests/check-mtime-zip/check-mtime-zip.conf0000644000000000000000000000056012462537262023165 0ustar 00000000000000[main] name=check-mtime-zip type=archive path=/home/chaica/progra/python/brebis/functional-tests/check-mtime-zip/check-mtime-zip.zip files_list=/home/chaica/progra/python/brebis/functional-tests/check-mtime-zip/check-mtime-zip.list sha512=cc3370970016492dadb4d32365943f47ded1ae2ea052ff56c3e16e182b90a54495ef1a8e310b6cf01b0386f95e7c84df4507af087afa50529c5c9ca8e64c5bb1 brebis-0.10/functional-tests/check-mtime-zip/check-mtime-zip.zip0000644000000000000000000000153012462537262023040 0ustar 00000000000000PK ihCcheck-mtime-zip/UT [|R$Rux PK ihCcheck-mtime-zip/rab/UT h|R%Rux PK ihCcheck-mtime-zip/rab/oofUT h|Rt|Rux PK ihCcheck-mtime-zip/barUT S|Rt|Rux PK ihCcheck-mtime-zip/fooUT S|Rt|Rux PK ihCAcheck-mtime-zip/UT[|Rux PK ihCAJcheck-mtime-zip/rab/UTh|Rux PK ihCcheck-mtime-zip/rab/oofUTh|Rux PK ihCcheck-mtime-zip/barUTS|Rux PK ihC6check-mtime-zip/fooUTS|Rux PKbrebis-0.10/functional-tests/corrupted-bz2-archive/corrupted-bz2-archive-list0000644000000000000000000000001512462537262025473 0ustar 00000000000000[files] oof| brebis-0.10/functional-tests/corrupted-bz2-archive/corrupted-bz2-archive.bz20000644000000000000000000000011312462537262025215 0ustar 00000000000000BZh91AY&SY{~߀`B"g "224Nl"6`rE8P{~ brebis-0.10/functional-tests/corrupted-bz2-archive/corrupted-bz2-archive.conf0000644000000000000000000000016612462537262025455 0ustar 00000000000000[main] name=corrupted-bz2-archive type=archive path=corrupted-bz2-archive.bz2 files_list=corrupted-bz2-archive-list brebis-0.10/functional-tests/corrupted-gz-archive/corrupted-gz-archive-list0000644000000000000000000000001512462537262025341 0ustar 00000000000000[files] oof| brebis-0.10/functional-tests/corrupted-gz-archive/corrupted-gz-archive.conf0000644000000000000000000000016212462537262025317 0ustar 00000000000000[main] name=corrupted-gz-archive type=archive path=corrupted-gz-archive.gz files_list=corrupted-gz-archive-list brebis-0.10/functional-tests/corrupted-gz-archive/corrupted-gz-archive.gz0000644000000000000000000000007412462537262025014 0ustar 00000000000000TNfile-missing-in-gzipT(H,Q/V(-PSz brebis-0.10/functional-tests/corrupted-tar-bz2-archive/corrupted-tar-bz2-archive-list0000644000000000000000000000004712462537262027050 0ustar 00000000000000[files] corrupted-tar-bz2-archive/foo| brebis-0.10/functional-tests/corrupted-tar-bz2-archive/corrupted-tar-bz2-archive.conf0000644000000000000000000000020612462537262027020 0ustar 00000000000000[main] name=corrupted-tar-bz2-archive type=archive path=corrupted-tar-bz2-archive.tar.bz2 files_list=corrupted-tar-bz2-archive-list brebis-0.10/functional-tests/corrupted-tar-bz2-archive/corrupted-tar-bz2-archive.tar.bz20000644000000000000000000000027312462537262027361 0ustar 00000000000000BZh91AY&SY3z@ d0%$ئ1?P4bd@5@ hokǤBHljg" M<..-#,)̦ q]\Zs[4eETυG61AJB4 훶DG!VrE8P3z brebis-0.10/functional-tests/corrupted-tar-gz-archive/corrupted-tar-gz-archive-list0000644000000000000000000000004612462537262026715 0ustar 00000000000000[files] corrupted-tar-gz-archive/foo| brebis-0.10/functional-tests/corrupted-tar-gz-archive/corrupted-tar-gz-archive.conf0000644000000000000000000000020212462537262026662 0ustar 00000000000000[main] name=corrupted-tar-gz-archive type=archive path=corrupted-tar-gz-archive.tar.gz files_list=corrupted-tar-gz-archive-list brebis-0.10/functional-tests/corrupted-tar-gz-archive/corrupted-tar-gz-archive.tar.gz0000644000000000000000000000025412462537262027151 0ustar 00000000000000~tNA 0=E.P&=OH-"um o3 /Ĕ6Sq>{O9]Զ|JN=b6cUe*t~} kcuc)UFg*\y]; q>q`( brebis-0.10/functional-tests/corrupted-tar-xz-archive/a.out0000644000000000000000000000031712462537262022164 0ustar 00000000000000WARNING:root:/home/chaica/progra/python/brebis/functional-tests/corrupted-tar-xz-archive/corrupted-tar-xz-archive.tar.xz: file could not be opened successfully. You should investigate for a data corruption. brebis-0.10/functional-tests/corrupted-tar-xz-archive/corrupted-tar-xz-archive-list0000644000000000000000000000004612462537262026757 0ustar 00000000000000[files] corrupted-tar-xz-archive/foo| brebis-0.10/functional-tests/corrupted-tar-xz-archive/corrupted-tar-xz-archive.conf0000644000000000000000000000020212462537262026724 0ustar 00000000000000[main] name=corrupted-tar-xz-archive type=archive path=corrupted-tar-xz-archive.tar.xz files_list=corrupted-tar-xz-archive-list brebis-0.10/functional-tests/corrupted-tar-xz-archive/corrupted-tar-xz-archive.tar.xz0000644000000000000000000000051412462537262027233 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZ brebis-0.10/functional-tests/corrupted-xz-archive/a.out0000644000000000000000000000030312462537262021373 0ustar 00000000000000WARNING:root:/home/chaica/progra/python/brebis/functional-tests/corrupted-xz-archive/corrupted-xz-archive.xz: Input format not supported by decoder. You should investigate for a data corruption. brebis-0.10/functional-tests/corrupted-xz-archive/corrupted-xz-archive-list0000644000000000000000000000003612462537262025406 0ustar 00000000000000[files] corrupted-xz-archive| brebis-0.10/functional-tests/corrupted-xz-archive/corrupted-xz-archive.conf0000644000000000000000000000016212462537262025361 0ustar 00000000000000[main] name=corrupted-xz-archive type=archive path=corrupted-xz-archive.xz files_list=corrupted-xz-archive-list brebis-0.10/functional-tests/corrupted-xz-archive/corrupted-xz-archive.xz0000644000000000000000000000013412462537262025074 0ustar 000000000000007zXZִF!t/#this is a corrupted-xz-archive file +D0K<$(vo}YZ brebis-0.10/functional-tests/corrupted-zip-archive/corrupted-zip-archive-list0000644000000000000000000000004312462537262025706 0ustar 00000000000000[files] corrupted-zip-archive/foo| brebis-0.10/functional-tests/corrupted-zip-archive/corrupted-zip-archive.conf0000644000000000000000000000016612462537262025667 0ustar 00000000000000[main] name=corrupted-zip-archive type=archive path=corrupted-zip-archive.zip files_list=corrupted-zip-archive-list brebis-0.10/functional-tests/corrupted-zip-archive/corrupted-zip-archive.zip0000644000000000000000000000057212462537262025545 0ustar 00000000000000PK 1?corrupted-zip-archive/UT mtNbtNux PK 1? 0:6corrupted-zip-archive/fooUT mtNmtNux hello PK 1?Acorrupted-zip-archive/UTmtNux PK 1? 0:6Pcorrupted-zip-archive/fooUTmtNux PK brebis-0.10/functional-tests/custom-conf-filelist-bzip2/custom-conf-filelist-bzip2.bz20000644000000000000000000000007612462537262027147 0ustar 00000000000000BZh91AY&SYـ@3dL !4! &<egR_ܑN$?brebis-0.10/functional-tests/custom-conf-filelist-gzip/custom-conf-filelist-gzip.gz0000644000000000000000000000010112462537262026725 0ustar 00000000000000-6Rcustom-conf-filelist-gzip+,VD̜T.ݏbrebis-0.10/functional-tests/custom-conf-filelist-lzma/custom-conf-filelist-lzma.xz0000644000000000000000000000012012462537262026733 0ustar 000000000000007zXZִF!t/hi this is a lzma file (ZCd/I}YZbrebis-0.10/functional-tests/custom-conf-filelist-tar/custom-conf-filelist-tar.tar.gz0000644000000000000000000000024212462537262027152 0ustar 00000000000000RA a=\@РyD5tS(@)mWۢkMPԉL7:W;y^_WvsvŜđ>("*c8}{S)KKJ?Aϗe+/%S~̗_7 iT(brebis-0.10/functional-tests/custom-conf-filelist-tree/custom-conf-filelist-tree/bar0000644000000000000000000000002312462537262027031 0ustar 00000000000000this is a bar file brebis-0.10/functional-tests/custom-conf-filelist-tree/custom-conf-filelist-tree/foo0000644000000000000000000000002312462537262027050 0ustar 00000000000000this is a foo file brebis-0.10/functional-tests/custom-conf-filelist-zip/custom-conf-filelist-zip.zip0000644000000000000000000000033412462537262026601 0ustar 00000000000000PK Ccustom-conf-filelist-zipUT  8R 8Rux hi this is a zip file PK Ccustom-conf-filelist-zipUT 8Rux PK^hbrebis-0.10/functional-tests/exceptions-file-option/bzip2/bzip2exceptionsfile0000644000000000000000000000004712462537262025707 0ustar 00000000000000[files] exceptions-file-option| sha384 brebis-0.10/functional-tests/exceptions-file-option/bzip2/exceptions-file-option.bz20000644000000000000000000000012612462537262027015 0ustar 00000000000000BZh91AY&SYޡB р@7흠 @=GM k #Lҝ‚(]BCz brebis-0.10/functional-tests/exceptions-file-option/gzip/exceptions-file-option.gz0000644000000000000000000000014112462537262026660 0ustar 00000000000000Texceptions-file-optionT(,VD̜T<JԲԢJt̜Tl.09brebis-0.10/functional-tests/exceptions-file-option/gzip/gzipexceptionsfile0000644000000000000000000000004712462537262025555 0ustar 00000000000000[files] exceptions-file-option| sha224 brebis-0.10/functional-tests/exceptions-file-option/lzma/exceptions-file-option.xz0000644000000000000000000000016412462537262026700 0ustar 000000000000007zXZִF!t/8hi this is a test file don't worry everything will be ok >b&9Q96Q#}YZbrebis-0.10/functional-tests/exceptions-file-option/lzma/lzmaexceptionsfile0000644000000000000000000000004712462537262025541 0ustar 00000000000000[files] exceptions-file-option| sha512 brebis-0.10/functional-tests/exceptions-file-option/tar-gz/exceptions-file-option.tar.gz0000644000000000000000000000043512462537262027706 0ustar 00000000000000s:T[j0P}wZף1wոMcT܃cC"`t'jꊞYn2օѳue-`+k~ә$ tjs=u6-|׿|\91^ϑ uֳBJNx1/.hc_i1"-l??4M&-?\sx˿z"߀ tke,:z (hr(brebis-0.10/functional-tests/exceptions-file-option/tar-gz/targzexceptionsfile0000644000000000000000000000003412462537262026162 0ustar 00000000000000[files] toto/bar/bar3| sha1 brebis-0.10/functional-tests/exceptions-file-option/tree/exceptions-file-option/bar/bar20000644000000000000000000000002412462537262027621 0ustar 00000000000000this is a bar2 file brebis-0.10/functional-tests/exceptions-file-option/tree/exceptions-file-option/foo0000644000000000000000000000002312462537262027011 0ustar 00000000000000this is a foo file brebis-0.10/functional-tests/exceptions-file-option/tree/treeexceptionsfile0000644000000000000000000000002712462537262025527 0ustar 00000000000000[files] bar/bar2| sha1 brebis-0.10/functional-tests/exceptions-file-option/zip/exceptions-file-option.zip0000644000000000000000000000175412462537262026706 0ustar 00000000000000PK Etoto/UT U:TW:Tux PK E toto/bar/UT h:Ts:Tux PK E toto/bar/bar2UT _:Ts:Tux this is a bar2 file lol PK E$ toto/bar/bar3UT h:Ts:Tux this is a bar3 file mhhhmmmh PK 첕E,Htoto/fooUT K:Ts:Tux hi this is a foo file PK E toto/foo2UT S:Ts:Tux this is a foo2 file hehe PK EAtoto/UTU:Tux PK E A?toto/bar/UTh:Tux PK E toto/bar/bar2UT_:Tux PK E$ toto/bar/bar3UTh:Tux PK 첕E,HEtoto/fooUTK:Tux PK E toto/foo2UTS:Tux PKbrebis-0.10/functional-tests/exceptions-file-option/zip/zipexceptionsfile0000644000000000000000000000003112462537262025230 0ustar 00000000000000[files] toto/foo| sha224 ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-gz-archive/expected-file-greater-than-file-in-gz-archive-listbrebis-0.10/functional-tests/expected-file-greater-than-file-in-gz-archive/expected-file-greater-tha0000644000000000000000000000007212462537262031655 0ustar 00000000000000[files] expected-file-not-equals-file-in-gz-archive| >17K ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-gz-archive/expected-file-greater-than-file-in-gz-archive.confbrebis-0.10/functional-tests/expected-file-greater-than-file-in-gz-archive/expected-file-greater-tha0000644000000000000000000000027512462537262031662 0ustar 00000000000000[main] name=expected-file-greater-than-file-in-gz-archive type=archive path=expected-file-greater-than-file-in-gz-archive.gz files_list=expected-file-greater-than-file-in-gz-archive-list ././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-gz-archive/expected-file-greater-than-file-in-gz-archive.gzbrebis-0.10/functional-tests/expected-file-greater-than-file-in-gz-archive/expected-file-greater-tha0000644000000000000000000000011612462537262031654 0ustar 00000000000000ZNexpected-file-not-equals-file-in-gz-archiveT(H,Q/V(-JF5././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-archive/expected-file-greater-than-file-in-tar-archive-listbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-archive/expected-file-greater-th0000644000000000000000000000002212462537262031655 0ustar 00000000000000[files] foo| >17K ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-archive/expected-file-greater-than-file-in-tar-archive.confbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-archive/expected-file-greater-th0000644000000000000000000000030112462537262031655 0ustar 00000000000000[main] name=expected-file-greater-than-file-in-tar-archive type=archive path=expected-file-greater-than-file-in-tar-archive.tar files_list=expected-file-greater-than-file-in-tar-archive-list ././@LongLink0000000000000000000000000000017700000000000011222 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-archive/expected-file-greater-than-file-in-tar-archive.tarbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-archive/expected-file-greater-th0000644000000000000000000007400012462537262031664 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-bz2-archive/expected-file-greater-than-file-in-tar-bz2-archive-listbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-bz2-archive/expected-file-greate0000644000000000000000000000010612462537262031560 0ustar 00000000000000[files] expected-file-greater-than-file-in-tar-bz2-archive/toto| >17K ././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-bz2-archive/expected-file-greater-than-file-in-tar-bz2-archive.confbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-bz2-archive/expected-file-greate0000644000000000000000000000032112462537262031557 0ustar 00000000000000[main] name=expected-file-greater-than-file-in-tar-bz2-archive type=archive path=expected-file-greater-than-file-in-tar-bz2-archive.tar.bz2 files_list=expected-file-greater-than-file-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000021300000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-bz2-archive/expected-file-greater-than-file-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-bz2-archive/expected-file-greate0000644000000000000000000000041412462537262031562 0ustar 00000000000000BZh91AY&SYhtՐ`2P(06(AM&D4dhHzDmCG4ѡSngZ4,fHВ4JDTlLPQ878"eɝPlHL7ОұiIHQWW(͖8 W 5/7z(@F,@ȉwAn+m 㑙}GBL0mLh-d+CG顡^VL^FQBw$S 6O././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-gz-archive/expected-file-greater-than-file-in-tar-gz-archive-listbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-gz-archive/expected-file-greater0000644000000000000000000000010512462537262031664 0ustar 00000000000000[files] expected-file-greater-than-file-in-tar-gz-archive/toto| >17K ././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-gz-archive/expected-file-greater-than-file-in-tar-gz-archive.confbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-gz-archive/expected-file-greater0000644000000000000000000000031512462537262031667 0ustar 00000000000000[main] name=expected-file-greater-than-file-in-tar-gz-archive type=archive path=expected-file-greater-than-file-in-tar-gz-archive.tar.gz files_list=expected-file-greater-than-file-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-gz-archive/expected-file-greater-than-file-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-gz-archive/expected-file-greater0000644000000000000000000000041712462537262031672 0ustar 00000000000000J@zNJ0{`>5[ J2zӹDȁI ٛ}LCIr5=$)e}f\ʘqzI˨WкsJho|Q힟N cxz߹_*5_2\=?o Ssy~ﻘ{vƘe͵^oۿ`CpvWu׍7#oPbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/a.out0000644000000000000000000000051512462537262026573 0ustar 00000000000000WARNING:root:1 file smaller than expected while checking /home/chaica/progra/python/brebis/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/expected-file-greater-than-file-in-tar-xz-archive.tar.xz: WARNING:root:expected-file-greater-than-file-in-tar-xz-archive/foo size is 175. Should have been bigger than 17408. ././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/expected-file-greater-than-file-in-tar-xz-archive-listbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/expected-file-greater0000644000000000000000000000010412462537262031704 0ustar 00000000000000[files] expected-file-greater-than-file-in-tar-xz-archive/foo| >17K ././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/expected-file-greater-than-file-in-tar-xz-archive.confbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/expected-file-greater0000644000000000000000000000031512462537262031710 0ustar 00000000000000[main] name=expected-file-greater-than-file-in-tar-xz-archive type=archive path=expected-file-greater-than-file-in-tar-xz-archive.tar.xz files_list=expected-file-greater-than-file-in-tar-xz-archive-list ././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/expected-file-greater-than-file-in-tar-xz-archive.tar.xzbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tar-xz-archive/expected-file-greater0000644000000000000000000000053012462537262031707 0ustar 000000000000007zXZִF!t/']2 D iv +ȶvHpv#;;y O9%Ԧ F:h?l (V= 17K ././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-tree/expected-file-greater-than-file-in-tree.confbrebis-0.10/functional-tests/expected-file-greater-than-file-in-tree/expected-file-greater-than-file0000644000000000000000000000020112462537262031642 0ustar 00000000000000[main] name=expected-file-greater-than-file-in-tree type=tree path=tree files_list=expected-file-greater-than-file-in-tree-list brebis-0.10/functional-tests/expected-file-greater-than-file-in-tree/tree/bar0000644000000000000000000000000412462537262025334 0ustar 00000000000000bar brebis-0.10/functional-tests/expected-file-greater-than-file-in-tree/tree/foo0000644000000000000000000000034412462537262025362 0ustar 00000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahi brebis-0.10/functional-tests/expected-file-greater-than-file-in-tree/tree/toto0000644000000000000000000003600012462537262025562 0ustar 00000000000000././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-zip-archive/expected-file-greater-than-file-in-zip-archive-listbrebis-0.10/functional-tests/expected-file-greater-than-file-in-zip-archive/expected-file-greater-th0000644000000000000000000000010212462537262031670 0ustar 00000000000000[files] expected-file-greater-than-file-in-zip-archive/toto| >17K ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-zip-archive/expected-file-greater-than-file-in-zip-archive.confbrebis-0.10/functional-tests/expected-file-greater-than-file-in-zip-archive/expected-file-greater-th0000644000000000000000000000030112462537262031671 0ustar 00000000000000[main] name=expected-file-greater-than-file-in-zip-archive type=archive path=expected-file-greater-than-file-in-zip-archive.zip files_list=expected-file-greater-than-file-in-zip-archive-list ././@LongLink0000000000000000000000000000017700000000000011222 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-greater-than-file-in-zip-archive/expected-file-greater-than-file-in-zip-archive.zipbrebis-0.10/functional-tests/expected-file-greater-than-file-in-zip-archive/expected-file-greater-th0000644000000000000000000000171712462537262031705 0ustar 00000000000000PK W5?/expected-file-greater-than-file-in-zip-archive/UT @zN?zNux PKW5? <3expected-file-greater-than-file-in-zip-archive/totoUT @zN@zNux 1 Om PK (?鳢2expected-file-greater-than-file-in-zip-archive/barUT ,iN?zNux bar PK<5?L7; 2expected-file-greater-than-file-in-zip-archive/fooUT ?zN?zNux KL # PK W5?/Aexpected-file-greater-than-file-in-zip-archive/UT@zNux PKW5? <3iexpected-file-greater-than-file-in-zip-archive/totoUT@zNux PK (?鳢2expected-file-greater-than-file-in-zip-archive/barUT,iNux PK<5?L7; 2fexpected-file-greater-than-file-in-zip-archive/fooUT?zNux PK././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-gz-archive/expected-file-not-equals-file-in-gz-archive-listbrebis-0.10/functional-tests/expected-file-not-equals-file-in-gz-archive/expected-file-not-equals-fi0000644000000000000000000000007112462537262031644 0ustar 00000000000000[files] expected-file-not-equals-file-in-gz-archive| =10 ././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-gz-archive/expected-file-not-equals-file-in-gz-archive.confbrebis-0.10/functional-tests/expected-file-not-equals-file-in-gz-archive/expected-file-not-equals-fi0000644000000000000000000000026712462537262031653 0ustar 00000000000000[main] name=expected-file-not-equals-file-in-gz-archive type=archive path=expected-file-not-equals-file-in-gz-archive.gz files_list=expected-file-not-equals-file-in-gz-archive-list ././@LongLink0000000000000000000000000000017000000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-gz-archive/expected-file-not-equals-file-in-gz-archive.gzbrebis-0.10/functional-tests/expected-file-not-equals-file-in-gz-archive/expected-file-not-equals-fi0000644000000000000000000000011612462537262031644 0ustar 00000000000000ZNexpected-file-not-equals-file-in-gz-archiveT(H,Q/V(-JF5././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-archive/expected-file-not-equals-file-in-tar-archive-listbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-archive/expected-file-not-equals-f0000644000000000000000000000002212462537262031635 0ustar 00000000000000[files] foo| =10K ././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-archive/expected-file-not-equals-file-in-tar-archive.confbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-archive/expected-file-not-equals-f0000644000000000000000000000027312462537262031645 0ustar 00000000000000[main] name=expected-file-not-equals-file-in-tar-archive type=archive path=expected-file-not-equals-file-in-tar-archive.tar files_list=expected-file-not-equals-file-in-tar-archive-list ././@LongLink0000000000000000000000000000017300000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-archive/expected-file-not-equals-file-in-tar-archive.tarbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-archive/expected-file-not-equals-f0000644000000000000000000007400012462537262031644 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000020400000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-bz2-archive/expected-file-not-equals-file-in-tar-bz2-archive-listbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-bz2-archive/expected-file-not-equa0000644000000000000000000000010612462537262031551 0ustar 00000000000000[files] expected-file-greater-than-file-in-tar-bz2-archive/toto| =10K ././@LongLink0000000000000000000000000000020400000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-bz2-archive/expected-file-not-equals-file-in-tar-bz2-archive.confbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-bz2-archive/expected-file-not-equa0000644000000000000000000000031312462537262031551 0ustar 00000000000000[main] name=expected-file-not-equals-file-in-tar-bz2-archive type=archive path=expected-file-not-equals-file-in-tar-bz2-archive.tar.bz2 files_list=expected-file-not-equals-file-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000020700000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-bz2-archive/expected-file-not-equals-file-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-bz2-archive/expected-file-not-equa0000644000000000000000000000041412462537262031553 0ustar 00000000000000BZh91AY&SYhtՐ`2P(06(AM&D4dhHzDmCG4ѡSngZ4,fHВ4JDTlLPQ878"eɝPlHL7ОұiIHQWW(͖8 W 5/7z(@F,@ȉwAn+m 㑙}GBL0mLh-d+CG顡^VL^FQBw$S 6O././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-gz-archive/expected-file-not-equals-file-in-tar-gz-archive-listbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-gz-archive/expected-file-not-equal0000644000000000000000000000010512462537262031647 0ustar 00000000000000[files] expected-file-greater-than-file-in-tar-gz-archive/toto| =10K ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-gz-archive/expected-file-not-equals-file-in-tar-gz-archive.confbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-gz-archive/expected-file-not-equal0000644000000000000000000000030712462537262031653 0ustar 00000000000000[main] name=expected-file-not-equals-file-in-tar-gz-archive type=archive path=expected-file-not-equals-file-in-tar-gz-archive.tar.gz files_list=expected-file-not-equals-file-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000020400000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-gz-archive/expected-file-not-equals-file-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-gz-archive/expected-file-not-equal0000644000000000000000000000041712462537262031655 0ustar 00000000000000J@zNJ0{`>5[ J2zӹDȁI ٛ}LCIr5=$)e}f\ʘqzI˨WкsJho|Q힟N cxz߹_*5_2\=?o Ssy~ﻘ{vƘe͵^oۿ`CpvWu׍7#oPbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/a.out0000644000000000000000000000047412462537262026306 0ustar 00000000000000WARNING:root:1 file with unexpected size while checking /home/chaica/progra/python/brebis/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file-not-equals-file-in-tar-xz-archive.tar.xz: WARNING:root:expected-file-greater-than-file-in-tar-xz-archive/foo size is 175. Should have been 10240. ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file-not-equals-file-in-tar-xz-archive-listbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file-not-equal0000644000000000000000000000010412462537262031667 0ustar 00000000000000[files] expected-file-greater-than-file-in-tar-xz-archive/foo| =10K ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file-not-equals-file-in-tar-xz-archive.confbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file-not-equal0000644000000000000000000000030712462537262031674 0ustar 00000000000000[main] name=expected-file-not-equals-file-in-tar-xz-archive type=archive path=expected-file-not-equals-file-in-tar-xz-archive.tar.xz files_list=expected-file-not-equals-file-in-tar-xz-archive-list ././@LongLink0000000000000000000000000000020400000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file-not-equals-file-in-tar-xz-archive.tar.xzbrebis-0.10/functional-tests/expected-file-not-equals-file-in-tar-xz-archive/expected-file-not-equal0000644000000000000000000000053012462537262031672 0ustar 000000000000007zXZִF!t/']2 D iv +ȶvHpv#;;y O9%Ԧ F:h?l (V= 5[ J2zӹDȁI ٛ}LCIr5=$)e}f\ʘqzI˨WкsJho|Q힟N cxz߹_*5_2\=?o Ssy~ﻘ{vƘe͵^oۿ`CpvWu׍7#oPbrebis-0.10/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/a.out0000644000000000000000000000051112462537262026575 0ustar 00000000000000WARNING:root:1 file bigger than expected while checking /home/chaica/progra/python/brebis/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/expected-file-smaller-than-file-in-tar-xz-archive.tar.xz: WARNING:root:expected-file-greater-than-file-in-tar-xz-archive/foo size is 175. Should have been smaller than 1. ././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/expected-file-smaller-than-file-in-tar-xz-archive-listbrebis-0.10/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/expected-file-smaller0000644000000000000000000000010212462537262031716 0ustar 00000000000000[files] expected-file-greater-than-file-in-tar-xz-archive/foo| <1 ././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/expected-file-smaller-than-file-in-tar-xz-archive.confbrebis-0.10/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/expected-file-smaller0000644000000000000000000000031512462537262031724 0ustar 00000000000000[main] name=expected-file-smaller-than-file-in-tar-xz-archive type=archive path=expected-file-smaller-than-file-in-tar-xz-archive.tar.xz files_list=expected-file-smaller-than-file-in-tar-xz-archive-list ././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/expected-file-smaller-than-file-in-tar-xz-archive.tar.xzbrebis-0.10/functional-tests/expected-file-smaller-than-file-in-tar-xz-archive/expected-file-smaller0000644000000000000000000000053012462537262031723 0ustar 000000000000007zXZִF!t/']2 D iv +ȶvHpv#;;y O9%Ԧ F:h?l (V=  x@/ePvSϿ{i$!b>``jj|`Pga0or½n&=o%XJ-d,EX:fHσ=f;xLbUȲH)[49ʈ4 )E]XLiN|JWAt&'8?(ľm"J6'ѽLj? ?ZP6׋CVI(Q&>|x"ʠ \Q yOb9W,MWrqTWL.Wj^/*[)F |e/fj^.-gFh]@kz\򰶢DXJp/[oVWRJ]2U2Y˹R=_UaCC{'Kcư cmL*]cwԪƪy-3H0yԪӗD~J[QbE"35$)pgFD m'ľvVMd.7hm&ҋ陜=y5㬛|&1 獞ibbIaZ(?"%V"[ct6W "/wu׋ex=UIXIéEZ*B@UqGʜ:s *f=u"6V4`T [d3H }@('ױ(zKYn@1_8Se^n*1N)lâIO!ᷤ)X{t}Eq83ξjF\y'S)ϭ韤 nBYZ;&zSazDJK:-qG3nԺr$Fd9 7#IѧG 0=m4̤SEH}鑯M8Q6q 1*σVKV?5O3ma_l ||G'6;]On_|]nոg%eyj3F C(brebis-0.10/functional-tests/expected-generated-list-for-tar-archive/expectedlist.list0000644000000000000000000000131612462537262027431 0ustar 00000000000000[files] generate-list-from-tar-archive| =0 uid|1000 gid|1000 mode|755 type|d mtime|1319064974.0 generate-list-from-tar-archive/toto| =23 uid|1000 gid|1000 mode|644 type|f mtime|1319064970.0 md5|b87852310afce39bb56ae8846a70fa9e generate-list-from-tar-archive/titi| =14 uid|1000 gid|1000 mode|644 type|f mtime|1319064953.0 md5|9bdde260205f343bd4357c73ce5cfc90 generate-list-from-tar-archive/foo| =0 uid|1000 gid|1000 mode|755 type|d mtime|1319064993.0 generate-list-from-tar-archive/foo/oof| =11 uid|1000 gid|1000 mode|644 type|f mtime|1319064993.0 md5|5c8ee4d9ea5b7d70ccff1d93cdf0ffb4 generate-list-from-tar-archive/foo/bar| =14 uid|1000 gid|1000 mode|644 type|f mtime|1319064986.0 md5|edecdbc70eab4fd4df31791687346179 ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/expected-generated-list-for-xz-archive/expected-generated-list-for-xz-archive.listbrebis-0.10/functional-tests/expected-generated-list-for-xz-archive/expected-generated-list-for-xz-a0000644000000000000000000000013412462537262032001 0ustar 00000000000000[files] expected-generated-list-for-xz-archive| type|f md5|6231c31c521b387ded89148d243785ce ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/expected-generated-list-for-xz-archive/expected-generated-list-for-xz-archive.xzbrebis-0.10/functional-tests/expected-generated-list-for-xz-archive/expected-generated-list-for-xz-a0000644000000000000000000000021012462537262031774 0ustar 000000000000007zXZִF!t/QK]4K/]TYl¶W_}W;a.z _`I5 *"5-Bp_ɂۢP?;.s}Ֆ6}h|gRx_}YZbrebis-0.10/functional-tests/expected-generated-list-for-xz-archive/expectedlist.list0000644000000000000000000000013412462537262027301 0ustar 00000000000000[files] expected-generated-list-for-xz-archive| type|f md5|6231c31c521b387ded89148d243785ce brebis-0.10/functional-tests/expecting-hard-link-for-tar-gz/expecting-hard-link-for-tar-gz.conf0000644000000000000000000000022312462537262030653 0ustar 00000000000000[main] name=expecting-hard-link-for-tar-gz type=archive path=expecting-hard-link-for-tar-gz.tar.gz files_list=expecting-hard-link-for-tar-gz.list brebis-0.10/functional-tests/expecting-hard-link-for-tar-gz/expecting-hard-link-for-tar-gz.list0000644000000000000000000000005012462537262030677 0ustar 00000000000000[files] expecting-hard-link/foo| type|l brebis-0.10/functional-tests/expecting-hard-link-for-tar-gz/expecting-hard-link-for-tar-gz.tar.gz0000644000000000000000000000023612462537262031137 0ustar 00000000000000$RA 0%(NBҜ'hJ񵋂)-f`^~rJn8k/U4g.VXk]PbȚ}*umSy0T1:K3%N(brebis-0.10/functional-tests/file-missing-in-gzip/file-missing-in-gzip-list0000644000000000000000000000001512462537262025133 0ustar 00000000000000[files] oof| brebis-0.10/functional-tests/file-missing-in-gzip/file-missing-in-gzip.conf0000644000000000000000000000016212462537262025111 0ustar 00000000000000[main] name=file-missing-in-gzip type=archive path=file-missing-in-gzip.gz files_list=file-missing-in-gzip-list brebis-0.10/functional-tests/file-missing-in-gzip/file-missing-in-gzip.gz0000644000000000000000000000007412462537262024606 0ustar 00000000000000TNfile-missing-in-gzipT(H,Q/V(-PMSzbrebis-0.10/functional-tests/file-missing-in-tar-bz2/file-missing-in-tar-bz2-list0000644000000000000000000000004512462537262025756 0ustar 00000000000000[files] file-missing-in-tar-bz2/off| brebis-0.10/functional-tests/file-missing-in-tar-bz2/file-missing-in-tar-bz2.conf0000644000000000000000000000020012462537262025722 0ustar 00000000000000[main] name=file-missing-in-tar-bz2 type=archive path=file-missing-in-tar-bz2.tar.bz2 files_list=file-missing-in-tar-bz2-list brebis-0.10/functional-tests/file-missing-in-tar-bz2/file-missing-in-tar-bz2.tar.bz20000644000000000000000000000032012462537262026262 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 brebis-0.10/functional-tests/file-missing-in-tar-gz/file-missing-in-tar-gz-list0000644000000000000000000000004412462537262025623 0ustar 00000000000000[files] file-missing-in-tar-gz/oof| brebis-0.10/functional-tests/file-missing-in-tar-gz/file-missing-in-tar-gz.conf0000644000000000000000000000017412462537262025602 0ustar 00000000000000[main] name=file-missing-in-tar-gz type=archive path=file-missing-in-tar-gz.tar.gz files_list=file-missing-in-tar-gz-list brebis-0.10/functional-tests/file-missing-in-tar-gz/file-missing-in-tar-gz.tar.gz0000644000000000000000000000030412462537262026055 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+gYZbrebis-0.10/functional-tests/file-missing-in-tar/file-missing-in-tar-list0000644000000000000000000000004112462537262024564 0ustar 00000000000000[files] file-missing-in-tar/oof| brebis-0.10/functional-tests/file-missing-in-tar/file-missing-in-tar.conf0000644000000000000000000000016012462537262024541 0ustar 00000000000000[main] name=file-missing-in-tar type=archive path=file-missing-in-tar.tar files_list=file-missing-in-tar-list brebis-0.10/functional-tests/file-missing-in-tar/file-missing-in-tar.tar0000644000000000000000000002400012462537262024401 0ustar 00000000000000file-missing-in-tar/0000755000175000017500000000000011655057606014051 5ustar chaicachaicafile-missing-in-tar/hello0000644000175000017500000000001611655057606015074 0ustar chaicachaicaHello, World! brebis-0.10/functional-tests/file-missing-in-tree/file-missing-in-tree-list0000644000000000000000000000002112462537262025104 0ustar 00000000000000[files] dir/bar| brebis-0.10/functional-tests/file-missing-in-tree/file-missing-in-tree.conf0000644000000000000000000000013312462537262025063 0ustar 00000000000000[main] name=file-missing-in-tree type=tree path=tree files_list=file-missing-in-tree-list brebis-0.10/functional-tests/file-missing-in-tree/tree/bar0000644000000000000000000000000412462537262021710 0ustar 00000000000000bye brebis-0.10/functional-tests/file-missing-in-tree/tree/dir/foo20000644000000000000000000000000612462537262022571 0ustar 00000000000000hello brebis-0.10/functional-tests/file-missing-in-tree/tree/foo0000644000000000000000000000000312462537262021726 0ustar 00000000000000hi brebis-0.10/functional-tests/file-missing-in-xz/a.out0000644000000000000000000000021612462537262020742 0ustar 00000000000000WARNING:root:1 file missing in /home/chaica/progra/python/brebis/functional-tests/file-missing-in-xz/file-missing-in-xz.xz: WARNING:root:oof brebis-0.10/functional-tests/file-missing-in-xz/file-missing-in-xz-list0000644000000000000000000000001512462537262024313 0ustar 00000000000000[files] oof| brebis-0.10/functional-tests/file-missing-in-xz/file-missing-in-xz.conf0000644000000000000000000000015412462537262024272 0ustar 00000000000000[main] name=file-missing-in-xz type=archive path=file-missing-in-xz.xz files_list=file-missing-in-xz-list brebis-0.10/functional-tests/file-missing-in-xz/file-missing-in-xz.xz0000644000000000000000000000022012462537262024000 0ustar 000000000000007zXZִF!t/UQ]: g~r|rࢅDcfo[*nTӦsU zJd%SPD&`k[_ךx DA~" =mدmVTr}YZbrebis-0.10/functional-tests/file-missing-in-zip/file-missing-in-zip-list0000644000000000000000000000004112462537262024614 0ustar 00000000000000[files] file-missing-in-zip/oof| brebis-0.10/functional-tests/file-missing-in-zip/file-missing-in-zip.conf0000644000000000000000000000016012462537262024571 0ustar 00000000000000[main] name=file-missing-in-zip type=archive path=file-missing-in-zip.zip files_list=file-missing-in-zip-list brebis-0.10/functional-tests/file-missing-in-zip/file-missing-in-zip.zip0000644000000000000000000000162012462537262024450 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-gz-list0000644000000000000000000000020412462537262031711 0ustar 00000000000000[archive] mode| 777 uid| 1 gid| 1 md5| 1 [files] doesnotexist| full-criteria-multiple-backups-gz| type|d mode|777 uid|1 gid|1 >10K brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-gz.conf0000644000000000000000000000023112462537262031664 0ustar 00000000000000[main] name=full-criteria-multiple-backups-gz type=archive path=full-criteria-multiple-backups-gz.gz files_list=full-criteria-multiple-backups-gz-list brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-gz.gz0000644000000000000000000000010612462537262031360 0ustar 00000000000000ƷNfull-criteria-multiple-backups-gzT(,VD.J;7././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tar-bz2-listbrebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tar-bz2-l0000644000000000000000000000022112462537262032031 0ustar 00000000000000[archive] mode| 777 uid| 1 gid| 1 md5| 1 [files] doesnotexist| full-criteria-multiple-backups-tar-bz2/bar/foo| type|d mode|777 uid|1 gid|1 <10K ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tar-bz2.confbrebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tar-bz2.c0000644000000000000000000000025512462537262032030 0ustar 00000000000000[main] name=full-criteria-multiple-backups-tar-bz2 type=archive path=full-criteria-multiple-backups-tar-bz2.tar.bz2 files_list=full-criteria-multiple-backups-tar-bz2-list ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tar-bz2.tar.bz2brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tar-bz2.t0000644000000000000000000000032612462537262032050 0ustar 00000000000000BZh91AY&SYq1yЀ@@{n0L сFd14`"d)=OH c\fc~??%!TEUV1,HҸo6u~c&KӷnSc3XWeҿu?6,[Pbrebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tree-list0000644000000000000000000000010612462537262032231 0ustar 00000000000000[files] doesnotexist| bar/foo| type|d mode|777 uid|1 gid|1 md5|1 <10K brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-tree.conf0000644000000000000000000000017112462537262032206 0ustar 00000000000000[main] name=full-criteria-multiple-backups-tree type=tree path=tree files_list=full-criteria-multiple-backups-tree-list brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-zip-list0000644000000000000000000000021512462537262032075 0ustar 00000000000000[archive] mode| 777 uid| 1 gid| 1 md5| 1 [files] doesnotexist| full-criteria-multiple-backups-zip/bar/foo| type|d mode|777 uid|1 gid|1 <10K brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-zip.conf0000644000000000000000000000023512462537262032052 0ustar 00000000000000[main] name=full-criteria-multiple-backups-zip type=archive path=full-criteria-multiple-backups-zip.zip files_list=full-criteria-multiple-backups-zip-list brebis-0.10/functional-tests/full-criteria-multiple-backups/full-criteria-multiple-backups-zip.zip0000644000000000000000000000123612462537262031731 0ustar 00000000000000PK 6?#full-criteria-multiple-backups-zip/UT {N{Nux PK 6?'full-criteria-multiple-backups-zip/bar/UT {N{Nux PK 6? <*full-criteria-multiple-backups-zip/bar/fooUT {N{Nux 1 Om PK 6?#Afull-criteria-multiple-backups-zip/UT{Nux PK 6?'A]full-criteria-multiple-backups-zip/bar/UT{Nux PK 6? <*full-criteria-multiple-backups-zip/bar/fooUT{Nux PKFBbrebis-0.10/functional-tests/full-criteria-multiple-backups/tree/bar/foo0000644000000000000000000003600012462537262024572 0ustar 00000000000000brebis-0.10/functional-tests/generate-apk-conf-files/generate-apk-conf-files.apk0000644000000000000000000022121012462537262026010 0ustar 00000000000000PK[T@9mres/layout/main.xml]NPEتM btg 4 ҨmCk;3 \y/%<;/7wޙy)$ӝF 7Qr=P (NOo_TOYo|!cÒӨD)ϼYkx)zWxCo{Rtd8.[K4dv@6]>tWC^DXY9='-j췎~PK9mPK[T@3_\res/layout/menu.xml=N1Y;[) B\;P ؀K@8W@cx޼8j 0y"y~" «& we ,xV^L윕1 E;8DUBFʖiƺt3eˮm.qF%L] /V?|`Vfُos?Jpʸv'As-MkvM\;Kj}l\WgY}v}eVl'PK3_\PK[T@"{#` res/layout/preferences.xmlUMOQ=C)PJ.:"ѕ&L\!Bb¶3 tsi\p;51pJ=xNM{@ Ӏ<y> =O\!nDhψ7⻲#xM#.'UD)&8.WtLMOŔipԤC*&|[qŧBľ&Xy3.]qՓ{ zX,%_һ2CU|H͗8L`as*-~u#66+4mmʖ6*ƅ?H[W!W(9Q\.w=Zp㬎bEj)#YE<WrDfmhW!sG:v$~`frXpߑ*T_/{2 3HRc !9I<7lMRۤh'佧RzVK9 k#kNɄ^C:RGX߰gz7iNK w'5gKrc}F}Ha}3oJ2i.ӿW4&Mhn¨o*?R_^jnߜ挚g47c2#ъPK"{#` PK[T@ŕO6 AndroidManifest.xmlTKOSA=@yIyR޸1j1ƅ<I@LA -XV҅?⊅1W3ߝMmϽw|ߙobxHgzO4xKTMb biB|$o~xA/7/щS좈r8F y uF`* n"do!ml="{s|2˸ He13fOfdNX y"{LF/\0@u(s 豸d)d͸%<"^qָJl-N&5̜*qV3#5U>%޼PơniR9BezTEXe˜/w~쳺VkVz xBzdb}KdוT|S.j֫u''&=O$0݄μ0VVNPYVZgZsgqO{dk唽bt=/EtxOxP89?^_[:>_qoHo=rZ7Z߳}K_#^7[:z9a=g:ЋkQGoEb^[z-W06b_q>sci5f쳴V`/兛g-~^B%,=7C ?dK\?oD4b3c 8F-=7[|ޘwlb}ǵUg130M9PKŕO6 PK [T@kf}ٴresources.arsc 0>|:z@x<t6j.@`dz*F`|res/drawable-ldpi/balloon.pngres/drawable-mdpi/balloon.pngres/drawable-hdpi/balloon.pngres/drawable-ldpi/balloons.pngres/drawable-mdpi/balloons.pngres/drawable-hdpi/balloons.pngres/drawable-ldpi/balloons2.pngres/drawable-mdpi/balloons2.pngres/drawable-hdpi/balloons2.pngres/drawable-ldpi/icon.pngres/drawable-mdpi/icon.pngres/drawable-hdpi/icon.pngres/layout/main.xmlres/layout/menu.xmlres/layout/preferences.xmlBirthday ReminderBirthday Reminder Preferences%sNext birthdaysBevorstehende GeburtstageBirthdays in %1$s (%2$s)Geburtstage in %1$s (%2$s) Date of birth Geburtstagcreateanlegenedit bearbeitendeletelschenturns %d todaywird heute %d Jahre altturns %d tomorrowwird morgen %d Jahre altturns %2$d in %1$d days!wird in %1$d Tagen %2$d Jahre alt today: %s heute: %s tomorrow: %s morgen: %sin %1$d days: %2$sin %1$d Tagen: %2$sSettings Quit service %d Birthday %d Birthdays %d Geburtstag%d Geburtstage de.ubuntix.android.birthdayreminder4 0@Rattrdrawablelayoutstringpluralsid`&<HT`z(PtF|balloonballoons balloons2iconmainmenu preferencesapp_namepreferences_nametitleknownBirthdaysunknownBirthdayscontextMenuTitlecontextMenu_createcontextMenu_editcontextMenu_delete dialogTitle summary_todaysummary_tomorrow summary_othernotificationText_todaynotificationText_tomorrownotificationText_otherquitnotificationTitle 8H$x 0 8H$ 0 8H$ 0 8tD$   X8$ 0@P`p      "$&(*+8`$de 0@P`p     !#%')8d<$-,8d<$de/.8`@$PK [T@PFGGres/drawable-hdpi/balloon.pngPNG  IHDR'HuIDATh͚{gWUǿk=ktZa } H `KA)P j$!? `b|&Ф+ NBT(Z>3޹;bg%;}s>g=^ ~ sp\=Nr]{ ǻ?= .0F8Zeu0|'րxܷSw)W\=: ivkڹ3SEkծn5!B?R[}}9({F;}\iWאF ӸE! oxYgf}Nym}ySr31ӴNFc& ~p{%#KުF~ߡVxwlྴs-wLʲW>Z#,/ F"DA@(#G}~^ֻ=/2;ap֗&_>\Y[;V7M(I EEJ@A)lRQmSMC86][_oU/މ?߬yVr ۫ QFZ#8AH6!_ٱRwqp^৮N}g.|\ptnNY|]ٳ˓25;f9XԎVaejZ@TOe{/qGq}qiV7NFu48JvB0sXqm""ps;j!HSܸ# {ܖ_4]=xvTQ#o󁨙Qc~Xơ3fy@(Ƚf[\ݠ. < )}El鬳tڎ[=ȑ00st{on{Ͱy w!nx8eY´Đ ڐT-;oni, px%~FXD% B !oCw 󙡛WtP Φ8 ߞYw%UZ:5',Ep_UQzEL3VGΰa(NZJ|GT N_:vݿHVgޝTrrU &" a) 2Xv䑢m)" Bz|@p-@SR9pl>=rTUl gӰ 0" !J1Y$,Q+D%sŁ$C;XDY5<ج U#}0t" oHqvf}] UNf,MՉkrH 7AW}*y0C 4ҕh L|Z,$(@\W?> LbJӴ!pι}uuA#ZtId$VEjXxCjT8,DG6߀0N  Z8o?2]o(bRxĔBiO9Uds Z-x6qBIsH8ЊKPBDj%@2Q'f~d+0.vT,Mvרj$ED$檋Btnr8崴5܉Ç*^$xl3H2Aqh9t2*R6fUbf$EEdb۷z:jwlnDղk]Vﬔ)^Wh#h$<>eqqkR24xeEz 3 TET@\ @B*z5F moMw!!t_z;qNñ k$qޱBGh:5A"[PKnpX/:ґRZ&0 "Bl'wTbR݇HJ? ,Il[Ƶѣ  -QBQ r;NOlQp7R+J5Z!C(ZRS6BЀ+U}a>8868!@%s>d*ՋCC Q$$zj]{RIz" RNX%9[lXhRQ!tsك^gZ!5QtQqȘԛh!`)"!"P70$&/4H]t* ya[1+xY<5&(+4&UL AB. @EMm5 WNx1 wfG0&{"\3C4!{uBz(V*BLdPcD;P(;sVM x,T): F!uö闡"9aB .J B`j"6he4VF4ViF cB`4 Bjuj\e3 R[0sDpR  8'.'YZN.7/%'AR$ )@j VsFu>r MC=zPfaUU5ku7Bd8YN:FN IB;Fh 1!9$:j"G8GNF I"%TnړẐZɠ9/!|un5t50CkњԜ^) %ZLћSF7jj-G<}=Pv}C%8FO!RU"PNJԊZqH(@eȯ{B}iP>s7xAABCEi{LUԋOnW=!qâ~B.?i{>: /'#ɧ0 uP"!Z,؍tLX01L5G Kn9mךyE\g=UOȕW^Yu5g<\^rG~ MWs_춾ag<'[kx$O/[O0z5wgnxމyoۀIۻwǟ򔧼n߾}?mǧc||]w1w3:'"I_~I;я6$>.8p꭭c'dssEM\d'k^snꪫi9TĵSJIwzn8u4 N6!)-oy'IJDW\q'ɝ'U*kG9g۽{brh+3ˣG/ǻO#G<]' ٳ])6vRđ#G~tUn揜TA㤃ǻD^YJbPIENDB`PK [T@fQ@res/drawable-hdpi/balloons.pngPNG  IHDRHHUGIDATx|kmWYZksN:Uބ< D "(HDPҨݭ--;F1PD"20&҈ayqUu7ǮNb8L1NU}^{o~s}˃_̛m|G!^սZϠW҂@hzn4 W ըTb$R !Ka3Kk%{~q o>oL :Ρ_@g^P/ &R]BUh4lj"H]XvX+ͲvnQOs#bEʲ+$rѳAw۟ac3Tx4YoxjTB]ži8p6fRt;ۋGwZ쬬4P^~}\+V^cFj1bf" E;ŶQjVgʇY<Ƶ=}7񤩫*.I'oD;F؜0NkQݡ[thk2f^/_yқ\9q}=f;>W1ljGm>rCW]uy!R}e^w㏼1?CdFN=' Y޵TbiVji[tK_}#t?jա#Y*mG跗(#O׃fcژ[I)fӢGkli zuӋ-޶s=Z9ڕ?wOsǻ~OSQ<2cUÛ٘T5P+kY0QR;js|Gexu8O>m]臣 U hf`)ޒ??^0۰2[&ZKxgP9 hHF0 16CeBVD롎 p gp/g8^?`mԱv}Qn)W>7e h(2EOzy׻ڎv;s.?9$~{A}#e+}0P Y'?J ] rZt{4 GVTA0HƩ@wJyHa\yY~2S 5tipii(mܶ L 4 v!u=J7+yہ줜%EDvZx~^ `I@T`!ofߊTP*&aV+U:υK" 0F?bnv! JH ,!$@JqEmX4<;AJY޶Rp$Je]/@R8RWcA:2.  `S4y<ÃumGCE9g-Ǽ.8J_QȚT,ہOS40yD9UPe`rwB "!":x}<'~+Cf#7GBRHe Q.lc/,n*9)2.W'g/) t! KQ v]iE"\pw.J(t@q"9ǶV>5ek. Xx+v S.S$9Dgh K(1njq;GB!: ԣ43}wȠ">r Bw)N+NnEIiB/@)PB%zr֗$hacf0恷xe2K`Y! "Fs\dD 88TF+$A``!;d,gVn^`^"ǀN^ ߻S%sYdUE*™'gΔh)bF@"zsC LR,|J[X8 Ȁ$Z0H!yeYz4Ct*=)AtчaV;nC#mG)@-# 5@߸BR̡yHĔHFXg08 \CRx,|EMaI0CvZB{,S0S-U$0i=. V 4n65'4|z!"gɷc4)UUX״QPUdU5BU" 2q, TvO@ȀĨhuL%Q@z@sc໥ҮS@/h00sW 45BX-{ 1[9t7#b)Ѫ+ uMV*J`UѻJ>7&d@v ](uPzNe0FeV1  DAd2Bͥr< ~t#%`K N$XK -d͂&1ĀNTUe+CLCb  *` .t0)&"""f#EVF<^~YT@u@ardlrUjy  Fujn ZbrYؕizh͌=H,%c^4'I 4&`U`kDFIkT@>$IP<~º npqEa){h]B =2i'%@ :(2XUb4Dh]-1ɜ&wv]MvPqy$[ (3 a(3W p˲=H P P ˝ 8|_\@XaUVŭ)>011H0 x"j2$ ńe"Q99Cx`b)Β 1SK%gH  R$JT$%{tWخ<!{m^v+b*E)Ē= ސd]n :UL>C#!u(qItI3<;U209#Sɛ-W6ˆun2e |0?82|PӃgDw02՗3&^7_\b,&ZXqW$)*xSC6OM]Ձu#ug3>3wq9rK O#1XcEH(2w\-rYO+ǎn}֯P  ].=WE; PpW{ȺTT},s?aJd @\9bb?19 }ߡ R+`\^@!Ge6X!LjP, Eg)={.}̹ʔ0*6`C^%x?ռqB'  @"%WQf3)wyɦw혏5hT7hێ}ߣd#zJ"12PZUJۧXmaW6N!wk0 " Bb x'_\$lb$$H@dum+ٰ^sO67 9G@ZtȥwG_ܚا쓉4b]"%[AGMħ{Y[hm@;9B0:> w7n5Pn3`fUV1JffTRlƉ躍DU ;kY2*̜ zdСs;60FcҪY˕|P`Kemꇅr‚e58tw.Gmܠmbty1c! ֗4o ͊tڶmsFS2NrC}ػ#?$y̓phgY6rk=PkuXHP{-ٗmkDNY@|g &8\V238I;]@9J3o۴Z,~DX]ٮƶ[ح=EϽ+1}? 63j 9OEv~ U`.sy[o]!UL)<>9|,,:ۿF}4U3[Ey{Z+Q۵s'LF8v-Tl`X8WW_0}M,bB|/g5lhq =t/pFn\77'24|\U>NQǪ4֪Ysv;hv-L>so"а^gkCndFm`3)dډ~+,9ozKٖǻbse>0nU0,yUvYb9ږN` 1@Xt8@rq|:ֹ=&L t:U` PA!4P #_=廀'g)UUiTU^*T))ƨ^rj\R\=:?z[[o1x%Tndq0oE"U(U/xῊP^"g*3Cq^R%g'@4ns |Oz/}?/ ~vPXO)GP542V$>B/y4j}kzАk `2ADܪp^s/|:|hy̛>9qʯ駞I{uN6jzOpc?"A^co!w/ԅ^{q_3wAKѧ `գSկDzǿΰ>˿~vql~cv= _jaB_7~@5+@yΓ֦G97OtW\qxK/|Cz/G|1k_̛]>7\W}y//|iuL&;W^ye7O䒗o{s_'+\zpe,>˭4ۼ+zWe ֚;:e/{ٱB?L^gZ[[3̷޾io߿;:MozSk/w+ᗼ%{/ĵvw5<~p'}yBlƃ9;/| n.nxh4{ @ykrȑ#ػw777_~ȏ\W~1.u .w\RpUUzַ~ FcGF/}Ϳkv-??>oN=}VU{@UU]wǜ|ճl=O}gq{ q7;zֳ^w{>\q駿 Oxʯ-gqF'r-RJ؏_f[g~WO=3Sc04nysso~Go~_o|67M1H:Z~x{{5\3_VOL)}3O87}cU]_k곞^_'wOO1;vqz׻3׿M?Hz=92IENDB`PK [T@^ SWWres/drawable-hdpi/balloons2.pngPNG  IHDRHHUGIDATx{mW]Z{sN}ͽ7W7 *!*D / jѠCT r)GQb@5c(1 7{w8}VEIp jgu>oooo37@`I"iCyC<)){z Pck,9 hjM_KzO{ۿ}~_s.`(,@OoZ@羳oe (/ׅjcY0H)iynqU='|+zVBc 0%;uki"ڋcY]mPrU>Y@u&q2m5c=s׾G۟IX;zC" ,!CʈEOmxwsz'3 h;#XU[ʼ{9ٰb(#]rLǷ:9d2tSz|׼QIo>g(ye/s?I mQ sLY3tW济RiOZh+W?KoZM5*SҮ깳5}X]+®BD3MiY#|Ən֬'*&_7 GCNl}k*2ZP7x?TyqR=mf4ӵo{o~@~}hg8XD>*αrV.fCٚQ䄭r{E#>n2]8tq^Ջ{z m6Mќ1;S)omճoX%|duVp|ep^ڲ0 j(1AA^ZIT=)\ڞ޶O2WE{DYn{8[ZUA.}E!#)AMMƦɶm:9kƃƅ~HFc:Bw|Էv_;]푍ى!m1DeCjCim]Ǐڬ?Ӵso擷|՘zϩ_ԋgV{_pҞ=>ؽ[ݻ[[U9\^V?|+_-ᆪ>Wk; v\wY 4zО/WGe7\a}ԌWi13DˡzK kEɕX^TIoKٿlէ|luauneťh?/k8[[_Go}e%>DYF1(KG G6MLz0MZq5zr^~y^ĦY^\=j.k*WVP(FC$ 3!PhGN/}x]#o͙gyOZ騪ibc>(J+1 WcQGJry٫~^z=`bc6+ Ǐs*z +Ơ+%[\0iw}I˓]38kW[jSH@r1p{yW[zw2Ba2T!! 2F&kHI?0VwT^XZz/Alf?R,ˈ+C .ƆABVgRI;C@(;oug~Ӂ+O?}p_]jd8(i0LsFUVQ`)D-4" ayq[s8IHu  ~v@ X%jD \ .%`,e>}noa%B,KCRIYy]7T{ipX'Ca&fJ3jh+om{kO M<~8s?X"!V#3]jR9cG1"%ړ#Y 3ɛy6s750xNގ;~$ 0& $%aa XYf[NzLx`BHJvnq*%:[٪.ќπ xj+‹E\LN`%ݛy6C*KL 5s,oLS!tl{=/:}YhaB(NU墁R6lm[bn2 HY :sl$:S*zAeh{O}ܣC3v+`OD!@9,9EOD3u*D3Qol.rcKjS!P ,>D$^ '`p*uf 1_K]،qhպ$8(t`mۢ_4 Ѐ(Ì9@2@\@e,G7$Ǝy/ X N^z5v|$`SB.a r1$eVp N_,v"AD2(;HWA <{_C!sr\N-IwEdeF2#9dtMA(Ƃ2@8d}b`4R!Ҙ2W @6֭XAcpOS&Xxbe켗Ps=]t=;.sRrD-| vdrv5I(Ip1JV g2B@dh%,Bh%#KFvBD!clD $R䀻 w,,W| H` bvgѓSfL)OF94 l~" 3&p\VL:9 ㎥1{(XT2.jE $9:@N$|΢C۞ R>Z =$vNKnR2B6H 4,Lع,EjS$e ,;uif%*#]Q3 x aHHr(rg<7^ `+1ILgZRv)Fp $Ne)`(bܱ6GT*TJPl~L:e7BJ&WH,dwMWIdE*I*h! lw:S\9eYgn1eteL)[4Nh$);("-"ųE`>>O{qYR%_(KE퐼ej^[@Fo˝i+\,Ăs#`ܽ<>J8 :B eP攖&WbYeIB f4B\2;.D`pEri``Ic y9P3< S.$:C4y!+_rh~u3}sУbcX|0c\eY:V`M$plX Piҁ,j)(a(EwB CIR#0;#%LHHmCv{>w pmb\ f!21-GU΋`( XYbD\*r2Z6qށ9EvrKpP; Z"ٹ*F*90St\rZi+Jªrs{u/M5ZXqV ]E ֍$˒V++vU(GIP!(,K^uiiY`Q*ehHŽa::%9$)w<@^Jx ~A-6I^9CiEBiHE BVVdX,%Df!IoZX8Ж.tN OSPS@"(Avt'ˁEaG܃($|lA;n:Og@l&Z s042,aĂY,ciUIVYƲ$ʒ( KZ(`!аI)QYȾIV VYOXTESiNxT2xǀMi,%S)y9>dXZ"GzdUQ121OϢBxf2enw-[}@>@ `dD1Et@'hL9K]G |0kLNNv3&o6-SNhsf#FEr! @9Xvy&ϰjn61R͔:zFp- `8e^랄x_O|Pxe #[L0SEr!ʋ#*].FwɝٳUw : $u9XO? X2u2 ˉb#> 5fOԤ-y.̹v,GU ?{) |8HS s@,%yRJ]nddf2a3r>H;8rv,-ߓnC/xJ(yΕm0W)ڼ6)ZN2%* ofxՋ.~oJl0pǓtA󅔲c!9{3d)ɔ'v!h9F7pK󓧆X]݌{veLjE9[Х)4akfoQ [] _|a%v9:v]ض-ۺF3*Ϧ]=r6zl).3uw?7CO8rxȕW}phwхĄ)9SnAYX+0%Kx/s$qG߬]NA5*E!iTOgeӵr4cpJ|\ hi{kyY۵(63ŜvDjY[!-O_K0/b\e׏ѫUĨ"uM4줐c=j\vAz ?{RK>ubb[BYB- ՟ӽ|{MW!x//CPȀu,H%G<܎.}ǵgߣG=뇬tڛs/se(+s#~=/|7,?jZH|'{^sޥ-~ՉyW.p Kߋ.8,?YeAiX߼*|_ +?^&`;pZZZB>t|YWMx=Fώ#ox[n8}s=u7zqWg@ژ==}=~ _\]=/98Euo8\wuܽ{Y[yk = ۧY{ў|ǫO@ ݝ?,]p+:ionqWowm?/z*nmm#o<TUG۶}³w޽1~uUxu]7zĝ^!_Wo=\uUzl kt:ݟs~p8|Ȟ={Atuuy{΍1zk_[@Y>ym8~A,ˏM&ϹhI`Fe/{ࢋ.*E̓ lnnk>xw|ԩg_~K_ҕ313 /}gʲOOsϞ=_J)`p6<)O>|;'Oh6<{09g`0h4y2̷tzɓ-˲Ї>g=o~g|]nllwԩ۷]Z@{{@unч8pccZ@ ~WVUu8>r&bݳgUUux3Tכ/ywi5<>yW[@r~mU.>s&wƳN={\r饗| ;NJn;$Lۤ(IENDB`PK [T@kW<~~res/drawable-hdpi/icon.pngPNG  IHDRHHUGEIDATxy]}?m3x< FA4*i%@KPĒJJЦi*IiR@JՔ  1`cc{6{潙{l1cgz=Z˙v&@p3MgsG)ތDֈxhLj6mωl; DF2[p #Q 6 MZp< n}]eQWČQ}x) bӓ(FI2@->o(_ieK|7I9d2F2'a,I[/ލFkf(gFU88 ~[1 Kņ,Z51'GL!ۓ ^}cNO*!#[Fv rmR پ Մ#|\Î 1VU(:1ΰR#|pu_=FxIHǬmHp% vXc:G=|,9/T%Vqw2uHphNOV=n,z&wEA1QV*A%kaOY>2heѡP*$ +PaAr'/di `$* E 0°B(%h(Y2* KX#Yذی CF#b8y2qQfm52U]͹hHӘXJoq ,?ySy^w nѽ7~Pȕ|֝[{bo~ć?C ֠LH[z _.cd a})ņ)8ΐLCJ^J/g_E)~+]̥,|Lb l?2M\0kt\k*aϹf4&&f8O \^B]fOߛ21显&IxL` UKu?$F61ȆXɁu[C>~!$XEЕwͶߐx\mұ6^nE kHB]+B&N›L@q7,}Rn%sE %sffV̽Gx,jƕQ8aG4vD Z0A`V+kUh9&CkP0PZkuh 5uhmh\kѵ+J=ӂa0!~n:ʁ N[O#A9v8ͶCdDy3ȡ(hx:=7I)*fsփĄY$1gl)Agbժɰf tT쳳Ss( ӢbL$%}]ӓMKjD0AH=dqe)Gi8.g-w_y 7b 2.Lp./i^0K290nC_[ bx>!=H#|6v>A{մגiJП~[4WKQ*A'롔)#5g1qw֘SWǡ#Nn9s,Py$auy-(SPacŽ]{7;婆*OEE2b5}œI"Pʦz]9\֙Lԋ91؛{>)$1tf;au=E*fq$J'{m@[z--U_LFfj;%Fړq0P@ɦXzz;ƚq 4AM`{zBS}'k_g$NAL"}ݸ25]`r]Oqam& O(qfV?;JRl%.(1=tTd%Vapf qte9(]WZ,@6іř T}L'w3-1d4x˕ơ&J* %Gyq_\ccgoqer/&\| >p4 UQ@^}c֊h{ܾ`G_6\m`;ul@B45lXHl'UT BH HQ:3u!W"P ~`"Xkd4t,) ԝ#P\f<Ň17S\p!VG!MFUjކϑuf2'#0h[eƫb-$Oc# @i2]pԀuܥFL{|}IENDB`PK [T@Şres/drawable-ldpi/balloon.pngPNG  IHDR$k/IDATHǥKW};s$Rrۂ&VGAu Buhg X)QGT1L*&&}{Ĕޖ{k{ۂ/#|7Y\^=bg~sLp)cMxntї]]^={g|68zv.=2t ^y蹋߼ ^4yǻ˟d4ZE;3FGVw6d\&C *?Z>e5I]=h9I4|ްk OJ=ݚ;p ( BYTMIh BQD%}OO[_0,=p!u}xlo; 0 Tz0bP7bmk͋W@,+윕|*(f B;P2bk;jj"ᖟ2S4w QR }#ko0 j! Bhe\=jďvH^VpZG$#h&]B^z"ZaZf2Qi*F@ x8'eјY !0g_dfck; M#I.I+ShsSՓ 0Pg!id_jv$2i-Gcb")@w, G tcز ZsvCh^j½N>r.~Vo<ԡg_ıjv~{k;nAaǎ{?#>{8qϟSN'OÇ'Mvگ{#G:=N>cJkaw]psKKKgXUU<ϷR=-t3333[?1ؙIENDB`PK [T@ res/drawable-ldpi/balloons.pngPNG  IHDR$$ IDATXuΝ޼o 6%`RQH%46NpUBOCH%.R+"E)iRAQ5(10_ow߼7of*!AIm̹;s.p?xL!g}0>iߩlN)&tڱ_{w?)U%ϯ^:ym-f9ѮbiQҬK=Y(}~}*;ε2E&s'<}@1ݜxv}ON9rܖ_\^Qn|8@Xv'_酥Vv?>rЈ V|b(6YEy嵅^|?ڈ5^RjENm#ͮl|UYyzϟwL}hU;^m\,ƕR!QM .U^fxq弚{Z/|3櫭GK.ݴs޹#oE29Iv޵˜o/Z1s2lhHMmWtyuXvcc1\gJ6~|a orܪG GjمMo͛( bC'EYdەCWmвpad RPTx[[)F8_T"}~?G+ NnKd~2=M' nӾy ʥ >}"y;^9"gKT%Fi02:ʱ Kk8Ѕr V><:O6o,QMH 5æty٠W% 0yUUz1D)Q'ze!,,lb$1Dž"PX(lI}M|@`XOX^ae%H_[ } `8h@)}kM 济MGNgΤA<1dVo-a2 r`gbJz}]`s8 8pe;1 V2}YL"R !ZkŞWt:9($$HRf.0}"e`&Y B|Op0 1CXx1(!-m(("Xʬ |2* B 0C sͺP$cE09 +4C)Ҝ+0PdT1 T*TVĨh "pJ!x8pY_$S*!\0<.CЮБ.@"DRbIDQ-dm*H*V\w2хϋa VEl/i8ڻ)_|5]Wb*e{( D<.T`Hj$SHrG\ ,¹hH`t~z4^nძc,u/T"zLc.1X"$Z1iq dYb8>B`qXCG.pfUĬ{}[cՍ1z]zCztRWem@`  P䕪R]5uԔCI$+>s{d~9.T1-G֐U4uEIBJVia)"q)h*e%'Z ;s`o"0Ԁ /*0#V-CM&!/( ʋXSʆ$ց$%"P(s![f̬ED\"aС Pd ]  A.2R!f8UE,[a,Qʠ?Pv"]qѓ"GZx8{-Y Jq,lL[RH[AQ(οKQ6 Flbֱ09Ti _?l0opY`MuVj5WI#5܀" =3@ߛa UhuH'^ ;;?ɋɫ.ql{ߊ*ػw3g{o+vr=znnn98~mZo;lggg7s=sꮻOx_lNs؋/XV+xDo\*[Rڻw NZٳgOzI.466t:Ç?㗒ʹi֣IENDB`PK [T@E, , res/drawable-ldpi/balloons2.pngPNG  IHDR$$ IDATX͘{Qǿ3kwz]QԉqcL!F@H"5jC-!RūR6Eq[)PU!D4(q}93QQ #939stfLL6'=J~9LDr&^Y=Z>gZ3$eD|!i,}z@;#r,=fgls cU=owS^p0J 蕟rOqb1晾Zy}ɟ}9}G@,Ԫ6խdNu$G(S>|O^w^|ʹm.)7G/n [EQ~{=Y~2U r;'TvO/ɯ>{7v\Wozm .c,MkX 6Mkַrg7Eʼ7c{0BrsO[o)=Z%gѤo^q=Vl1 Hh_Xכ=P6+x-v;}cŝoT5h_/ƶ9LzgT~A7%SgbzAcM":nmfRu=Q V0%C!tojtjCܴ7G~y@zЗ#C*K-s aI\Rm z xKոϜh V2q)kG8Y-/7vz%ϵk,59๫TZoY"銩$ =Q5KLG>S@{J זI}V H3T+x<ΦI^ؑgesc\ m׋l7滯 ,5o k Of[JuBͺ<(tU@ϭw LgS0:O!bZh._ BRkYKG?DJl P`-*[6DT@FCU0 [LƦ9P",kQ)\̋B 'Ɨy5,lI(#e2+XUăԑ]V7|k@DEdJ!V@ʴcPP E&̉u3Q:J 6  SRT$J :P!A]-j^4FӪ 2S0=kzK7rH= ^lZZe >-02Q)@ @;E@!(CDhL4,'U"qh,C -W N akPwDls+Il6ȊS&΃S$FZq4U25@JXCRH.zH3kFgF]UfJQ"a!%D" * b$ H* @7}/@9p [ DkluF0 1Y63 &FH@RS!%5,!gqΨ/85߯k}8tƝ҅cmDqV)Z" 2e(PdA2w OօF.'q{<ַM7Q}M6ՄfLd{|2aIn/yvm3 "Ta愈"k:./n{?ZIENDB`PK [T@res/drawable-ldpi/icon.pngPNG  IHDR$$IDATX]l缯_N]'Mh_dRcLc$&@j+ФiҘ& &.m_TvBl4Vjc@a#m$TNj;_~"NdTHl?9C^]p PwC?~[}M.= b෇=0Pk o& ,SOst)IR?4~vGJ@%`iMl {)rcP6}8@΍_],gJKh$vu-l(RdSf߲9|Hk6@ZDdIOcXkƐ\4CJ϶~.V2Q*Ilk 3et`B5355E"nvh页Rx*KS:p%0\0 nՀ=ZS{*ƹQ%Togw<9CT"L.j9(\26IDw7FgdZKNj 2Z '&tOd 1[!C"$[s4S#l߅?2Z3Z9бGWpşרvwS G9S8RRaŐ;ٻ>QI~L̾SY&.b8ːeCǞ(s} bW%䖁G(GS}'<Q.K%םVdYʲfI|N@|t&9v &O%%o4hi 4\}7qB C׾+q/u=HY>ȿH|ekPh k\[ƅ0g]hߐl$ܣMIWj{zq|Y%4R.-g|E\ =d5fͺ vl\3UP&UxޗqAoVeyz ͬzKws>2TLOw웿]AL\Ykuskڕ]&[4z8OIJ.}ȡ3M\7*f/NrNMq{vvW;Q iq |y/>p7kOv ?_{9̮[|1yE`, CJZVv|0n1~˾ F_n, >^n$+WL*EF aЊfC6tJ8g ‚ n}|ffB/v7znԌq,E0F8EdA>q3Mg^9bL[4Zלɬ>kcԹduGPm ձAF5H/E4eKb_Ohҕ߷Del! Q׌Q_8|`C/_#U?c<*5f^;7'޻o6+){Fpզs A0 bA2s A BBH@@OZ3׻ wXd)[VV2GBA:<1ԊBlQFd f ɨ-sIrv`"#syM!1J#%tZ%ڼ@Y,9!!epOvƠ1 P1;2 B P`8bh KcM%22H2$i( ӓbi!ShbUQa5$X [a A^}%u([q]>[S# tc.0jbiBȂёVnBv*Ҹ&;P5E,PVb&!J0vg]P8Hճ1:+Jw AMҌ(.)-5D&$ IA+iyeRlU"2e;S  2-H HɬHsI#wq;nݺBN',..>?kY7$+/vϞ=?\֌Nz/4 TIENDB`PK [T@` KKres/drawable-mdpi/balloons.pngPNG  IHDR00WIDATh͚{_UuǿkWnr̓!`J(FBCрL[Ǝ2RK83NG;ch|T 8hjZ "!ɽ{{?nFL;9{笵{Ė^τKl5sɘ%D ( yBcѹ"wޛ,yM?2y4J0`PdUQ>!1ބ*욿'g%O؀Y&)W]tcg}1[ ɵ G_X2)Lke\GH{pp>={zln֝vN o޴&qa iJmv6s mˮo,.ڜ8.XX$\<ޑs.땿d*hj< uPzL{ Ebߎ=eSqn|)#4hr֊50]b! Sym#DzNKa;Gl,5ۇsf8UtyJBPvw;TF׼%=6=P>=C_q/X2nf¤i6X4XX )Pa3x!y}_q3|ﲆ[9J{[V]>zulZ!SHǗ ѬY4e͞`a&XLL0>l`mʍV=g\ANmI҆N'KVS%KbH:~oғێ^]1%t ?tj9e&4]:tz9aT@Nfcа}A~+fKCbL- XwXL;O[b*5 FM&\(NkEˆYa.ln5zO|RݹcǛns#-M֤xQdXڳsa8Q8QP F:va,ᜪ jcEP\ht$XLNG?<` oj|F5*r"eۅ_ `0x]SQEQI@A&jpG`ADEOLDZC @yRpQi,%*TA`15Re&պV.p|ZE F&AT ᠉3vJ̉oeY~@T`5+4F! JBjg"E%ʖ5ea1R-IҕOED brP g*1~Ex:> RU@T%^uZQ*gUQmT1Dy0HUUWXL $г$ ) jG4t@P/ʆFe5ʆP3$F@ <5P`a$SqTs98& [jICU NT'TPQEIRa քSfFTQ h(b"(u"j"v~xBy>E J6Mkj:-n7jkOֲmd0q QB]PY[A|i*!%#Fϔ4DSI R ĸ5Q`,0V؅ۮ[9γVVjD\OeP|=m uI1T !,ms7FHpJbc5Mc*/|rV"$%N$!qV5qbT >@lJ* اʀ]TN-'DjԈ `:_^Alk$90u k rbO/?vںΩ(bӘli2sCdPdF( uUR"i8XjHej1HQ])_PQƁ5IŴ;yƨF0!%"51|@Yϣ\> F*tL*TaJxA,СJRQk35ɯ/ p_U!ADcT >TejQPݦ^M<ץR"6a8l;`#R_G"хu(|賈0Xcp韮3?Ky;(KH1bBkAYNcSo~bdZxƏWKGgW0a ߆}Y 3Prk.4W.uOjJUUQ]U^uw汰`m*-Sg8_.ci#yټ`FFJԡGS%IFau 58?mmSt(f'yiXUbYUEF,=K&^1VرծbKøױY"2Cقف D/#= s'%+ֆ9Y(*FUIx`r-¹^˟ヷX{9NÒ)$[ eo7\\[0pB*(I {_N?}`usL7gVwa9{3G)V}駝Yd?Mkq-o/G}9 RNw+pe0+zۣ\dwW|x[[nׯ_ǎ͑M?Zyp>neNh+{מN߰oMuLgk|U=>1:2;9_fM9x%O|xg6lPxo'Nݓk"-[|{9+_ܶm"2'IVe㎫ojӦMO5M믿>{Z;99 h4ve;hǎg0ܹMMMM}#yn:p=n_{UW=رc|ݺunz]eL{'o>﮻zeӇ=SF7o߾_e-[<ƣGʲvΝ:ξ袋+_z,ݸq㮡GgffnK>tsll{nݼyc=ytt' \ʕ+6lׯ/&l[gHIENDB`PK [T@ 8;;res/drawable-mdpi/balloons2.pngPNG  IHDR00WIDATheUuǿkϏ1Gaa@,A[iZĦ1jZ돤bi"R,MJLLQk(޻{9@ehq''u~vk-J_iI߻,vdͩd<$Ql捓lU䍴nfK7a!?ޓpI/~d2g[ǧMk$w߾=$.{֙,V{46֌'36>FZx]\.xmS/?媼Moj2kQl`6h(7) ?mhO.|U􆆳Us|jjG Ni' Y)v?(,.umTo՛|}qz^4Fjq[׹]Tw<`U{tyFjdMv6gvLTTJYfqz[DZ誎z,iɝ΍m k&Hbvj1aZؔr "xjˇ́[kp^sϿ4}樻曉=z+vll"[dlӼ4OLhK3~|I<誖kjIq=;e[vJ\qfTI$֔[t!i`.ia!KcZVCBѠ*^ YLچmh9t^~a}ܸӜ|nFө)r64E%YF*52z`˹k+C +EO6V4Ҙ%87E4M:XMf% ?^ZzsOO<⹝Ii$x#Ąm4ŶZHf79$fM&sV[a}:Ta?Y[1ǯ:S"|Ćb21 r`%h;&KP#8k&u~© S1CKL5xiـQjq:4sQm{DVbۭxڷZ[yB+M@3 8)ʱ`CCA8ؿU4=8DfMDMTcyov i @ hWTW+ Cz+8/]:e'W>z9!m1kI5z& 8,DʞJ*D9ր f ؇]ԁbazĒB   /[n# X#TvZ]#S&*hH<a@Xb FyѺZuދJ#j!KvVd7/@($*!K>_^-+Sf(Zx2( 1C2馻Q#%B@ # 4FPPJuCQh4'Jt^'AmOZZmQ{WXl)N̺qcmF"R{nh*Ro=}š.BZ$FVQ#Fٻ`N']]/|iGnIBP[փcn$,Bi^aVQam)kȕJ],\m|N*u/m5E,8 R>t$GLD_f@.!2iQ٦0$!BQPoJ{(%0+'EZbِӄCm NOӰ*Wj%< I=ZM,{Vm<>IJV}i+Ib(BTHeP#PQ+װ>GjAh0k0DU3 %F&  ]'c4`'p^cBD!ߪ(LzTv{j`2y_x_8[Yu;4}i2X f.E3uM3|-c|u a.?5ŪѠ_vI] eICVy޼vLJ;ĪR_Tq9Xo;C?ͪOWyF$m 1x ~/ţ{sw DĨ*B2]'oaz㉫Ke%7/m>mۖnec^Â^r)pPC@{4=x}/ԽnNq¯|7{;Z7sm?č?O9N޽{wZV?ss!ܹ[oMǟo 'gffhnn$I.ڶm[6MNN.<];=x`:==f޽{4;;y.ٱcǽ{ ;w\w}3ϼGܲee ={|G?DT߿_$j̼SO?!f4MgJU_a^'[aIENDB`PK [T@ res/drawable-mdpi/icon.pngPNG  IHDR00W_IDAThYl~x3ر%6IX)KXЪT(U[T҆j j@QU(]"Ry %iB 'Ż3=}ώ/f={-Rso̖1hjr&a.0nb@[4h na[OZ z~,hqG}pa xPY ľˏ>Ь[/P>9` (NtbmkmcYU*{zvg ,OkK%G2 #>Zik@R`@HE>OkRq ?קZc `Xz.o," B VJe(i;߹}_`YÍ4DVbOXK6cc R.k `ٺ!D/e$@Ww|z^=sF=|fDC99˛%qi6Mf)/7"o"XO@_h/*in#"XcioSOVES.mYц5H;\gF`iw sh[t%N=ޅEMl]u<[ʎljcqt ~W?GHG~ŃAPOv!EgQU&V@;t>yuƘQq8t{\s՗``2꙳Bh#Ϯ8=St pkh#UofU->CCCh<@Ƙl^=8?\@(g=d.B (zEBƘ!Okt3 HW?:}7 @@HV)IAOqglZ~~G&5ho#ȴn@ptmIaD |ΒaH}v4aRc\ o|+DLj.JMU#X&#kl۰C4w؉]9:WLC1RdCvZb0b1\Rw#)'/LMC}rE9ˬJBC:CHG(λVx&˺%cC-:=ANui?XU+Ȋ.V:ıAcpTM_a;wq=%>ᝁljujU~IWJpx8NZ#6V34NעM+$m~=n`,Ԇ V0QWk~R./|t%tC}`/ۄ(kx o VL8@Kt#7'vwUΪ6Je+;{ǜVhE[ٝx jtlCpOjb5 _bS88Tt帒A|ok}!Φ^cY6̟( &tѠFs7#N>SaRoqBTc\a0>JJljseXd,\ٙLuVQ"bX߼-(N .W`LxY Iq7o`umP:'[vBRU: ?ppggg}]Q;bElsh 46a Stƀ+ ̪cyI  cJS,(M.j 0OiN9(6Szcdd0NV,P H$X=IENDB`PK[T@$A classes.dex} |Tյyd2I&@! !!HH 8dd$$3AAثUz*UjVj-kmjkm|ə$Xn~g^{I$艹y6Mm߰^m/WgGn$Q'O]o(CAo5v# Dl'J_F"*A`<0 ` 6ۀ^`4Y(p?8]߁sJiL`p.pp9p9(598K@jR`P4ˀ`Xl"v $.2`/p%p p8<| x6}G{@~ a, %-=ׁ׀DˁMkw7GT ,|xw>`'p/mM w=T~ 6?nl$w`&n>=vW|>k#h"P\\ p\Ht&P C'" {#sk߁y`nh#Jj#7(m܆k(/Nxx-0,B@ \ \\ ~7 &.gCbh/R`,0Lgs@HWn> << 80/:ʀ*` :>*Y~a q%5_7l &Ӏ`# UavN^aIy+o?'o'"pP `p5i8}g[Ih2P@7 x6c%[ʼn, T@ ڀ^`\ ( "sm$P km@\ |xxx fTjV"*0_O_ z1`66q`?) c>\ PLF l1  |p*6>`&H`40 V`-ہ^`p9I3]G'o?~[}LaQ@%P +M@p px6 Pʁ3i,`7;`<0Xq8> <<< xxpgӀZXlb0p/4##Vj`  _/bQ!0X\\ < < x xp g Ā`'ppp+i(p oKh V.7_ p]Uthp p9p5pp%In$Mf\BpK ׁ.K@ [9a&l핰P¶IIoM=)isH07Œ',Sr!;AM E;_vi&4..v{>`?p%pp8\ \\ vq8L 8 | 76́wwG 'E>~%A󁇁G/_ | x x/IS7oρW׀?987>`>oj:< aS0 Np->h FVohUg6,an"zPYU2Zy: yLanjf.ߧgB-c !V4zYˌ;Ѷr*4 P ppBlp͟bkMf 3ya]qj3wʻB]L*O1 zFP\۹\yH[6h:<~ʻA r6٤iae:\BËt9ta]&=pM>d _ÛuΥa[;|߮Ku8l]|yn+s.sHmZ&iIi?iat/:Bo:|+]]!?f ?I~q2J~~f}6utͩޕ2+ Upu- Ckl2Kl P m=w)[R[xնq8l+MV[oƿ&]:̶­T{N3f W🳅d ~굶Kuenvr嚞g XIMiSNt S0MXfI:j$m&MNt4=}ͤW)ׁU^jM[5]JMWi%M~)tgit&460NlMߓt}_(d}1P0D}_:^m~ jZ&`["m4NNK:C+]b.lnhWf ]w)V4O\L7|*Le4Fw#\t MoQDWi Pˤ^t }O4`@Z u_&iM(zP`")3 IJh>tl%-3$ SJh{w>K-tўzIM:,<^RAKjЧ%sZN忊^P7#0o%`z%OIiQ)7RFjZLgN_K_LϧՒ/( F4@&/SrLzHh:4Z0s . LKqt/D?)4ru&Fz^7P3䪵\[l( Nj4I> ˷Fxg%k$Uz7%{$KIZNKr6,#^KOl^C.CJz5yu 4-4N+%N59*Fj:OZM4M }t5ݨM/7؞T?H;w])Ig$HzLPs>5*Li}uRi7=Υۄ_>ʷ'oEsbo1nvM.%P}rݕt.vMoη+|-8}(63T|lx6ŴWzWf![Ih U9K)Dkkz3J?<_C$=Γtm|vPr˰[oy͑Y ~5OȑT٥&\%ݭRIEWiZh.z\c1 ..G94]%?Yko|)Bfݿf]n3]I''LRU˭qUz:s$oR ̧ӹ3mT)w.!x&k0?)=.H'] ˷_钮C?ϐ Rl:wX*~N3_`+&eI&,'W.2uR62I:Oc,Xe<|T-lWu!v͂ϗ I$X'aϙ&!*Vh2׆na8Ϩw6#i;Fv{I?HRKIknj~E|Pp;1Ҋ^!COy`GLg;[գ +IG >&J/4*./rI| *ʗt{hgY>3+(\Cռ _kz⚁B]|E?ä%LJHju68݇k^>ר{Hר;鋐^QwtW!}۵v–>HMHu_NiΉҵwT|EJoTo4whN=Դ7\nCw:Hݝ=Ljۯӗ J-OM:}gj9'σ75mͶ|~N޷t-/;m~[xAUaMMeMGVtntqMK*dKpo<5 f"Kս/0=(􈗊Z#/nul9-|.%y5S9}Bۼ^ߗp."=z8Pyd<8ADp<-z3x;B#ό,`xF]GI.) ë3WTVS}cfiXv{'BcYZsi٪*ӑ #;!4\+0n.ѳ|y./1yN!Xb9y x4rplyS"#"}gE^@sH=7 mpKn=GYg#wdF[=%sKF@Ii|y/B[%9w\C\Og1tfON>@ O DK-(/hgO}*)̍UO5/Yzz:zuA~D^;G;6!\$F"ԋ{+h{P8ЃRA)zP3\f)y{1"sֈUnm s`DM-j`_ZiZe7xލ2WGὪf*he6bnIҭNSܲ["%oJVZMٍ'8˝=r8<[2ro>EUNq9E`wxOrR 9G}C0>u.a4F}Ww;e M@\GhBy:]wDe|?Tf#jPs IO^QͷNz \2/Q::0jaq%^flJg+* \T7b{ϟ; 91`\Q7fs\5A?㒸%${97PC7\DިM?טT)|/{NŤ}Kvj ǓWaqf{֞z2W0<~J+FEnٳQF*_=;kْ89O8d-S[ShP化Ȼ0xϣ25g׏&[`VkNgZ[7{J Ki%s}J~{ǩV}x|প.ʝsHEqvU!\G]ߢXoGpΕL9wWHG;U=3ُQ/"/P]//9xD|ɞ/WzM^5xMeU3 _LC)i3>JZxd<$Ɋ3Mާ}> 6[J#r[}W{Djuf ~yĢqt}QQҋ)CɽӼhz'UwRw?=Փwˍ8vޣ~ *Y+EOpYBsǁ]uDh5bQ A,ı7fzSAz,QO֏b8[I9#rbxKաWcxeLKBCަ}@}lHl'{P{Y8_ZFl\xGUt8 d{N к^p@WO a)#wj eͤeӾd uw4cx~Ƽ zlBhrgȜe>}{[/׍v/1Xl_=lкtY&gJ_z { v?[S/̖O3zXYQOsQ-¥}(ol]#Yw?j\Z=Wsg*j6'ŋ)z}%e ̋ϧŰ?X`*R 8obmۣ 4#J#u,4zp"ӕ-UkHCBp7d K-UD;bۧ4mIpZ5v8Iovml #&QVɡDNdNO{U L쐜n|;y1NX\T}ґDxgx+޳N3G,RKSOS3/k{:W!=-ZsZ+mNʘs<]ݑhgڐR" tLeԵtiKF;bqNRi$ ~}rf;Z0s9oiSӐsD--9k‰]y9 Ok/ :a-U 0ak}JgOaS nr:P×v~wWO8*[쐷+Ć*{R< wڡ\=Rofg紆SqVtkXvFl ʭEyV2uEm9RDpmOQmKmۦ<)N?f+)}/8Ԗ4٣Z*PINMb?Iť݉.܀*H6ږ& \D"}gٰln 6;AUJɰAI8=, ';Z=-%3 :gOjŷG#O}AVR2<58uڹ*TyAf  \JQʖocc߈΂=ñ&Q6~y_W]c-ͨƨ j/-xE/ kS/ 5T q܎dPɡF&xKu94eڜN 'íñՀXۨ7tgAfTsfV=FeG >9`@8Պ L93JwZ/ L4XWK/Ty(w%|ŐXGƺy@yFgH,oa!uj\':ysN*6 mC dlhPΆ@SndeSh0S3[br`ޚܰt'vۓC>EdwE3Ю(yudK21̷iXI_H| dEK]\rzn٩P0[m3"W8ޝ@Z9y_;ӣDBdxR oQ7Irm wvvqr@rҡ'7}FέJzqI_ùUd; r)mCjȏxgM09NQ HqhT"G[g⋙DQ[$'vǣ$(sE_GAhSp_W\ꀳ+bQvnAUf: X<EmٯTf3_Mb(9oli<(x[0"F2[mBųmhd5őV0V⺸ѝ+R754R3]ɒ}F+a qAqk3ĔW૞ +uYk6E o#I^$eQfXjXj~V4*ܑ5]ܰp_Vvz^ OMX1J͍w0JUX3Kg3ҳ U{DQZxgTj"wX!޾p'6>ȑs[,Kv*ےh<ΐ/07É|*[QaW_3g!rNxU&SLOLS4OiP㙫vv';9PAsiLF{(uŬrMJ [kw|rUļxDݣ;3%Q>}qiWfDrXXbN9,㓧@)9cB.JO h4c|~OQLr,S6CWRonnr6\y;H_'N:7L%1~~Kt:/L$/#ZϠ=}=۪S!Uۂo w3F?k:x,\?X2<5tZSFjG(HܨTWeӶB5_vth 1vMա__|G''’kab9m)Gyv <'  KIȦ?Dv#ޚzX.OXoR:bl7[Q).f#s>l>/N:Fr9 Pŕ;=9:Sp96r8j]ԝ-5kTaQTgx;Bxi-$?7bant}Ӵ]11ʻ({-);UJѩRʏYt1.2;MGpW2^ٍgc"5ZG.Xp9=k'+1u\J.%]ȯd!)q.)F?g٤3bl͘[KCq&*0)ʥ''r؋+A?9Y=u1MǏ"~c4?ʥ N:N`G GrrұrBJɵU( 3@nQT|T4@v Gq!4FwxL ~,TqPG5L:Z,aR[-5Qqgd?e U; av`Z'k8[LS^aV3ۚM됣[w5PͦlU/@nYP'F;4?x0z@ #/8}P%|){͟Nju@8G>rP%!I2];:6-0Yr=mĞ+338il5Fe\4#ϱ]1@2~jn|[4;(Xk;H75lwV?M=.#:\1˱{\s:2pY]ꌂ 'SKQU+Tx&a+Seh#qa= X:v~VlMV\Jay7V~%^`9k&_uƈEF,wDB~/pL [Q T&0} MP@!56Ώ;(#B tr_Gu.>2jL a1Xm>rpr[Ktj0VV\/[}z=p{#4{M˺:?1 &=`l%BO5/-Q*bY2[=c Y{t8PӴ 0NS8l塓;dq%7gRn#7|u4>c6P@4V,eKyҚQa4Udx U9au P2yk5L F ,#̵y<¿L?0^/*Fg#>~~KKJMD5' lssvbN/=cTϱCM3MW'z!o≍B ^C9ӽL7Q}D\8CmBobOota8f`>)1~>; x2Eس][if^N؉@Fx8|Urb@B^>^Q8#<^aO9o;.XRw%,{%"1 "8p2āC#~9}C!G p_儗 y;c<585`<ÏGŚ78C:qHO`O"4?> 8~t2/pLaa/?A1b/_Ut.RaQxFlw$^ACnB7q-xGo/߄_Ͽ?USQ~+d:6BR0vgS r§WzOo]&ro6ߝ?ߡ1v? PK$APK[T@,atMETA-INF/MANIFEST.MFɎ@&Ǚ+X g=ԗ3]#r?{73hpޏYdv^sʴ\',8r-ng'Ά>=t9ZNJFXV"63/u\DAf0aCt+,_F &cU/hD?> AAvD,m4?^݂N$DP,] por.ߤT^gEye'0/wĸ~Ggf}t3}0'sWҋj|CO~>>Мa$SQ<'*C-7^RNr $:[%Qj_5NѪŪH92|8uVkɪ[pfM?j1khY7]F \BZ5 \ & %uD < ͷ[ q>+6K6<)?+_ uG{Lll RGbEz| gEvXq}Ib 2C0XŐ 'W~F0bpn,K;&pR:l4&ѨEQ@ .P')f<EIB2-%D niiM"foY[C_@~wKqU:pko5^wK˺yW xˮ5INU ,Xx=>'~eEŢ9kviscn7 NAl>|E7Q6S^^xw֭b*Wǝ+<{(F-0&L+E'j:U\oWgly[bNOՂ:M(SV^{jngU֙`IOW2/+%$vey6H^\r~g*2rSi\q}Ӝ 8e_l ά~gI&A2~<-jRviӆoe<3˳g uof7կV}40kAuߒYRK/_kC}:95$@T!kK`[dSwV._fa\`* ̄eNмQ0K#Cvm~s.hzkwymf*P'ρؾuS쌛>:>#\ ߃/$]5pD藌8?}ϼA|q+Vw__}.kX4rKnM 3;z>~9;\0[.X\^TY`GNG'4"SnYl2n3&Zq1I彻׊&Ξf˧6qS&yE"E{UE&mPK z7#5PK[T@9mres/layout/main.xmlPK[T@3_\)res/layout/menu.xmlPK[T@"{#` gres/layout/preferences.xmlPK[T@ŕO6 AndroidManifest.xmlPK [T@kf}ٴI resources.arscPK [T@PFGG,res/drawable-hdpi/balloon.pngPK [T@fQ@.res/drawable-hdpi/balloons.pngPK [T@^ SWWNres/drawable-hdpi/balloons2.pngPK [T@kW<~~Glres/drawable-hdpi/icon.pngPK [T@Ş{res/drawable-ldpi/balloon.pngPK [T@ 7res/drawable-ldpi/balloons.pngPK [T@E, , =res/drawable-ldpi/balloons2.pngPK [T@res/drawable-ldpi/icon.pngPK [T@Tres/drawable-mdpi/balloon.pngPK [T@` KKres/drawable-mdpi/balloons.pngPK [T@ 8;;res/drawable-mdpi/balloons2.pngPK [T@ res/drawable-mdpi/icon.pngPK[T@$A classes.dexPK[T@,atMETA-INF/MANIFEST.MFPK[T@D{META-INF/CERT.SFPK[T@ z7#5IMETA-INF/CERT.RSAPKbrebis-0.10/functional-tests/generate-apk-conf-files/generate-apk-conf-files.conf0000644000000000000000000000063012462537262026163 0ustar 00000000000000[main] name=generate-apk-conf-files type=archive path=/home/chaica/progra/python/brebis/functional-tests/generate-apk-conf-files/generate-apk-conf-files.apk files_list=/home/chaica/progra/python/brebis/functional-tests/generate-apk-conf-files/generate-apk-conf-files.list sha512=01b1c4629ada26fc37a0b7d597fc0fdade920b820f489b3773a3c0d5890c50f6ba2bdf89dd14182d19b859fd54632c1d26ac0bc1e9fec430b9da0b7be038bd80 brebis-0.10/functional-tests/generate-conf-and-file-list-bz2/conf.conf.bck0000644000000000000000000000044412462537262024533 0ustar 00000000000000[main] name=generate-conf-and-file-list-bz2 type=archive path=PATH/generate-conf-and-file-list-bz2.bz2 files_list=PATH/generate-conf-and-file-list-bz2.list sha512=1ea3b8b4fa9a898c5f97f59c9bbb52efb12e47d52860ffd351d7781d19715c9e8fbf1f12cbf90b6e256dda3ee3709b663f87f3b0e2d2f9b83cbde672c16cfd96 brebis-0.10/functional-tests/generate-conf-and-file-list-bz2/generate-conf-and-file-list-bz2.bz20000644000000000000000000000012412462537262030451 0ustar 00000000000000BZh91AY&SYLр@/ Hj&cjSɡ$_4].z%gB>tܑN$=brebis-0.10/functional-tests/generate-conf-and-file-list-bz2/list.list0000644000000000000000000000012512462537262024045 0ustar 00000000000000[files] generate-conf-and-file-list-bz2| type|f md5|57548eb7bb0487af841ffd586e525080 brebis-0.10/functional-tests/generate-conf-and-file-list-gz/conf.conf.bck0000644000000000000000000000044012462537262024452 0ustar 00000000000000[main] name=generate-conf-and-file-list-gz type=archive path=PATH/generate-conf-and-file-list-gz.gz files_list=PATH/generate-conf-and-file-list-gz.list sha512=8f53f9a6cec34655bb0e7172c1c6ef6412685bfff6f4b7a76af2db08aa75cde7c7fd8d01f1ae87c39f68031e486dbaedc53c79cd04537906a133ff848049fcc3 brebis-0.10/functional-tests/generate-conf-and-file-list-gz/generate-conf-and-file-list-gz.gz0000644000000000000000000000014612462537262030246 0ustar 00000000000000mf\Rgenerate-conf-and-file-list-gz% NqjA*hNJWaa xjе-A ].\_@brebis-0.10/functional-tests/generate-conf-and-file-list-gz/list.list0000644000000000000000000000013012462537262023764 0ustar 00000000000000[files] generate-conf-and-file-list-gz| =64 type|f md5|57548eb7bb0487af841ffd586e525080 brebis-0.10/functional-tests/generate-conf-and-file-list-tar-bz2/conf.conf.bck0000644000000000000000000000046412462537262025321 0ustar 00000000000000[main] name=generate-conf-and-file-list-tar-bz2 type=archive path=PATH/generate-conf-and-file-list-tar-bz2.tar.bz2 files_list=PATH/generate-conf-and-file-list-tar-bz2.list sha512=3a54d58184429619066563610079d1c224323774e6fa2e700924140ee0f250a5adc7a9138ebe8bb09c2b59f2814b24c233eff94f8dd0d31bd14eb0c119339afd ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/generate-conf-and-file-list-tar-bz2/generate-conf-and-file-list-tar-bz2.tar.bz2brebis-0.10/functional-tests/generate-conf-and-file-list-tar-bz2/generate-conf-and-file-list-tar-bz20000644000000000000000000000042012462537262031324 0ustar 00000000000000BZh91AY&SY}e}@oH0d F2i2hd`F !dh4d\U4rTsPc"8p K $wH{ A=WD{|rΜ\lr-KU\T # gJV5vGJAE"Ldwh Ǩ{ǸQhrϸ1v n:?h :X5cA?ܑN$fxkbrebis-0.10/functional-tests/generate-conf-and-file-list-tar-bz2/list.list0000644000000000000000000000122612462537262024634 0ustar 00000000000000[files] generate-conf-and-file-list| =0 uid|1000 gid|1000 mode|755 type|d mtime|1377641822.0 generate-conf-and-file-list/toto| =5 uid|1000 gid|1000 mode|644 type|f mtime|1377641403.0 md5|ebd7385edfbbb36cd3a7a5dffb134b98 generate-conf-and-file-list/foo| =0 uid|1000 gid|1000 mode|755 type|d mtime|1381589346.0 generate-conf-and-file-list/foo/tata| =0 uid|1000 gid|1000 mode|644 type|f mtime|1381589346.0 md5|d41d8cd98f00b204e9800998ecf8427e generate-conf-and-file-list/foo2| =0 uid|1000 gid|1000 mode|755 type|d mtime|1381589388.0 generate-conf-and-file-list/foo2/titi| =0 uid|1000 gid|1000 mode|644 type|f mtime|1381589388.0 md5|d41d8cd98f00b204e9800998ecf8427e brebis-0.10/functional-tests/generate-conf-and-file-list-tar-gz/conf.conf.bck0000644000000000000000000000046012462537262025240 0ustar 00000000000000[main] name=generate-conf-and-file-list-tar-gz type=archive path=PATH/generate-conf-and-file-list-tar-gz.tar.gz files_list=PATH/generate-conf-and-file-list-tar-gz.list sha512=3a54d58184429619066563610079d1c224323774e6fa2e700924140ee0f250a5adc7a9138ebe8bb09c2b59f2814b24c233eff94f8dd0d31bd14eb0c119339afd ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/generate-conf-and-file-list-tar-gz/generate-conf-and-file-list-tar-gz.tar.gzbrebis-0.10/functional-tests/generate-conf-and-file-list-tar-gz/generate-conf-and-file-list-tar-gz.t0000644000000000000000000000040112462537262031433 0ustar 00000000000000aYRъ0 oBtz9Ay*e&z:-AFkw d\b :?G9pܓSCg6 剢Dx' =V͖(z(+9|_`BY?UprIsE_vsgQ$ `qTr$H61i+PgYZbrebis-0.10/functional-tests/generate-conf-and-file-list-tar-xz/list.list0000644000000000000000000000122612462537262024600 0ustar 00000000000000[files] generate-conf-and-file-list| =0 uid|1000 gid|1000 mode|755 type|d mtime|1377641822.0 generate-conf-and-file-list/toto| =5 uid|1000 gid|1000 mode|644 type|f mtime|1377641403.0 md5|ebd7385edfbbb36cd3a7a5dffb134b98 generate-conf-and-file-list/foo| =0 uid|1000 gid|1000 mode|755 type|d mtime|1381589346.0 generate-conf-and-file-list/foo/tata| =0 uid|1000 gid|1000 mode|644 type|f mtime|1381589346.0 md5|d41d8cd98f00b204e9800998ecf8427e generate-conf-and-file-list/foo2| =0 uid|1000 gid|1000 mode|755 type|d mtime|1381589388.0 generate-conf-and-file-list/foo2/titi| =0 uid|1000 gid|1000 mode|644 type|f mtime|1381589388.0 md5|d41d8cd98f00b204e9800998ecf8427e brebis-0.10/functional-tests/generate-conf-and-file-list-tar/conf.conf.bck0000644000000000000000000000044412462537262024624 0ustar 00000000000000[main] name=generate-conf-and-file-list-tar type=archive path=PATH/generate-conf-and-file-list-tar.tar files_list=PATH/generate-conf-and-file-list-tar.list sha512=3a54d58184429619066563610079d1c224323774e6fa2e700924140ee0f250a5adc7a9138ebe8bb09c2b59f2814b24c233eff94f8dd0d31bd14eb0c119339afd brebis-0.10/functional-tests/generate-conf-and-file-list-tar/generate-conf-and-file-list-tar.tar0000644000000000000000000002400012462537262030723 0ustar 00000000000000generate-conf-and-file-list/0000755000175000017500000000000012207222536015424 5ustar chaicachaicagenerate-conf-and-file-list/toto0000644000175000017500000000000512207221673016330 0ustar chaicachaicahihi generate-conf-and-file-list/foo/0000755000175000017500000000000012226260542016207 5ustar chaicachaicagenerate-conf-and-file-list/foo/tata0000644000175000017500000000000012226260542017051 0ustar chaicachaicagenerate-conf-and-file-list/foo2/0000755000175000017500000000000012226260614016271 5ustar chaicachaicagenerate-conf-and-file-list/foo2/titi0000644000175000017500000000000012226260614017153 0ustar chaicachaicabrebis-0.10/functional-tests/generate-conf-and-file-list-tar/list.list0000644000000000000000000000122612462537262024141 0ustar 00000000000000[files] generate-conf-and-file-list| =0 uid|1000 gid|1000 mode|755 type|d mtime|1377641822.0 generate-conf-and-file-list/toto| =5 uid|1000 gid|1000 mode|644 type|f mtime|1377641403.0 md5|ebd7385edfbbb36cd3a7a5dffb134b98 generate-conf-and-file-list/foo| =0 uid|1000 gid|1000 mode|755 type|d mtime|1381589346.0 generate-conf-and-file-list/foo/tata| =0 uid|1000 gid|1000 mode|644 type|f mtime|1381589346.0 md5|d41d8cd98f00b204e9800998ecf8427e generate-conf-and-file-list/foo2| =0 uid|1000 gid|1000 mode|755 type|d mtime|1381589388.0 generate-conf-and-file-list/foo2/titi| =0 uid|1000 gid|1000 mode|644 type|f mtime|1381589388.0 md5|d41d8cd98f00b204e9800998ecf8427e ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/generate-conf-and-file-list-tree/generate-conf-and-file-list-tree/foo/tatabrebis-0.10/functional-tests/generate-conf-and-file-list-tree/generate-conf-and-file-list-tree/foo/t0000644000000000000000000000000012462537262031500 0ustar 00000000000000././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/generate-conf-and-file-list-tree/generate-conf-and-file-list-tree/foo2/titibrebis-0.10/functional-tests/generate-conf-and-file-list-tree/generate-conf-and-file-list-tree/foo2/0000644000000000000000000000000012462537262031376 0ustar 00000000000000brebis-0.10/functional-tests/generate-conf-and-file-list-tree/generate-conf-and-file-list-tree/toto0000644000000000000000000000000512462537262031444 0ustar 00000000000000hihi brebis-0.10/functional-tests/generate-conf-and-file-list-xz/conf.conf.bck0000644000000000000000000000044012462537262024473 0ustar 00000000000000[main] name=generate-conf-and-file-list-xz type=archive path=PATH/generate-conf-and-file-list-xz.xz files_list=PATH/generate-conf-and-file-list-xz.list sha512=7955fe83a3f069c15f3704823eabb5f5c3bf0917702d871a9ca17952fdbd14522edbf1ae86f33b97c5623af212e23426102f0f2be3b8e8956a1ee57ff6f940e6 brebis-0.10/functional-tests/generate-conf-and-file-list-xz/generate-conf-and-file-list-xz.xz0000644000000000000000000000016412462537262030331 0ustar 000000000000007zXZִF!t/?8]4@FqPjk)#jVȆX3w+}8BX:¦uP!T@l}YZbrebis-0.10/functional-tests/generate-conf-and-file-list-xz/list.list0000644000000000000000000000012412462537262024010 0ustar 00000000000000[files] generate-conf-and-file-list-xz| type|f md5|57548eb7bb0487af841ffd586e525080 ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-bzip2-archive/generate-list-and-parse-bzip2-archive.bz2brebis-0.10/functional-tests/generate-list-and-parse-bzip2-archive/generate-list-and-parse-bzip2-arc0000644000000000000000000000017112462537262031543 0ustar 00000000000000BZh91AY&SYUn_`@?ܰ r)@j' F{Enk˄e[`H!6Բb1#yLePAѺP&gwO"(H*7././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-bzip2-archive/generate-list-and-parse-bzip2-archive.confbrebis-0.10/functional-tests/generate-list-and-parse-bzip2-archive/generate-list-and-parse-bzip2-arc0000644000000000000000000000025312462537262031544 0ustar 00000000000000[main] name=generate-list-and-parse-bzip2-archive.conf type=archive path=generate-list-and-parse-bzip2-archive.bz2 files_list=generate-list-and-parse-bzip2-archive.list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-gzip-archive/generate-list-and-parse-gzip-archive.confbrebis-0.10/functional-tests/generate-list-and-parse-gzip-archive/generate-list-and-parse-gzip-archi0000644000000000000000000000024212462537262031731 0ustar 00000000000000[main] name=generate-list-and-parse-gzip-archive type=archive path=generate-list-and-parse-gzip-archive.gz files_list=generate-list-and-parse-gzip-archive.list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-gzip-archive/generate-list-and-parse-gzip-archive.gzbrebis-0.10/functional-tests/generate-list-and-parse-gzip-archive/generate-list-and-parse-gzip-archi0000644000000000000000000000310012462537262031725 0ustar 00000000000000Ngenerate-list-from-gzip-archiveWmo6_q+4l/qMn0( J"%’(T(rtKˇX"Ow{a!;H,뾁 ;hWPhi-(Q{ |ipC%-A&T7 ~)pRەgyrc𵍣7hHMtZ ΠEE[hןQꩥ (]Jc3iӃpE?zeBB"m@Ztty0$е\Ҋ(c) e1=(jwjJ ; @ôVpmD^ZC?E5T]5lz[y#lZ[ōλsyuL&ϕ1.}}*Ei{Fۃ'x !]> x@/ePvSϿ{i$!b>``jj|`Pga0or½n&=o%XJ-d,EX:fHσ=f;xLbUȲH)[49ʈ4 )E]XLiN|JWAt&'8?(ľm"J6'ѽLj? ?ZP6׋CVI(Q&>|x"ʠ \Q yOb9W,MWrqTWL.Wj^/*[)F |e/fj^.-gFh]@kz\򰶢DXJp/[oVWRJ]2U2Y˹R=_UaCC{'Kcư cmL*]cwԪƪy-3H0yԪӗD~J[QbE"35$)pgFD m'ľvVMd.7hm&ҋ陜=y5㬛|&1 獞ibbIaZ(?"%V"[ct6W "/wu׋ex=UIXIéEZ*B@UqGʜ:s *f=u"6V4`T [d3H }@('ױ(zKYn@1_8Se^n*1N)lâIO!ᷤ)X{t}Eq83ξjF\y'S)ϭ韤 nBYZ;&zSazDJK:-qG3nԺr$Fd9 7#IѧG 0=m4̤SEH}鑯M8Q6q 1*σVKV?5O3ma_l ||G'6;]On_|]nոg%eyj3F C(././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-tbz-archive/generate-list-and-parse-tbz-archive.confbrebis-0.10/functional-tests/generate-list-and-parse-tbz-archive/generate-list-and-parse-tbz-archive0000644000000000000000000000024012462537262031736 0ustar 00000000000000[main] name=generate-list-and-parse-tbz-archive type=archive path=generate-list-and-parse-tbz-archive.tbz files_list=generate-list-and-parse-tbz-archive.list ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-tbz-archive/generate-list-and-parse-tbz-archive.tbzbrebis-0.10/functional-tests/generate-list-and-parse-tbz-archive/generate-list-and-parse-tbz-archive0000644000000000000000000000044012462537262031740 0ustar 00000000000000BZh91AY&SY|S@ 008ƍ!4h 4 0D4OiFi6SڦtnFfP#8_8e؃xY!| NrN)ۮz (3.YW?X%nIJ  dQ(b,\zRL!& ȵH0.,2A1y'H#a6'^=ǽG~7fI5&P=,zA7!p7FTJ㞺aU.p >././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-tbz2-archive/generate-list-and-parse-tbz2-archive.confbrebis-0.10/functional-tests/generate-list-and-parse-tbz2-archive/generate-list-and-parse-tbz2-archi0000644000000000000000000000024412462537262031553 0ustar 00000000000000[main] name=generate-list-and-parse-tbz2-archive type=archive path=generate-list-and-parse-tbz2-archive.tbz2 files_list=generate-list-and-parse-tbz2-archive.list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-tbz2-archive/generate-list-and-parse-tbz2-archive.tbz2brebis-0.10/functional-tests/generate-list-and-parse-tbz2-archive/generate-list-and-parse-tbz2-archi0000644000000000000000000000051012462537262031547 0ustar 00000000000000BZh91AY&SY_s {@0@0s[eMb05 I = h S4jSFdѡ3lD7b+G6Y[`;R$ETLi,Ē N>ˇ5₻Д)ZtL2I!n" a T&DPSUmO%aKaSŰba`bUWU[)K4CM|Rl|£78Ip9^=軀],e;jJ';bBhjf^. (3dEf:7Ѭuz ?ܑN$././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-tgz-archive/generate-list-and-parse-tgz-archive.confbrebis-0.10/functional-tests/generate-list-and-parse-tgz-archive/generate-list-and-parse-tgz-archive0000644000000000000000000000024012462537262031750 0ustar 00000000000000[main] name=generate-list-and-parse-tgz-archive type=archive path=generate-list-and-parse-tgz-archive.tgz files_list=generate-list-and-parse-tgz-archive.list ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-tgz-archive/generate-list-and-parse-tgz-archive.tgzbrebis-0.10/functional-tests/generate-list-and-parse-tgz-archive/generate-list-and-parse-tgz-archive0000644000000000000000000000046312462537262031757 0ustar 00000000000000Rj0U&1דTbG /)b1x Q_;?gCs{vq,uoŶ$j]Fa5>~"BʼSIc7xwuϛ;Ou?XmtɿUl˟\ M(ނkoqk_Ft>vBs,k{4'?lJo/-@S&GwJØ|S cGOa}k*u/?`w~Z^^(brebis-0.10/functional-tests/generate-list-and-parse-tree/generate-list-and-parse-tree.conf0000644000000000000000000000020312462537262030123 0ustar 00000000000000[main] name=generate-list-and-parse-tree type=tree path=generate-list-and-parse-tree files_list=generate-list-and-parse-tree.list brebis-0.10/functional-tests/generate-list-and-parse-tree/generate-list-and-parse-tree/bar/oof0000644000000000000000000000002612462537262030531 0ustar 00000000000000c'est ouf quand même brebis-0.10/functional-tests/generate-list-and-parse-tree/generate-list-and-parse-tree/bar/rab0000644000000000000000000000003612462537262030513 0ustar 00000000000000"rab" means ... ok, whatever. brebis-0.10/functional-tests/generate-list-and-parse-tree/generate-list-and-parse-tree/foo0000644000000000000000000000005612462537262027770 0ustar 00000000000000ok this is also a file. Interesting isn't it? brebis-0.10/functional-tests/generate-list-and-parse-tree/generate-list-and-parse-tree/hello0000644000000000000000000000002612462537262030305 0ustar 00000000000000hi this is a ... file brebis-0.10/functional-tests/generate-list-and-parse-xz-archive/a.out0000644000000000000000000000000012462537262023771 0ustar 00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-xz-archive/generate-list-and-parse-xz-archive-listbrebis-0.10/functional-tests/generate-list-and-parse-xz-archive/generate-list-and-parse-xz-archive-l0000644000000000000000000000012712462537262031677 0ustar 00000000000000[files] generate-list-from-xz-archive| =82 type|f md5|6231c31c521b387ded89148d243785ce ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-xz-archive/generate-list-and-parse-xz-archive.confbrebis-0.10/functional-tests/generate-list-and-parse-xz-archive/generate-list-and-parse-xz-archive.c0000644000000000000000000000023412462537262031666 0ustar 00000000000000[main] name=generate-list-and-parse-xz-archive type=archive path=generate-list-and-parse-xz-archive.xz files_list=generate-list-and-parse-xz-archive.list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-xz-archive/generate-list-and-parse-xz-archive.xzbrebis-0.10/functional-tests/generate-list-and-parse-xz-archive/generate-list-and-parse-xz-archive.x0000644000000000000000000000021012462537262031705 0ustar 000000000000007zXZִF!t/QK]4K/]TYl¶W_}W;a.z _`I5 *"5-Bp_ɂۢP?;.s}Ֆ6}h|gRx_}YZ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-zip-archive/generate-list-and-parse-zip-archive.confbrebis-0.10/functional-tests/generate-list-and-parse-zip-archive/generate-list-and-parse-zip-archive0000644000000000000000000000024012462537262031744 0ustar 00000000000000[main] name=generate-list-and-parse-zip-archive type=archive path=generate-list-and-parse-zip-archive.zip files_list=generate-list-and-parse-zip-archive.list ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-and-parse-zip-archive/generate-list-and-parse-zip-archive.zipbrebis-0.10/functional-tests/generate-list-and-parse-zip-archive/generate-list-and-parse-zip-archive0000644000000000000000000000257712462537262031763 0ustar 00000000000000PK lV?generate-list-from-zip-archive/UT 甆NϪNux PK lV?l%%$generate-list-from-zip-archive/helloUT ߪNߪNux hey what's up man? How is your wife? PK mV?#generate-list-from-zip-archive/bar/UT N甆Nux PKmV?JHQ&generate-list-from-zip-archive/bar/rabUT NNux  0xa`I&`4no/GwXGCA'D5w4%*8Va-?PK lV?M 22&generate-list-from-zip-archive/bar/oofUT NNux you sure it's a really interesting file? I'm not. PK lV?D4"""generate-list-from-zip-archive/fooUT NNux this is a really interesting file PK lV?Agenerate-list-from-zip-archive/UT甆Nux PK lV?l%%$Ygenerate-list-from-zip-archive/helloUTߪNux PK mV?#Agenerate-list-from-zip-archive/bar/UTNux PKmV?JHQ&9generate-list-from-zip-archive/bar/rabUTNux PK lV?M 22&generate-list-from-zip-archive/bar/oofUTNux PK lV?D4"""sgenerate-list-from-zip-archive/fooUTNux PKx././@LongLink0000000000000000000000000000020300000000000011210 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/bzip2/generate-list-changing-default-separator-for-bzip2.bz2brebis-0.10/functional-tests/generate-list-changing-default-separator/bzip2/generate-list-changing-d0000644000000000000000000000006412462537262032011 0ustar 00000000000000BZh91AY&SY, ,Q@"` !jM"3ܑN$ #././@LongLink0000000000000000000000000000020400000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/bzip2/generate-list-changing-default-separator-for-bzip2.confbrebis-0.10/functional-tests/generate-list-changing-default-separator/bzip2/generate-list-changing-d0000644000000000000000000000032312462537262032007 0ustar 00000000000000[main] name=generate-list-changing-default-separator-for-bzip2 type=archive path=generate-list-changing-default-separator-for-bzip2.bz2 files_list=generate-list-changing-default-separator-for-bzip2.list ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/gzip/generate-list-changing-default-separator-for-gzip.confbrebis-0.10/functional-tests/generate-list-changing-default-separator/gzip/generate-list-changing-de0000644000000000000000000000031712462537262032102 0ustar 00000000000000[main] name=generate-list-changing-default-separator-for-gzip type=archive path=generate-list-changing-default-separator-for-gzip.gz files_list=generate-list-changing-default-separator-for-gzip.list ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/gzip/generate-list-changing-default-separator-for-gzip.gzbrebis-0.10/functional-tests/generate-list-changing-default-separator/gzip/generate-list-changing-de0000644000000000000000000000004612462537262032101 0ustar 000000000000007Qtest+,VD.r././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tar.bz2/generate-list-changing-default-separator-for-tar-bz2.confbrebis-0.10/functional-tests/generate-list-changing-default-separator/tar.bz2/generate-list-changing0000644000000000000000000000033512462537262032025 0ustar 00000000000000[main] name=generate-list-changing-default-separator-for-tar-bz2 type=archive path=generate-list-changing-default-separator-for-tar-bz2.tar.bz2 files_list=generate-list-changing-default-separator-for-tar-bz2.list ././@LongLink0000000000000000000000000000021300000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tar.bz2/generate-list-changing-default-separator-for-tar-bz2.tar.bz2brebis-0.10/functional-tests/generate-list-changing-default-separator/tar.bz2/generate-list-changing0000644000000000000000000000025212462537262032023 0ustar 00000000000000BZh91AY&SY٪h@{`0&`m"R 4 d4zа*24nXD$'fL|gzC< =7C7)Bl KXڃ!e ]q}sV뼃wmbHw$S ././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tar.gz/generate-list-changing-default-separator-for-tar-gz.confbrebis-0.10/functional-tests/generate-list-changing-default-separator/tar.gz/generate-list-changing-0000644000000000000000000000033112462537262032021 0ustar 00000000000000[main] name=generate-list-changing-default-separator-for-tar-gz type=archive path=generate-list-changing-default-separator-for-tar-gz.tar.gz files_list=generate-list-changing-default-separator-for-tar-gz.list ././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tar.gz/generate-list-changing-default-separator-for-tar-gz.tar.gzbrebis-0.10/functional-tests/generate-list-changing-default-separator/tar.gz/generate-list-changing-0000644000000000000000000000024712462537262032027 0ustar 00000000000000cQA !a OcCQ0&mBAr]Ɍ6INIΈ$F8X|湖Xk{~Lo|]%l/yyF Cuٺѿg,8IA(././@LongLink0000000000000000000000000000020600000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tar.xz/generate-list-changing-default-separator-for-tar-xz.confbrebis-0.10/functional-tests/generate-list-changing-default-separator/tar.xz/generate-list-changing-0000644000000000000000000000033112462537262032042 0ustar 00000000000000[main] name=generate-list-changing-default-separator-for-tar-xz type=archive path=generate-list-changing-default-separator-for-tar-xz.tar.xz files_list=generate-list-changing-default-separator-for-tar-xz.list ././@LongLink0000000000000000000000000000021000000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tar.xz/generate-list-changing-default-separator-for-tar-xz.tar.xzbrebis-0.10/functional-tests/generate-list-changing-default-separator/tar.xz/generate-list-changing-0000644000000000000000000000032012462537262032040 0ustar 000000000000007zXZִF!t/']:J'xiN<%uWYXzAiq:7\)sGYSF7F@az6b7J]2+.w Լ']%lнږK( &jЅJB/gCQgq+PsgYZ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tree/generate-list-changing-default-separator-for-tree.confbrebis-0.10/functional-tests/generate-list-changing-default-separator/tree/generate-list-changing-de0000644000000000000000000000030512462537262032065 0ustar 00000000000000[main] name=generate-list-changing-default-separator-for-tree type=tree path=generate-list-changing-default-separator-for-tree files_list=generate-list-changing-default-separator-for-tree.list ././@LongLink0000000000000000000000000000020100000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/tree/generate-list-changing-default-separator-for-tree/foobrebis-0.10/functional-tests/generate-list-changing-default-separator/tree/generate-list-changing-de0000644000000000000000000000000012462537262032055 0ustar 00000000000000././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/zip/generate-list-changing-default-separator-for-zip.confbrebis-0.10/functional-tests/generate-list-changing-default-separator/zip/generate-list-changing-def0000644000000000000000000000031512462537262032077 0ustar 00000000000000[main] name=generate-list-changing-default-separator-for-zip type=archive path=generate-list-changing-default-separator-for-zip.zip files_list=generate-list-changing-default-separator-for-zip.list ././@LongLink0000000000000000000000000000017700000000000011222 Lustar 00000000000000brebis-0.10/functional-tests/generate-list-changing-default-separator/zip/generate-list-changing-default-separator-for-zip.zipbrebis-0.10/functional-tests/generate-list-changing-default-separator/zip/generate-list-changing-def0000644000000000000000000000070212462537262032077 0ustar 00000000000000PK (Ctest/UT .Q /Qux PK mC test/bar/UT LQcQux PK mCtest/fooUT VQVQux PK (CAtest/UT.Qux PK mC A?test/bar/UTLQux PK mCtest/fooUTVQux PKbrebis-0.10/functional-tests/generate-list-from-bzip2-archive/generate-list-from-bzip2-archive.bz20000644000000000000000000000017112462537262031275 0ustar 00000000000000BZh91AY&SYUn_`@?ܰ r)@j' F{Enk˄e[`H!6Բb1#yLePAѺP&gwO"(H*7brebis-0.10/functional-tests/generate-list-from-gzip-archive/generate-list-from-gzip-archive.gz0000644000000000000000000000310012462537262031061 0ustar 00000000000000Ngenerate-list-from-gzip-archiveWmo6_q+4l/qMn0( J"%’(T(rtKˇX"Ow{a!;H,뾁 ;hWPhi-(Q{ |ipC%-A&T7 ~)pRەgyrc𵍣7hHMtZ ΠEE[hןQꩥ (]Jc3iӃpE?zeBB"m@Ztty0$е\Ҋ(c) e1=(jwjJ ; @ôVpmD^ZC?E5T]5lz[y#lZ[ōλsyuL&ϕ1.}}*Ei{Fۃ'x !]> x@/ePvSϿ{i$!b>``jj|`Pga0or½n&=o%XJ-d,EX:fHσ=f;xLbUȲH)[49ʈ4 )E]XLiN|JWAt&'8?(ľm"J6'ѽLj? ?ZP6׋CVI(Q&>|x"ʠ \Q yOb9W,MWrqTWL.Wj^/*[)F |e/fj^.-gFh]@kz\򰶢DXJp/[oVWRJ]2U2Y˹R=_UaCC{'Kcư cmL*]cwԪƪy-3H0yԪӗD~J[QbE"35$)pgFD m'ľvVMd.7hm&ҋ陜=y5㬛|&1 獞ibbIaZ(?"%V"[ct6W "/wu׋ex=UIXIéEZ*B@UqGʜ:s *f=u"6V4`T [d3H }@('ױ(zKYn@1_8Se^n*1N)lâIO!ᷤ)X{t}Eq83ξjF\y'S)ϭ韤 nBYZ;&zSazDJK:-qG3nԺr$Fd9 7#IѧG 0=m4̤SEH}鑯M8Q6q 1*σVKV?5O3ma_l ||G'6;]On_|]nոg%eyj3F C(brebis-0.10/functional-tests/generate-list-from-tree/generate-list-from-tree/bar/oof0000644000000000000000000000002612462537262026713 0ustar 00000000000000c'est ouf quand même brebis-0.10/functional-tests/generate-list-from-tree/generate-list-from-tree/bar/rab0000644000000000000000000000003612462537262026675 0ustar 00000000000000"rab" means ... ok, whatever. brebis-0.10/functional-tests/generate-list-from-tree/generate-list-from-tree/foo0000644000000000000000000000005612462537262026152 0ustar 00000000000000ok this is also a file. Interesting isn't it? brebis-0.10/functional-tests/generate-list-from-tree/generate-list-from-tree/hello0000644000000000000000000000002612462537262026467 0ustar 00000000000000hi this is a ... file brebis-0.10/functional-tests/generate-list-from-xz-archive/generate-list-from-xz-archive.xz0000644000000000000000000000013412462537262030266 0ustar 000000000000007zXZִF!t/ this is a test with a xz archive 0(ڪ{9!(kb}YZbrebis-0.10/functional-tests/generate-list-from-zip-archive/generate-list-from-zip-archive.zip0000644000000000000000000000257712462537262030746 0ustar 00000000000000PK lV?generate-list-from-zip-archive/UT 甆NϪNux PK lV?l%%$generate-list-from-zip-archive/helloUT ߪNߪNux hey what's up man? How is your wife? PK mV?#generate-list-from-zip-archive/bar/UT N甆Nux PKmV?JHQ&generate-list-from-zip-archive/bar/rabUT NNux  0xa`I&`4no/GwXGCA'D5w4%*8Va-?PK lV?M 22&generate-list-from-zip-archive/bar/oofUT NNux you sure it's a really interesting file? I'm not. PK lV?D4"""generate-list-from-zip-archive/fooUT NNux this is a really interesting file PK lV?Agenerate-list-from-zip-archive/UT甆Nux PK lV?l%%$Ygenerate-list-from-zip-archive/helloUTߪNux PK mV?#Agenerate-list-from-zip-archive/bar/UTNux PKmV?JHQ&9generate-list-from-zip-archive/bar/rabUTNux PK lV?M 22&generate-list-from-zip-archive/bar/oofUTNux PK lV?D4"""sgenerate-list-from-zip-archive/fooUTNux PKx././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-bigger-than-expected-size/gzip-archive-size-bigger-than-expected-size-listbrebis-0.10/functional-tests/gzip-archive-size-bigger-than-expected-size/gzip-archive-size-bigger-th0000644000000000000000000000002312462537262031761 0ustar 00000000000000[archive] size| <1 ././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-bigger-than-expected-size/gzip-archive-size-bigger-than-expected-size.confbrebis-0.10/functional-tests/gzip-archive-size-bigger-than-expected-size/gzip-archive-size-bigger-th0000644000000000000000000000026712462537262031773 0ustar 00000000000000[main] name=gzip-archive-size-bigger-than-expected-size type=archive path=gzip-archive-size-bigger-than-expected-size.gz files_list=gzip-archive-size-bigger-than-expected-size-list ././@LongLink0000000000000000000000000000017000000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-bigger-than-expected-size/gzip-archive-size-bigger-than-expected-size.gzbrebis-0.10/functional-tests/gzip-archive-size-bigger-than-expected-size/gzip-archive-size-bigger-th0000644000000000000000000000012412462537262031763 0ustar 00000000000000kNgzip-archive-size-not-equals-expected-size  Omb70././@LongLink0000000000000000000000000000017000000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-not-equals-expected-size/gzip-archive-size-not-equals-expected-size-listbrebis-0.10/functional-tests/gzip-archive-size-not-equals-expected-size/gzip-archive-size-not-equals0000644000000000000000000000002312462537262032102 0ustar 00000000000000[archive] size| =8 ././@LongLink0000000000000000000000000000017000000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-not-equals-expected-size/gzip-archive-size-not-equals-expected-size.confbrebis-0.10/functional-tests/gzip-archive-size-not-equals-expected-size/gzip-archive-size-not-equals0000644000000000000000000000026412462537262032111 0ustar 00000000000000[main] name=gzip-archive-size-not-equals-expected-size type=archive path=gzip-archive-size-not-equals-expected-size.gz files_list=gzip-archive-size-not-equals-expected-size-list ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-not-equals-expected-size/gzip-archive-size-not-equals-expected-size.gzbrebis-0.10/functional-tests/gzip-archive-size-not-equals-expected-size/gzip-archive-size-not-equals0000644000000000000000000000012412462537262032104 0ustar 00000000000000kNgzip-archive-size-not-equals-expected-size  Omb70././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-smaller-than-expected-size/gzip-archive-size-smaller-than-expected-size-listbrebis-0.10/functional-tests/gzip-archive-size-smaller-than-expected-size/gzip-archive-size-smaller-0000644000000000000000000000002512462537262032027 0ustar 00000000000000[archive] size| >10M ././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-smaller-than-expected-size/gzip-archive-size-smaller-than-expected-size.confbrebis-0.10/functional-tests/gzip-archive-size-smaller-than-expected-size/gzip-archive-size-smaller-0000644000000000000000000000027212462537262032033 0ustar 00000000000000[main] name=gzip-archive-size-smaller-than-expected-size type=archive path=gzip-archive-size-smaller-than-expected-size.gz files_list=gzip-archive-size-smaller-than-expected-size-list ././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/gzip-archive-size-smaller-than-expected-size/gzip-archive-size-smaller-than-expected-size.gzbrebis-0.10/functional-tests/gzip-archive-size-smaller-than-expected-size/gzip-archive-size-smaller-0000644000000000000000000000012412462537262032027 0ustar 00000000000000kNgzip-archive-size-not-equals-expected-size  Omb70brebis-0.10/functional-tests/hashtype-option/bzip2/hashtype-option.bz20000644000000000000000000000006612462537262024276 0ustar 00000000000000BZh91AY&SYеQ@+ 1@ :^>.p!?k<brebis-0.10/functional-tests/hashtype-option/gzip/hashtype-option.gz0000644000000000000000000000007012462537262024137 0ustar 00000000000000NThashtype-option-file+N)-QHVO-.QH[`brebis-0.10/functional-tests/hashtype-option/lzma/hashtype-option.xz0000644000000000000000000000011012462537262024145 0ustar 000000000000007zXZִF!t/salut c'est fo D\'j}YZbrebis-0.10/functional-tests/hashtype-option/tar-gz/hashtype-option.tar.gz0000644000000000000000000000041412462537262025161 0ustar 00000000000000MTA0=EvI?y2bH\{1SAf(2+hɢRO?f ߟDfVi0+bBV$Ìbr={s_WUΟ Ϸ,!_q"E!yɷ߄P|[zCGNU=f_%EΧ~m]^p qqx+(brebis-0.10/functional-tests/hashtype-option/tree/hashtype-option/bar/bar10000644000000000000000000000001612462537262025077 0ustar 00000000000000this is a bar brebis-0.10/functional-tests/hashtype-option/tree/hashtype-option/foo0000644000000000000000000000001712462537262024272 0ustar 00000000000000salut c'est fo brebis-0.10/functional-tests/hashtype-option/tree/hashtype-option/foo20000644000000000000000000000002212462537262024350 0ustar 00000000000000 ùmkzlzermlkazer brebis-0.10/functional-tests/hashtype-option/zip/hashtype-option.zip0000644000000000000000000000161312462537262024156 0ustar 00000000000000PK Ehashtype-option/UT  nTMTux PK Ehashtype-option/bar/UT nT%nTux PK E*hashtype-option/bar/bar1UT nT%nTux this is a bar PK E[`hashtype-option/fooUT mT%nTux salut c'est fo PK EEFhashtype-option/foo2UT nT%nTux  ùmkzlzermlkazer PK EAhashtype-option/UT nTux PK EAJhashtype-option/bar/UTnTux PK E*hashtype-option/bar/bar1UTnTux PK E[`hashtype-option/fooUTmTux PK EEFThashtype-option/foo2UTnTux PKbrebis-0.10/functional-tests/missing-gpg-footer/missing-gpg-footer.conf0000644000000000000000000000170512462537262024453 0ustar 00000000000000-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 [main] name=missing-gpg-footer type=archive path=missing-gpg-footer.tar.gz files_list=missing-gpg-footer.list Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAEBCAAGBQJSYw6BAAoJEAJwonWM1zbi1sEP/38PWWTYpBrUd33VN6Qr5o2h 0Xs6k23CiCORBHMFG6qrwRgJuWqAMJg3fqRFu8oXvFzduZuRP1sLVoM+TQ7CuCbH LOMLPljsa9U8SF5s6q2LcAPRHtn9+tY9PukL95kRrzq+dt5yDD5GOx538R384I4U h6DaHfCh0b6jE5Uv5kqdtKtZaiKXLdYX+R3ljmh0VauS8XZcbqybeL+YE8qBTD9R 0sh6wRDAnAd7W3blIVaoZPh/QJ89IX87ngmh7/qRf8Zcl7xek8VQ1CIOCOPAO0wc Pg+pVg2zP2q0SYwuFaf598c8AqxpgZV29qMty6P/8VLbm2scFD63SDrQlREZwQG6 WEumMGpr3O86ygpikjsag/DP9DEOwaJun1M3PcSK1ewWKkFIgjh+mKKGF+B6GhG0 USEJAikKstcQuzjUEenf2uYKfzOsIulYsr2f40SEeJ0S5r1iRn7SXCw/7ahwsKXd RbKMpJfSTgPZ2RBPS2YOUMnHo2gJQr32U/JBr6vHZl0byKnblqi/NAPuk8qKgsVY RYsmCfOZRXvqTqCT3MMyIAP3m1IvolGAHcv/MeC9yG8BM/r2X7N+x71+KuuWMHlQ 89Wz0CRr21uu4SFVzkQwAgr39iGasO8ICKu3N/qeQ2fWCoDLINfXHi2yohVZYPIW ennHbVX0g6KFh3G7k7XJ =c72L -----END PGP SIGNATURE----- brebis-0.10/functional-tests/missing-gpg-footer/missing-gpg-footer.list0000644000000000000000000000104412462537262024475 0ustar 00000000000000[files] generate-conf-and-file-list| =0 uid|1001 gid|1000 mode|755 type|d generate-conf-and-file-list/toto| =5 uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 generate-conf-and-file-list/foo| =0 uid|1000 gid|1000 mode|755 type|d generate-conf-and-file-list/foo/tata| =0 uid|1000 gid|1000 mode|644 type|f md5|d41d8cd98f00b204e9800998ecf8427e generate-conf-and-file-list/foo2| =0 uid|1000 gid|1000 mode|755 type|d generate-conf-and-file-list/foo2/titi| =0 uid|1000 gid|1000 mode|644 type|f md5|d41d8cd98f00b204e9800998ecf8427e brebis-0.10/functional-tests/missing-gpg-footer/missing-gpg-footer.tar.gz0000644000000000000000000000040112462537262024723 0ustar 00000000000000aYRъ010M ././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/tar-archive-size-smaller-than-expected-size/tar-archive-size-smaller-than-expected-size.confbrebis-0.10/functional-tests/tar-archive-size-smaller-than-expected-size/tar-archive-size-smaller-th0000644000000000000000000000027012462537262032017 0ustar 00000000000000[main] name=tar-archive-size-smaller-than-expected-size type=archive path=tar-archive-size-smaller-than-expected-size.tar files_list=tar-archive-size-smaller-than-expected-size-list ././@LongLink0000000000000000000000000000017100000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/tar-archive-size-smaller-than-expected-size/tar-archive-size-smaller-than-expected-size.tarbrebis-0.10/functional-tests/tar-archive-size-smaller-than-expected-size/tar-archive-size-smaller-th0000644000000000000000000007400012462537262032021 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-bigger-than-expected-size/tar-bz2-archive-size-bigger-than-expected-size-listbrebis-0.10/functional-tests/tar-bz2-archive-size-bigger-than-expected-size/tar-bz2-archive-size-big0000644000000000000000000000002312462537262031472 0ustar 00000000000000[archive] size| <1 ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-bigger-than-expected-size/tar-bz2-archive-size-bigger-than-expected-size.confbrebis-0.10/functional-tests/tar-bz2-archive-size-bigger-than-expected-size/tar-bz2-archive-size-big0000644000000000000000000000030512462537262031475 0ustar 00000000000000[main] name=tar-bz2-archive-size-bigger-than-expected-size type=archive path=tar-bz2-archive-size-bigger-than-expected-size.tar.bz2 files_list=tar-bz2-archive-size-bigger-than-expected-size-list ././@LongLink0000000000000000000000000000020300000000000011210 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-bigger-than-expected-size/tar-bz2-archive-size-bigger-than-expected-size.tar.bz2brebis-0.10/functional-tests/tar-bz2-archive-size-bigger-than-expected-size/tar-bz2-archive-size-big0000644000000000000000000000023512462537262031477 0ustar 00000000000000N10 GHH'TB0U*p :`d_%l-v{O{k/!ZcNqS)Nc Czu|l6ѾNtx././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-not-equals-expected-size/tar-bz2-archive-size-not-equals-expected-size-listbrebis-0.10/functional-tests/tar-bz2-archive-size-not-equals-expected-size/tar-bz2-archive-size-not-0000644000000000000000000000002312462537262031507 0ustar 00000000000000[archive] size| =1 ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-not-equals-expected-size/tar-bz2-archive-size-not-equals-expected-size.confbrebis-0.10/functional-tests/tar-bz2-archive-size-not-equals-expected-size/tar-bz2-archive-size-not-0000644000000000000000000000030212462537262031507 0ustar 00000000000000[main] name=tar-bz2-archive-size-not-equals-expected-size type=archive path=tar-bz2-archive-size-not-equals-expected-size.tar.bz2 files_list=tar-bz2-archive-size-not-equals-expected-size-list ././@LongLink0000000000000000000000000000020100000000000011206 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-not-equals-expected-size/tar-bz2-archive-size-not-equals-expected-size.tar.bz2brebis-0.10/functional-tests/tar-bz2-archive-size-not-equals-expected-size/tar-bz2-archive-size-not-0000644000000000000000000000023512462537262031514 0ustar 00000000000000N10 GHH'TB0U*p :`d_%l-v{O{k/!ZcNqS)Nc Czu|l6ѾNtx././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-smaller-than-expected-size/tar-bz2-archive-size-smaller-than-expected-size-listbrebis-0.10/functional-tests/tar-bz2-archive-size-smaller-than-expected-size/tar-bz2-archive-size-sm0000644000000000000000000000002512462537262031552 0ustar 00000000000000[archive] size| >10M ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-smaller-than-expected-size/tar-bz2-archive-size-smaller-than-expected-size.confbrebis-0.10/functional-tests/tar-bz2-archive-size-smaller-than-expected-size/tar-bz2-archive-size-sm0000644000000000000000000000031012462537262031547 0ustar 00000000000000[main] name=tar-bz2-archive-size-smaller-than-expected-size type=archive path=tar-bz2-archive-size-smaller-than-expected-size.tar.bz2 files_list=tar-bz2-archive-size-smaller-than-expected-size-list ././@LongLink0000000000000000000000000000020500000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/tar-bz2-archive-size-smaller-than-expected-size/tar-bz2-archive-size-smaller-than-expected-size.tar.bz2brebis-0.10/functional-tests/tar-bz2-archive-size-smaller-than-expected-size/tar-bz2-archive-size-sm0000644000000000000000000000023512462537262031555 0ustar 00000000000000N10 GHH'TB0U*p :`d_%l-v{O{k/!ZcNqS)Nc Czu|l6ѾNtx././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-bigger-than-expected-size/tar-gz-archive-size-bigger-than-expected-size-listbrebis-0.10/functional-tests/tar-gz-archive-size-bigger-than-expected-size/tar-gz-archive-size-bigge0000644000000000000000000000002312462537262031654 0ustar 00000000000000[archive] size| <1 ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-bigger-than-expected-size/tar-gz-archive-size-bigger-than-expected-size.confbrebis-0.10/functional-tests/tar-gz-archive-size-bigger-than-expected-size/tar-gz-archive-size-bigge0000644000000000000000000000030112462537262031653 0ustar 00000000000000[main] name=tar-gz-archive-size-bigger-than-expected-size type=archive path=tar-gz-archive-size-bigger-than-expected-size.tar.gz files_list=tar-gz-archive-size-bigger-than-expected-size-list ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-bigger-than-expected-size/tar-gz-archive-size-bigger-than-expected-size.tar.gzbrebis-0.10/functional-tests/tar-gz-archive-size-bigger-than-expected-size/tar-gz-archive-size-bigge0000644000000000000000000000023512462537262031661 0ustar 000000000000002}NA 0GDWu uUDxo19m-ֵ~}}[cWK}-n0w]Oy}4ms[^ߒt@x././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-not-equals-expected-size/tar-gz-archive-size-not-equals-expected-size-listbrebis-0.10/functional-tests/tar-gz-archive-size-not-equals-expected-size/tar-gz-archive-size-not-eq0000644000000000000000000000002312462537262031703 0ustar 00000000000000[archive] size| =2 ././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-not-equals-expected-size/tar-gz-archive-size-not-equals-expected-size.confbrebis-0.10/functional-tests/tar-gz-archive-size-not-equals-expected-size/tar-gz-archive-size-not-eq0000644000000000000000000000027612462537262031715 0ustar 00000000000000[main] name=tar-gz-archive-size-not-equals-expected-size type=archive path=tar-gz-archive-size-not-equals-expected-size.tar.gz files_list=tar-gz-archive-size-not-equals-expected-size-list ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-not-equals-expected-size/tar-gz-archive-size-not-equals-expected-size.tar.gzbrebis-0.10/functional-tests/tar-gz-archive-size-not-equals-expected-size/tar-gz-archive-size-not-eq0000644000000000000000000000023512462537262031710 0ustar 000000000000002}NA 0GDWu uUDxo19m-ֵ~}}[cWK}-n0w]Oy}4ms[^ߒt@x././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-smaller-than-expected-size/tar-gz-archive-size-smaller-than-expected-size-listbrebis-0.10/functional-tests/tar-gz-archive-size-smaller-than-expected-size/tar-gz-archive-size-smal0000644000000000000000000000002512462537262031735 0ustar 00000000000000[archive] size| >10M ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-smaller-than-expected-size/tar-gz-archive-size-smaller-than-expected-size.confbrebis-0.10/functional-tests/tar-gz-archive-size-smaller-than-expected-size/tar-gz-archive-size-smal0000644000000000000000000000030412462537262031735 0ustar 00000000000000[main] name=tar-gz-archive-size-smaller-than-expected-size type=archive path=tar-gz-archive-size-smaller-than-expected-size.tar.gz files_list=tar-gz-archive-size-smaller-than-expected-size-list ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/tar-gz-archive-size-smaller-than-expected-size/tar-gz-archive-size-smaller-than-expected-size.tar.gzbrebis-0.10/functional-tests/tar-gz-archive-size-smaller-than-expected-size/tar-gz-archive-size-smal0000644000000000000000000000023512462537262031740 0ustar 000000000000002}NA 0GDWu uUDxo19m-ֵ~}}[cWK}-n0w]Oy}4ms[^ߒt@x././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-bigger-than-expected-size/tar-xz-archive-size-bigger-than-expected-size-listbrebis-0.10/functional-tests/tar-xz-archive-size-bigger-than-expected-size/tar-xz-archive-size-bigge0000644000000000000000000000002312462537262031716 0ustar 00000000000000[archive] size| <1 ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-bigger-than-expected-size/tar-xz-archive-size-bigger-than-expected-size.confbrebis-0.10/functional-tests/tar-xz-archive-size-bigger-than-expected-size/tar-xz-archive-size-bigge0000644000000000000000000000030112462537262031715 0ustar 00000000000000[main] name=tar-xz-archive-size-bigger-than-expected-size type=archive path=tar-xz-archive-size-bigger-than-expected-size.tar.xz files_list=tar-xz-archive-size-bigger-than-expected-size-list ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-bigger-than-expected-size/tar-xz-archive-size-bigger-than-expected-size.tar.xzbrebis-0.10/functional-tests/tar-xz-archive-size-bigger-than-expected-size/tar-xz-archive-size-bigge0000644000000000000000000000051412462537262031723 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZ././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-not-equals-expected-size/tar-xz-archive-size-not-equals-expected-size-listbrebis-0.10/functional-tests/tar-xz-archive-size-not-equals-expected-size/tar-xz-archive-size-not-eq0000644000000000000000000000002312462537262031745 0ustar 00000000000000[archive] size| =1 ././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-not-equals-expected-size/tar-xz-archive-size-not-equals-expected-size.confbrebis-0.10/functional-tests/tar-xz-archive-size-not-equals-expected-size/tar-xz-archive-size-not-eq0000644000000000000000000000027612462537262031757 0ustar 00000000000000[main] name=tar-xz-archive-size-not-equals-expected-size type=archive path=tar-xz-archive-size-not-equals-expected-size.tar.xz files_list=tar-xz-archive-size-not-equals-expected-size-list ././@LongLink0000000000000000000000000000017600000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-not-equals-expected-size/tar-xz-archive-size-not-equals-expected-size.tar.xzbrebis-0.10/functional-tests/tar-xz-archive-size-not-equals-expected-size/tar-xz-archive-size-not-eq0000644000000000000000000000051412462537262031752 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-smaller-than-expected-size/tar-xz-archive-size-smaller-than-expected-size-listbrebis-0.10/functional-tests/tar-xz-archive-size-smaller-than-expected-size/tar-xz-archive-size-smal0000644000000000000000000000002512462537262031777 0ustar 00000000000000[archive] size| >10M ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-smaller-than-expected-size/tar-xz-archive-size-smaller-than-expected-size.confbrebis-0.10/functional-tests/tar-xz-archive-size-smaller-than-expected-size/tar-xz-archive-size-smal0000644000000000000000000000030412462537262031777 0ustar 00000000000000[main] name=tar-xz-archive-size-smaller-than-expected-size type=archive path=tar-xz-archive-size-smaller-than-expected-size.tar.xz files_list=tar-xz-archive-size-smaller-than-expected-size-list ././@LongLink0000000000000000000000000000020200000000000011207 Lustar 00000000000000brebis-0.10/functional-tests/tar-xz-archive-size-smaller-than-expected-size/tar-xz-archive-size-smaller-than-expected-size.tar.xzbrebis-0.10/functional-tests/tar-xz-archive-size-smaller-than-expected-size/tar-xz-archive-size-smal0000644000000000000000000000051412462537262032002 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/two_confs_with_the_same_name/a.out0000644000000000000000000000000012462537262023201 0ustar 00000000000000brebis-0.10/functional-tests/two_confs_with_the_same_name/first.conf0000644000000000000000000000013112462537262024233 0ustar 00000000000000[main] name=firstconf type=archive path=notrelevant.tar.gz files_list=notrelevant-list brebis-0.10/functional-tests/two_confs_with_the_same_name/notrelevant-list0000644000000000000000000000001212462537262025470 0ustar 00000000000000[archive] brebis-0.10/functional-tests/two_confs_with_the_same_name/notrelevant.tar.gz0000644000000000000000000000030412462537262025727 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/unexpected-file-in-tar-gz-archive/unexpected-file-in-tar-gz-archive-listbrebis-0.10/functional-tests/unexpected-file-in-tar-gz-archive/unexpected-file-in-tar-gz-archive-lis0000644000000000000000000000005712462537262031667 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| unexpected ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/unexpected-file-in-tar-gz-archive/unexpected-file-in-tar-gz-archive.confbrebis-0.10/functional-tests/unexpected-file-in-tar-gz-archive/unexpected-file-in-tar-gz-archive.con0000644000000000000000000000023512462537262031656 0ustar 00000000000000[main] name=unexpected-file-in-tar-gz-archive type=archive path=unexpected-file-in-tar-gz-archive.tar.gz files_list=unexpected-file-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/unexpected-file-in-tar-gz-archive/unexpected-file-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/unexpected-file-in-tar-gz-archive/unexpected-file-in-tar-gz-archive.tar0000644000000000000000000000030412462537262031662 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/unexpected-file-in-tree/tree/bar0000644000000000000000000000000412462537262022403 0ustar 00000000000000bye brebis-0.10/functional-tests/unexpected-file-in-tree/tree/dir/foo20000644000000000000000000000000612462537262023264 0ustar 00000000000000hello brebis-0.10/functional-tests/unexpected-file-in-tree/tree/foo0000644000000000000000000000000312462537262022421 0ustar 00000000000000hi brebis-0.10/functional-tests/unexpected-file-in-tree/unexpected-file-in-tree-list0000644000000000000000000000003512462537262026277 0ustar 00000000000000[files] dir/foo2| unexpected brebis-0.10/functional-tests/unexpected-file-in-tree/unexpected-file-in-tree.conf0000644000000000000000000000014112462537262026250 0ustar 00000000000000[main] name=unexpected-file-in-tree type=tree path=tree files_list=unexpected-file-in-tree-list brebis-0.10/functional-tests/unexpected-file-in-zip-archive/unexpected-file-in-zip-archive-list0000644000000000000000000000006212462537262031043 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| unexpected brebis-0.10/functional-tests/unexpected-file-in-zip-archive/unexpected-file-in-zip-archive.conf0000644000000000000000000000022112462537262031013 0ustar 00000000000000[main] name=unexpected-file-in-zip-archive type=archive path=unexpected-file-in-zip-archive.zip files_list=unexpected-file-in-zip-archive-list brebis-0.10/functional-tests/unexpected-file-in-zip-archive/unexpected-file-in-zip-archive.zip0000644000000000000000000000162012462537262030674 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-bz2-archive/unsupported-parameters-bz2-archive-listbrebis-0.10/functional-tests/unsupported-parameters-bz2-archive/unsupported-parameters-bz2-archive-l0000644000000000000000000000010412462537262032216 0ustar 00000000000000[files] unsupported-parameters-bz2-archive| uid|1 gid|2 mode|777 <2 ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-bz2-archive/unsupported-parameters-bz2-archive.bz2brebis-0.10/functional-tests/unsupported-parameters-bz2-archive/unsupported-parameters-bz2-archive.b0000644000000000000000000000025412462537262032213 0ustar 00000000000000BZh91AY&SYc)߀` > "#fCLSB)z@4Rid栒zBMY&.Ӏ{h[s΃27V֙ZRf8>;Eĭ"xZ0+I8'y9(_ܑN$/o././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-bz2-archive/unsupported-parameters-bz2-archive.confbrebis-0.10/functional-tests/unsupported-parameters-bz2-archive/unsupported-parameters-bz2-archive.c0000644000000000000000000000023512462537262032213 0ustar 00000000000000[main] name=unsupported-parameters-bz2-archive type=archive path=unsupported-parameters-bz2-archive.bz2 files_list=unsupported-parameters-bz2-archive-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-gz-archive/unsupported-parameters-gz-archive-listbrebis-0.10/functional-tests/unsupported-parameters-gz-archive/unsupported-parameters-gz-archive-lis0000644000000000000000000000010012462537262032414 0ustar 00000000000000[files] unsupported-parameters-gz-archive| uid|1 gid|2 mode|777 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-gz-archive/unsupported-parameters-gz-archive.confbrebis-0.10/functional-tests/unsupported-parameters-gz-archive/unsupported-parameters-gz-archive.con0000644000000000000000000000023112462537262032412 0ustar 00000000000000[main] name=unsupported-parameters-gz-archive type=archive path=unsupported-parameters-gz-archive.gz files_list=unsupported-parameters-gz-archive-list brebis-0.10/functional-tests/unsupported-parameters-gz-archive/unsupported-parameters-gz-archive.gz0000644000000000000000000000026412462537262032261 0ustar 000000000000008ڑNunsupported-parameters-gz-archive=1 1E{O;%Whcea30IgKnoTw2lǡ 5BsQDBqxRi0ǐiUR偅 %q"pW/޹S|'ZnŨ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-xz-archive/unsupported-parameters-xz-archive-listbrebis-0.10/functional-tests/unsupported-parameters-xz-archive/unsupported-parameters-xz-archive-lis0000644000000000000000000000010312462537262032461 0ustar 00000000000000[files] unsupported-parameters-xz-archive| uid|1 gid|2 mode|777 <2 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-xz-archive/unsupported-parameters-xz-archive.confbrebis-0.10/functional-tests/unsupported-parameters-xz-archive/unsupported-parameters-xz-archive.con0000644000000000000000000000023112462537262032454 0ustar 00000000000000[main] name=unsupported-parameters-xz-archive type=archive path=unsupported-parameters-xz-archive.xz files_list=unsupported-parameters-xz-archive-list brebis-0.10/functional-tests/unsupported-parameters-xz-archive/unsupported-parameters-xz-archive.xz0000644000000000000000000000022012462537262032334 0ustar 000000000000007zXZִF!t/UQ]: g~r|rࢅDcfo[*nTӦsU zJd%SPD&`k[_ךx DA~" =mدmVTr}YZbrebis-0.10/functional-tests/unsupported-parameters-zip-archive/a.out0000644000000000000000000000074212462537262024265 0ustar 00000000000000WARNING:root:/home/chaica/progra/python/brebis/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.zip: The required parameter target is not supported by this type of archive. Ignoring it. WARNING:root:/home/chaica/progra/python/brebis/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.zip contains 1 file with unexpected type: WARNING:root:test/foo2/toto2 is a regular file. Should have been a symbolic link. ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.confbrebis-0.10/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.c0000644000000000000000000000023312462537262032423 0ustar 00000000000000[main] name=unsupported-parameters-zip-archive type=archive path=unsupported-parameters-zip-archive.zip files_list=unsupported-parameters-zip-archive.list ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.listbrebis-0.10/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.l0000644000000000000000000000065412462537262032443 0ustar 00000000000000[files] test| =0 uid|1000 gid|1000 mode|755 type|d test/toto| =5 uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 test/foo| =0 uid|1000 gid|1000 mode|755 type|d test/foo/bar| =5 uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 test/foo2| =0 uid|1000 gid|1000 mode|755 type|d test/foo2/toto2| =5 uid|1000 gid|1000 mode|644 type|s md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|../../toto ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.zipbrebis-0.10/functional-tests/unsupported-parameters-zip-archive/unsupported-parameters-zip-archive.z0000644000000000000000000000163512462537262032461 0ustar 00000000000000PK !Ctest/UT ^%RURux PK BCp`; test/totoUT #RURux hihi PK C test/foo/UT 7$RURux PK BCp`; test/foo/barUT #RURux hihi PK +C test/foo2/UT r%RURux PK BCp`;test/foo2/toto2UT #RURux hihi PK !CAtest/UT^%Rux PK BCp`; ?test/totoUT#Rux PK C Atest/foo/UT7$Rux PK BCp`; test/foo/barUT#Rux PK +C Atest/foo2/UTr%Rux PK BCp`;Ytest/foo2/toto2UT#Rux PKbrebis-0.10/functional-tests/user-specified-delimiter/user-specified-delimiter.conf0000644000000000000000000000021612462537262026755 0ustar 00000000000000[main] name=user-specified-delimiter type=archive path=user-specified-delimiter.tar.gz files_list=user-specified-delimiter.list delimiter=# brebis-0.10/functional-tests/user-specified-delimiter/user-specified-delimiter.list0000644000000000000000000000004612462537262027004 0ustar 00000000000000[files] user-specified-delimiter/oof# brebis-0.10/functional-tests/user-specified-delimiter/user-specified-delimiter.tar.gz0000644000000000000000000000026412462537262027240 0ustar 00000000000000e%NM 0@{\@'G4bbEv(#02%r mc.0U>fWb睲֋由b)-wHږVĶI{wT~rqU_^*M^FupJ>tRrF(brebis-0.10/functional-tests/wrong-bz2-archive-gid/wrong-bz2-archive-gid-list0000644000000000000000000000002312462537262025246 0ustar 00000000000000[archive] gid| 100 brebis-0.10/functional-tests/wrong-bz2-archive-gid/wrong-bz2-archive-gid.bz20000644000000000000000000000011412462537262024772 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-gid/wrong-bz2-archive-gid.conf0000644000000000000000000000016612462537262025231 0ustar 00000000000000[main] name=wrong-bz2-archive-gid type=archive path=wrong-bz2-archive-gid.bz2 files_list=wrong-bz2-archive-gid-list brebis-0.10/functional-tests/wrong-bz2-archive-md5-hash/wrong-bz2-archive-md5-hash-list0000644000000000000000000000002612462537262026757 0ustar 00000000000000[archive] md5| 82b1f8 brebis-0.10/functional-tests/wrong-bz2-archive-md5-hash/wrong-bz2-archive-md5-hash.bz20000644000000000000000000000011412462537262026500 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-md5-hash/wrong-bz2-archive-md5-hash.conf0000644000000000000000000000020512462537262026731 0ustar 00000000000000[main] name=wrong-bz2-archive-md5-hash type=archive path=wrong-bz2-archive-md5-hash.bz2 files_list=wrong-bz2-archive-md5-hash-list brebis-0.10/functional-tests/wrong-bz2-archive-sha1-hash/wrong-bz2-archive-sha1-hash-list0000644000000000000000000000002512462537262027274 0ustar 00000000000000[archive] sha1| 2c6d brebis-0.10/functional-tests/wrong-bz2-archive-sha1-hash/wrong-bz2-archive-sha1-hash.bz20000644000000000000000000000011412462537262027016 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-sha1-hash/wrong-bz2-archive-sha1-hash.conf0000644000000000000000000000021012462537262027243 0ustar 00000000000000[main] name=wrong-bz2-archive-sha1-hash type=archive path=wrong-bz2-archive-sha1-hash.bz2 files_list=wrong-bz2-archive-sha1-hash-list brebis-0.10/functional-tests/wrong-bz2-archive-sha224-hash/wrong-bz2-archive-sha224-hash-list0000644000000000000000000000002612462537262027613 0ustar 00000000000000[archive] sha224| 5d4 brebis-0.10/functional-tests/wrong-bz2-archive-sha224-hash/wrong-bz2-archive-sha224-hash.bz20000644000000000000000000000011412462537262027334 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-sha224-hash/wrong-bz2-archive-sha224-hash.conf0000644000000000000000000000021612462537262027567 0ustar 00000000000000[main] name=wrong-bz2-archive-sha224-hash type=archive path=wrong-bz2-archive-sha224-hash.bz2 files_list=wrong-bz2-archive-sha224-hash-list brebis-0.10/functional-tests/wrong-bz2-archive-sha256-hash/wrong-bz2-archive-sha256-hash-list0000644000000000000000000000002612462537262027625 0ustar 00000000000000[archive] sha256| d71 brebis-0.10/functional-tests/wrong-bz2-archive-sha256-hash/wrong-bz2-archive-sha256-hash.bz20000644000000000000000000000011412462537262027346 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-sha256-hash/wrong-bz2-archive-sha256-hash.conf0000644000000000000000000000021612462537262027601 0ustar 00000000000000[main] name=wrong-bz2-archive-sha256-hash type=archive path=wrong-bz2-archive-sha256-hash.bz2 files_list=wrong-bz2-archive-sha256-hash-list brebis-0.10/functional-tests/wrong-bz2-archive-sha384-hash/wrong-bz2-archive-sha384-hash-list0000644000000000000000000000002612462537262027631 0ustar 00000000000000[archive] sha384| c1d brebis-0.10/functional-tests/wrong-bz2-archive-sha384-hash/wrong-bz2-archive-sha384-hash.bz20000644000000000000000000000011412462537262027352 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-sha384-hash/wrong-bz2-archive-sha384-hash.conf0000644000000000000000000000021612462537262027605 0ustar 00000000000000[main] name=wrong-bz2-archive-sha384-hash type=archive path=wrong-bz2-archive-sha384-hash.bz2 files_list=wrong-bz2-archive-sha384-hash-list brebis-0.10/functional-tests/wrong-bz2-archive-sha512-hash/wrong-bz2-archive-sha512-hash-list0000644000000000000000000000002712462537262027614 0ustar 00000000000000[archive] sha512| d8a0 brebis-0.10/functional-tests/wrong-bz2-archive-sha512-hash/wrong-bz2-archive-sha512-hash.bz20000644000000000000000000000011412462537262027334 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-sha512-hash/wrong-bz2-archive-sha512-hash.conf0000644000000000000000000000021612462537262027567 0ustar 00000000000000[main] name=wrong-bz2-archive-sha512-hash type=archive path=wrong-bz2-archive-sha512-hash.bz2 files_list=wrong-bz2-archive-sha512-hash-list brebis-0.10/functional-tests/wrong-bz2-archive-uid/wrong-bz2-archive-uid-list0000644000000000000000000000002312462537262025302 0ustar 00000000000000[archive] uid| 123 brebis-0.10/functional-tests/wrong-bz2-archive-uid/wrong-bz2-archive-uid.bz20000644000000000000000000000011412462537262025026 0ustar 00000000000000BZh91AY&SYM6 Q@?e ")1Oi'(i-H%a7Juvމ#);H?rE8PM6brebis-0.10/functional-tests/wrong-bz2-archive-uid/wrong-bz2-archive-uid.conf0000644000000000000000000000016612462537262025265 0ustar 00000000000000[main] name=wrong-bz2-archive-uid type=archive path=wrong-bz2-archive-uid.bz2 files_list=wrong-bz2-archive-uid-list brebis-0.10/functional-tests/wrong-file-gid-in-tar-archive/wrong-file-gid-in-tar-archive-list0000644000000000000000000000002612462537262030275 0ustar 00000000000000[files] foo| gid|1234 brebis-0.10/functional-tests/wrong-file-gid-in-tar-archive/wrong-file-gid-in-tar-archive.conf0000644000000000000000000000021612462537262030251 0ustar 00000000000000[main] name=wrong-file-gid-in-tar-archive type=archive path=wrong-file-gid-in-tar-archive.tar files_list=wrong-file-gid-in-tar-archive-list brebis-0.10/functional-tests/wrong-file-gid-in-tar-archive/wrong-file-gid-in-tar-archive.tar0000644000000000000000000002400012462537262030107 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file-gid-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file-gid-in-tar-bz2-archive-lis0000644000000000000000000000005612462537262031302 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| gid|1234 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file-gid-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file-gid-in-tar-bz2-archive.con0000644000000000000000000000023612462537262031273 0ustar 00000000000000[main] name=wrong-file-gid-in-tar-bz2-archive type=archive path=wrong-file-gid-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-gid-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file-gid-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-gid-in-tar-bz2-archive/wrong-file-gid-in-tar-bz2-archive.tar0000644000000000000000000000032012462537262031274 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 brebis-0.10/functional-tests/wrong-file-gid-in-tar-gz-archive/wrong-file-gid-in-tar-gz-archive-list0000644000000000000000000000005512462537262031333 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| gid|1234 brebis-0.10/functional-tests/wrong-file-gid-in-tar-gz-archive/wrong-file-gid-in-tar-gz-archive.conf0000644000000000000000000000023212462537262031303 0ustar 00000000000000[main] name=wrong-file-gid-in-tar-gz-archive type=archive path=wrong-file-gid-in-tar-gz-archive.tar.gz files_list=wrong-file-gid-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-gid-in-tar-gz-archive/wrong-file-gid-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-gid-in-tar-gz-archive/wrong-file-gid-in-tar-gz-archive.tar.g0000644000000000000000000000030412462537262031371 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-gid-in-tree/tree/bar0000644000000000000000000000000412462537262022134 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-gid-in-tree/tree/dir/foo20000644000000000000000000000000612462537262023015 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-gid-in-tree/tree/foo0000644000000000000000000000000312462537262022152 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-gid-in-tree/wrong-file-gid-in-tree-list0000644000000000000000000000003312462537262025557 0ustar 00000000000000[files] dir/foo2| gid|1234 brebis-0.10/functional-tests/wrong-file-gid-in-tree/wrong-file-gid-in-tree.conf0000644000000000000000000000013712462537262025537 0ustar 00000000000000[main] name=wrong-file-gid-in-tree type=tree path=tree files_list=wrong-file-gid-in-tree-list brebis-0.10/functional-tests/wrong-file-gid-in-zip-archive/wrong-file-gid-in-zip-archive-list0000644000000000000000000000005612462537262030330 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| gid|10 brebis-0.10/functional-tests/wrong-file-gid-in-zip-archive/wrong-file-gid-in-zip-archive.conf0000644000000000000000000000021612462537262030301 0ustar 00000000000000[main] name=wrong-file-gid-in-zip-archive type=archive path=wrong-file-gid-in-zip-archive.zip files_list=wrong-file-gid-in-zip-archive-list brebis-0.10/functional-tests/wrong-file-gid-in-zip-archive/wrong-file-gid-in-zip-archive.zip0000644000000000000000000000162012462537262030156 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5-hash-in-bzip2-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5-hash-in-bzip2-archi0000644000000000000000000000006612462537262031203 0ustar 00000000000000[files] wrong-file-md5-hash-in-bzip2-archive| md5|ede ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5-hash-in-bzip2-archive.bz2brebis-0.10/functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5-hash-in-bzip2-archi0000644000000000000000000000017512462537262031204 0ustar 00000000000000BZh91AY&SY ]@ >ޠ hD4jcD=&TSS%_Oj2=vRLns ْ,/6/z4x]e50u\=]dE-)„OD0././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5-hash-in-bzip2-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-bzip2-archive/wrong-file-md5-hash-in-bzip2-archi0000644000000000000000000000024312462537262031200 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-bzip2-archive type=archive path=wrong-file-md5-hash-in-bzip2-archive.bz2 files_list=wrong-file-md5-hash-in-bzip2-archive-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-gz-archive/wrong-file-md5-hash-in-gz-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-gz-archive/wrong-file-md5-hash-in-gz-archive-lis0000644000000000000000000000006312462537262031304 0ustar 00000000000000[files] wrong-file-md5-hash-in-gz-archive| md5|f1e ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-gz-archive/wrong-file-md5-hash-in-gz-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-gz-archive/wrong-file-md5-hash-in-gz-archive.con0000644000000000000000000000023112462537262031272 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-gz-archive type=archive path=wrong-file-md5-hash-in-gz-archive.gz files_list=wrong-file-md5-hash-in-gz-archive-list brebis-0.10/functional-tests/wrong-file-md5-hash-in-gz-archive/wrong-file-md5-hash-in-gz-archive.gz0000644000000000000000000000011212462537262031131 0ustar 00000000000000INwrong-file-md5-hash-in-gz-archiveTH/,V H,Q/V(-L././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma-archive0000644000000000000000000000006512462537262031367 0ustar 00000000000000[files] wrong-file-md5-hash-in-lzma-archive| md5|ede ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma-archive0000644000000000000000000000023712462537262031370 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-lzma-archive type=archive path=wrong-file-md5-hash-in-lzma-archive.xz files_list=wrong-file-md5-hash-in-lzma-archive-list ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma-archive.xzbrebis-0.10/functional-tests/wrong-file-md5-hash-in-lzma-archive/wrong-file-md5-hash-in-lzma-archive0000644000000000000000000000014012462537262031361 0ustar 000000000000007zXZִF!t/($]: g~r|;~ f/U;ҎoGYw/@)BbM}YZ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-archive/wrong-file-md5-hash-in-tar-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-archive/wrong-file-md5-hash-in-tar-archive-l0000644000000000000000000000002512462537262031262 0ustar 00000000000000[files] foo| md5|c91 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-archive/wrong-file-md5-hash-in-tar-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-archive/wrong-file-md5-hash-in-tar-archive.c0000644000000000000000000000023512462537262031255 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-tar-archive type=archive path=wrong-file-md5-hash-in-tar-archive.tar files_list=wrong-file-md5-hash-in-tar-archive-list ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-archive/wrong-file-md5-hash-in-tar-archive.tarbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-archive/wrong-file-md5-hash-in-tar-archive.t0000644000000000000000000007400012462537262031277 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file-md5-hash-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file-md5-hash-in-tar-bz2-a0000644000000000000000000000005512462537262031021 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| md5|c15 ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file-md5-hash-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file-md5-hash-in-tar-bz2-a0000644000000000000000000000025512462537262031023 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-tar-bz2-archive type=archive path=wrong-file-md5-hash-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-md5-hash-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000016300000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file-md5-hash-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-bz2-archive/wrong-file-md5-hash-in-tar-bz2-a0000644000000000000000000000032012462537262031014 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-arc0000644000000000000000000000005312462537262031212 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| md5|c1 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-arc0000644000000000000000000000025112462537262031212 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-tar-gz-archive type=archive path=wrong-file-md5-hash-in-tar-gz-archive.tar.gz files_list=wrong-file-md5-hash-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tar-gz-archive/wrong-file-md5-hash-in-tar-gz-arc0000644000000000000000000000030412462537262031211 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-md5-hash-in-tree/tree/bar0000644000000000000000000000000412462537262022777 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-md5-hash-in-tree/tree/dir/foo20000644000000000000000000000000612462537262023660 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-md5-hash-in-tree/tree/foo0000644000000000000000000000000312462537262023015 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-md5-hash-in-tree/wrong-file-md5-hash-in-tree-list0000644000000000000000000000003212462537262027264 0ustar 00000000000000[files] dir/foo2| md5|b19 brebis-0.10/functional-tests/wrong-file-md5-hash-in-tree/wrong-file-md5-hash-in-tree.conf0000644000000000000000000000015112462537262027241 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-tree type=tree path=tree files_list=wrong-file-md5-hash-in-tree-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-xz-archive/wrong-file-md5-hash-in-xz-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-xz-archive/wrong-file-md5-hash-in-xz-archive-lis0000644000000000000000000000006312462537262031346 0ustar 00000000000000[files] wrong-file-md5-hash-in-xz-archive| md5|f1e ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-xz-archive/wrong-file-md5-hash-in-xz-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-xz-archive/wrong-file-md5-hash-in-xz-archive.con0000644000000000000000000000023112462537262031334 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-xz-archive type=archive path=wrong-file-md5-hash-in-xz-archive.xz files_list=wrong-file-md5-hash-in-xz-archive-list brebis-0.10/functional-tests/wrong-file-md5-hash-in-xz-archive/wrong-file-md5-hash-in-xz-archive.xz0000644000000000000000000000011012462537262031212 0ustar 000000000000007zXZִF!t/this is a file drl'j}YZ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5-hash-in-zip-archive-listbrebis-0.10/functional-tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5-hash-in-zip-archive-l0000644000000000000000000000005712462537262031317 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| md5|764 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5-hash-in-zip-archive.confbrebis-0.10/functional-tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5-hash-in-zip-archive.c0000644000000000000000000000023512462537262031305 0ustar 00000000000000[main] name=wrong-file-md5-hash-in-zip-archive type=archive path=wrong-file-md5-hash-in-zip-archive.zip files_list=wrong-file-md5-hash-in-zip-archive-list ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5-hash-in-zip-archive.zipbrebis-0.10/functional-tests/wrong-file-md5-hash-in-zip-archive/wrong-file-md5-hash-in-zip-archive.z0000644000000000000000000000162012462537262031333 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar-bz2-archive-l0000644000000000000000000000005612462537262031310 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| mode|755 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar-bz2-archive.c0000644000000000000000000000024112462537262031274 0ustar 00000000000000[main] name=wrong-file-mode-in-tar-bz2-archive type=archive path=wrong-file-mode-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-mode-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-mode-in-tar-bz2-archive/wrong-file-mode-in-tar-bz2-archive.t0000644000000000000000000000032012462537262031313 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-mode-in-tar-gz-archive/wrong-file-mode-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-mode-in-tar-gz-archive/wrong-file-mode-in-tar-gz-archive-lis0000644000000000000000000000005512462537262031511 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| mode|755 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-mode-in-tar-gz-archive/wrong-file-mode-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-mode-in-tar-gz-archive/wrong-file-mode-in-tar-gz-archive.con0000644000000000000000000000023512462537262031502 0ustar 00000000000000[main] name=wrong-file-mode-in-tar-gz-archive type=archive path=wrong-file-mode-in-tar-gz-archive.tar.gz files_list=wrong-file-mode-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-mode-in-tar-gz-archive/wrong-file-mode-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-mode-in-tar-gz-archive/wrong-file-mode-in-tar-gz-archive.tar0000644000000000000000000000030412462537262031506 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-mode-in-tree/tree/bar0000644000000000000000000000000412462537262022315 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-mode-in-tree/tree/dir/foo20000644000000000000000000000000612462537262023176 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-mode-in-tree/tree/foo0000644000000000000000000000000312462537262022333 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-mode-in-tree/wrong-file-mode-in-tree-list0000644000000000000000000000003312462537262026121 0ustar 00000000000000[files] dir/foo2| mode|755 brebis-0.10/functional-tests/wrong-file-mode-in-tree/wrong-file-mode-in-tree.conf0000644000000000000000000000014112462537262026074 0ustar 00000000000000[main] name=wrong-file-mode-in-tree type=tree path=tree files_list=wrong-file-mode-in-tree-list brebis-0.10/functional-tests/wrong-file-mode-in-zip-archive/wrong-file-mode-in-zip-archive-list0000644000000000000000000000006012462537262030665 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| mode|755 brebis-0.10/functional-tests/wrong-file-mode-in-zip-archive/wrong-file-mode-in-zip-archive.conf0000644000000000000000000000022112462537262030637 0ustar 00000000000000[main] name=wrong-file-mode-in-zip-archive type=archive path=wrong-file-mode-in-zip-archive.zip files_list=wrong-file-mode-in-zip-archive-list brebis-0.10/functional-tests/wrong-file-mode-in-zip-archive/wrong-file-mode-in-zip-archive.zip0000644000000000000000000000162012462537262030520 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-archive-listbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-arc0000644000000000000000000000007112462537262031174 0ustar 00000000000000[files] wrong-file-sha1-hash-in-bzip2-archive| sha1|81c3 ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-archive.bz2brebis-0.10/functional-tests/wrong-file-sha1-hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-arc0000644000000000000000000000017512462537262031201 0ustar 00000000000000BZh91AY&SY ]@ >ޠ hD4jcD=&TSS%_Oj2=vRLns ْ,/6/z4x]e50u\=]dE-)„OD0././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-archive.confbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-bzip2-archive/wrong-file-sha1-hash-in-bzip2-arc0000644000000000000000000000024612462537262031200 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-bzip2-archive type=archive path=wrong-file-sha1-hash-in-bzip2-archive.bz2 files_list=wrong-file-sha1-hash-in-bzip2-archive-list ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-gz-archive/wrong-file-sha1-hash-in-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-gz-archive/wrong-file-sha1-hash-in-gz-archive-l0000644000000000000000000000006512462537262031270 0ustar 00000000000000[files] wrong-file-md5-hash-in-gz-archive| sha1|889c ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-gz-archive/wrong-file-sha1-hash-in-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-gz-archive/wrong-file-sha1-hash-in-gz-archive.c0000644000000000000000000000023412462537262031256 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-gz-archive type=archive path=wrong-file-sha1-hash-in-gz-archive.gz files_list=wrong-file-sha1-hash-in-gz-archive-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-gz-archive/wrong-file-sha1-hash-in-gz-archive.gzbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-gz-archive/wrong-file-sha1-hash-in-gz-archive.g0000644000000000000000000000011212462537262031255 0ustar 00000000000000INwrong-file-md5-hash-in-gz-archiveTH/,V H,Q/V(-L././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive-listbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive0000644000000000000000000000002512462537262031347 0ustar 00000000000000[files] foo| sha1|57 ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive.confbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive0000644000000000000000000000023712462537262031354 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-tar-archive type=archive path=wrong-file-sha1-hash-in-tar-archive.tar files_list=wrong-file-sha1-hash-in-tar-archive-list ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive.tarbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-archive/wrong-file-sha1-hash-in-tar-archive0000644000000000000000000007400012462537262031353 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz20000644000000000000000000000005712462537262031123 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| sha1|e242 ././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz20000644000000000000000000000026012462537262031117 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-tar-bz2-archive type=archive path=wrong-file-sha1-hash-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-sha1-hash-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000016500000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive/wrong-file-sha1-hash-in-tar-bz20000644000000000000000000000032012462537262031114 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-gz-archive/wrong-file-sha1-hash-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-gz-archive/wrong-file-sha1-hash-in-tar-gz-a0000644000000000000000000000005512462537262031205 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| sha1|e24 ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-gz-archive/wrong-file-sha1-hash-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-gz-archive/wrong-file-sha1-hash-in-tar-gz-a0000644000000000000000000000025312462537262031205 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-tar-gz-archive type=archive path=wrong-file-sha1-hash-in-tar-gz-archive.tar.gz files_list=wrong-file-sha1-hash-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-gz-archive/wrong-file-sha1-hash-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tar-gz-archive/wrong-file-sha1-hash-in-tar-gz-a0000644000000000000000000000030412462537262031202 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-tree/tree/bar0000644000000000000000000000000412462537262023146 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tree/tree/dir/foo20000644000000000000000000000000612462537262024027 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tree/tree/foo0000644000000000000000000000000312462537262023164 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tree/wrong-file-sha1-hash-in-tree-list0000644000000000000000000000003212462537262027602 0ustar 00000000000000[files] dir/foo2| sha1|f5 brebis-0.10/functional-tests/wrong-file-sha1-hash-in-tree/wrong-file-sha1-hash-in-tree.conf0000644000000000000000000000015312462537262027561 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-tree type=tree path=tree files_list=wrong-file-sha1-hash-in-tree-list ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1-hash-in-xz-archive-listbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1-hash-in-xz-archive-l0000644000000000000000000000007212462537262031330 0ustar 00000000000000[files] wrong-file-sha1-hash-in-xz-archive| sha1|1c8c6df5 ././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1-hash-in-xz-archive.confbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1-hash-in-xz-archive.c0000644000000000000000000000023412462537262031320 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-xz-archive type=archive path=wrong-file-sha1-hash-in-xz-archive.xz files_list=wrong-file-sha1-hash-in-xz-archive-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1-hash-in-xz-archive.xzbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-xz-archive/wrong-file-sha1-hash-in-xz-archive.x0000644000000000000000000000011012462537262031336 0ustar 000000000000007zXZִF!t/this is a file drl'j}YZ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-zip-archive/wrong-file-sha1-hash-in-zip-archive-listbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-zip-archive/wrong-file-sha1-hash-in-zip-archive0000644000000000000000000000006112462537262031377 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| sha1|55ca ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-zip-archive/wrong-file-sha1-hash-in-zip-archive.confbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-zip-archive/wrong-file-sha1-hash-in-zip-archive0000644000000000000000000000024012462537262031376 0ustar 00000000000000[main] name=wrong-file-sha1-hash-in-zip-archive type=archive path=wrong-file-sha1-hash-in-zip-archive.zip files_list=wrong-file-sha1-hash-in-zip-archive-list ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha1-hash-in-zip-archive/wrong-file-sha1-hash-in-zip-archive.zipbrebis-0.10/functional-tests/wrong-file-sha1-hash-in-zip-archive/wrong-file-sha1-hash-in-zip-archive0000644000000000000000000000162012462537262031401 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in-bzip2-archive-listbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in-bzip20000644000000000000000000000007512462537262030753 0ustar 00000000000000[files] wrong-file-sha224-hash-in-bzip2-archive| sha224|5345 ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in-bzip2-archive.bz2brebis-0.10/functional-tests/wrong-file-sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in-bzip20000644000000000000000000000017512462537262030754 0ustar 00000000000000BZh91AY&SY ]@ >ޠ hD4jcD=&TSS%_Oj2=vRLns ْ,/6/z4x]e50u\=]dE-)„OD0././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in-bzip2-archive.confbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-bzip2-archive/wrong-file-sha224-hash-in-bzip20000644000000000000000000000025412462537262030752 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-bzip2-archive type=archive path=wrong-file-sha224-hash-in-bzip2-archive.bz2 files_list=wrong-file-sha224-hash-in-bzip2-archive-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz-archi0000644000000000000000000000007312462537262031021 0ustar 00000000000000[files] wrong-file-md5-hash-in-gz-archive| sha224|37c1e3c4 ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz-archi0000644000000000000000000000024212462537262031017 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-gz-archive type=archive path=wrong-file-sha224-hash-in-gz-archive.gz files_list=wrong-file-sha224-hash-in-gz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz-archive.gzbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-gz-archive/wrong-file-sha224-hash-in-gz-archi0000644000000000000000000000011212462537262031013 0ustar 00000000000000INwrong-file-md5-hash-in-gz-archiveTH/,V H,Q/V(-L././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file-sha224-hash-in-tar-archive-listbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file-sha224-hash-in-tar-arc0000644000000000000000000000002712462537262031013 0ustar 00000000000000[files] foo| sha224|77 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file-sha224-hash-in-tar-archive.confbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file-sha224-hash-in-tar-arc0000644000000000000000000000024512462537262031015 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-tar-archive type=archive path=wrong-file-sha224-hash-in-tar-archive.tar files_list=wrong-file-sha224-hash-in-tar-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file-sha224-hash-in-tar-archive.tarbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-archive/wrong-file-sha224-hash-in-tar-arc0000644000000000000000000007400012462537262031015 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar0000644000000000000000000000006112462537262030741 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| sha224|6ca3 ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar0000644000000000000000000000026612462537262030750 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-tar-bz2-archive type=archive path=wrong-file-sha224-hash-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-sha224-hash-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000017100000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive/wrong-file-sha224-hash-in-tar0000644000000000000000000000032012462537262030737 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-0000644000000000000000000000005712462537262030746 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| sha224|6ca ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-0000644000000000000000000000026112462537262030743 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-tar-gz-archive type=archive path=wrong-file-sha224-hash-in-tar-gz-archive.tar.gz files_list=wrong-file-sha224-hash-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-0000644000000000000000000000030412462537262030741 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-tree/tree/bar0000644000000000000000000000000412462537262023315 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tree/tree/dir/foo20000644000000000000000000000000612462537262024176 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tree/tree/foo0000644000000000000000000000000312462537262023333 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tree/wrong-file-sha224-hash-in-tree-list0000644000000000000000000000004012462537262030117 0ustar 00000000000000[files] dir/foo2| sha224|2d6d67 brebis-0.10/functional-tests/wrong-file-sha224-hash-in-tree/wrong-file-sha224-hash-in-tree.conf0000644000000000000000000000015712462537262030103 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-tree type=tree path=tree files_list=wrong-file-sha224-hash-in-tree-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file-sha224-hash-in-xz-archive-listbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file-sha224-hash-in-xz-archi0000644000000000000000000000007612462537262031066 0ustar 00000000000000[files] wrong-file-sha224-hash-in-xz-archive| sha224|37c1e3c4 ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file-sha224-hash-in-xz-archive.confbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file-sha224-hash-in-xz-archi0000644000000000000000000000024212462537262031061 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-xz-archive type=archive path=wrong-file-sha224-hash-in-xz-archive.xz files_list=wrong-file-sha224-hash-in-xz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file-sha224-hash-in-xz-archive.xzbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-xz-archive/wrong-file-sha224-hash-in-xz-archi0000644000000000000000000000011012462537262031053 0ustar 000000000000007zXZִF!t/this is a file drl'j}YZ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file-sha224-hash-in-zip-archive-listbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file-sha224-hash-in-zip-arc0000644000000000000000000000006312462537262031043 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| sha224|0689 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file-sha224-hash-in-zip-archive.confbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file-sha224-hash-in-zip-arc0000644000000000000000000000024612462537262031046 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-zip-archive type=archive path=wrong-file-sha224-hash-in-zip-archive.zip files_list=wrong-file-sha224-hash-in-zip-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file-sha224-hash-in-zip-archive.zipbrebis-0.10/functional-tests/wrong-file-sha224-hash-in-zip-archive/wrong-file-sha224-hash-in-zip-arc0000644000000000000000000000162012462537262031043 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in-bzip2-archive-listbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in-bzip20000644000000000000000000000007512462537262030765 0ustar 00000000000000[files] wrong-file-sha256-hash-in-bzip2-archive| sha256|a8d4 ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in-bzip2-archive.bz2brebis-0.10/functional-tests/wrong-file-sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in-bzip20000644000000000000000000000017512462537262030766 0ustar 00000000000000BZh91AY&SY ]@ >ޠ hD4jcD=&TSS%_Oj2=vRLns ْ,/6/z4x]e50u\=]dE-)„OD0././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in-bzip2-archive.confbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-bzip2-archive/wrong-file-sha256-hash-in-bzip20000644000000000000000000000025412462537262030764 0ustar 00000000000000[main] name=wrong-file-sha256-hash-in-bzip2-archive type=archive path=wrong-file-sha256-hash-in-bzip2-archive.bz2 files_list=wrong-file-sha256-hash-in-bzip2-archive-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-gz-archive/wrong-file-sha256-hash-in-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-gz-archive/wrong-file-sha256-hash-in-gz-archi0000644000000000000000000000007212462537262031032 0ustar 00000000000000[files] wrong-file-md5-hash-in-gz-archive| sha256|81021e6 ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-gz-archive/wrong-file-sha256-hash-in-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-gz-archive/wrong-file-sha256-hash-in-gz-archi0000644000000000000000000000024212462537262031031 0ustar 00000000000000[main] name=wrong-file-sha256-hash-in-gz-archive type=archive path=wrong-file-sha256-hash-in-gz-archive.gz files_list=wrong-file-sha256-hash-in-gz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-gz-archive/wrong-file-sha256-hash-in-gz-archive.gzbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-gz-archive/wrong-file-sha256-hash-in-gz-archi0000644000000000000000000000011212462537262031025 0ustar 00000000000000INwrong-file-md5-hash-in-gz-archiveTH/,V H,Q/V(-L././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-archive/wrong-file-sha256-hash-in-tar-archive-listbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-archive/wrong-file-sha256-hash-in-tar-arc0000644000000000000000000000002612462537262031024 0ustar 00000000000000[files] foo| sha256|0 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-archive/wrong-file-sha256-hash-in-tar-archive.confbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-archive/wrong-file-sha256-hash-in-tar-arc0000644000000000000000000000024512462537262031027 0ustar 00000000000000[main] name=wrong-file-sha256-hash-in-tar-archive type=archive path=wrong-file-sha256-hash-in-tar-archive.tar files_list=wrong-file-sha256-hash-in-tar-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-archive/wrong-file-sha256-hash-in-tar-archive.tarbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-archive/wrong-file-sha256-hash-in-tar-arc0000644000000000000000000007400012462537262031027 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar0000644000000000000000000000006012462537262030752 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| sha256|7d8 ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar0000644000000000000000000000026612462537262030762 0ustar 00000000000000[main] name=wrong-file-sha256-hash-in-tar-bz2-archive type=archive path=wrong-file-sha256-hash-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-sha256-hash-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000017100000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive/wrong-file-sha256-hash-in-tar0000644000000000000000000000032012462537262030751 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-0000644000000000000000000000006212462537262030747 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| sha224|6ca35c ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-0000644000000000000000000000026112462537262030750 0ustar 00000000000000[main] name=wrong-file-sha224-hash-in-tar-gz-archive type=archive path=wrong-file-sha224-hash-in-tar-gz-archive.tar.gz files_list=wrong-file-sha224-hash-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tar-gz-archive/wrong-file-sha224-hash-in-tar-0000644000000000000000000000030412462537262030746 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-tree/tree/bar0000644000000000000000000000000412462537262023322 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tree/tree/dir/foo20000644000000000000000000000000612462537262024203 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tree/tree/foo0000644000000000000000000000000312462537262023340 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tree/wrong-file-sha256-hash-in-tree-list0000644000000000000000000000003712462537262030137 0ustar 00000000000000[files] dir/foo2| sha256|5891b brebis-0.10/functional-tests/wrong-file-sha256-hash-in-tree/wrong-file-sha256-hash-in-tree.conf0000644000000000000000000000015712462537262030115 0ustar 00000000000000[main] name=wrong-file-sha256-hash-in-tree type=tree path=tree files_list=wrong-file-sha256-hash-in-tree-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file-sha256-hash-in-xz-archive-listbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file-sha256-hash-in-xz-archi0000644000000000000000000000007512462537262031077 0ustar 00000000000000[files] wrong-file-sha256-hash-in-xz-archive| sha256|81021e6 ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file-sha256-hash-in-xz-archive.confbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file-sha256-hash-in-xz-archi0000644000000000000000000000024212462537262031073 0ustar 00000000000000[main] name=wrong-file-sha256-hash-in-xz-archive type=archive path=wrong-file-sha256-hash-in-xz-archive.xz files_list=wrong-file-sha256-hash-in-xz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file-sha256-hash-in-xz-archive.xzbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-xz-archive/wrong-file-sha256-hash-in-xz-archi0000644000000000000000000000011012462537262031065 0ustar 000000000000007zXZִF!t/this is a file drl'j}YZ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash-in-zip-archive-listbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash-in-zip-arc0000644000000000000000000000006312462537262031055 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| sha256|98ea ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash-in-zip-archive.confbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash-in-zip-arc0000644000000000000000000000024612462537262031060 0ustar 00000000000000[main] name=wrong-file-sha256-hash-in-zip-archive type=archive path=wrong-file-sha256-hash-in-zip-archive.zip files_list=wrong-file-sha256-hash-in-zip-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash-in-zip-archive.zipbrebis-0.10/functional-tests/wrong-file-sha256-hash-in-zip-archive/wrong-file-sha256-hash-in-zip-arc0000644000000000000000000000162012462537262031055 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in-bzip2-archive-listbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in-bzip20000644000000000000000000000010012462537262030756 0ustar 00000000000000[files] wrong-file-sha384-hash-in-bzip2-archive| sha384|9712627 ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in-bzip2-archive.bz2brebis-0.10/functional-tests/wrong-file-sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in-bzip20000644000000000000000000000017512462537262030772 0ustar 00000000000000BZh91AY&SY ]@ >ޠ hD4jcD=&TSS%_Oj2=vRLns ْ,/6/z4x]e50u\=]dE-)„OD0././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in-bzip2-archive.confbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-bzip2-archive/wrong-file-sha384-hash-in-bzip20000644000000000000000000000025412462537262030770 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-bzip2-archive type=archive path=wrong-file-sha384-hash-in-bzip2-archive.bz2 files_list=wrong-file-sha384-hash-in-bzip2-archive-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archi0000644000000000000000000000007512462537262031041 0ustar 00000000000000[files] wrong-file-md5-hash-in-gz-archive| sha384|e1cfc35a18 ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archi0000644000000000000000000000024212462537262031035 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-gz-archive type=archive path=wrong-file-sha384-hash-in-gz-archive.gz files_list=wrong-file-sha384-hash-in-gz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archive.gzbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-gz-archive/wrong-file-sha384-hash-in-gz-archi0000644000000000000000000000011212462537262031031 0ustar 00000000000000INwrong-file-md5-hash-in-gz-archiveTH/,V H,Q/V(-L././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file-sha384-hash-in-tar-archive-listbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file-sha384-hash-in-tar-arc0000644000000000000000000000002612462537262031030 0ustar 00000000000000[files] foo| sha384|4 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file-sha384-hash-in-tar-archive.confbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file-sha384-hash-in-tar-arc0000644000000000000000000000024512462537262031033 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-tar-archive type=archive path=wrong-file-sha384-hash-in-tar-archive.tar files_list=wrong-file-sha384-hash-in-tar-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file-sha384-hash-in-tar-archive.tarbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-archive/wrong-file-sha384-hash-in-tar-arc0000644000000000000000000007400012462537262031033 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar0000644000000000000000000000006112462537262030757 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| sha384|93ae ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar0000644000000000000000000000026612462537262030766 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-tar-bz2-archive type=archive path=wrong-file-sha384-hash-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-sha384-hash-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000017100000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive/wrong-file-sha384-hash-in-tar0000644000000000000000000000032012462537262030755 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-gz-archive/wrong-file-sha384-hash-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-gz-archive/wrong-file-sha384-hash-in-tar-0000644000000000000000000000006012462537262030756 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| sha384|93ae ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-gz-archive/wrong-file-sha384-hash-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-gz-archive/wrong-file-sha384-hash-in-tar-0000644000000000000000000000026112462537262030761 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-tar-gz-archive type=archive path=wrong-file-sha384-hash-in-tar-gz-archive.tar.gz files_list=wrong-file-sha384-hash-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-gz-archive/wrong-file-sha384-hash-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tar-gz-archive/wrong-file-sha384-hash-in-tar-0000644000000000000000000000030412462537262030757 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-tree/tree/bar0000644000000000000000000000000412462537262023324 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tree/tree/dir/foo20000644000000000000000000000000612462537262024205 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tree/tree/foo0000644000000000000000000000000312462537262023342 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tree/wrong-file-sha384-hash-in-tree-list0000644000000000000000000000003512462537262030141 0ustar 00000000000000[files] dir/foo2| sha384|1d0 brebis-0.10/functional-tests/wrong-file-sha384-hash-in-tree/wrong-file-sha384-hash-in-tree.conf0000644000000000000000000000015712462537262030121 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-tree type=tree path=tree files_list=wrong-file-sha384-hash-in-tree-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file-sha384-hash-in-xz-archive-listbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file-sha384-hash-in-xz-archi0000644000000000000000000000010012462537262031070 0ustar 00000000000000[files] wrong-file-sha384-hash-in-xz-archive| sha384|e1cfc35a18 ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file-sha384-hash-in-xz-archive.confbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file-sha384-hash-in-xz-archi0000644000000000000000000000024212462537262031077 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-xz-archive type=archive path=wrong-file-sha384-hash-in-xz-archive.xz files_list=wrong-file-sha384-hash-in-xz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file-sha384-hash-in-xz-archive.xzbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-xz-archive/wrong-file-sha384-hash-in-xz-archi0000644000000000000000000000011012462537262031071 0ustar 000000000000007zXZִF!t/this is a file drl'j}YZ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash-in-zip-archive-listbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash-in-zip-arc0000644000000000000000000000006312462537262031061 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| sha384|4284 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash-in-zip-archive.confbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash-in-zip-arc0000644000000000000000000000024612462537262031064 0ustar 00000000000000[main] name=wrong-file-sha384-hash-in-zip-archive type=archive path=wrong-file-sha384-hash-in-zip-archive.zip files_list=wrong-file-sha384-hash-in-zip-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash-in-zip-archive.zipbrebis-0.10/functional-tests/wrong-file-sha384-hash-in-zip-archive/wrong-file-sha384-hash-in-zip-arc0000644000000000000000000000162012462537262031061 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in-bzip2-archive-listbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in-bzip20000644000000000000000000000007612462537262030754 0ustar 00000000000000[files] wrong-file-sha512-hash-in-bzip2-archive| sha512|c2f64 ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in-bzip2-archive.bz2brebis-0.10/functional-tests/wrong-file-sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in-bzip20000644000000000000000000000017512462537262030754 0ustar 00000000000000BZh91AY&SY ]@ >ޠ hD4jcD=&TSS%_Oj2=vRLns ْ,/6/z4x]e50u\=]dE-)„OD0././@LongLink0000000000000000000000000000016200000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in-bzip2-archive.confbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-bzip2-archive/wrong-file-sha512-hash-in-bzip20000644000000000000000000000025412462537262030752 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-bzip2-archive type=archive path=wrong-file-sha512-hash-in-bzip2-archive.bz2 files_list=wrong-file-sha512-hash-in-bzip2-archive-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file-sha512-hash-in-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file-sha512-hash-in-gz-archi0000644000000000000000000000007612462537262031024 0ustar 00000000000000[files] wrong-file-md5-hash-in-gz-archive| sha512|0b5fead4f8f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file-sha512-hash-in-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file-sha512-hash-in-gz-archi0000644000000000000000000000024212462537262031017 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-gz-archive type=archive path=wrong-file-sha512-hash-in-gz-archive.gz files_list=wrong-file-sha512-hash-in-gz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file-sha512-hash-in-gz-archive.gzbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-gz-archive/wrong-file-sha512-hash-in-gz-archi0000644000000000000000000000011212462537262031013 0ustar 00000000000000INwrong-file-md5-hash-in-gz-archiveTH/,V H,Q/V(-L././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-archive/wrong-file-sha512-hash-in-tar-archive-listbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-archive/wrong-file-sha512-hash-in-tar-arc0000644000000000000000000000002612462537262031012 0ustar 00000000000000[files] foo| sha512|8 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-archive/wrong-file-sha512-hash-in-tar-archive.confbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-archive/wrong-file-sha512-hash-in-tar-arc0000644000000000000000000000024512462537262031015 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-tar-archive type=archive path=wrong-file-sha512-hash-in-tar-archive.tar files_list=wrong-file-sha512-hash-in-tar-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-archive/wrong-file-sha512-hash-in-tar-archive.tarbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-archive/wrong-file-sha512-hash-in-tar-arc0000644000000000000000000007400012462537262031015 0ustar 00000000000000foo0000644000175000017500000003600011660310231010756 0ustar chaicachaicabar0000644000175000017500000001600011660310243010740 0ustar chaicachaica././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar0000644000000000000000000000005712462537262030746 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| sha512|cc ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar0000644000000000000000000000026612462537262030750 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-tar-bz2-archive type=archive path=wrong-file-sha512-hash-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-sha512-hash-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000017100000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive/wrong-file-sha512-hash-in-tar0000644000000000000000000000032012462537262030737 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-gz-archive/wrong-file-sha512-hash-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-gz-archive/wrong-file-sha512-hash-in-tar-0000644000000000000000000000006012462537262030740 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| sha512|cc06 ././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-gz-archive/wrong-file-sha512-hash-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-gz-archive/wrong-file-sha512-hash-in-tar-0000644000000000000000000000026112462537262030743 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-tar-gz-archive type=archive path=wrong-file-sha512-hash-in-tar-gz-archive.tar.gz files_list=wrong-file-sha512-hash-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-gz-archive/wrong-file-sha512-hash-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tar-gz-archive/wrong-file-sha512-hash-in-tar-0000644000000000000000000000030412462537262030741 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-tree/tree/bar0000644000000000000000000000000412462537262023315 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tree/tree/dir/foo20000644000000000000000000000000612462537262024176 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tree/tree/foo0000644000000000000000000000000312462537262023333 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tree/wrong-file-sha512-hash-in-tree-list0000644000000000000000000000004212462537262030121 0ustar 00000000000000[files] dir/foo2| sha512|e7c22b99 brebis-0.10/functional-tests/wrong-file-sha512-hash-in-tree/wrong-file-sha512-hash-in-tree.conf0000644000000000000000000000015712462537262030103 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-tree type=tree path=tree files_list=wrong-file-sha512-hash-in-tree-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file-sha512-hash-in-xz-archive-listbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file-sha512-hash-in-xz-archi0000644000000000000000000000010112462537262031053 0ustar 00000000000000[files] wrong-file-sha512-hash-in-xz-archive| sha512|0b5fead4f8f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file-sha512-hash-in-xz-archive.confbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file-sha512-hash-in-xz-archi0000644000000000000000000000024212462537262031061 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-xz-archive type=archive path=wrong-file-sha512-hash-in-xz-archive.xz files_list=wrong-file-sha512-hash-in-xz-archive-list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file-sha512-hash-in-xz-archive.xzbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-xz-archive/wrong-file-sha512-hash-in-xz-archi0000644000000000000000000000011012462537262031053 0ustar 000000000000007zXZִF!t/this is a file drl'j}YZ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash-in-zip-archive-listbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash-in-zip-arc0000644000000000000000000000006212462537262031042 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| sha512|d78 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash-in-zip-archive.confbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash-in-zip-arc0000644000000000000000000000024612462537262031046 0ustar 00000000000000[main] name=wrong-file-sha512-hash-in-zip-archive type=archive path=wrong-file-sha512-hash-in-zip-archive.zip files_list=wrong-file-sha512-hash-in-zip-archive-list ././@LongLink0000000000000000000000000000015500000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash-in-zip-archive.zipbrebis-0.10/functional-tests/wrong-file-sha512-hash-in-zip-archive/wrong-file-sha512-hash-in-zip-arc0000644000000000000000000000162012462537262031043 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar-bz2-archi0000644000000000000000000000005412462537262031256 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| type|d ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar-bz2-archi0000644000000000000000000000024712462537262031262 0ustar 00000000000000[main] name=wrong-file-type-d-in-tar-bz2-archive type=archive path=wrong-file-type-d-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-type-d-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-type-d-in-tar-bz2-archive/wrong-file-type-d-in-tar-bz2-archi0000644000000000000000000000032012462537262031252 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file-type-d-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file-type-d-in-tar-gz-archive0000644000000000000000000000005312462537262031456 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| type|d ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file-type-d-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file-type-d-in-tar-gz-archive0000644000000000000000000000024312462537262031457 0ustar 00000000000000[main] name=wrong-file-type-d-in-tar-gz-archive type=archive path=wrong-file-type-d-in-tar-gz-archive.tar.gz files_list=wrong-file-type-d-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file-type-d-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-type-d-in-tar-gz-archive/wrong-file-type-d-in-tar-gz-archive0000644000000000000000000000030412462537262031455 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-type-d-in-tree/tree/bar0000644000000000000000000000000412462537262022573 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-type-d-in-tree/tree/dir/foo20000644000000000000000000000000612462537262023454 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-type-d-in-tree/tree/foo0000644000000000000000000000000312462537262022611 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-type-d-in-tree/wrong-file-type-d-in-tree-list0000644000000000000000000000003112462537262026653 0ustar 00000000000000[files] dir/foo2| type|d brebis-0.10/functional-tests/wrong-file-type-d-in-tree/wrong-file-type-d-in-tree.conf0000644000000000000000000000014512462537262026634 0ustar 00000000000000[main] name=wrong-file-type-d-in-tree type=tree path=tree files_list=wrong-file-type-d-in-tree-list brebis-0.10/functional-tests/wrong-file-type-d-in-zip-archive/wrong-file-type-d-in-zip-archive-list0000644000000000000000000000005612462537262031426 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| type|d brebis-0.10/functional-tests/wrong-file-type-d-in-zip-archive/wrong-file-type-d-in-zip-archive.conf0000644000000000000000000000022712462537262031401 0ustar 00000000000000[main] name=wrong-file-type-d-in-zip-archive type=archive path=wrong-file-type-d-in-zip-archive.zip files_list=wrong-file-type-d-in-zip-archive-list brebis-0.10/functional-tests/wrong-file-type-d-in-zip-archive/wrong-file-type-d-in-zip-archive.zip0000644000000000000000000000162012462537262031254 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archi0000644000000000000000000000005012462537262031256 0ustar 00000000000000[files] file-missing-in-tar-bz2| type|f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archi0000644000000000000000000000024712462537262031266 0ustar 00000000000000[main] name=wrong-file-type-f-in-tar-bz2-archive type=archive path=wrong-file-type-f-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-type-f-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-type-f-in-tar-bz2-archive/wrong-file-type-f-in-tar-bz2-archi0000644000000000000000000000032012462537262031256 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive-listbrebis-0.10/functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive0000644000000000000000000000004712462537262031465 0ustar 00000000000000[files] file-missing-in-tar-gz| type|f ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive0000644000000000000000000000024312462537262031463 0ustar 00000000000000[main] name=wrong-file-type-f-in-tar-gz-archive type=archive path=wrong-file-type-f-in-tar-gz-archive.tar.gz files_list=wrong-file-type-f-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-type-f-in-tar-gz-archive/wrong-file-type-f-in-tar-gz-archive0000644000000000000000000000030412462537262031461 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file-type-l-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file-type-l-in-tar-bz2-archi0000644000000000000000000000024712462537262031302 0ustar 00000000000000[main] name=wrong-file-type-l-in-tar-bz2-archive type=archive path=wrong-file-type-l-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-type-l-in-tar-bz2-archive.list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file-type-l-in-tar-bz2-archive.listbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file-type-l-in-tar-bz2-archi0000644000000000000000000000007112462537262031275 0ustar 00000000000000[files] wrong-file-type-l-in-tar-bz2-archive/foo| type|f ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file-type-l-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-type-l-in-tar-bz2-archive/wrong-file-type-l-in-tar-bz2-archi0000644000000000000000000000032512462537262031277 0ustar 00000000000000BZh91AY&SYy@{߰0֐#M4d`)CMdSPhh#'LꞦ,b@ f"IPԩظ_5f JZԺ%-fOmZ LzCqda; ] 옚RpıiiYYtX)„^X././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive0000644000000000000000000000024312462537262031477 0ustar 00000000000000[main] name=wrong-file-type-l-in-tar-gz-archive type=archive path=wrong-file-type-l-in-tar-gz-archive.tar.gz files_list=wrong-file-type-l-in-tar-gz-archive.list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive.listbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive0000644000000000000000000000007012462537262031475 0ustar 00000000000000[files] wrong-file-type-l-in-tar-gz-archive/foo| type|f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-gz-archive/wrong-file-type-l-in-tar-gz-archive0000644000000000000000000000030212462537262031473 0ustar 00000000000000iRK 0@,%|K[ CWNJEAps1uUfwT3movi4٤\jfW<%z{?ogE~Wjuj:Y;rte >ߓr7>E0v"P(-ʖ(././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file-type-l-in-tar-xz-archive.confbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file-type-l-in-tar-xz-archive0000644000000000000000000000024312462537262031541 0ustar 00000000000000[main] name=wrong-file-type-l-in-tar-xz-archive type=archive path=wrong-file-type-l-in-tar-xz-archive.tar.xz files_list=wrong-file-type-l-in-tar-xz-archive.list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file-type-l-in-tar-xz-archive.listbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file-type-l-in-tar-xz-archive0000644000000000000000000000007012462537262031537 0ustar 00000000000000[files] wrong-file-type-l-in-tar-xz-archive/foo| type|f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file-type-l-in-tar-xz-archive.tar.xzbrebis-0.10/functional-tests/wrong-file-type-l-in-tar-xz-archive/wrong-file-type-l-in-tar-xz-archive0000644000000000000000000000035412462537262031544 0ustar 000000000000007zXZִF!t/'];"a@nԧrAU4SP gVRIȓR^nqnvͬ"`&l=Ž^üej-%Fmi;5 :Efieq#HGa8+cġsMrP>gYZbrebis-0.10/functional-tests/wrong-file-type-l-in-tree/wrong-file-type-l-in-tree.conf0000644000000000000000000000017212462537262026654 0ustar 00000000000000[main] name=wrong-file-type-l-in-tree type=tree path=wrong-file-type-l-in-tree files_list=wrong-file-type-l-in-tree.list brebis-0.10/functional-tests/wrong-file-type-l-in-tree/wrong-file-type-l-in-tree.list0000644000000000000000000000002412462537262026676 0ustar 00000000000000[files] bar| type|f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archi0000644000000000000000000000024712462537262031320 0ustar 00000000000000[main] name=wrong-file-type-s-in-tar-bz2-archive type=archive path=wrong-file-type-s-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-type-s-in-tar-bz2-archive.list ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archive.listbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archi0000644000000000000000000000007112462537262031313 0ustar 00000000000000[files] wrong-file-type-s-in-tar-bz2-archive/bar| type|f ././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-type-s-in-tar-bz2-archive/wrong-file-type-s-in-tar-bz2-archi0000644000000000000000000000033312462537262031314 0ustar 00000000000000BZh91AY&SYF{@{߰0٠M2M #L4Bh5'zSe=53PSuǾgO+G/.\6Y"ɇt~ /^{$ PC"'Ab ɭQ6 b;MWOQhkLh%[WpsssD?ܑN$Cр././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file-type-s-in-tar-gz-archive.confbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file-type-s-in-tar-gz-archive0000644000000000000000000000024312462537262031515 0ustar 00000000000000[main] name=wrong-file-type-s-in-tar-gz-archive type=archive path=wrong-file-type-s-in-tar-gz-archive.tar.gz files_list=wrong-file-type-s-in-tar-gz-archive.list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file-type-s-in-tar-gz-archive.listbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file-type-s-in-tar-gz-archive0000644000000000000000000000007012462537262031513 0ustar 00000000000000[files] wrong-file-type-s-in-tar-gz-archive/bar| type|f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file-type-s-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-gz-archive/wrong-file-type-s-in-tar-gz-archive0000644000000000000000000000030312462537262031512 0ustar 00000000000000wR 0]n`4ms׳ğAhuitbDz 6/wmS2 5<.Uh;U=:܊XIӚ8N.ƉTk#]pk?N+kr?o|O[ƻsǭ˄L˶hy_683&qVHь?y g\(././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive.confbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive0000644000000000000000000000024312462537262031557 0ustar 00000000000000[main] name=wrong-file-type-s-in-tar-xz-archive type=archive path=wrong-file-type-s-in-tar-xz-archive.tar.xz files_list=wrong-file-type-s-in-tar-xz-archive.list ././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive.listbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive0000644000000000000000000000007012462537262031555 0ustar 00000000000000[files] wrong-file-type-s-in-tar-xz-archive/bar| type|f ././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive.tar.xzbrebis-0.10/functional-tests/wrong-file-type-s-in-tar-xz-archive/wrong-file-type-s-in-tar-xz-archive0000644000000000000000000000036412462537262031563 0ustar 000000000000007zXZִF!t/'];"a@n o,:䏿3Ƴ4GKʜMZA,&'p'D" X6ylUN[Oo'J֦çnNq,6 ?P| hV=h_Pipli}$,tE'`cɈZb.8̽މ@L,PymgYZbrebis-0.10/functional-tests/wrong-file-type-s-in-tree/wrong-file-type-s-in-tree.conf0000644000000000000000000000017212462537262026672 0ustar 00000000000000[main] name=wrong-file-type-s-in-tree type=tree path=wrong-file-type-s-in-tree files_list=wrong-file-type-s-in-tree.list brebis-0.10/functional-tests/wrong-file-type-s-in-tree/wrong-file-type-s-in-tree.list0000644000000000000000000000002412462537262026714 0ustar 00000000000000[files] bar| type|f brebis-0.10/functional-tests/wrong-file-type-s-in-tree/wrong-file-type-s-in-tree/bar0000777000000000000000000000000012462537262027215 2fooustar 00000000000000brebis-0.10/functional-tests/wrong-file-type-s-in-tree/wrong-file-type-s-in-tree/foo0000644000000000000000000000000012462537262026517 0ustar 00000000000000brebis-0.10/functional-tests/wrong-file-uid-in-tar-archive/wrong-file-uid-in-tar-archive-list0000644000000000000000000000002612462537262030331 0ustar 00000000000000[files] foo| uid|1234 brebis-0.10/functional-tests/wrong-file-uid-in-tar-archive/wrong-file-uid-in-tar-archive.conf0000644000000000000000000000021612462537262030305 0ustar 00000000000000[main] name=wrong-file-uid-in-tar-archive type=archive path=wrong-file-uid-in-tar-archive.tar files_list=wrong-file-uid-in-tar-archive-list brebis-0.10/functional-tests/wrong-file-uid-in-tar-archive/wrong-file-uid-in-tar-archive.tar0000644000000000000000000002400012462537262030143 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-uid-in-tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive-listbrebis-0.10/functional-tests/wrong-file-uid-in-tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive-lis0000644000000000000000000000005612462537262031336 0ustar 00000000000000[files] file-missing-in-tar-bz2/bar| uid|1234 ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-uid-in-tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive.confbrebis-0.10/functional-tests/wrong-file-uid-in-tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive.con0000644000000000000000000000023612462537262031327 0ustar 00000000000000[main] name=wrong-file-uid-in-tar-bz2-archive type=archive path=wrong-file-uid-in-tar-bz2-archive.tar.bz2 files_list=wrong-file-uid-in-tar-bz2-archive-list ././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-uid-in-tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive.tar.bz2brebis-0.10/functional-tests/wrong-file-uid-in-tar-bz2-archive/wrong-file-uid-in-tar-bz2-archive.tar0000644000000000000000000000032012462537262031330 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 brebis-0.10/functional-tests/wrong-file-uid-in-tar-gz-archive/wrong-file-uid-in-tar-gz-archive-list0000644000000000000000000000005512462537262031367 0ustar 00000000000000[files] file-missing-in-tar-gz/bar| uid|1234 brebis-0.10/functional-tests/wrong-file-uid-in-tar-gz-archive/wrong-file-uid-in-tar-gz-archive.conf0000644000000000000000000000023212462537262031337 0ustar 00000000000000[main] name=wrong-file-uid-in-tar-gz-archive type=archive path=wrong-file-uid-in-tar-gz-archive.tar.gz files_list=wrong-file-uid-in-tar-gz-archive-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-file-uid-in-tar-gz-archive/wrong-file-uid-in-tar-gz-archive.tar.gzbrebis-0.10/functional-tests/wrong-file-uid-in-tar-gz-archive/wrong-file-uid-in-tar-gz-archive.tar.g0000644000000000000000000000030412462537262031425 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+!7DP{2gYZbrebis-0.10/functional-tests/wrong-file-uid-in-tree/tree/bar0000644000000000000000000000000412462537262022152 0ustar 00000000000000bye brebis-0.10/functional-tests/wrong-file-uid-in-tree/tree/dir/foo20000644000000000000000000000000612462537262023033 0ustar 00000000000000hello brebis-0.10/functional-tests/wrong-file-uid-in-tree/tree/foo0000644000000000000000000000000312462537262022170 0ustar 00000000000000hi brebis-0.10/functional-tests/wrong-file-uid-in-tree/wrong-file-uid-in-tree-list0000644000000000000000000000003312462537262025613 0ustar 00000000000000[files] dir/foo2| uid|1234 brebis-0.10/functional-tests/wrong-file-uid-in-tree/wrong-file-uid-in-tree.conf0000644000000000000000000000013712462537262025573 0ustar 00000000000000[main] name=wrong-file-uid-in-tree type=tree path=tree files_list=wrong-file-uid-in-tree-list brebis-0.10/functional-tests/wrong-file-uid-in-zip-archive/wrong-file-uid-in-zip-archive-list0000644000000000000000000000005612462537262030364 0ustar 00000000000000[files] file-missing-in-zip/foo2/bar2| uid|10 brebis-0.10/functional-tests/wrong-file-uid-in-zip-archive/wrong-file-uid-in-zip-archive.conf0000644000000000000000000000021612462537262030335 0ustar 00000000000000[main] name=wrong-file-uid-in-zip-archive type=archive path=wrong-file-uid-in-zip-archive.zip files_list=wrong-file-uid-in-zip-archive-list brebis-0.10/functional-tests/wrong-file-uid-in-zip-archive/wrong-file-uid-in-zip-archive.zip0000644000000000000000000000162012462537262030212 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-gz-archive-gid/wrong-gz-archive-gid-list0000644000000000000000000000002312462537262025114 0ustar 00000000000000[archive] gid| 234 brebis-0.10/functional-tests/wrong-gz-archive-gid/wrong-gz-archive-gid.conf0000644000000000000000000000016212462537262025073 0ustar 00000000000000[main] name=wrong-gz-archive-gid type=archive path=wrong-gz-archive-gid.gz files_list=wrong-gz-archive-gid-list brebis-0.10/functional-tests/wrong-gz-archive-gid/wrong-gz-archive-gid.gz0000644000000000000000000000006712462537262024572 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-md5-hash/wrong-gz-archive-md5-hash-list0000644000000000000000000000002412462537262026623 0ustar 00000000000000[archive] md5| 87e0 brebis-0.10/functional-tests/wrong-gz-archive-md5-hash/wrong-gz-archive-md5-hash.conf0000644000000000000000000000020112462537262026573 0ustar 00000000000000[main] name=wrong-gz-archive-md5-hash type=archive path=wrong-gz-archive-md5-hash.gz files_list=wrong-gz-archive-md5-hash-list brebis-0.10/functional-tests/wrong-gz-archive-md5-hash/wrong-gz-archive-md5-hash.gz0000644000000000000000000000006712462537262026300 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-mode/wrong-gz-archive-mode-list0000644000000000000000000000002412462537262025457 0ustar 00000000000000[archive] mode| 234 brebis-0.10/functional-tests/wrong-gz-archive-mode/wrong-gz-archive-mode.conf0000644000000000000000000000016512462537262025440 0ustar 00000000000000[main] name=wrong-gz-archive-mode type=archive path=wrong-gz-archive-mode.gz files_list=wrong-gz-archive-mode-list brebis-0.10/functional-tests/wrong-gz-archive-mode/wrong-gz-archive-mode.gz0000644000000000000000000000006712462537262025134 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-sha1-hash/wrong-gz-archive-sha1-hash-list0000644000000000000000000000002612462537262027143 0ustar 00000000000000[archive] sha1| 8ed94 brebis-0.10/functional-tests/wrong-gz-archive-sha1-hash/wrong-gz-archive-sha1-hash.conf0000644000000000000000000000020412462537262027114 0ustar 00000000000000[main] name=wrong-gz-archive-sha1-hash type=archive path=wrong-gz-archive-sha1-hash.gz files_list=wrong-gz-archive-sha1-hash-list brebis-0.10/functional-tests/wrong-gz-archive-sha1-hash/wrong-gz-archive-sha1-hash.gz0000644000000000000000000000006712462537262026616 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-sha224-hash/wrong-gz-archive-sha224-hash-list0000644000000000000000000000002712462537262027462 0ustar 00000000000000[archive] sha224| 2af6 brebis-0.10/functional-tests/wrong-gz-archive-sha224-hash/wrong-gz-archive-sha224-hash.conf0000644000000000000000000000021212462537262027431 0ustar 00000000000000[main] name=wrong-gz-archive-sha224-hash type=archive path=wrong-gz-archive-sha224-hash.gz files_list=wrong-gz-archive-sha224-hash-list brebis-0.10/functional-tests/wrong-gz-archive-sha224-hash/wrong-gz-archive-sha224-hash.gz0000644000000000000000000000006712462537262027134 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-sha256-hash/wrong-gz-archive-sha256-hash-list0000644000000000000000000000002612462537262027473 0ustar 00000000000000[archive] sha256| 8c9 brebis-0.10/functional-tests/wrong-gz-archive-sha256-hash/wrong-gz-archive-sha256-hash.conf0000644000000000000000000000021212462537262027443 0ustar 00000000000000[main] name=wrong-gz-archive-sha256-hash type=archive path=wrong-gz-archive-sha256-hash.gz files_list=wrong-gz-archive-sha256-hash-list brebis-0.10/functional-tests/wrong-gz-archive-sha256-hash/wrong-gz-archive-sha256-hash.gz0000644000000000000000000000006712462537262027146 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-sha384-hash/wrong-gz-archive-sha384-hash-list0000644000000000000000000000003012462537262027472 0ustar 00000000000000[archive] sha384| 12d29 brebis-0.10/functional-tests/wrong-gz-archive-sha384-hash/wrong-gz-archive-sha384-hash.conf0000644000000000000000000000021212462537262027447 0ustar 00000000000000[main] name=wrong-gz-archive-sha384-hash type=archive path=wrong-gz-archive-sha384-hash.gz files_list=wrong-gz-archive-sha384-hash-list brebis-0.10/functional-tests/wrong-gz-archive-sha384-hash/wrong-gz-archive-sha384-hash.gz0000644000000000000000000000006712462537262027152 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-sha512-hash/wrong-gz-archive-sha512-hash-list0000644000000000000000000000002712462537262027462 0ustar 00000000000000[archive] sha512| 8f18 brebis-0.10/functional-tests/wrong-gz-archive-sha512-hash/wrong-gz-archive-sha512-hash.conf0000644000000000000000000000021212462537262027431 0ustar 00000000000000[main] name=wrong-gz-archive-sha512-hash type=archive path=wrong-gz-archive-sha512-hash.gz files_list=wrong-gz-archive-sha512-hash-list brebis-0.10/functional-tests/wrong-gz-archive-sha512-hash/wrong-gz-archive-sha512-hash.gz0000644000000000000000000000006712462537262027134 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-gz-archive-uid/wrong-gz-archive-uid-list0000644000000000000000000000002312462537262025150 0ustar 00000000000000[archive] uid| 234 brebis-0.10/functional-tests/wrong-gz-archive-uid/wrong-gz-archive-uid.conf0000644000000000000000000000016212462537262025127 0ustar 00000000000000[main] name=wrong-gz-archive-uid type=archive path=wrong-gz-archive-uid.gz files_list=wrong-gz-archive-uid-list brebis-0.10/functional-tests/wrong-gz-archive-uid/wrong-gz-archive-uid.gz0000644000000000000000000000006712462537262024626 0ustar 00000000000000`BNwrong-gz-archive-uidT(H,Q/V(-JF5brebis-0.10/functional-tests/wrong-tar-archive-gid/wrong-tar-archive-gid-list0000644000000000000000000000002412462537262025431 0ustar 00000000000000[archive] gid| 1234 brebis-0.10/functional-tests/wrong-tar-archive-gid/wrong-tar-archive-gid.conf0000644000000000000000000000016612462537262025413 0ustar 00000000000000[main] name=wrong-tar-archive-gid type=archive path=wrong-tar-archive-gid.tar files_list=wrong-tar-archive-gid-list brebis-0.10/functional-tests/wrong-tar-archive-gid/wrong-tar-archive-gid.tar0000644000000000000000000002400012462537262025245 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-md5-hash/wrong-tar-archive-md5-hash-list0000644000000000000000000000002112462537262027134 0ustar 00000000000000[archive] md5| b brebis-0.10/functional-tests/wrong-tar-archive-md5-hash/wrong-tar-archive-md5-hash.conf0000644000000000000000000000020512462537262027113 0ustar 00000000000000[main] name=wrong-tar-archive-md5-hash type=archive path=wrong-tar-archive-md5-hash.tar files_list=wrong-tar-archive-md5-hash-list brebis-0.10/functional-tests/wrong-tar-archive-md5-hash/wrong-tar-archive-md5-hash.tar0000644000000000000000000002400012462537262026753 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-mode/wrong-tar-archive-mode-list0000644000000000000000000000002412462537262025773 0ustar 00000000000000[archive] mode| 755 brebis-0.10/functional-tests/wrong-tar-archive-mode/wrong-tar-archive-mode.conf0000644000000000000000000000017112462537262025751 0ustar 00000000000000[main] name=wrong-tar-archive-mode type=archive path=wrong-tar-archive-mode.tar files_list=wrong-tar-archive-mode-list brebis-0.10/functional-tests/wrong-tar-archive-mode/wrong-tar-archive-mode.tar0000644000000000000000000002400012462537262025607 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-sha1-hash/wrong-tar-archive-sha1-hash-list0000644000000000000000000000002212462537262027453 0ustar 00000000000000[archive] sha1| 4 brebis-0.10/functional-tests/wrong-tar-archive-sha1-hash/wrong-tar-archive-sha1-hash.conf0000644000000000000000000000021012462537262027425 0ustar 00000000000000[main] name=wrong-tar-archive-sha1-hash type=archive path=wrong-tar-archive-sha1-hash.tar files_list=wrong-tar-archive-sha1-hash-list brebis-0.10/functional-tests/wrong-tar-archive-sha1-hash/wrong-tar-archive-sha1-hash.tar0000644000000000000000000002400012462537262027271 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-sha224-hash/wrong-tar-archive-sha224-hash-list0000644000000000000000000000002412462537262027773 0ustar 00000000000000[archive] sha224| d brebis-0.10/functional-tests/wrong-tar-archive-sha224-hash/wrong-tar-archive-sha224-hash.conf0000644000000000000000000000021612462537262027751 0ustar 00000000000000[main] name=wrong-tar-archive-sha224-hash type=archive path=wrong-tar-archive-sha224-hash.tar files_list=wrong-tar-archive-sha224-hash-list brebis-0.10/functional-tests/wrong-tar-archive-sha224-hash/wrong-tar-archive-sha224-hash.tar0000644000000000000000000002400012462537262027607 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-sha256-hash/wrong-tar-archive-sha256-hash-list0000644000000000000000000000002512462537262030006 0ustar 00000000000000[archive] sha256| ac brebis-0.10/functional-tests/wrong-tar-archive-sha256-hash/wrong-tar-archive-sha256-hash.conf0000644000000000000000000000021612462537262027763 0ustar 00000000000000[main] name=wrong-tar-archive-sha256-hash type=archive path=wrong-tar-archive-sha256-hash.tar files_list=wrong-tar-archive-sha256-hash-list brebis-0.10/functional-tests/wrong-tar-archive-sha256-hash/wrong-tar-archive-sha256-hash.tar0000644000000000000000000002400012462537262027621 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-sha384-hash/wrong-tar-archive-sha384-hash-list0000644000000000000000000000002412462537262030011 0ustar 00000000000000[archive] sha384| a brebis-0.10/functional-tests/wrong-tar-archive-sha384-hash/wrong-tar-archive-sha384-hash.conf0000644000000000000000000000021612462537262027767 0ustar 00000000000000[main] name=wrong-tar-archive-sha384-hash type=archive path=wrong-tar-archive-sha384-hash.tar files_list=wrong-tar-archive-sha384-hash-list brebis-0.10/functional-tests/wrong-tar-archive-sha384-hash/wrong-tar-archive-sha384-hash.tar0000644000000000000000000002400012462537262027625 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-sha512-hash/wrong-tar-archive-sha512-hash-list0000644000000000000000000000002412462537262027773 0ustar 00000000000000[archive] sha512| 4 brebis-0.10/functional-tests/wrong-tar-archive-sha512-hash/wrong-tar-archive-sha512-hash.conf0000644000000000000000000000021612462537262027751 0ustar 00000000000000[main] name=wrong-tar-archive-sha512-hash type=archive path=wrong-tar-archive-sha512-hash.tar files_list=wrong-tar-archive-sha512-hash-list brebis-0.10/functional-tests/wrong-tar-archive-sha512-hash/wrong-tar-archive-sha512-hash.tar0000644000000000000000000002400012462537262027607 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-archive-uid/wrong-tar-archive-uid-list0000644000000000000000000000002412462537262025465 0ustar 00000000000000[archive] uid| 1234 brebis-0.10/functional-tests/wrong-tar-archive-uid/wrong-tar-archive-uid.conf0000644000000000000000000000016612462537262025447 0ustar 00000000000000[main] name=wrong-tar-archive-uid type=archive path=wrong-tar-archive-uid.tar files_list=wrong-tar-archive-uid-list brebis-0.10/functional-tests/wrong-tar-archive-uid/wrong-tar-archive-uid.tar0000644000000000000000000002400012462537262025301 0ustar 00000000000000foo0000644000175000017500000000002311660034023010754 0ustar chaicachaicathis is a foo file bar0000644000175000017500000000002311660034033010736 0ustar chaicachaicathis is a bar file brebis-0.10/functional-tests/wrong-tar-bz2-archive-gid/wrong-tar-bz2-archive-gid-list0000644000000000000000000000002412462537262026617 0ustar 00000000000000[archive] gid| 1234 brebis-0.10/functional-tests/wrong-tar-bz2-archive-gid/wrong-tar-bz2-archive-gid.conf0000644000000000000000000000020612462537262026574 0ustar 00000000000000[main] name=wrong-tar-bz2-archive-gid type=archive path=wrong-tar-bz2-archive-gid.tar.bz2 files_list=wrong-tar-bz2-archive-gid-list brebis-0.10/functional-tests/wrong-tar-bz2-archive-gid/wrong-tar-bz2-archive-gid.tar.bz20000644000000000000000000000032012462537262027126 0ustar 00000000000000BZh91AY&SY6 @@{(0 24L&F 0ada20M M5i 3Q:v%V x^8oxD&ҁ y!j2fcᷳ(g6EŷV1/a%k{S=_Jl0{>_/FCVYurqD?ܑN$8 brebis-0.10/functional-tests/wrong-tar-bz2-archive-md5-hash/wrong-tar-bz2-archive-md5-hash-list0000644000000000000000000000002112462537262030322 0ustar 00000000000000[archive] md5| 3 brebis-0.10/functional-tests/wrong-tar-bz2-archive-md5-hash/wrong-tar-bz2-archive-md5-hash.conf0000644000000000000000000000022512462537262030303 0ustar 00000000000000[main] name=wrong-tar-bz2-archive-md5-hash type=archive path=wrong-tar-bz2-archive-md5-hash.tar.bz2 files_list=wrong-tar-bz2-archive-md5-hash-list brebis-0.10/functional-tests/wrong-tar-bz2-archive-md5-hash/wrong-tar-bz2-archive-md5-hash.tar.bz20000644000000000000000000000030412462537262030636 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+_/FCVYurqD?ܑN$8 brebis-0.10/functional-tests/wrong-tar-bz2-archive-sha1-hash/wrong-tar-bz2-archive-sha1-hash-list0000644000000000000000000000002212462537262030641 0ustar 00000000000000[archive] sha1| e brebis-0.10/functional-tests/wrong-tar-bz2-archive-sha1-hash/wrong-tar-bz2-archive-sha1-hash.conf0000644000000000000000000000023012462537262030615 0ustar 00000000000000[main] name=wrong-tar-bz2-archive-sha1-hash type=archive path=wrong-tar-bz2-archive-sha1-hash.tar.bz2 files_list=wrong-tar-bz2-archive-sha1-hash-list brebis-0.10/functional-tests/wrong-tar-bz2-archive-sha1-hash/wrong-tar-bz2-archive-sha1-hash.tar.bz20000644000000000000000000000030412462537262031154 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+_/FCVYurqD?ܑN$8 brebis-0.10/functional-tests/wrong-tar-gz-archive-gid/wrong-tar-gz-archive-gid-list0000644000000000000000000000002412462537262026465 0ustar 00000000000000[archive] gid| 1234 brebis-0.10/functional-tests/wrong-tar-gz-archive-gid/wrong-tar-gz-archive-gid.conf0000644000000000000000000000020212462537262026436 0ustar 00000000000000[main] name=wrong-tar-gz-archive-gid type=archive path=wrong-tar-gz-archive-gid.tar.gz files_list=wrong-tar-gz-archive-gid-list brebis-0.10/functional-tests/wrong-tar-gz-archive-gid/wrong-tar-gz-archive-gid.tar.gz0000644000000000000000000000030412462537262026721 0ustar 000000000000000iNK 0]E6PL<mڂՉDk'R$}v}:mvnEJjV+K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-md5-hash/wrong-tar-xz-archive-md5-hash-list0000644000000000000000000000002112462537262030232 0ustar 00000000000000[archive] md5| 3 brebis-0.10/functional-tests/wrong-tar-xz-archive-md5-hash/wrong-tar-xz-archive-md5-hash.conf0000644000000000000000000000022112462537262030207 0ustar 00000000000000[main] name=wrong-tar-xz-archive-md5-hash type=archive path=wrong-tar-xz-archive-md5-hash.tar.xz files_list=wrong-tar-xz-archive-md5-hash-list brebis-0.10/functional-tests/wrong-tar-xz-archive-md5-hash/wrong-tar-xz-archive-md5-hash.tar.xz0000644000000000000000000000051412462537262030515 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-mode/wrong-tar-xz-archive-mode-list0000644000000000000000000000002412462537262027071 0ustar 00000000000000[archive] mode| 755 brebis-0.10/functional-tests/wrong-tar-xz-archive-mode/wrong-tar-xz-archive-mode.conf0000644000000000000000000000020512462537262027045 0ustar 00000000000000[main] name=wrong-tar-xz-archive-mode type=archive path=wrong-tar-xz-archive-mode.tar.xz files_list=wrong-tar-xz-archive-mode-list brebis-0.10/functional-tests/wrong-tar-xz-archive-mode/wrong-tar-xz-archive-mode.tar.xz0000644000000000000000000000051412462537262027351 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha1-hash/wrong-tar-xz-archive-sha1-hash-list0000644000000000000000000000002212462537262030551 0ustar 00000000000000[archive] sha1| b brebis-0.10/functional-tests/wrong-tar-xz-archive-sha1-hash/wrong-tar-xz-archive-sha1-hash.conf0000644000000000000000000000022412462537262030530 0ustar 00000000000000[main] name=wrong-tar-xz-archive-sha1-hash type=archive path=wrong-tar-xz-archive-sha1-hash.tar.xz files_list=wrong-tar-xz-archive-sha1-hash-list brebis-0.10/functional-tests/wrong-tar-xz-archive-sha1-hash/wrong-tar-xz-archive-sha1-hash.tar.xz0000644000000000000000000000051412462537262031033 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha224-hash/wrong-tar-xz-archive-sha224-hash-list0000644000000000000000000000002412462537262031071 0ustar 00000000000000[archive] sha224| 2 brebis-0.10/functional-tests/wrong-tar-xz-archive-sha224-hash/wrong-tar-xz-archive-sha224-hash.conf0000644000000000000000000000023212462537262031045 0ustar 00000000000000[main] name=wrong-tar-xz-archive-sha224-hash type=archive path=wrong-tar-xz-archive-sha224-hash.tar.xz files_list=wrong-tar-xz-archive-sha224-hash-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-tar-xz-archive-sha224-hash/wrong-tar-xz-archive-sha224-hash.tar.xzbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha224-hash/wrong-tar-xz-archive-sha224-hash.tar.x0000644000000000000000000000051412462537262031157 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha256-hash/wrong-tar-xz-archive-sha256-hash-list0000644000000000000000000000002412462537262031103 0ustar 00000000000000[archive] sha256| 6 brebis-0.10/functional-tests/wrong-tar-xz-archive-sha256-hash/wrong-tar-xz-archive-sha256-hash.conf0000644000000000000000000000023212462537262031057 0ustar 00000000000000[main] name=wrong-tar-xz-archive-sha256-hash type=archive path=wrong-tar-xz-archive-sha256-hash.tar.xz files_list=wrong-tar-xz-archive-sha256-hash-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-tar-xz-archive-sha256-hash/wrong-tar-xz-archive-sha256-hash.tar.xzbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha256-hash/wrong-tar-xz-archive-sha256-hash.tar.x0000644000000000000000000000051412462537262031171 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha384-hash/wrong-tar-xz-archive-sha384-hash-list0000644000000000000000000000002412462537262031107 0ustar 00000000000000[archive] sha384| 4 brebis-0.10/functional-tests/wrong-tar-xz-archive-sha384-hash/wrong-tar-xz-archive-sha384-hash.conf0000644000000000000000000000023212462537262031063 0ustar 00000000000000[main] name=wrong-tar-xz-archive-sha384-hash type=archive path=wrong-tar-xz-archive-sha384-hash.tar.xz files_list=wrong-tar-xz-archive-sha384-hash-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-tar-xz-archive-sha384-hash/wrong-tar-xz-archive-sha384-hash.tar.xzbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha384-hash/wrong-tar-xz-archive-sha384-hash.tar.x0000644000000000000000000000051412462537262031175 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha512-hash/wrong-tar-xz-archive-sha512-hash-list0000644000000000000000000000002412462537262031071 0ustar 00000000000000[archive] sha512| e brebis-0.10/functional-tests/wrong-tar-xz-archive-sha512-hash/wrong-tar-xz-archive-sha512-hash.conf0000644000000000000000000000023212462537262031045 0ustar 00000000000000[main] name=wrong-tar-xz-archive-sha512-hash type=archive path=wrong-tar-xz-archive-sha512-hash.tar.xz files_list=wrong-tar-xz-archive-sha512-hash-list ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000brebis-0.10/functional-tests/wrong-tar-xz-archive-sha512-hash/wrong-tar-xz-archive-sha512-hash.tar.xzbrebis-0.10/functional-tests/wrong-tar-xz-archive-sha512-hash/wrong-tar-xz-archive-sha512-hash.tar.x0000644000000000000000000000051412462537262031157 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-tar-xz-archive-uid/wrong-tar-xz-archive-uid-list0000644000000000000000000000002412462537262026563 0ustar 00000000000000[archive] uid| 1234 brebis-0.10/functional-tests/wrong-tar-xz-archive-uid/wrong-tar-xz-archive-uid.conf0000644000000000000000000000020212462537262026534 0ustar 00000000000000[main] name=wrong-tar-xz-archive-uid type=archive path=wrong-tar-xz-archive-uid.tar.xz files_list=wrong-tar-xz-archive-uid-list brebis-0.10/functional-tests/wrong-tar-xz-archive-uid/wrong-tar-xz-archive-uid.tar.xz0000644000000000000000000000051412462537262027043 0ustar 000000000000007zXZִF!t/' ]:Jc'yژ3[8S֐ص*5"NcF#Z&c Rm+$635*YZ$ W X3J\v33:NYO pX<=y *;Xe Z}0c7S_Y[HnC>K19{f+-PU`Z}PTD% N=h(x-$b5أ +_IPnԊe_0[b4_9 ke{вրPP?ͱgYZbrebis-0.10/functional-tests/wrong-target-in-tar-bz2-archive/wrong-target-in-tar-bz2-archive.conf0000644000000000000000000000022612462537262031054 0ustar 00000000000000[main] name=wrong-target-in-tar-bz2-archive type=archive path=wrong-target-in-tar-bz2-archive.tar.bz2 files_list=wrong-target-in-tar-bz2-archive.list brebis-0.10/functional-tests/wrong-target-in-tar-bz2-archive/wrong-target-in-tar-bz2-archive.list0000644000000000000000000000067112462537262031106 0ustar 00000000000000[files] test| =0 uid|1000 gid|1000 mode|755 type|d test/toto| =5 uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 test/foo| =0 uid|1000 gid|1000 mode|755 type|d test/foo/bar| =0 uid|1000 gid|1000 mode|777 type|s md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|../toto test/foo2| =0 uid|1000 gid|1000 mode|755 type|d test/foo2/toto2| =0 uid|1000 gid|1000 mode|644 type|l md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|test/tot brebis-0.10/functional-tests/wrong-target-in-tar-bz2-archive/wrong-target-in-tar-bz2-archive.tar.bz20000644000000000000000000000036612462537262031416 0ustar 00000000000000BZh91AY&SYH]`g@%{`H0`Fa12` iT fbajaA#L2isY 嵲ji6LCJ_%v j øh87]oL|!``r. U)kGz 2#Tn`+y0l@fd`[{|GzOl?CUltYHw Wkiz.p Vbrebis-0.10/functional-tests/wrong-target-in-tar-gz-archive/wrong-target-in-tar-gz-archive.conf0000644000000000000000000000022212462537262030716 0ustar 00000000000000[main] name=wrong-target-in-tar-gz-archive type=archive path=wrong-target-in-tar-gz-archive.tar.gz files_list=wrong-target-in-tar-gz-archive.list brebis-0.10/functional-tests/wrong-target-in-tar-gz-archive/wrong-target-in-tar-gz-archive.list0000644000000000000000000000067112462537262030754 0ustar 00000000000000[files] test| =0 uid|1000 gid|1000 mode|755 type|d test/toto| =5 uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 test/foo| =0 uid|1000 gid|1000 mode|755 type|d test/foo/bar| =0 uid|1000 gid|1000 mode|777 type|s md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|../toto test/foo2| =0 uid|1000 gid|1000 mode|755 type|d test/foo2/toto2| =0 uid|1000 gid|1000 mode|644 type|l md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|test/tot brebis-0.10/functional-tests/wrong-target-in-tar-gz-archive/wrong-target-in-tar-gz-archive.tar.gz0000644000000000000000000000036412462537262031205 0ustar 00000000000000z%RM0=EOӡ?AUEc@mh6ysJ sy5 3fvWd [R ktSijr)(xG[%Pk|d7m~lfKO>'f5LN1_(E!5!{,, s6!pbW(brebis-0.10/functional-tests/wrong-target-in-tar-xz-archive/wrong-target-in-tar-xz-archive.conf0000644000000000000000000000022212462537262030760 0ustar 00000000000000[main] name=wrong-target-in-tar-xz-archive type=archive path=wrong-target-in-tar-xz-archive.tar.xz files_list=wrong-target-in-tar-xz-archive.list brebis-0.10/functional-tests/wrong-target-in-tar-xz-archive/wrong-target-in-tar-xz-archive.list0000644000000000000000000000067112462537262031016 0ustar 00000000000000[files] test| =0 uid|1000 gid|1000 mode|755 type|d test/toto| =5 uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 test/foo| =0 uid|1000 gid|1000 mode|755 type|d test/foo/bar| =0 uid|1000 gid|1000 mode|777 type|s md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|../toto test/foo2| =0 uid|1000 gid|1000 mode|755 type|d test/foo2/toto2| =0 uid|1000 gid|1000 mode|644 type|l md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|test/tot brebis-0.10/functional-tests/wrong-target-in-tar-xz-archive/wrong-target-in-tar-xz-archive.tar.xz0000644000000000000000000000042412462537262031265 0ustar 000000000000007zXZִF!t/']:J'xiN<%uB}6r8j[,5J^mn!j']Ԝ*a6 7r~xX O V6J T(O^uV_8&+>)5d1 (A^Mtd 1lPw ! 8U]ja@d-eІ_Ȕ&jB_u}PSgYZbrebis-0.10/functional-tests/wrong-target-in-tree/test/foo/bar0000777000000000000000000000000012462537262023673 2../totoustar 00000000000000brebis-0.10/functional-tests/wrong-target-in-tree/test/foo2/toto20000644000000000000000000000000512462537262023133 0ustar 00000000000000hihi brebis-0.10/functional-tests/wrong-target-in-tree/test/toto0000644000000000000000000000000512462537262022204 0ustar 00000000000000hihi brebis-0.10/functional-tests/wrong-target-in-tree/wrong-target-in-tree.conf0000644000000000000000000000013212462537262025146 0ustar 00000000000000[main] name=wrong-target-in-tree type=tree path=test files_list=wrong-target-in-tree.list brebis-0.10/functional-tests/wrong-target-in-tree/wrong-target-in-tree.list0000644000000000000000000000053012462537262025176 0ustar 00000000000000[files] toto| uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 foo| uid|1000 gid|1000 mode|755 type|d foo/bar| uid|1000 gid|1000 mode|777 type|s md5|ebd7385edfbbb36cd3a7a5dffb134b98 target|../zouzou foo2| uid|1000 gid|1000 mode|755 type|d foo2/toto2| uid|1000 gid|1000 mode|644 type|f md5|ebd7385edfbbb36cd3a7a5dffb134b98 brebis-0.10/functional-tests/wrong-xz-archive-gid/wrong-xz-archive-gid-list0000644000000000000000000000002312462537262025156 0ustar 00000000000000[archive] gid| 234 brebis-0.10/functional-tests/wrong-xz-archive-gid/wrong-xz-archive-gid.conf0000644000000000000000000000016212462537262025135 0ustar 00000000000000[main] name=wrong-xz-archive-gid type=archive path=wrong-xz-archive-gid.xz files_list=wrong-xz-archive-gid-list brebis-0.10/functional-tests/wrong-xz-archive-gid/wrong-xz-archive-gid.xz0000644000000000000000000000020012462537262024642 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-md5-hash/wrong-xz-archive-md5-hash-list0000644000000000000000000000003112462537262026663 0ustar 00000000000000[archive] md5| bb06f1044 brebis-0.10/functional-tests/wrong-xz-archive-md5-hash/wrong-xz-archive-md5-hash.conf0000644000000000000000000000020112462537262026635 0ustar 00000000000000[main] name=wrong-xz-archive-md5-hash type=archive path=wrong-xz-archive-md5-hash.xz files_list=wrong-xz-archive-md5-hash-list brebis-0.10/functional-tests/wrong-xz-archive-md5-hash/wrong-xz-archive-md5-hash.xz0000644000000000000000000000020012462537262026350 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-mode/wrong-xz-archive-mode-list0000644000000000000000000000002412462537262025521 0ustar 00000000000000[archive] mode| 234 brebis-0.10/functional-tests/wrong-xz-archive-mode/wrong-xz-archive-mode.conf0000644000000000000000000000016512462537262025502 0ustar 00000000000000[main] name=wrong-xz-archive-mode type=archive path=wrong-xz-archive-mode.xz files_list=wrong-xz-archive-mode-list brebis-0.10/functional-tests/wrong-xz-archive-mode/wrong-xz-archive-mode.xz0000644000000000000000000000020012462537262025204 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-sha1-hash/wrong-xz-archive-sha1-hash-list0000644000000000000000000000002712462537262027206 0ustar 00000000000000[archive] sha1| 921f38 brebis-0.10/functional-tests/wrong-xz-archive-sha1-hash/wrong-xz-archive-sha1-hash.conf0000644000000000000000000000020412462537262027156 0ustar 00000000000000[main] name=wrong-xz-archive-sha1-hash type=archive path=wrong-xz-archive-sha1-hash.xz files_list=wrong-xz-archive-sha1-hash-list brebis-0.10/functional-tests/wrong-xz-archive-sha1-hash/wrong-xz-archive-sha1-hash.xz0000644000000000000000000000020012462537262026666 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-sha224-hash/wrong-xz-archive-sha224-hash-list0000644000000000000000000000003212462537262027520 0ustar 00000000000000[archive] sha224| 4f737d6 brebis-0.10/functional-tests/wrong-xz-archive-sha224-hash/wrong-xz-archive-sha224-hash.conf0000644000000000000000000000021212462537262027473 0ustar 00000000000000[main] name=wrong-xz-archive-sha224-hash type=archive path=wrong-xz-archive-sha224-hash.xz files_list=wrong-xz-archive-sha224-hash-list brebis-0.10/functional-tests/wrong-xz-archive-sha224-hash/wrong-xz-archive-sha224-hash.xz0000644000000000000000000000020012462537262027204 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-sha256-hash/wrong-xz-archive-sha256-hash-list0000644000000000000000000000003312462537262027533 0ustar 00000000000000[archive] sha256| 89703e58 brebis-0.10/functional-tests/wrong-xz-archive-sha256-hash/wrong-xz-archive-sha256-hash.conf0000644000000000000000000000021212462537262027505 0ustar 00000000000000[main] name=wrong-xz-archive-sha256-hash type=archive path=wrong-xz-archive-sha256-hash.xz files_list=wrong-xz-archive-sha256-hash-list brebis-0.10/functional-tests/wrong-xz-archive-sha256-hash/wrong-xz-archive-sha256-hash.xz0000644000000000000000000000020012462537262027216 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-sha384-hash/wrong-xz-archive-sha384-hash-list0000644000000000000000000000003512462537262027541 0ustar 00000000000000[archive] sha384| c583b359a6 brebis-0.10/functional-tests/wrong-xz-archive-sha384-hash/wrong-xz-archive-sha384-hash.conf0000644000000000000000000000021212462537262027511 0ustar 00000000000000[main] name=wrong-xz-archive-sha384-hash type=archive path=wrong-xz-archive-sha384-hash.xz files_list=wrong-xz-archive-sha384-hash-list brebis-0.10/functional-tests/wrong-xz-archive-sha384-hash/wrong-xz-archive-sha384-hash.xz0000644000000000000000000000020012462537262027222 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-sha512-hash/wrong-xz-archive-sha512-hash-list0000644000000000000000000000003612462537262027524 0ustar 00000000000000[archive] sha512| dffa5803a87 brebis-0.10/functional-tests/wrong-xz-archive-sha512-hash/wrong-xz-archive-sha512-hash.conf0000644000000000000000000000021212462537262027473 0ustar 00000000000000[main] name=wrong-xz-archive-sha512-hash type=archive path=wrong-xz-archive-sha512-hash.xz files_list=wrong-xz-archive-sha512-hash-list brebis-0.10/functional-tests/wrong-xz-archive-sha512-hash/wrong-xz-archive-sha512-hash.xz0000644000000000000000000000020012462537262027204 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-xz-archive-uid/wrong-xz-archive-uid-list0000644000000000000000000000002312462537262025212 0ustar 00000000000000[archive] uid| 234 brebis-0.10/functional-tests/wrong-xz-archive-uid/wrong-xz-archive-uid.conf0000644000000000000000000000016212462537262025171 0ustar 00000000000000[main] name=wrong-xz-archive-uid type=archive path=wrong-xz-archive-uid.xz files_list=wrong-xz-archive-uid-list brebis-0.10/functional-tests/wrong-xz-archive-uid/wrong-xz-archive-uid.xz0000644000000000000000000000020012462537262024676 0ustar 000000000000007zXZִF!t/LD]4@FqPiKbyvïB!2?sM-Sg6?ZCD6\5#IoP,z .B9[(`MM}YZbrebis-0.10/functional-tests/wrong-zip-archive-gid/wrong-zip-archive-gid-list0000644000000000000000000000002412462537262025461 0ustar 00000000000000[archive] gid| 1234 brebis-0.10/functional-tests/wrong-zip-archive-gid/wrong-zip-archive-gid.conf0000644000000000000000000000016612462537262025443 0ustar 00000000000000[main] name=wrong-zip-archive-gid type=archive path=wrong-zip-archive-gid.zip files_list=wrong-zip-archive-gid-list brebis-0.10/functional-tests/wrong-zip-archive-gid/wrong-zip-archive-gid.zip0000644000000000000000000000162012462537262025314 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-md5-hash/wrong-zip-archive-md5-hash-list0000644000000000000000000000002112462537262027164 0ustar 00000000000000[archive] md5| 7 brebis-0.10/functional-tests/wrong-zip-archive-md5-hash/wrong-zip-archive-md5-hash.conf0000644000000000000000000000020512462537262027143 0ustar 00000000000000[main] name=wrong-zip-archive-md5-hash type=archive path=wrong-zip-archive-md5-hash.zip files_list=wrong-zip-archive-md5-hash-list brebis-0.10/functional-tests/wrong-zip-archive-md5-hash/wrong-zip-archive-md5-hash.zip0000644000000000000000000000162012462537262027022 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-mode/wrong-zip-archive-mode-list0000644000000000000000000000002412462537262026023 0ustar 00000000000000[archive] mode| 755 brebis-0.10/functional-tests/wrong-zip-archive-mode/wrong-zip-archive-mode.conf0000644000000000000000000000017112462537262026001 0ustar 00000000000000[main] name=wrong-zip-archive-mode type=archive path=wrong-zip-archive-mode.zip files_list=wrong-zip-archive-mode-list brebis-0.10/functional-tests/wrong-zip-archive-mode/wrong-zip-archive-mode.zip0000644000000000000000000000162012462537262025656 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-sha1-hash/wrong-zip-archive-sha1-hash-list0000644000000000000000000000002212462537262027503 0ustar 00000000000000[archive] sha1| 5 brebis-0.10/functional-tests/wrong-zip-archive-sha1-hash/wrong-zip-archive-sha1-hash.conf0000644000000000000000000000021012462537262027455 0ustar 00000000000000[main] name=wrong-zip-archive-sha1-hash type=archive path=wrong-zip-archive-sha1-hash.zip files_list=wrong-zip-archive-sha1-hash-list brebis-0.10/functional-tests/wrong-zip-archive-sha1-hash/wrong-zip-archive-sha1-hash.zip0000644000000000000000000000162012462537262027340 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-sha224-hash/wrong-zip-archive-sha224-hash-list0000644000000000000000000000002512462537262030024 0ustar 00000000000000[archive] sha224| 2 brebis-0.10/functional-tests/wrong-zip-archive-sha224-hash/wrong-zip-archive-sha224-hash.conf0000644000000000000000000000021612462537262030001 0ustar 00000000000000[main] name=wrong-zip-archive-sha224-hash type=archive path=wrong-zip-archive-sha224-hash.zip files_list=wrong-zip-archive-sha224-hash-list brebis-0.10/functional-tests/wrong-zip-archive-sha224-hash/wrong-zip-archive-sha224-hash.zip0000644000000000000000000000162012462537262027656 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-sha256-hash/wrong-zip-archive-sha256-hash-list0000644000000000000000000000002412462537262030035 0ustar 00000000000000[archive] sha256| a brebis-0.10/functional-tests/wrong-zip-archive-sha256-hash/wrong-zip-archive-sha256-hash.conf0000644000000000000000000000021612462537262030013 0ustar 00000000000000[main] name=wrong-zip-archive-sha256-hash type=archive path=wrong-zip-archive-sha256-hash.zip files_list=wrong-zip-archive-sha256-hash-list brebis-0.10/functional-tests/wrong-zip-archive-sha256-hash/wrong-zip-archive-sha256-hash.zip0000644000000000000000000000162012462537262027670 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-sha384-hash/wrong-zip-archive-sha384-hash-list0000644000000000000000000000002512462537262030042 0ustar 00000000000000[archive] sha384| ec brebis-0.10/functional-tests/wrong-zip-archive-sha384-hash/wrong-zip-archive-sha384-hash.conf0000644000000000000000000000021612462537262030017 0ustar 00000000000000[main] name=wrong-zip-archive-sha384-hash type=archive path=wrong-zip-archive-sha384-hash.zip files_list=wrong-zip-archive-sha384-hash-list brebis-0.10/functional-tests/wrong-zip-archive-sha384-hash/wrong-zip-archive-sha384-hash.zip0000644000000000000000000000162012462537262027674 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-sha512-hash/wrong-zip-archive-sha512-hash-list0000644000000000000000000000002612462537262030025 0ustar 00000000000000[archive] sha512| 7f5 brebis-0.10/functional-tests/wrong-zip-archive-sha512-hash/wrong-zip-archive-sha512-hash.conf0000644000000000000000000000021612462537262030001 0ustar 00000000000000[main] name=wrong-zip-archive-sha512-hash type=archive path=wrong-zip-archive-sha512-hash.zip files_list=wrong-zip-archive-sha512-hash-list brebis-0.10/functional-tests/wrong-zip-archive-sha512-hash/wrong-zip-archive-sha512-hash.zip0000644000000000000000000000162012462537262027656 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/functional-tests/wrong-zip-archive-uid/wrong-zip-archive-uid-list0000644000000000000000000000002412462537262025515 0ustar 00000000000000[archive] uid| 1234 brebis-0.10/functional-tests/wrong-zip-archive-uid/wrong-zip-archive-uid.conf0000644000000000000000000000016612462537262025477 0ustar 00000000000000[main] name=wrong-zip-archive-uid type=archive path=wrong-zip-archive-uid.zip files_list=wrong-zip-archive-uid-list brebis-0.10/functional-tests/wrong-zip-archive-uid/wrong-zip-archive-uid.zip0000644000000000000000000000162012462537262025350 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PK././@LongLink0000000000000000000000000000017000000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-bigger-than-expected-size/zip-archive-size-bigger-than-expected-size-listbrebis-0.10/functional-tests/zip-archive-size-bigger-than-expected-size/zip-archive-size-bigger-than0000644000000000000000000000002312462537262031762 0ustar 00000000000000[archive] size| <1 ././@LongLink0000000000000000000000000000017000000000000011213 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-bigger-than-expected-size/zip-archive-size-bigger-than-expected-size.confbrebis-0.10/functional-tests/zip-archive-size-bigger-than-expected-size/zip-archive-size-bigger-than0000644000000000000000000000026512462537262031772 0ustar 00000000000000[main] name=zip-archive-size-bigger-than-expected-size type=archive path=zip-archive-size-bigger-than-expected-size.zip files_list=zip-archive-size-bigger-than-expected-size-list ././@LongLink0000000000000000000000000000016700000000000011221 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-bigger-than-expected-size/zip-archive-size-bigger-than-expected-size.zipbrebis-0.10/functional-tests/zip-archive-size-bigger-than-expected-size/zip-archive-size-bigger-than0000644000000000000000000000053112462537262031766 0ustar 00000000000000PKn? <fooUT NNux 1 Om PKn?70barUT NNux   OmbPKn? <fooUTNux PKn?70]barUTNux PK././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-not-equals-expected-size/zip-archive-size-not-equals-expected-size-listbrebis-0.10/functional-tests/zip-archive-size-not-equals-expected-size/zip-archive-size-not-equals-e0000644000000000000000000000002412462537262032007 0ustar 00000000000000[archive] size| =45 ././@LongLink0000000000000000000000000000016600000000000011220 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-not-equals-expected-size/zip-archive-size-not-equals-expected-size.confbrebis-0.10/functional-tests/zip-archive-size-not-equals-expected-size/zip-archive-size-not-equals-e0000644000000000000000000000026212462537262032013 0ustar 00000000000000[main] name=zip-archive-size-not-equals-expected-size type=archive path=zip-archive-size-not-equals-expected-size.zip files_list=zip-archive-size-not-equals-expected-size-list ././@LongLink0000000000000000000000000000016500000000000011217 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-not-equals-expected-size/zip-archive-size-not-equals-expected-size.zipbrebis-0.10/functional-tests/zip-archive-size-not-equals-expected-size/zip-archive-size-not-equals-e0000644000000000000000000000053112462537262032012 0ustar 00000000000000PKn? <fooUT NNux 1 Om PKn?70barUT NNux   OmbPKn? <fooUTNux PKn?70]barUTNux PK././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-smaller-than-expected-size/zip-archive-size-smaller-than-expected-size-listbrebis-0.10/functional-tests/zip-archive-size-smaller-than-expected-size/zip-archive-size-smaller-th0000644000000000000000000000002512462537262032045 0ustar 00000000000000[archive] size| >10M ././@LongLink0000000000000000000000000000017200000000000011215 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-smaller-than-expected-size/zip-archive-size-smaller-than-expected-size.confbrebis-0.10/functional-tests/zip-archive-size-smaller-than-expected-size/zip-archive-size-smaller-th0000644000000000000000000000027012462537262032047 0ustar 00000000000000[main] name=zip-archive-size-smaller-than-expected-size type=archive path=zip-archive-size-smaller-than-expected-size.zip files_list=zip-archive-size-smaller-than-expected-size-list ././@LongLink0000000000000000000000000000017100000000000011214 Lustar 00000000000000brebis-0.10/functional-tests/zip-archive-size-smaller-than-expected-size/zip-archive-size-smaller-than-expected-size.zipbrebis-0.10/functional-tests/zip-archive-size-smaller-than-expected-size/zip-archive-size-smaller-th0000644000000000000000000000053112462537262032047 0ustar 00000000000000PKn? <fooUT NNux 1 Om PKn?70barUT NNux   OmbPKn? <fooUTNux PKn?70]barUTNux PKbrebis-0.10/functionaltests.py0000755000000000000000000060353712462537262014657 0ustar 00000000000000#!/usr/bin/python3.4 # -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . import hashlib from multiprocessing import Process, Queue from os import linesep, environ, link, remove import subprocess import os.path import shutil import sys import functionaltests EXE = './brebis.py' OPTCONFIG = '-c' OPTDEL = '-d' OPTEXCEPTIONSFILE = '-E' OPTGEN = '-g' OPTFULLGEN = '-G' OPTHASHTYPE = '--hashtype' OPTHASHES = '-H' OPTLOG = '-l' OKMSG = 'ok' KOMSG = 'ko - ' PYTHONEXE ='' ABSPATH = '' ALTERNATEDELIMITER = '(' # To correctly use the tests with buildbot if 'PYTHONEXE' in environ: PYTHONEXE = environ['PYTHONEXE'] ABSPATH = environ['PWD'] class Main: '''Main of all the Test* classes''' def _main(self, __condition): if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, self._testdir, OPTLOG, self._resultfile]) else: __retcode = subprocess.call([EXE, OPTCONFIG, self._testdir, OPTLOG, self._resultfile]) if __retcode != 0: self._queue.put('{} - {}return code:{}'.format(self._testname, KOMSG, str(__retcode))) else: with open(self._resultfile, 'r') as __file: if __condition in __file.read(): self._queue.put('{} - {}'.format(self._testname, OKMSG)) else: self._queue.put('{} - {}value in result file not expected'.format(self._testname, KOMSG)) class MainGenerateParse: '''Main of all the Test*GenerateParse classes''' def _main(self, __condition): if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, self._testdir, OPTLOG, self._resultfile]) else: __retcode = subprocess.call([EXE, OPTCONFIG, self._testdir, OPTLOG, self._resultfile]) if __retcode != 0: self._queue.put('{} - {}return code:{}'.format(self._testname, KOMSG, str(__retcode))) else: with open(self._resultfile, 'r') as __file: if '' == __file.read(): self._queue.put('{} - {}'.format(self._testname, OKMSG)) else: self._queue.put('{} - {}value in result file not expected'.format(self._testname, KOMSG)) class Test_file_missing_in_tar(Main): '''Test if a file is missing in a tar archive''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-tar') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_file_missing_in_tar_gz(Main): '''Test if a file is missing in a tar.gz archive''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-tar-gz') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_file_missing_in_tar_bz2(Main): '''Test if a file is missing in a tar.bz2 archive''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-tar-bz2') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_file_missing_in_tar_xz(Main): '''Test if a file is missing in a tar.xz archive''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-tar-xz') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_file_missing_in_gzip(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-gzip') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_file_missing_in_xz(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-xz') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_file_missing_in_zip(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-zip') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_file_missing_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/file-missing-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_wrong_tar_archive_mode(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-mode') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_tar_gz_archive_mode(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-mode') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_tar_bz2_archive_mode(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-mode') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_tar_xz_archive_mode(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-mode') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_gzip_archive_mode(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-mode') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_xz_archive_mode(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-mode') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_zip_archive_mode(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-mode') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_tar_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_tar_gz_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_tar_xz_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_tar_bz2_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_zip_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_gz_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_bzip2_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_xz_archive_uid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-uid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_tar_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_tar_gz_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_tar_bz2_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_tar_xz_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_gzip_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_bzip2_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_xz_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_zip_archive_gid(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-gid') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_tar_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_archive_sha1_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-sha1-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_gz_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_gz_archive_sha1_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-sha1-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_gz_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_xz_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_gz_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_xz_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_gz_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_xz_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_gz_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-gz-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_xz_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_bz2_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_xz_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_bz2_archive_sha1_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-sha1-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_xz_archive_sha1_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-xz-archive-sha1-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_bz2_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_bz2_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_bz2_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_bz2_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_gzip_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_xz_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_xz_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_gzip_archive_sha1_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-sha1-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_gzip_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_xz_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_gzip_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_xz_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_gzip_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_xz_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_gzip_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-gz-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_xz_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-xz-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_bzip2_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_bzip2_archive_sha1_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-sha1-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_bzip2_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_bzip2_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_bzip2_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_bzip2_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-bz2-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_tar_bz2_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-tar-bz2-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_zip_archive_md5_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-md5-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_zip_archive_sha1_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-sha1-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_zip_archive_sha224_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-sha224-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_zip_archive_sha256_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-sha256-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_zip_archive_sha384_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-sha384-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_zip_archive_sha512_hash(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-zip-archive-sha512-hash') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_uid_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-uid-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_file_uid_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-uid-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_file_uid_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-uid-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_file_uid_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-uid-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_file_uid_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-uid-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_file_uid_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-uid-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected uid') class Test_wrong_file_gid_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-gid-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_file_gid_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-gid-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_file_gid_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-gid-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_file_gid_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-gid-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_file_gid_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-gid-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_wrong_file_gid_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-gid-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected gid') class Test_unexpected_file_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/unexpected-file-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 unexpected file') class Test_unexpected_file_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/unexpected-file-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 unexpected file') class Test_unexpected_file_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/unexpected-file-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 unexpected file') class Test_unexpected_file_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/unexpected-file-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 unexpected file') class Test_unexpected_file_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/unexpected-file-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 unexpected file') class Test_unexpected_file_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/unexpected-file-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 unexpected file') class Test_unexpected_file_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/unexpected-file-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 unexpected file') class Test_wrong_file_md5_hash_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_bzip2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-bzip2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_bzip2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-bzip2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_bzip2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-bzip2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_bzip2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-bzip2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_bzip2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-bzip2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_bzip2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-bzip2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_md5_hash_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-md5-hash-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha1_hash_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha1-hash-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha224_hash_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha224-hash-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha256_hash_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha256-hash-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha384_hash_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha384-hash-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_sha512_hash_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-sha512-hash-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected hash') class Test_wrong_file_mode_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-mode-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_file_mode_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-mode-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_file_mode_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-mode-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_file_mode_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-mode-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_file_mode_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-mode-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected mode') class Test_wrong_file_type_f_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-f-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_f_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-f-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_f_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-f-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_f_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-f-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_f_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-f-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_d_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-d-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_d_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-d-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_d_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-d-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_d_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-d-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_d_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-d-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_s_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-s-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_s_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-s-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_s_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-s-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_s_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-s-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_l_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-l-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_l_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-l-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_l_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-l-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_wrong_file_type_l_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-l-in-tree') __testsubdir = os.path.join(ABSPATH, 'functional-tests/wrong-file-type-l-in-tree/wrong-file-type-l-in-tree') __mockfile = os.path.join(__testsubdir, 'foo') __mocklink = os.path.join(__testsubdir, 'bar') if os.path.exists(__testsubdir): shutil.rmtree(__testsubdir) os.mkdir(__testsubdir) else: os.mkdir(__testsubdir) open(__mockfile, 'w') link(__mockfile, __mocklink) self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected type') class Test_corrupted_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/corrupted-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('data corruption') class Test_corrupted_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/corrupted-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('data corruption') class Test_corrupted_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/corrupted-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('data corruption') class Test_corrupted_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/corrupted-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('data corruption') class Test_corrupted_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/corrupted-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('data corruption') class Test_corrupted_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/corrupted-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('data corruption') class Test_two_confs_with_the_same_name(Main): def __init__(self, q): self.__queue = q self.__testname = self.__class__.__name__ self.__testdir = os.path.join(ABSPATH, 'functional-tests/two_confs_with_the_same_name') self.__resultfile = os.path.join(self.__testdir, 'a.out') if 'PYTHONEXE' in environ: __command = ' '.join([PYTHONEXE, EXE, OPTCONFIG, self.__testdir, OPTLOG, self.__resultfile]) else: __command = ' '.join([EXE, OPTCONFIG, self.__testdir, OPTLOG, self.__resultfile]) __result = subprocess.getstatusoutput(__command) if __result[0] != 0 and 'Please rename it.' in __result[1]: self.__queue.put('{} - {}'.format(self.__testname, OKMSG)) else: self.__queue.put('{} - {}return code:{}'.format(self.__testname, KOMSG, str(__result[0]))) class Test_expected_file_greater_than_file_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-greater-than-file-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than expected') class Test_expected_file_greater_than_file_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-greater-than-file-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than expected') class Test_expected_file_greater_than_file_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-greater-than-file-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than expected') class Test_expected_file_greater_than_file_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-greater-than-file-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than expected') class Test_expected_file_greater_than_file_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-greater-than-file-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than expected') class Test_expected_file_greater_than_file_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-greater-than-file-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than expected') class Test_expected_file_greater_than_file_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-greater-than-file-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than expected') class Test_expected_file_smaller_than_file_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-smaller-than-file-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than expected') class Test_expected_file_smaller_than_file_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-smaller-than-file-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than expected') class Test_expected_file_smaller_than_file_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-smaller-than-file-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than expected') class Test_expected_file_smaller_than_file_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-smaller-than-file-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than expected') class Test_expected_file_smaller_than_file_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-smaller-than-file-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than expected') class Test_expected_file_smaller_than_file_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-smaller-than-file-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than expected') class Test_expected_file_smaller_than_file_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-smaller-than-file-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than expected') class Test_expected_file_not_equals_file_in_tar_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-not-equals-file-in-tar-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_expected_file_not_equals_file_in_tar_gz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-not-equals-file-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_expected_file_not_equals_file_in_tar_bz2_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-not-equals-file-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_expected_file_not_equals_file_in_tar_xz_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-not-equals-file-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_expected_file_not_equals_file_in_gzip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-not-equals-file-in-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_expected_file_not_equals_file_in_zip_archive(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-not-equals-file-in-zip-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_expected_file_not_equals_file_in_tree(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expected-file-not-equals-file-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_mixing_dir_path_and_archive_type_in_conf(Main): '''Check if the configuration path indicates a directory while the type of the backup is an archive ''' def __init__(self, q): self.__queue = q self.__testname = self.__class__.__name__ self.__testdir = os.path.join(ABSPATH, 'functional-tests/mixing-dir-path-and-archive-type-in-conf') self.__resultfile = os.path.join(self.__testdir, 'a.out') if 'PYTHONEXE' in environ: __command = ' '.join([PYTHONEXE, EXE, OPTCONFIG, self.__testdir, OPTLOG, self.__resultfile]) else: __command = ' '.join([EXE, OPTCONFIG, self.__testdir, OPTLOG, self.__resultfile]) __result = subprocess.getstatusoutput(__command) if __result[0] != 0 and 'is a directory but appears as an archive' in __result[1]: self.__queue.put('{} - {}'.format(self.__testname, OKMSG)) else: self.__queue.put('{} - {}return code:{}'.format(self.__testname, KOMSG, str(__result[0]))) class Test_full_criteria_multiple_backups: '''Check all the itemps for a tar.gz, tar.bz2, gzip, zip and tree''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/full-criteria-multiple-backups') __resultfile = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) else: __retcode = subprocess.call([EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'file missing in': 0, 'with unexpected mode': 0, 'with unexpected uid': 0, 'with unexpected gid': 0, 'with unexpected hash while checking': 0, 'bigger than': 0, } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 5: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_name_in_gzip_and_gzip_archive_are_not_the_same(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/name-in-gzip-and-gzip-archive-are-not-the-same') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('unexpected file checking') class Test_unsupported_parameters_for_gz_archive: '''Check for unsupported parameters for a gz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/unsupported-parameters-gz-archive') __resultfile = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) else: __retcode = subprocess.call([EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'Ignoring it': 0, } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 3: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_unsupported_parameters_for_bz2_archive: '''Check for unsupported parameters for a bzip2 archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/unsupported-parameters-bz2-archive') __resultfile = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) else: __retcode = subprocess.call([EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'Ignoring it': 0, } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 4: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_unsupported_parameters_for_xz_archive: '''Check for unsupported parameters for a xz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/unsupported-parameters-xz-archive') __resultfile = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) else: __retcode = subprocess.call([EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'Ignoring it': 0, } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 4: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_unsupported_parameters_for_zip_archive: '''Check for unsupported parameters for a zip archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/unsupported-parameters-zip-archive') __resultfile = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) else: __retcode = subprocess.call([EXE, OPTCONFIG, __testdir, OPTLOG, __resultfile]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'Ignoring it': 0, } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 1: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_for_tar_archive: '''Check the expected result for list of files generated from a tar archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-from-tar-archive') __archive = os.path.join(__testdir, 'generate-list-from-tar-archive.tar.gz') __resultfile = os.path.join(__testdir, 'generate-list-from-tar-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'=': 0, 'uid': 0, 'gid': 0, 'type': 0, 'mode': 0, 'md5': 2 } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 6: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_for_zip_archive: '''Check the expected result for list of files generated from a zip archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-from-zip-archive') __archive = os.path.join(__testdir, 'generate-list-from-zip-archive.zip') __resultfile = os.path.join(__testdir, 'generate-list-from-zip-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'=': 0, 'uid': 0, 'gid': 0, 'type': 0, 'mode': 0 } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 6: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_for_tree: '''Check the expected result for list of files generated from a tree of files''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-from-tree') __archive = os.path.join(__testdir, 'generate-list-from-tree') __resultfile = os.path.join(__testdir, 'generate-list-from-tree.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'=': 0, 'uid': 0, 'gid': 0, 'type': 0, 'mode': 0 } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 5: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_for_bzip2: '''Check the expected result for list of files generated from a bzip2 archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-from-bzip2-archive') __archive = os.path.join(__testdir, 'generate-list-from-bzip2-archive.bz2') __resultfile = os.path.join(__testdir, 'generate-list-from-bzip2-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'type': 0, 'md5':0 } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 1: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_for_xz: '''Check the expected result for list of files generated from a xz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-from-xz-archive') __archive = os.path.join(__testdir, 'generate-list-from-xz-archive.xz') __resultfile = os.path.join(__testdir, 'generate-list-from-xz-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'type': 0, 'md5':0 } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 1: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_for_gzip: '''Check the expected result for list of files generated from a gzip archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-from-gzip-archive') __archive = os.path.join(__testdir, 'generate-list-from-gzip-archive.gz') __resultfile = os.path.join(__testdir, 'generate-list-from-gzip-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: __conditions = {'=': 0, 'type': 0, 'md5':0 } for __line in __file.readlines(): for __condition in __conditions: if __condition in __line: __conditions[__condition] += 1 for __condition in __conditions: if __conditions[__condition] != 1: __res = False if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_expected_generated_list_for_tar_archive: '''Compare the generated list and the expected list for a tar archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/expected-generated-list-for-tar-archive') __archive = os.path.join(__testdir, 'expected-generated-list-for-tar-archive.tar.gz') __resultfile = os.path.join(__testdir, 'expected-generated-list-for-tar-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultfile, 'rb').read()).hexdigest() != hashlib.md5(open(os.path.join(__testdir, 'expectedlist.list'), 'rb').read()).hexdigest(): __res = False else: __res = True if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_expected_generated_list_for_gzip_archive: '''Compare the generated list and the expected list for a gzip archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/expected-generated-list-for-gzip-archive') __archive = os.path.join(__testdir, 'expected-generated-list-for-gzip-archive.gz') __resultfile = os.path.join(__testdir, 'expected-generated-list-for-gzip-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultfile, 'rb').read()).hexdigest() != hashlib.md5(open(os.path.join(__testdir, 'expectedlist.list'), 'rb').read()).hexdigest(): __res = False else: __res = True if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_expected_generated_list_for_xz_archive: '''Compare the generated list and the expected list for a xz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/expected-generated-list-for-xz-archive') __archive = os.path.join(__testdir, 'expected-generated-list-for-xz-archive.xz') __resultfile = os.path.join(__testdir, 'expected-generated-list-for-xz-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultfile, 'rb').read()).hexdigest() != hashlib.md5(open(os.path.join(__testdir, 'expectedlist.list'), 'rb').read()).hexdigest(): __res = False else: __res = True if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_expected_generated_list_for_bzip2_archive: '''Compare the generated list and the expected list for a bzip2 archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/expected-generated-list-for-bzip2-archive') __archive = os.path.join(__testdir, 'expected-generated-list-for-bzip2-archive.bz2') __resultfile = os.path.join(__testdir, 'expected-generated-list-for-bzip2-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultfile, 'rb').read()).hexdigest() != hashlib.md5(open(os.path.join(__testdir, 'expectedlist.list'), 'rb').read()).hexdigest(): __res = False else: __res = True if __res: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_and_parse_tar_archive(MainGenerateParse): '''Generate a list of files inside the tar archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-tar-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-tar-archive.tar.gz') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-tar-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_tgz_archive(MainGenerateParse): '''Generate a list of files inside the tgz (same as tar.gz) archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-tgz-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-tgz-archive.tgz') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-tgz-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_tbz_archive(MainGenerateParse): '''Generate a list of files inside the tbz (same as tar.bz2) archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-tbz-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-tbz-archive.tbz') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-tbz-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_tbz2_archive(MainGenerateParse): '''Generate a list of files inside the tbz2 (same as tar.bz2) archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-tbz2-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-tbz2-archive.tbz2') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-tbz2-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_zip_archive(MainGenerateParse): '''Generate a list of files inside the zip archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-zip-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-zip-archive.zip') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-zip-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_tree(MainGenerateParse): '''Generate a list of files inside a tree of files and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-tree') __archive = os.path.join(__testdir, 'generate-list-and-parse-tree') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-tree.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_gzip_archive(MainGenerateParse): '''Generate a list of files inside a gzip archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-gzip-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-gzip-archive.gz') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-gzip-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_bzip2_archive(MainGenerateParse): '''Generate a list of files inside a bzip2 archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-bzip2-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-bzip2-archive.bz2') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-bzip2-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_generate_list_and_parse_xz_archive(MainGenerateParse): '''Generate a list of files inside a xz archive and parse this one right after''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-and-parse-xz-archive') __archive = os.path.join(__testdir, 'generate-list-and-parse-xz-archive.xz') __resultfile = os.path.join(__testdir, 'generate-list-and-parse-xz-archive.list') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: self._queue = q self._testname = __testname self._testdir = __testdir self._resultfile = os.path.join(self._testdir, 'a.out') self._main('') class Test_user_specified_delimiter(Main): '''Test if a file is missing in a tar archive with a user-specified delimiter in the file of filenames''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/user-specified-delimiter') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file missing in') class Test_tar_archive_size_not_equals_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-archive-size-not-equals-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_tar_gz_archive_size_not_equals_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-gz-archive-size-not-equals-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_tar_bz2_archive_size_not_equals_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-bz2-archive-size-not-equals-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_tar_xz_archive_size_not_equals_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-xz-archive-size-not-equals-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_gzip_archive_size_not_equals_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/gzip-archive-size-not-equals-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_bzip2_archive_size_not_equals_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/bzip2-archive-size-not-equals-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_zip_archive_size_not_equals_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/zip-archive-size-not-equals-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file with unexpected size') class Test_tar_archive_size_bigger_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-archive-size-bigger-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than') class Test_tar_gz_archive_size_bigger_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-gz-archive-size-bigger-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than') class Test_tar_bz2_archive_size_bigger_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-bz2-archive-size-bigger-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than') class Test_tar_xz_archive_size_bigger_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-xz-archive-size-bigger-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than') class Test_gzip_archive_size_bigger_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/gzip-archive-size-bigger-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than') class Test_bzip2_archive_size_bigger_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/bzip2-archive-size-bigger-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than') class Test_zip_archive_size_bigger_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/zip-archive-size-bigger-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file bigger than') class Test_tar_archive_size_smaller_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-archive-size-smaller-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than') class Test_tar_gz_archive_size_smaller_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-gz-archive-size-smaller-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than') class Test_tar_bz2_archive_size_smaller_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-bz2-archive-size-smaller-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than') class Test_tar_xz_archive_size_smaller_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/tar-xz-archive-size-smaller-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than') class Test_zip_archive_size_smaller_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/zip-archive-size-smaller-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than') class Test_gzip_archive_size_smaller_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/gzip-archive-size-smaller-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than') class Test_bzip2_archive_size_smaller_than_expected_size(Main): def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/bzip2-archive-size-smaller-than-expected-size') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('1 file smaller than') class Test_checkarchive_supported_types_equals_listtype_supported_types: '''Test if the supported types in checkarchives.py equals the ones in listtype.py This is not exactly a functional test but it triggered bug #24 so it needs to be tested ''' def __init__(self, q): # extract supported extensions from the code # store them in sets and compare them __queue = q __testname = self.__class__.__name__ with open('brebis/checkbackups/checkbackups.py') as __f1: __checkarchivescode = __f1.readlines() with open('brebis/listtype.py') as __f2: __listtypecode = __f2.readlines() __checkarchivestypes = set() __listtypetypes = set() for __line in __checkarchivescode: if 'endswith' in __line: __checkarchivestypes.add(__line.split(".endswith('")[1].split("'")[0]) for __line in __listtypecode: if 'endswith' in __line: __listtypetypes.add(__line.split(".endswith('")[1].split("'")[0]) # symmetrical differences of the two sets __unsupportedtypes = __checkarchivestypes ^ __listtypetypes if not __unsupportedtypes: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_changing_default_separator_for_tar_gz: '''Generate a list of files changing the default separator for tar gz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-changing-default-separator/tar.gz') __archive = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tar-gz.tar.gz') __resultfile = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tar-gz.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__output, 'r') as __file: if '' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_changing_default_separator_for_tar_bz2: '''Generate a list of files changing the default separator for tar bz2 archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-changing-default-separator/tar.bz2') __archive = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tar-bz2.tar.bz2') __resultfile = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tar-bz2.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__output, 'r') as __file: if '' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_changing_default_separator_for_tar_xz: '''Generate a list of files changing the default separator for tar xz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-changing-default-separator/tar.xz') __archive = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tar-xz.tar.xz') __resultfile = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tar-xz.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__output, 'r') as __file: if '' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_changing_default_separator_for_gzip: '''Generate a list of files changing the default separator for gzip archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-changing-default-separator/gzip') __archive = os.path.join(__testdir, 'generate-list-changing-default-separator-for-gzip.gz') __resultfile = os.path.join(__testdir, 'generate-list-changing-default-separator-for-gzip.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__output, 'r') as __file: if '' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_changing_default_separator_for_bzip2: '''Generate a list of files changing the default separator for bzip2 archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-changing-default-separator/bzip2') __archive = os.path.join(__testdir, 'generate-list-changing-default-separator-for-bzip2.bz2') __resultfile = os.path.join(__testdir, 'generate-list-changing-default-separator-for-bzip2.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__output, 'r') as __file: if '' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_changing_default_separator_for_zip: '''Generate a list of files changing the default separator for zip archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-changing-default-separator/zip') __archive = os.path.join(__testdir, 'generate-list-changing-default-separator-for-zip.zip') __resultfile = os.path.join(__testdir, 'generate-list-changing-default-separator-for-zip.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__output, 'r') as __file: if '' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_changing_default_separator_for_tree: '''Generate a list of files changing the default separator for a tree of files''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-list-changing-default-separator/tree') __archive = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tree') __resultfile = os.path.join(__testdir, 'generate-list-changing-default-separator-for-tree.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTDEL, ALTERNATEDELIMITER, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__output, 'r') as __file: if '' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_expecting_hard_link_for_tar_gz(Main): '''Test if an expecting hard link in a tar.gz archive fails on a regular file''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/expecting-hard-link-for-tar-gz') self._resultfile = os.path.join(self._testdir, 'a.out') self._main('is a regular file. Should have been a hard link') class Test_wrong_target_in_tar_gz_archive(Main): '''Test if the target of a symlink is wrong in a tar gz archive''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-target-in-tar-gz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main(' target is') class Test_wrong_target_in_tar_bz2_archive(Main): '''Test if the target of a symlink is wrong in a tar bz2 archive''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-target-in-tar-bz2-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main(' target is') class Test_wrong_target_in_tar_xz_archive(Main): '''Test if the target of a symlink is wrong in a tar xz archive''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-target-in-tar-xz-archive') self._resultfile = os.path.join(self._testdir, 'a.out') self._main(' target is') class Test_wrong_target_in_tree(Main): '''Test if the target of a symlink is wrong in a tree of files''' def __init__(self, q): self._queue = q self._testname = self.__class__.__name__ self._testdir = os.path.join(ABSPATH, 'functional-tests/wrong-target-in-tree') self._resultfile = os.path.join(self._testdir, 'a.out') self._main(' target is') class Test_generate_conf_and_file_list_tar: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a tar archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-tar') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-tar.tar') __conffile = os.path.join(__testdir, 'conf.conf') __listfile = os.path.join(__testdir, 'list.list') __origconffile = os.path.join(__testdir, 'conf.conf.bck') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-tar.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-tar.list') __newconffile = [] # prepare the environment shutil.copyfile(__origconffile, __conffile) # switch flags expected conf and list files to good environment variables with open(__conffile) as __objconf: for __line in __objconf.readlines(): if 'PATH' in __line: __line = __line.replace('PATH', os.path.abspath('functional-tests/generate-conf-and-file-list-tar')) __newconffile.append(__line) with open(__conffile, 'w') as __objconf: __objconf.writelines(__newconffile) if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultconffile, 'rb').read()).hexdigest() != hashlib.md5(open(__conffile, 'rb').read()).hexdigest(): __confres = False else: __confres = True if hashlib.md5(open(__resultlistfile, 'rb').read()).hexdigest() != hashlib.md5(open(__listfile, 'rb').read()).hexdigest(): __listres = False else: __listres = True if __confres and __listres: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_conf_and_file_list_tar_gz: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a tar gz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-tar-gz') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-tar-gz.tar.gz') __conffile = os.path.join(__testdir, 'conf.conf') __listfile = os.path.join(__testdir, 'list.list') __origconffile = os.path.join(__testdir, 'conf.conf.bck') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-tar-gz.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-tar-gz.list') __newconffile = [] # prepare the environment shutil.copyfile(__origconffile, __conffile) # switch flags expected conf and list files to good environment variables with open(__conffile) as __objconf: for __line in __objconf.readlines(): if 'PATH' in __line: __line = __line.replace('PATH', os.path.abspath('functional-tests/generate-conf-and-file-list-tar-gz')) __newconffile.append(__line) with open(__conffile, 'w') as __objconf: __objconf.writelines(__newconffile) if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultconffile, 'rb').read()).hexdigest() != hashlib.md5(open(__conffile, 'rb').read()).hexdigest(): __confres = False else: __confres = True if hashlib.md5(open(__resultlistfile, 'rb').read()).hexdigest() != hashlib.md5(open(__listfile, 'rb').read()).hexdigest(): __listres = False else: __listres = True if __confres and __listres: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_conf_and_file_list_tar_bz2: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a tar bz2 archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-tar-bz2') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-tar-bz2.tar.bz2') __conffile = os.path.join(__testdir, 'conf.conf') __listfile = os.path.join(__testdir, 'list.list') __origconffile = os.path.join(__testdir, 'conf.conf.bck') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-tar-bz2.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-tar-bz2.list') __newconffile = [] # prepare the environment shutil.copyfile(__origconffile, __conffile) # switch flags expected conf and list files to good environment variables with open(__conffile) as __objconf: for __line in __objconf.readlines(): if 'PATH' in __line: __line = __line.replace('PATH', os.path.abspath('functional-tests/generate-conf-and-file-list-tar-bz2')) __newconffile.append(__line) with open(__conffile, 'w') as __objconf: __objconf.writelines(__newconffile) if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultconffile, 'rb').read()).hexdigest() != hashlib.md5(open(__conffile, 'rb').read()).hexdigest(): __confres = False else: __confres = True if hashlib.md5(open(__resultlistfile, 'rb').read()).hexdigest() != hashlib.md5(open(__listfile, 'rb').read()).hexdigest(): __listres = False else: __listres = True if __confres and __listres: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_conf_and_file_list_tar_xz: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a tar xz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-tar-xz') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-tar-xz.tar.xz') __conffile = os.path.join(__testdir, 'conf.conf') __listfile = os.path.join(__testdir, 'list.list') __origconffile = os.path.join(__testdir, 'conf.conf.bck') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-tar-xz.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-tar-xz.list') __newconffile = [] # prepare the environment shutil.copyfile(__origconffile, __conffile) # switch flags expected conf and list files to good environment variables with open(__conffile) as __objconf: for __line in __objconf.readlines(): if 'PATH' in __line: __line = __line.replace('PATH', os.path.abspath('functional-tests/generate-conf-and-file-list-tar-xz')) __newconffile.append(__line) with open(__conffile, 'w') as __objconf: __objconf.writelines(__newconffile) if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultconffile, 'rb').read()).hexdigest() != hashlib.md5(open(__conffile, 'rb').read()).hexdigest(): __confres = False else: __confres = True if hashlib.md5(open(__resultlistfile, 'rb').read()).hexdigest() != hashlib.md5(open(__listfile, 'rb').read()).hexdigest(): __listres = False else: __listres = True if __confres and __listres: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_conf_and_file_list_gz: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a gz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-gz') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-gz.gz') __conffile = os.path.join(__testdir, 'conf.conf') __listfile = os.path.join(__testdir, 'list.list') __origconffile = os.path.join(__testdir, 'conf.conf.bck') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-gz.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-gz.list') __newconffile = [] # prepare the environment shutil.copyfile(__origconffile, __conffile) # switch flags expected conf and list files to good environment variables with open(__conffile) as __objconf: for __line in __objconf.readlines(): if 'PATH' in __line: __line = __line.replace('PATH', os.path.abspath('functional-tests/generate-conf-and-file-list-gz')) __newconffile.append(__line) with open(__conffile, 'w') as __objconf: __objconf.writelines(__newconffile) if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultconffile, 'rb').read()).hexdigest() != hashlib.md5(open(__conffile, 'rb').read()).hexdigest(): __confres = False else: __confres = True if hashlib.md5(open(__resultlistfile, 'rb').read()).hexdigest() != hashlib.md5(open(__listfile, 'rb').read()).hexdigest(): __listres = False else: __listres = True if __confres and __listres: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_conf_and_file_list_bz2: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a bz2 archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-bz2') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-bz2.bz2') __conffile = os.path.join(__testdir, 'conf.conf') __listfile = os.path.join(__testdir, 'list.list') __origconffile = os.path.join(__testdir, 'conf.conf.bck') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-bz2.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-bz2.list') __newconffile = [] # prepare the environment shutil.copyfile(__origconffile, __conffile) # switch flags expected conf and list files to good environment variables with open(__conffile) as __objconf: for __line in __objconf.readlines(): if 'PATH' in __line: __line = __line.replace('PATH', os.path.abspath('functional-tests/generate-conf-and-file-list-bz2')) __newconffile.append(__line) with open(__conffile, 'w') as __objconf: __objconf.writelines(__newconffile) if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultconffile, 'rb').read()).hexdigest() != hashlib.md5(open(__conffile, 'rb').read()).hexdigest(): __confres = False else: __confres = True if hashlib.md5(open(__resultlistfile, 'rb').read()).hexdigest() != hashlib.md5(open(__listfile, 'rb').read()).hexdigest(): __listres = False else: __listres = True if __confres and __listres: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_conf_and_file_list_xz: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a xz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-xz') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-xz.xz') __conffile = os.path.join(__testdir, 'conf.conf') __listfile = os.path.join(__testdir, 'list.list') __origconffile = os.path.join(__testdir, 'conf.conf.bck') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-xz.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-xz.list') __newconffile = [] # prepare the environment shutil.copyfile(__origconffile, __conffile) # switch flags expected conf and list files to good environment variables with open(__conffile) as __objconf: for __line in __objconf.readlines(): if 'PATH' in __line: __line = __line.replace('PATH', os.path.abspath('functional-tests/generate-conf-and-file-list-xz')) __newconffile.append(__line) with open(__conffile, 'w') as __objconf: __objconf.writelines(__newconffile) if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: if hashlib.md5(open(__resultconffile, 'rb').read()).hexdigest() != hashlib.md5(open(__conffile, 'rb').read()).hexdigest(): __confres = False else: __confres = True if hashlib.md5(open(__resultlistfile, 'rb').read()).hexdigest() != hashlib.md5(open(__listfile, 'rb').read()).hexdigest(): __listres = False else: __listres = True if __confres and __listres: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_conf_and_file_list_tree: '''Compare the generated list and the expected list and the configuration file and the expected configuration file for a tree''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-conf-and-file-list-tree') __archive = os.path.join(__testdir, 'generate-conf-and-file-list-tree') __resultconffile = os.path.join(__testdir, 'generate-conf-and-file-list-tree.conf') __resultlistfile = os.path.join(__testdir, 'generate-conf-and-file-list-tree.list') __newconffile = [] if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTFULLGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTFULLGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check if the parameter sha512 is available in the configuration file if 'sha512' in open(__resultconffile).read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_sha_sum_in_conf(Main): '''Test if the parameter hash in the configuration file is recognized''' def __init__(self, q): self.__queue = q self.__testname = self.__class__.__name__ self.__testdir = os.path.join(ABSPATH, 'functional-tests/sha-sum-in-conf') self.__resultfile = os.path.join(self.__testdir, 'a.out') if 'PYTHONEXE' in environ: __command = ' '.join([PYTHONEXE, EXE, OPTCONFIG, self.__testdir, OPTLOG, self.__resultfile]) else: __command = ' '.join([EXE, OPTCONFIG, self.__testdir, OPTLOG, self.__resultfile]) __result = subprocess.getstatusoutput(__command) if __result[0] != 0: self.__queue.put('{} - {}'.format(self.__testname, OKMSG)) else: self.__queue.put('{} - {}return code:{}'.format(self.__testname, KOMSG, str(__result[0]))) class Test_missing_gpg_footer(Main): '''Test if the pgp/gpg footer is missing in the configuration file''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/missing-gpg-footer') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.getstatusoutput(' '.join([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __output])) else: __retcode = subprocess.getstatusoutput(' '.join([EXE, OPTCONFIG, __testdir, OPTLOG, __output])) if __retcode[0] != 0: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode[0]))) class Test_missing_gpg_header(Main): '''Test if the gpg/pgp header is missing in the configuration file''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/missing-gpg-header') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.getstatusoutput(' '.join([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __output])) else: __retcode = subprocess.getstatusoutput(' '.join([EXE, OPTCONFIG, __testdir, OPTLOG, __output])) if __retcode[0] != 0: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode[0]))) class Test_strip_gpg_header_tar_gz(Main): '''Test if the gpg/pgp header is removed effectively on tar gz archive''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/strip-gpg-header-tar-gz') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.getstatusoutput(' '.join([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __output])) else: __retcode = subprocess.getstatusoutput(' '.join([EXE, OPTCONFIG, __testdir, OPTLOG, __output])) if __retcode[0] == 0: __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode[1]))) class Test_generate_list_to_check_mtime_in_tar_archive: '''Generate a list of files to check that mtime in tar archive is written''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/check-mtime-tar') __archive = os.path.join(__testdir, 'check-mtime-tar.tar.gz') __resultfile = os.path.join(__testdir, 'check-mtime-tar.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: if ' mtime|' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_to_check_mtime_in_zip_archive: '''Generate a list of files to check that mtime in zip archive is written''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/check-mtime-zip') __archive = os.path.join(__testdir, 'check-mtime-zip.zip') __resultfile = os.path.join(__testdir, 'check-mtime-zip.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: # check now the newly modified list of files with the new delimiter if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTCONFIG, __testdir, OPTLOG, __output]) else: __retcode = subprocess.call([EXE, OPTCONFIG, __testdir, OPTLOG, __output]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: if ' mtime|' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_list_to_check_mtime_in_tree: '''Generate a list of files to check that mtime in tree is written''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/check-mtime-tree') __archive = os.path.join(__testdir, 'check-mtime-tree') __resultfile = os.path.join(__testdir, 'check-mtime-tree.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultfile, 'r') as __file: if ' mtime|' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_generate_apk_conf_files: '''Generate a apk archive and verify the result''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/generate-apk-conf-files') __archive = os.path.join(__testdir, 'generate-apk-conf-files.apk') __resultconffile = os.path.join(__testdir, 'generate-apk-conf-files.conf') __resultlistfile = os.path.join(__testdir, 'generate-apk-conf-files.list') __output = os.path.join(__testdir, 'a.out') if 'PYTHONEXE' in environ: __retcode = subprocess.call([PYTHONEXE, EXE, OPTHASHES, OPTGEN, __archive]) else: __retcode = subprocess.call([EXE, OPTHASHES, OPTGEN, __archive]) if __retcode != 0: __queue.put('{} - {}return code:{}'.format(__testname, KOMSG, str(__retcode))) else: with open(__resultconffile, 'r') as __file: if 'name=generate-apk-conf-files' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) with open(__resultlistfile, 'r') as __file: if 'res/drawable-hdpi/balloons2.png| =7511 uid|0 gid|0 mtime|1329733756.0' in __file.read(): __queue.put('{} - {}'.format(__testname, OKMSG)) else: __queue.put('{} - {}value in result file not expected'.format(__testname, KOMSG)) class Test_custom_conf_filelist_tar: '''Test to define a custom location to write conf and listfile files for tar archives''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/custom-conf-filelist-tar') __confdir = os.path.join(__testdir, 'conf') __listdir = os.path.join(__testdir, 'list') __bothdir = os.path.join(__testdir, 'both') __archive = os.path.join(__testdir, 'custom-conf-filelist-tar.tar.gz') __resultconffile = os.path.join(__testdir, 'conf', 'custom-conf-filelist-tar.conf') __resultlistfile = os.path.join(__testdir, 'list', 'custom-conf-filelist-tar.list') __resultbothconffile = os.path.join(__testdir, 'both', 'custom-conf-filelist-tar.conf') __resultbothlistfile = os.path.join(__testdir, 'both', 'custom-conf-filelist-tar.list') if not os.path.exists(__confdir): os.mkdir(__confdir) if not os.path.exists(__listdir): os.mkdir(__listdir) if not os.path.exists(__bothdir): os.mkdir(__bothdir) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-tar.conf')): remove(os.path.join(__testdir, 'custom-conf-filelist-tar.conf')) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-tar.list')): remove(os.path.join(__testdir, 'custom-conf-filelist-tar.list')) if os.path.exists(__resultconffile): remove(__resultconffile) if os.path.exists(__resultlistfile): remove(__resultlistfile) if os.path.exists(__resultbothconffile): remove(__resultbothconffile) if os.path.exists(__resultbothlistfile): remove(__resultbothlistfile) if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode1 = subprocess.call([EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode2 = subprocess.call([EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode3 = subprocess.call([EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0: __queue.put('{} - {}return code:{} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3))) else: if not os.path.exists(__resultconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultconffile)) elif not os.path.exists(__resultlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultlistfile)) elif not os.path.exists(__resultbothconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothconffile)) elif not os.path.exists(__resultbothlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothlistfile)) else: __queue.put('{} - {}'.format(__testname, OKMSG)) class Test_custom_conf_filelist_gzip: '''Test to define a custom location to write conf and listfile files for gzip archives''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/custom-conf-filelist-gzip') __confdir = os.path.join(__testdir, 'conf') __listdir = os.path.join(__testdir, 'list') __bothdir = os.path.join(__testdir, 'both') __archive = os.path.join(__testdir, 'custom-conf-filelist-gzip.gz') __resultconffile = os.path.join(__testdir, 'conf', 'custom-conf-filelist-gzip.conf') __resultlistfile = os.path.join(__testdir, 'list', 'custom-conf-filelist-gzip.list') __resultbothconffile = os.path.join(__testdir, 'both', 'custom-conf-filelist-gzip.conf') __resultbothlistfile = os.path.join(__testdir, 'both', 'custom-conf-filelist-gzip.list') if not os.path.exists(__confdir): os.mkdir(__confdir) if not os.path.exists(__listdir): os.mkdir(__listdir) if not os.path.exists(__bothdir): os.mkdir(__bothdir) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-gzip.conf')): remove(os.path.join(__testdir, 'custom-conf-filelist-gzip.conf')) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-gzip.list')): remove(os.path.join(__testdir, 'custom-conf-filelist-gzip.list')) if os.path.exists(__resultconffile): remove(__resultconffile) if os.path.exists(__resultlistfile): remove(__resultlistfile) if os.path.exists(__resultbothconffile): remove(__resultbothconffile) if os.path.exists(__resultbothlistfile): remove(__resultbothlistfile) if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode1 = subprocess.call([EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode2 = subprocess.call([EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode3 = subprocess.call([EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0: __queue.put('{} - {}return code:{} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3))) else: if not os.path.exists(__resultconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultconffile)) elif not os.path.exists(__resultlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultlistfile)) elif not os.path.exists(__resultbothconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothconffile)) elif not os.path.exists(__resultbothlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothlistfile)) else: __queue.put('{} - {}'.format(__testname, OKMSG)) class Test_custom_conf_filelist_bzip2: '''Test to define a custom location to write conf and listfile files for bzip2 archives''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/custom-conf-filelist-bzip2') __confdir = os.path.join(__testdir, 'conf') __listdir = os.path.join(__testdir, 'list') __bothdir = os.path.join(__testdir, 'both') __archive = os.path.join(__testdir, 'custom-conf-filelist-bzip2.bz2') __resultconffile = os.path.join(__testdir, 'conf', 'custom-conf-filelist-bzip2.conf') __resultlistfile = os.path.join(__testdir, 'list', 'custom-conf-filelist-bzip2.list') __resultbothconffile = os.path.join(__testdir, 'both', 'custom-conf-filelist-bzip2.conf') __resultbothlistfile = os.path.join(__testdir, 'both', 'custom-conf-filelist-bzip2.list') if not os.path.exists(__confdir): os.mkdir(__confdir) if not os.path.exists(__listdir): os.mkdir(__listdir) if not os.path.exists(__bothdir): os.mkdir(__bothdir) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-bzip2.conf')): remove(os.path.join(__testdir, 'custom-conf-filelist-bzip2.conf')) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-bzip2.list')): remove(os.path.join(__testdir, 'custom-conf-filelist-bzip2.list')) if os.path.exists(__resultconffile): remove(__resultconffile) if os.path.exists(__resultlistfile): remove(__resultlistfile) if os.path.exists(__resultbothconffile): remove(__resultbothconffile) if os.path.exists(__resultbothlistfile): remove(__resultbothlistfile) if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode1 = subprocess.call([EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode2 = subprocess.call([EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode3 = subprocess.call([EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0: __queue.put('{} - {}return code:{} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3))) else: if not os.path.exists(__resultconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultconffile)) elif not os.path.exists(__resultlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultlistfile)) elif not os.path.exists(__resultbothconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothconffile)) elif not os.path.exists(__resultbothlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothlistfile)) else: __queue.put('{} - {}'.format(__testname, OKMSG)) class Test_custom_conf_filelist_lzma: '''Test to define a custom location to write conf and listfile files for lzma archives''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/custom-conf-filelist-lzma') __confdir = os.path.join(__testdir, 'conf') __listdir = os.path.join(__testdir, 'list') __bothdir = os.path.join(__testdir, 'both') __archive = os.path.join(__testdir, 'custom-conf-filelist-lzma.xz') __resultconffile = os.path.join(__testdir, 'conf', 'custom-conf-filelist-lzma.conf') __resultlistfile = os.path.join(__testdir, 'list', 'custom-conf-filelist-lzma.list') __resultbothconffile = os.path.join(__testdir, 'both', 'custom-conf-filelist-lzma.conf') __resultbothlistfile = os.path.join(__testdir, 'both', 'custom-conf-filelist-lzma.list') if not os.path.exists(__confdir): os.mkdir(__confdir) if not os.path.exists(__listdir): os.mkdir(__listdir) if not os.path.exists(__bothdir): os.mkdir(__bothdir) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-lzma.conf')): remove(os.path.join(__testdir, 'custom-conf-filelist-lzma.conf')) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-lzma.list')): remove(os.path.join(__testdir, 'custom-conf-filelist-lzma.list')) if os.path.exists(__resultconffile): remove(__resultconffile) if os.path.exists(__resultlistfile): remove(__resultlistfile) if os.path.exists(__resultbothconffile): remove(__resultbothconffile) if os.path.exists(__resultbothlistfile): remove(__resultbothlistfile) if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode1 = subprocess.call([EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode2 = subprocess.call([EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode3 = subprocess.call([EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0: __queue.put('{} - {}return code:{} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3))) else: if not os.path.exists(__resultconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultconffile)) elif not os.path.exists(__resultlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultlistfile)) elif not os.path.exists(__resultbothconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothconffile)) elif not os.path.exists(__resultbothlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothlistfile)) else: __queue.put('{} - {}'.format(__testname, OKMSG)) class Test_custom_conf_filelist_zip: '''Test to define a custom location to write conf and listfile files for zip archives''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/custom-conf-filelist-zip') __confdir = os.path.join(__testdir, 'conf') __listdir = os.path.join(__testdir, 'list') __bothdir = os.path.join(__testdir, 'both') __archive = os.path.join(__testdir, 'custom-conf-filelist-zip.zip') __resultconffile = os.path.join(__testdir, 'conf', 'custom-conf-filelist-zip.conf') __resultlistfile = os.path.join(__testdir, 'list', 'custom-conf-filelist-zip.list') __resultbothconffile = os.path.join(__testdir, 'both', 'custom-conf-filelist-zip.conf') __resultbothlistfile = os.path.join(__testdir, 'both', 'custom-conf-filelist-zip.list') if not os.path.exists(__confdir): os.mkdir(__confdir) if not os.path.exists(__listdir): os.mkdir(__listdir) if not os.path.exists(__bothdir): os.mkdir(__bothdir) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-zip.conf')): remove(os.path.join(__testdir, 'custom-conf-filelist-zip.conf')) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-zip.list')): remove(os.path.join(__testdir, 'custom-conf-filelist-zip.list')) if os.path.exists(__resultconffile): remove(__resultconffile) if os.path.exists(__resultlistfile): remove(__resultlistfile) if os.path.exists(__resultbothconffile): remove(__resultbothconffile) if os.path.exists(__resultbothlistfile): remove(__resultbothlistfile) if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode1 = subprocess.call([EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode2 = subprocess.call([EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode3 = subprocess.call([EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0: __queue.put('{} - {}return code:{} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3))) else: if not os.path.exists(__resultconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultconffile)) elif not os.path.exists(__resultlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultlistfile)) elif not os.path.exists(__resultbothconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothconffile)) elif not os.path.exists(__resultbothlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothlistfile)) else: __queue.put('{} - {}'.format(__testname, OKMSG)) class Test_custom_conf_filelist_tree: '''Test to define a custom location to write conf and listfile files for a tree of files''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/custom-conf-filelist-tree') __confdir = os.path.join(__testdir, 'conf') __listdir = os.path.join(__testdir, 'list') __bothdir = os.path.join(__testdir, 'both') __archive = os.path.join(__testdir, 'custom-conf-filelist-tree') __resultconffile = os.path.join(__testdir, 'conf', 'custom-conf-filelist-tree.conf') __resultlistfile = os.path.join(__testdir, 'list', 'custom-conf-filelist-tree.list') __resultbothconffile = os.path.join(__testdir, 'both', 'custom-conf-filelist-tree.conf') __resultbothlistfile = os.path.join(__testdir, 'both', 'custom-conf-filelist-tree.list') if not os.path.exists(__confdir): os.mkdir(__confdir) if not os.path.exists(__listdir): os.mkdir(__listdir) if not os.path.exists(__bothdir): os.mkdir(__bothdir) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-tree.conf')): remove(os.path.join(__testdir, 'custom-conf-filelist-tree.conf')) if os.path.exists(os.path.join(__testdir, 'custom-conf-filelist-tree.list')): remove(os.path.join(__testdir, 'custom-conf-filelist-tree.list')) if os.path.exists(__resultconffile): remove(__resultconffile) if os.path.exists(__resultlistfile): remove(__resultlistfile) if os.path.exists(__resultbothconffile): remove(__resultbothconffile) if os.path.exists(__resultbothlistfile): remove(__resultbothlistfile) if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode1 = subprocess.call([EXE, '-C', os.path.join(__testdir, 'conf/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode2 = subprocess.call([EXE, '-L', os.path.join(__testdir, 'list/'), OPTHASHES, OPTFULLGEN, __archive]) if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) else: __retcode3 = subprocess.call([EXE, '-O', os.path.join(__testdir, 'both/'), OPTHASHES, OPTFULLGEN, __archive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0: __queue.put('{} - {}return code:{} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3))) else: if not os.path.exists(__resultconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultconffile)) elif not os.path.exists(__resultlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultlistfile)) elif not os.path.exists(__resultbothconffile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothconffile)) elif not os.path.exists(__resultbothlistfile): __queue.put('{} - {}missing {}'.format(__testname, KOMSG, __resultbothlistfile)) else: __queue.put('{} - {}'.format(__testname, OKMSG)) class Test_hashtype_option: '''Test the hashtype option''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/hashtype-option') __targzdir = os.path.join(__testdir, 'tar-gz') __gzipdir = os.path.join(__testdir, 'gzip') __bzip2dir = os.path.join(__testdir, 'bzip2') __lzmadir = os.path.join(__testdir, 'lzma') __treedir = os.path.join(__testdir, 'tree') __zipdir = os.path.join(__testdir, 'zip') __resulttargzfile = os.path.join(__targzdir, 'hashtype-option.list') __resultgzipfile = os.path.join(__gzipdir, 'hashtype-option.list') __resultbzip2file = os.path.join(__bzip2dir, 'hashtype-option.list') __resultlzmafile = os.path.join(__lzmadir, 'hashtype-option.list') __resultzipfile = os.path.join(__zipdir, 'hashtype-option.list') __resulttreefile = os.path.join(__treedir, 'hashtype-option.list') __targzarchive = os.path.join(__targzdir, 'hashtype-option.tar.gz') __gziparchive = os.path.join(__gzipdir, 'hashtype-option.gz') __bzip2archive = os.path.join(__bzip2dir, 'hashtype-option.bz2') __lzmaarchive = os.path.join(__lzmadir, 'hashtype-option.xz') __treearchive = os.path.join(__treedir, 'hashtype-option') __ziparchive = os.path.join(__zipdir, 'hashtype-option.zip') if os.path.exists(__resulttargzfile): remove(__resulttargzfile) if os.path.exists(__resultgzipfile): remove(__resultgzipfile) if os.path.exists(__resultbzip2file): remove(__resultbzip2file) if os.path.exists(__resultlzmafile): remove(__resultlzmafile) if os.path.exists(__resultzipfile): remove(__resultzipfile) if os.path.exists(__resulttreefile): remove(__resulttreefile) # sha1 if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-O', __targzdir, OPTHASHTYPE, 'sha1', OPTHASHES, OPTFULLGEN, __targzarchive]) else: __retcode1 = subprocess.call([EXE, '-O', __targzdir, OPTHASHTYPE, 'sha1', OPTHASHES, OPTFULLGEN, __targzarchive]) # sha224 if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-O', __gzipdir, OPTHASHTYPE, 'sha224', OPTHASHES, OPTFULLGEN, __gziparchive]) else: __retcode2 = subprocess.call([EXE, '-O', __gzipdir, OPTHASHTYPE, 'sha224', OPTHASHES, OPTFULLGEN, __gziparchive]) # sha256 if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', __bzip2dir, OPTHASHTYPE, 'sha256', OPTHASHES, OPTFULLGEN, __bzip2archive]) else: __retcode3 = subprocess.call([EXE, '-O', __bzip2dir, OPTHASHTYPE, 'sha256', OPTHASHES, OPTFULLGEN, __bzip2archive]) # sha384 if 'PYTHONEXE' in environ: __retcode4 = subprocess.call([PYTHONEXE, EXE, '-O', __lzmadir, OPTHASHTYPE, 'sha384', OPTHASHES, OPTFULLGEN, __lzmaarchive]) else: __retcode4 = subprocess.call([EXE, '-O', __lzmadir, OPTHASHTYPE, 'sha384', OPTHASHES, OPTFULLGEN, __lzmaarchive]) # sha512 if 'PYTHONEXE' in environ: __retcode5 = subprocess.call([PYTHONEXE, EXE, '-O', __zipdir, OPTHASHTYPE, 'sha512', OPTHASHES, OPTFULLGEN, __ziparchive]) else: __retcode5 = subprocess.call([EXE, '-O', __zipdir, OPTHASHTYPE, 'sha512', OPTHASHES, OPTFULLGEN, __ziparchive]) # sha1 again if 'PYTHONEXE' in environ: __retcode6 = subprocess.call([PYTHONEXE, EXE, '-O', __treedir, OPTHASHTYPE, 'sha1', OPTHASHES, OPTFULLGEN, __treearchive]) else: __retcode6 = subprocess.call([EXE, '-O', __treedir, OPTHASHTYPE, 'sha1', OPTHASHES, OPTFULLGEN, __treearchive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0 and __retcode4 != 0 and __retcode5 != 0: __queue.put('{} - {}return code:{} {} {} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3), str(__retcode4), str(__retcode5), str(__retcode6))) else: __returnok = True for __test in [(__resulttargzfile, 'sha1'), (__resultgzipfile, 'sha224'), (__resultbzip2file, 'sha256'), (__resultlzmafile, 'sha384'), (__resultzipfile, 'sha512'), (__resulttreefile, 'sha1')]: with open(__test[0], 'r') as __file: __content = __file.read() if __test[1] not in __content: __returnok = False __queue.put('{} - {} - {} not in {}'.format(__testname, KOMSG, __test[0], __test[1])) if __returnok: __queue.put('{} - {}'.format(__testname, OKMSG)) class Test_exceptions_file_option: '''Test the exceptions file option''' def __init__(self, q): __queue = q __res = True __testname = self.__class__.__name__ __testdir = os.path.join(ABSPATH, 'functional-tests/exceptions-file-option') __targzdir = os.path.join(__testdir, 'tar-gz') __zipdir = os.path.join(__testdir, 'zip') __gzipdir = os.path.join(__testdir, 'gzip') __bzip2dir = os.path.join(__testdir, 'bzip2') __lzmadir = os.path.join(__testdir, 'lzma') __treedir = os.path.join(__testdir, 'tree') __resulttargzfile = os.path.join(__targzdir, 'exceptions-file-option.list') __resultzipfile = os.path.join(__zipdir, 'exceptions-file-option.list') __resultgzipfile = os.path.join(__gzipdir, 'exceptions-file-option.list') __resultbzip2file = os.path.join(__bzip2dir, 'exceptions-file-option.list') __resultlzmafile = os.path.join(__lzmadir, 'exceptions-file-option.list') __resulttreefile = os.path.join(__treedir, 'exceptions-file-option.list') __targzexceptionsfile = os.path.join(__targzdir, 'targzexceptionsfile') __zipexceptionsfile = os.path.join(__zipdir, 'zipexceptionsfile') __gzipexceptionsfile = os.path.join(__gzipdir, 'gzipexceptionsfile') __bzip2exceptionsfile = os.path.join(__bzip2dir, 'bzip2exceptionsfile') __lzmaexceptionsfile = os.path.join(__lzmadir, 'lzmaexceptionsfile') __treeexceptionsfile = os.path.join(__treedir, 'treeexceptionsfile') __targzarchive = os.path.join(__targzdir, 'exceptions-file-option.tar.gz') __ziparchive = os.path.join(__zipdir, 'exceptions-file-option.zip') __gziparchive = os.path.join(__gzipdir, 'exceptions-file-option.gz') __bzip2archive = os.path.join(__bzip2dir, 'exceptions-file-option.bz2') __lzmaarchive = os.path.join(__lzmadir, 'exceptions-file-option.xz') __treearchive = os.path.join(__treedir, 'exceptions-file-option') if os.path.exists(__resulttargzfile): remove(__resulttargzfile) if os.path.exists(__resultzipfile): remove(__resultzipfile) if os.path.exists(__resultgzipfile): remove(__resultgzipfile) if os.path.exists(__resultbzip2file): remove(__resultbzip2file) if os.path.exists(__resultlzmafile): remove(__resultlzmafile) if os.path.exists(__resulttreefile): remove(__resulttreefile) # tar.gz if 'PYTHONEXE' in environ: __retcode1 = subprocess.call([PYTHONEXE, EXE, '-O', __targzdir, OPTEXCEPTIONSFILE, __targzexceptionsfile, OPTFULLGEN, __targzarchive]) else: __retcode1 = subprocess.call([EXE, '-O', __targzdir, OPTEXCEPTIONSFILE, __targzexceptionsfile, OPTFULLGEN, __targzarchive]) # zip if 'PYTHONEXE' in environ: __retcode2 = subprocess.call([PYTHONEXE, EXE, '-O', __zipdir, OPTEXCEPTIONSFILE, __zipexceptionsfile, OPTFULLGEN, __ziparchive]) else: __retcode2 = subprocess.call([EXE, '-O', __zipdir, OPTEXCEPTIONSFILE, __zipexceptionsfile, OPTFULLGEN, __ziparchive]) # gzip if 'PYTHONEXE' in environ: __retcode3 = subprocess.call([PYTHONEXE, EXE, '-O', __gzipdir, OPTEXCEPTIONSFILE, __gzipexceptionsfile, OPTFULLGEN, __gziparchive]) else: __retcode3 = subprocess.call([EXE, '-O', __gzipdir, OPTEXCEPTIONSFILE, __gzipexceptionsfile, OPTFULLGEN, __gziparchive]) # bzip2 if 'PYTHONEXE' in environ: __retcode4 = subprocess.call([PYTHONEXE, EXE, '-O', __bzip2dir, OPTEXCEPTIONSFILE, __bzip2exceptionsfile, OPTFULLGEN, __bzip2archive]) else: __retcode4 = subprocess.call([EXE, '-O', __bzip2dir, OPTEXCEPTIONSFILE, __bzip2exceptionsfile, OPTFULLGEN, __bzip2archive]) # lzma if 'PYTHONEXE' in environ: __retcode5 = subprocess.call([PYTHONEXE, EXE, '-O', __lzmadir, OPTEXCEPTIONSFILE, __lzmaexceptionsfile, OPTFULLGEN, __lzmaarchive]) else: __retcode5 = subprocess.call([EXE, '-O', __lzmadir, OPTEXCEPTIONSFILE, __lzmaexceptionsfile, OPTFULLGEN, __lzmaarchive]) # tree if 'PYTHONEXE' in environ: __retcode6 = subprocess.call([PYTHONEXE, EXE, '-O', __treedir, OPTEXCEPTIONSFILE, __treeexceptionsfile, OPTFULLGEN, __treearchive]) else: __retcode6 = subprocess.call([EXE, '-O', __treedir, OPTEXCEPTIONSFILE, __treeexceptionsfile, OPTFULLGEN, __treearchive]) if __retcode1 != 0 and __retcode2 != 0 and __retcode3 != 0 and __retcode4 != 0 and __retcode5 != 0 and __retcode6 != 0 : __queue.put('{} - {}return code:{} {} {} {} {}'.format(__testname, KOMSG, str(__retcode1), str(__retcode2), str(__retcode3), str(__retcode4), str(__retcode5), str(__retcode6))) else: __returnok = True for __test in [(__resulttargzfile, 'sha1'), (__resultgzipfile, 'sha224'), (__resultbzip2file, 'sha384'), (__resultlzmafile, 'sha512'), (__resultzipfile, 'sha224'), (__resulttreefile, 'sha1')]: with open(__test[0], 'r') as __file: __content = __file.read() if __test[1] not in __content: __returnok = False __queue.put('{} - {} - {} not in {}'.format(__testname, KOMSG, __test[0], __test[1])) if __returnok: __queue.put('{} - {}'.format(__testname, OKMSG)) if __name__ == '__main__': processes = [] results = [] koresults = [] q = Queue() for element in dir(functionaltests): if 'Test' in element: processes.append(Process(target=getattr(functionaltests, element), args=(q,))) processes[-1].start() for p in processes: results.append(q.get()) p.join() # Establishing list of KOs for result in results: if KOMSG in result: koresults.append(result) if len(koresults) != 0: print(linesep.join(koresults)) sys.exit(1) else: print(linesep.join(results)) brebis-0.10/man/brebis.10000644000000000000000000000754412462537262013154 0ustar 00000000000000'\" t .\" Title: brebis .\" Author: Carl Chenet .\" Generator: DocBook XSL Stylesheets v1.78.1 .\" Date: 12/28/2014 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "BREBIS" "1" "12/28/2014" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" brebis \- check your backup for corruption or unexpected content .SH "SYNOPSIS" .sp brebis [\-c DIR] [\-l FILE] [\-g] ARG1 ARG2 \&... .SH "DESCRIPTION" .sp Brebis parses backups (archives and file tree) to perform several different checks in order to verify your backup integrity and its associated content\&. .SH "OPTIONS" .PP \fB\-c \fR\fB\fIDIR\fR\fR\fB, \-\-configpath\fR \fIDIR\fR .RS 4 the path to the configurations .RE .PP \fB\-C \fR\fB\fIDIR\fR\fR\fB, \-\-output\-conf\-dir\fR \fIDIR\fR .RS 4 the directory to store the configuration file .RE .PP \fB\-d \fR\fB\fIDELIMITER\fR\fR\fB, \-\-delimiter\fR \fIDELIMITER\fR .RS 4 delimiter of the fields for the list of files .RE .PP \fB\-E \fR\fB\fIFILE\fR\fR\fB, \-\-exceptions\-file\fR \fIFILE\fR .RS 4 delimiter of the fields for the list of files .RE .PP \fB\-g, \-\-gen\-list\fR .RS 4 generate a list of files inside a backup .RE .PP \fB\-G, \-\-gen\-full\fR .RS 4 generate the configuration file and the list of files for the backup .RE .PP *\-H, \-\-hashes .RS 4 generate the hash sum of each encountered file in the backup .RE .PP *\-\-hashtype \fIHASHTYPE\fR .RS 4 the type of the hash sum to use while generating configurations for the archive .RE .PP \fB\-l \fR\fB\fIFILE\fR\fR\fB, \-\-log\fR \fIFILE\fR .RS 4 the log file .RE .PP \fB\-L \fR\fB\fIDIR\fR\fR\fB, \-\-output\-list\-dir\fR \fIDIR\fR .RS 4 the directory to store the list of files inside an archive or tree .RE .PP \fB\-O \fR\fB\fIDIR\fR\fR\fB, \-\-output\-list\-and\-conf\-dir\fR \fIDIR\fR .RS 4 the directory to store the configuration file and the list of files inside an archive or tree .RE .SH "EXAMPLES" .sp Generate the list of files and their attributes inside a backup .sp $ brebis \-G /backups/monthly\-backup\&.tar\&.gz .sp Launch Brebis indicating your configuration directory and your log file .sp $ brebis \-c /etc/brebis/ \-l /var/log/brebis\&.log .SH "AUTHOR" .sp Carl Chenet .SH "RESSOURCES" .sp Brebis project homepage : http://www\&.brebisproject\&.org .SH "LICENSE" .sp Copyright \(co 2015 Carl Chenet 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 3 of the License\&. 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, see http://www\&.gnu\&.org/licenses/\&. .SH "AUTHOR" .PP \fBCarl Chenet\fR <\&chaica@brebisproject\&.org\&> .RS 4 Author. .RE brebis-0.10/scripts/brebis0000755000000000000000000000142612462537262013725 0ustar 00000000000000#!/usr/bin/python3.3 # -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . from brebis.main import Main if __name__ == '__main__': Main() brebis-0.10/setup.py0000644000000000000000000000342112462537262012551 0ustar 00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see from distutils.core import setup import os.path import platform import sys # Warn the user about the supported Python versions if float(platform.python_version()[0:3]) < 3.4: print('You need at least Python 3.4 to use Brebis') sys.exit(1) CLASSIFIERS = [ 'Intended Audience :: System Administrators', 'Development Status :: 3 - Alpha', 'Environment :: Console', 'License :: OSI Approved :: GNU General Public License (GPL)', 'Operating System :: POSIX :: Linux', 'Programming Language :: Python :: 3.3' ] setup(name = 'brebis', version = '0.10', license = 'GNU GPL v3', description = 'automated backup checker', long_description = 'Brebis is a fully automated backup checker.', classifiers = CLASSIFIERS, author = 'Carl Chenet', author_email = 'chaica@brebisproject.org', url = 'http://www.brebisproject.org', download_url = 'http://www.brebisproject.org', packages = ['brebis', 'brebis.checkbackups', 'brebis.generatelist'], data_files=[(os.path.join('share','man','man1'), ['man/brebis.1'])], scripts = ['scripts/brebis'] ) brebis-0.10/tests.py0000755000000000000000000025613212462537262012567 0ustar 00000000000000#!/usr/bin/python3.4 # -*- coding: utf-8 -*- # Copyright © 2015 Carl Chenet # 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 3 of the License, or # 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, see . import argparse import bz2 import gzip import logging import os import os.path import stat import sys import tarfile import unittest import zipfile import brebis.applogger import brebis.archiveinfomsg import brebis.checkbackups.checkarchive import brebis.checkbackups.checkbackups import brebis.checkbackups.checkbzip2 import brebis.checkbackups.checkgzip import brebis.checkbackups.checklzma import brebis.checkhashes import brebis.checkbackups.checktar import brebis.checkbackups.checktree import brebis.checkbackups.checkzip import brebis.cliparse import brebis.configurations from brebis.expectedvalues import ExpectedValues import brebis.generatelist.generatelistfortar import brebis.generatelist.generatelistforbzip2 import brebis.listtype import brebis.main # !! logging module uses a single logger for the whole file TESTLOG = 'tests/testlog' DEFAULTDELIMITER = '|' # mock the object produced by argparse, useful for lots of tests below class Options: '''Mock the object produced by argparse, useful for lots of unittests''' def __init__(self): self.delimiter = DEFAULTDELIMITER class MyDict(dict): '''mock object''' pass class TestApp(unittest.TestCase): def test_applogger(self): '''Test the AppLoggerclass''' brebis.applogger.AppLogger(TESTLOG) self.assertEqual(True, str(logging.getLogger('applogger')).startswith('> 16) self.assertEqual('f', __result) def test_zip_translate_type_directory(self): '''test the __translate_type private method from checkzip.CheckZip - expecting directory''' __myobj = brebis.checkbackups.checkzip.CheckZip({'path': 'tests/checkzip_private_methods/myzip.zip', 'files_list': 'tests/checkzip_private_methods/myzip-list', 'type': 'archive', 'delimiter': ''}, Options()) __file = 'tests/checkzip_private_methods/myzip.zip' __myz = zipfile.ZipFile(__file,'r') __myinfo = __myz.infolist() __result = __myobj._CheckZip__translate_type(__myinfo[0].external_attr >> 16) self.assertEqual('d', __result) ############################################################## # # Testing the private/protected methods from checktar.CheckTar # ############################################################## def test_tar_extract_stored_file(self): '''test the _extract_stored_file protected method from checktar.CheckTar''' __myobj = brebis.checkbackups.checktar.CheckTar({'path': 'tests/checktar_private_methods/mytargz/mytargz.tar.gz', 'files_list': 'tests/checktar_private_methods/mytargz/mytargz-list', 'type': 'archive', 'delimiter': ''}, Options()) __file = 'tests/checktar_private_methods/mytargz/mytargz.tar.gz' self._tar = tarfile.open(__file) __result = __myobj._extract_stored_file('mytargz/hello') self.assertEqual(type(__result), type(self._tar.extractfile('mytargz/hello'))) def test_tar_translate_type_file(self): '''test the __translate_type private method from checktar.CheckTar - expecting file''' __myobj = brebis.checkbackups.checktar.CheckTar({'path': 'tests/checktar_private_methods/mytargz/mytargz.tar.gz', 'files_list': 'tests/checktar_private_methods/mytargz/mytargz-list', 'type': 'archive', 'delimiter': ''}, Options()) __file = 'tests/checktar_private_methods/mytargz/mytargz.tar.gz' self._tar = tarfile.open(__file) __result = __myobj._CheckTar__translate_type(self._tar.getmembers()[2].type) self.assertEqual('f', __result) def test_tar_translate_type_directory(self): '''test the __translate_type private method from checktar.CheckTar - expecting directory''' __myobj = brebis.checkbackups.checktar.CheckTar({'path': 'tests/checktar_private_methods/mytargz/mytargz.tar.gz', 'files_list': 'tests/checktar_private_methods/mytargz/mytargz-list', 'type': 'archive', 'delimiter': ''}, Options()) __file = 'tests/checktar_private_methods/mytargz/mytargz.tar.gz' self._tar = tarfile.open(__file) __result = __myobj._CheckTar__translate_type(self._tar.getmembers()[0].type) self.assertEqual('d', __result) def test_tar_translate_type_symbolic_link(self): '''test the __translate_type private method from checktar.CheckTar - expecting symbolic link''' __myobj = brebis.checkbackups.checktar.CheckTar({'path': 'tests/checktar_private_methods/mytargz/mytargz.tar.gz', 'files_list': 'tests/checktar_private_methods/mytargz/mytargz-list', 'type': 'archive', 'delimiter': ''}, Options()) __file = 'tests/checktar_private_methods/mytargz/mytargz.tar.gz' self._tar = tarfile.open(__file) __result = __myobj._CheckTar__translate_type(self._tar.getmembers()[1].type) self.assertEqual('s', __result) ################################################################ # # Testing the private/protected methods from checktree.CheckTree # ################################################################ def test_tree_extract_stored_file(self): '''test the _extract_stored_file protected method from checktree.CheckTree''' __myobj = brebis.checkbackups.checktree.CheckTree({'path': 'tests/checktree_private_methods/mytree', 'files_list': 'tests/checktree_private_methods/mytree-list', 'type': 'tree', 'delimiter': ''}, Options()) __file = 'tests/checktree_private_methods/mytree' __result = __myobj._extract_stored_file('hello') with open(os.path.join(__file, 'hello'), 'rb') as self.__desc: self.assertEqual(type(__result), type(self.__desc)) __result.close() def test_tree_translate_type_file(self): '''test the __translate_type private method from checktree.CheckTree - expecting file''' __myobj = brebis.checkbackups.checktree.CheckTree({'path': 'tests/checktree_private_methods/mytree', 'files_list': 'tests/checktree_private_methods/mytree-list', 'type': 'tree', 'delimiter': ''}, Options()) __file = 'tests/checktree_private_methods/mytree/hello' __result = __myobj._CheckTree__translate_type(os.lstat(__file).st_mode) self.assertEqual('f', __result) def test_tree_translate_type_directory(self): '''test the __translate_type private method from checktree.CheckTree - expecting directory''' __myobj = brebis.checkbackups.checktree.CheckTree({'path': 'tests/checktree_private_methods/mytree', 'files_list': 'tests/checktree_private_methods/mytree-list', 'type': 'tree', 'delimiter': ''}, Options()) __file = 'tests/checktree_private_methods/mytree' __result = __myobj._CheckTree__translate_type(os.lstat(__file).st_mode) self.assertEqual('d', __result) def test_tree_translate_type_symbolic_link(self): '''test the __translate_type private method from checktree.CheckTree - expecting symbolic link''' __myobj = brebis.checkbackups.checktree.CheckTree({'path': 'tests/checktree_private_methods/mytree', 'files_list': 'tests/checktree_private_methods/mytree-list', 'type': 'tree', 'delimiter': ''}, Options()) __file = 'tests/checktree_private_methods/mytree/riri' __result = __myobj._CheckTree__translate_type(os.lstat(__file).st_mode) self.assertEqual('s', __result) ################################################################ # # Testing the private/protected methods from checkgzip.CheckGzip # ################################################################ def test_gzip_extract_stored_file(self): '''test the _extract_stored_file protected method from checkgzip.CheckGzip''' __myobj = brebis.checkbackups.checkgzip.CheckGzip({'path': 'tests/checkgzip_private_methods/mygzip.gz', 'files_list': 'tests/checkgzip_private_methods/mygzip-list', 'type': 'archive', 'delimiter': ''}, Options()) __file = 'tests/checkgzip_private_methods/mygzip.gz' __result = __myobj._extract_stored_file('mygzip') with gzip.open(__file, 'rb') as self.__desc: self.assertEqual(type(__result), type(self.__desc)) __result.close() def test_extract_size_from_gzip_archive(self): '''test the extraction of a gzip uncompressed file in the gzip archive''' __arcpath = 'tests/checkgzip_private_methods/mygzip.gz' __myobj = brebis.checkbackups.checkgzip.CheckGzip({'path': __arcpath, 'files_list': 'tests/checkgzip_private_methods/mygzip-list', 'type': 'archive', 'delimiter': ''}, Options()) with open(__arcpath, 'rb') as __myf: self.assertEqual(23, __myobj._CheckGzip__extract_size(__myf)) def test_extract_initial_filename_from_gzip_archive(self): '''test the extraction of the initial name of an uncompressed file''' __arcpath = 'tests/checkgzip_private_methods/mygzip.gz' __myobj = brebis.checkbackups.checkgzip.CheckGzip({'path': __arcpath, 'files_list': 'tests/checkgzip_private_methods/mygzip-list', 'type': 'archive', 'delimiter': ''}, Options()) with open(__arcpath, 'rb') as __myf: self.assertEqual('mygzip', __myobj._CheckGzip__extract_initial_filename(__myf, 'mygzip')) ################################################################## # # Testing the private/protected methods from checkbzip2.CheckBzip2 # ################################################################## def test_bzip2_extract_stored_file(self): '''test the _extract_stored_file protected method from checkbzip2.CheckBzip2''' __myobj = brebis.checkbackups.checkbzip2.CheckBzip2({'path': 'tests/checkbzip2_private_methods/mybz2.bz2', 'files_list': 'tests/checkbzip2_private_methods/mybzip2-list', 'type': 'archive', 'delimiter': ''}, Options()) __file = 'tests/checkbzip2_private_methods/mybz2.bz2' __result = __myobj._extract_stored_file('mygzip') with bz2.BZ2File(__file, 'r') as self.__desc: self.assertEqual(type(__result), type(self.__desc)) __result.close() ###################################################################################### # # Testing the private/protected methods from generatelistforbzip2.GenerateListForBzip2 # ###################################################################################### def test__listconfinfo(self): '''test the GenerateListForBzip2 class''' __myobj = brebis.generatelist.generatelistforbzip2.GenerateListForBzip2({ 'arcpath': 'tests/checkbzip2_private_methods/mybz2.bz2', 'delimiter': '|', 'hashtype': '', 'parsingexceptions' : '', 'getallhashes': True, 'genfull': True, 'confoutput':'','listoutput':'','fulloutput':''}) self.assertEqual(__myobj._GenerateListForBzip2__lci, {'arclistpath': 'tests/checkbzip2_private_methods/mybz2.list', 'listoffiles': ['[files]\n', 'mybz2| type|f md5|f5488b7ce878d89b59ef2752f260354f\n']}) self.assertEqual(__myobj._GenerateListForBzip2__ci, {'arcconfpath': 'tests/checkbzip2_private_methods/mybz2.conf', 'arclistpath': 'tests/checkbzip2_private_methods/mybz2.list', 'arcname': 'mybz2', 'arcpath': 'tests/checkbzip2_private_methods/mybz2.bz2', 'arctype': 'archive', 'sha512': 'b45fa678a2208bfbf457f602b2d3de0c83e82ad9ba042b029b8d37f23bfe2774d1cd25576da880d20bb7f6ffcfc2ecb4bcc80112e880415de82fe63d81f81cb7'}) ############################################################################################### # # Testing the private/protected methods from generatelist.generatelist.GenerateList # ############################################################################################### def test_generatelist_generate_list(self): '''test the _generate_list protected method from GenerateList''' __file = 'tests/generatelist_private_methods/mytar.list' __myobj = brebis.generatelist.generatelist.GenerateList() __content = ['[files]\n', 'foo:\n'] __myobj._generate_list({'arclistpath': __file, 'listoffiles': __content}) with open(__file, 'r') as __f: self.assertEqual(__f.readlines(), __content) ############################################################################################### # # Testing the private/protected methods from generatelist.generatelistfortar.GenerateListForTar # ############################################################################################### def test_listfortar_translate_type_file(self): '''test the __translate_type private method from GenerateListForTar - expecting file''' __file = 'tests/generatelistfortar_private_methods/mytar.tar.gz' __myobj = brebis.generatelist.generatelistfortar.GenerateListForTar({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) self.__tar = tarfile.open(__file) __result = __myobj._GenerateListForTar__translate_type(self.__tar.getmembers()[3].type) self.assertEqual('f', __result) def test_listfortar_translate_type_directory(self): '''test the __translate_type private method from GenerateListForTar - expecting directory''' __file = 'tests/generatelistfortar_private_methods/mytar.tar.gz' __myobj = brebis.generatelist.generatelistfortar.GenerateListForTar({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) self.__tar = tarfile.open(__file) __result = __myobj._GenerateListForTar__translate_type(self.__tar.getmembers()[1].type) self.assertEqual('d', __result) def test_listfortar_translate_type_symbolic_link(self): '''test the __translate_type private method from GenerateListForTar - expecting symbolic link''' __file = 'tests/generatelistfortar_private_methods/mytar.tar.gz' __myobj = brebis.generatelist.generatelistfortar.GenerateListForTar({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) self.__tar = tarfile.open(__file) __result = __myobj._GenerateListForTar__translate_type(self.__tar.getmembers()[2].type) self.assertEqual('s', __result) ############################################################################################### # # Testing the private/protected methods from generatelist.generatelistforzip.GenerateListForZip # ############################################################################################### def test_listforzip_translate_type_file(self): '''test the __translate_type private method from GenerateListForZip - expecting file''' __file = 'tests/generatelistforzip_private_methods/myzip.zip' __myobj = brebis.generatelist.generatelistforzip.GenerateListForZip({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) __myz = zipfile.ZipFile(__file,'r') __myinfo = __myz.infolist() __result = __myobj._GenerateListForZip__translate_type(__myinfo[-1].external_attr >> 16) self.assertEqual('f', __result) def test_listforzip_translate_type_directory(self): '''test the __translate_type private method from GenerateListForZip - expecting directory''' __file = 'tests/generatelistforzip_private_methods/myzip.zip' __myobj = brebis.generatelist.generatelistforzip.GenerateListForZip({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) __myz = zipfile.ZipFile(__file,'r') __myinfo = __myz.infolist() __result = __myobj._GenerateListForZip__translate_type(__myinfo[0].external_attr >> 16) self.assertEqual('d', __result) def test_listforzip_extract_uid_gid(self): '''test the __extract_uid_gid private method from GenerateListForZip''' __file = 'tests/generatelistforzip_private_methods/myzip.zip' __myobj = brebis.generatelist.generatelistforzip.GenerateListForZip({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) __myz = zipfile.ZipFile(__file,'r') __myinfo = __myz.infolist() __result = __myobj._GenerateListForZip__extract_uid_gid(__myinfo[-1]) self.assertEqual((1000,1000), __result) ################################################################################################# # # Testing the private/protected methods from generatelist.generatelistfortree.GenerateListForTree # ################################################################################################# def test_listfortree_translate_type_file(self): '''test the __translate_type private method from GenerateListForTree - expecting file''' __dir = 'tests/generatelistfortree_private_methods/mydir' __file = os.path.join(__dir, 'foo') __myobj = brebis.generatelist.generatelistfortree.GenerateListForTree({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) __myobj._GenerateListForTree__fileinfo = os.lstat(__file) __result = __myobj._GenerateListForTree__translate_type(os.lstat(__file).st_mode) self.assertEqual('f', __result) def test_listfortree_translate_type_directory(self): '''test the __translate_type private method from GenerateListForTree - expecting directory''' __dir = 'tests/generatelistfortree_private_methods/mydir' __file = os.path.join(__dir, 'bar') __myobj = brebis.generatelist.generatelistfortree.GenerateListForTree({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) __result = __myobj._GenerateListForTree__translate_type(os.lstat(__file).st_mode) self.assertEqual('d', __result) def test_listfortree_translate_type_symbolic_link(self): '''test the __translate_type private method from GenerateListForTree - expecting symbolic link''' __dir = 'tests/generatelistfortree_private_methods/mydir' __file = os.path.join(__dir, 'oof') __myobj = brebis.generatelist.generatelistfortree.GenerateListForTree({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) __result = __myobj._GenerateListForTree__translate_type(os.lstat(__file).st_mode) self.assertEqual('s', __result) ################################################################################################# # # Testing the private/protected methods from generatelist.generatelistfortree.GenerateListForTree # ################################################################################################# def test_listforgzip_extract_size_from_gzip_archive(self): '''test the extraction of a gzip uncompressed file in the gzip archive''' __file = 'tests/generatelistforgzip_private_methods/mygzip.gz' __myobj = brebis.generatelist.generatelistforgzip.GenerateListForGzip({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) with open(__file, 'rb') as __myf: self.assertEqual(15, __myobj._GenerateListForGzip__extract_size(__myf)) def test_listforgzip_extract_initial_filename_from_gzip_archive(self): __file = 'tests/generatelistforgzip_private_methods/mygzip.gz' __myobj = brebis.generatelist.generatelistforgzip.GenerateListForGzip({'arcpath':__file, 'delimiter':DEFAULTDELIMITER, 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull':False, 'confoutput':'','listoutput':'','fulloutput':''}) with open(__file, 'rb') as __myf: self.assertEqual('mygzip', __myobj._GenerateListForGzip__extract_initial_filename(__myf, 'mygzip')) ############################################################## # # Testing the private/protected methods from cliparse.CliParse # ############################################################## def test_cliparse_cliparse(self): '''Test the cliparse.CliParse class''' __archivepath = '/tmp/archive.conf' __logpath = '/tmp/a.out' with open(__archivepath, 'w') as __desc: __desc.write('') sys.argv.append('-c') sys.argv.append(__archivepath) sys.argv.append('-l') sys.argv.append(__logpath) __myobj = brebis.cliparse.CliParse() self.assertEqual(vars(__myobj.options), {'archives': [], 'confpath': __archivepath, 'delimiter': '|', 'hashtype': '', 'parsingexceptions': '', 'getallhashes': False, 'genfull': False, 'genlist': False, 'logfile': __logpath, 'fulloutput':'', 'confoutput':'', 'listoutput':''}) os.remove(__archivepath) ####################################################################################### # # Testing the consistent given version of the software both in setup.py and cliparse.py # ####################################################################################### def test_version_consistency_in_setup_py_and_cliparse_py(self): '''test the consistency of the version of the software in both setup.py and cliparse.py ''' with open('setup.py') as __setuppy: __setuppycode = __setuppy.readlines() with open('brebis/cliparse.py') as __cliparsepy: __cliparsepycode = __cliparsepy.readlines() for line in __setuppycode: if 'version = ' in line: setuppyversion = line.split("'")[1] break for line in __cliparsepycode: if 'version=' in line: cliparsepyversion = line.split('s ')[1].split("'")[0] break self.assertEqual(setuppyversion, cliparsepyversion) ####################################################################################### # # Testing the brebis/archiveinfomsg.py # ####################################################################################### def test_archiveinfomsg_main(self): '''test the archivemsginfo.ArchiveMsgInfo__main method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = ['testarchiveinfomsgmain1'] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testarchiveinfomsgmain.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__main(__mydict, {'path': 'testarchiveinfomsgmain.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) with open(_logfile) as _res: self.assertIn('WARNING:root:1 file missing in testarchiveinfomsgmain.tar.gz: \nWARNING:root:testarchiveinfomsgmain1\n', _res.read()) def test_archiveinfomsg_missing_files(self): '''test the __missing_files method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testmissingfiles.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__missing_files(['titi'], 'testmissingfiles.tar.gz') with open(_logfile) as _res: self.assertIn('WARNING:root:1 file missing in testmissingfiles.tar.gz: \nWARNING:root:titi\n', _res.read()) def test_archiveinfomsg_unexpected_files(self): '''test the archiveinfomsg.ArchiveInfoMsg__unexpected_files method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testunexpectedfiles.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__unexpected_files(['titi'], 'testunexpectedfiles.tar.gz') with open(_logfile) as _res: self.assertIn('WARNING:root:1 unexpected file checking testunexpectedfiles.tar.gz: \nWARNING:root:titi\n', _res.read()) def test_archiveinfomsg_classify_differences(self): '''test the archiveinfomsg.ArchiveInfoMsg__classify_differences method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [{'path':'classifydifferences1', 'size':'12','expected':'3'}] __mydict.missing_smaller_than = [{'path':'classifydifferences2', 'size':'12','expected':'3'}] __mydict.missing_bigger_than = [{'path':'classifydifferences3', 'size':'12','expected':'3'}] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testclassifydifferences.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__classify_differences(__mydict, 'testclassifydifferences.tar.gz') with open(_logfile) as _res: __testresult = _res.read() self.assertIn('WARNING:root:classifydifferences1 size is 12. Should have been 3.', __testresult) self.assertIn('WARNING:root:classifydifferences2 size is 12. Should have been smaller than 3.', __testresult) self.assertIn('WARNING:root:classifydifferences3 size is 12. Should have been bigger than 3.', __testresult) def test_archiveinfomsg_log_differences(self): '''test the archiveinfomsg.ArchiveInfoMsg__log_differences method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [{'path':'classifydifferences4', 'size':'12','expected':'3'}] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testlogdifferences.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__log_differences(__mydict.missing_equality, 'testlogdifferences.tar.gz', '{} {} with unexpected size while checking {}: ') with open(_logfile) as _res: __testresult = _res.read() self.assertIn('WARNING:root:classifydifferences4 size is 12. Should have been 3.', __testresult) def test_archiveinfomsg_uid_gid_mismatches(self): '''test the archiveinfomsg.ArchiveInfoMsg__uid_gid_mismatches method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [{'path':'classifydifferences5', 'expecteduid':'1010','uid':'1000'}] __mydict.mismatched_gids = [{'path':'classifydifferences6', 'expectedgid':'1010','gid':'1000'}] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testuidgidmismatches.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__uid_gid_mismatches(__mydict, 'testuidgidmismatches.tar.gz') with open(_logfile) as _res: __testresult = _res.read() self.assertIn('WARNING:root:classifydifferences5 uid is 1000. Should have been 1010.', __testresult) self.assertIn('WARNING:root:classifydifferences6 gid is 1000. Should have been 1010.', __testresult) def test_archiveinfomsg_mode_mismatches(self): '''test the archiveinfomsg.ArchiveInfoMsg__mode_mismatches method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [{'path':'classifydifferences7', 'expectedmode':'644','mode':'777'}] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testmodemismatches.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__mode_mismatches(__mydict, 'testmodemismatches.tar.gz') with open(_logfile) as _res: __testresult = _res.read() self.assertIn('WARNING:root:classifydifferences7 mode is 777. Should have been 644.', __testresult) def test_archiveinfomsg_target_mismatches(self): '''test the archiveinfomsg.ArchiveInfoMsg__target_mismatches method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [{'path':'classifydifferences8', 'expectedtarget':'../target1','target':'../target2'}] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testtargetmismatches.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__target_mismatches(__mydict, 'testtargetmismatches.tar.gz') with open(_logfile) as _res: __testresult = _res.read() self.assertIn('WARNING:root:classifydifferences8 target is ../target2. Should have been ../target1.', __testresult) def test_archiveinfomsg_type_mismatches(self): '''test the archiveinfomsg.ArchiveInfoMsg__type_mismatches method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [{'path':'classifydifferences9', 'expectedtype':'s','type':'f'}] __mydict.mismatched_hashes = [] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testtypemismatches.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__target_mismatches(__mydict, 'testtypemismatches.tar.gz') with open(_logfile) as _res: __testresult = _res.read() self.assertIn('WARNING:root:classifydifferences9 is a regular file. Should have been a symbolic link.', __testresult) def test_archiveinfomsg_hash_mismatches(self): '''test the archiveinfomsg.ArchiveInfoMsg__hash_mismatches method''' _logfile = TESTLOG brebis.applogger.AppLogger(TESTLOG) __mydict = MyDict() __mydict.missing_files = [] __mydict.unexpected_files = [] __mydict.missing_equality = [] __mydict.missing_smaller_than = [] __mydict.missing_bigger_than = [] __mydict.mismatched_uids = [] __mydict.mismatched_gids = [] __mydict.mismatched_modes = [] __mydict.mismatched_types = [] __mydict.mismatched_hashes = [{'path':'classifydifferences10', 'expectedhash':'azeraezr','hash':'qdslfmjaze'}] __mydict.mismatched_targets = [] __mydict.mismatched_mtimes = [] __myobj = brebis.archiveinfomsg.ArchiveInfoMsg(__mydict, {'path': 'testhashmismatches.tar.gz', 'sha512': None, 'files_list': '', 'type': 'archive', 'delimiter': None}) __myobj._ArchiveInfoMsg__hash_mismatches(__mydict, 'testhashmismatches.tar.gz') with open(_logfile) as _res: __testresult = _res.read() self.assertIn('WARNING:root:classifydifferences10 hash is qdslfmjaze. Should have been azeraezr.', __testresult) ####################################################################################### # # Testing the brebis.listtype.ListType # ####################################################################################### def test_listtype_tar(self): '''test the listtype class with a tar archive''' #__mydict = brebis.listtype.ListType({'arcpath': 'test.tar.gz', 'delimiter': None, 'genfull': True}) __mydict = MyDict() __mydict.archives = ['tests/listtype/mytargz.tar.gz'] __mydict.delimiter = None __mydict.hashtype = '' __mydict.genfull = True __mydict.getallhashes = True __mydict.fulloutput = '' __mydict.confoutput = '' __mydict.listoutput = '' __mydict = brebis.listtype.ListType(__mydict) self.assertEqual(str(type(__mydict._ListType__bck)), "") def test_listtype_tree(self): '''test the listtype class with a tree archive''' __mydict = MyDict() __mydict.archives = ['tests/listtype/mytree'] __mydict.delimiter = None __mydict.hashtype = '' __mydict.genfull = True __mydict.getallhashes = True __mydict.fulloutput = '' __mydict.confoutput = '' __mydict.listoutput = '' __mydict = brebis.listtype.ListType(__mydict) self.assertEqual(str(type(__mydict._ListType__bck)), "") def test_listtype_zip(self): '''test the listtype class with a zip archive''' __mydict = MyDict() __mydict.archives = ['tests/listtype/myzip.zip'] __mydict.delimiter = None __mydict.hashtype = '' __mydict.genfull = True __mydict.getallhashes = True __mydict.fulloutput = '' __mydict.confoutput = '' __mydict.listoutput = '' __mydict = brebis.listtype.ListType(__mydict) self.assertEqual(str(type(__mydict._ListType__bck)), "") def test_listtype_gz(self): '''test the listtype class with a gzip archive''' __mydict = MyDict() __mydict.archives = ['tests/listtype/mygzip.gz'] __mydict.delimiter = None __mydict.hashtype = '' __mydict.genfull = True __mydict.getallhashes = True __mydict.fulloutput = '' __mydict.confoutput = '' __mydict.listoutput = '' __mydict = brebis.listtype.ListType(__mydict) self.assertEqual(str(type(__mydict._ListType__bck)), "") def test_listtype_bz2(self): '''test the listtype class with a bzip2 archive''' __mydict = MyDict() __mydict.archives = ['tests/listtype/mybz2.bz2'] __mydict.delimiter = None __mydict.hashtype = '' __mydict.genfull = True __mydict.getallhashes = True __mydict.fulloutput = '' __mydict.confoutput = '' __mydict.listoutput = '' __mydict = brebis.listtype.ListType(__mydict) self.assertEqual(str(type(__mydict._ListType__bck)), "") def test_listtype_xz(self): '''test the listtype class with a lzma archive''' __mydict = MyDict() __mydict.archives = ['tests/listtype/mylzma.xz'] __mydict.delimiter = None __mydict.hashtype = '' __mydict.genfull = True __mydict.getallhashes = True __mydict.fulloutput = '' __mydict.confoutput = '' __mydict.listoutput = '' __mydict = brebis.listtype.ListType(__mydict) self.assertEqual(str(type(__mydict._ListType__bck)), "") ################################################################ # # End of the unit tests # ################################################################ @classmethod def tearDownClass(TestApp): '''clean after the tests''' _logfile = TESTLOG os.remove(_logfile) if __name__ == '__main__': unittest.main() brebis-0.10/tests/checkarchive_private_methods/mytar.tar.gz0000644000000000000000000000027012462537262022357 0ustar 00000000000000pLM 0=E=3m~BM*} d1 ||4La`T҈UIʕ^,/q*qhwkեq.G[!_[K5j*)O8[OGKkOwR/3(brebis-0.10/tests/checkarchive_private_methods/tar-list0000644000000000000000000000004712462537262021560 0ustar 00000000000000[archive] # initiate a CheckTar object brebis-0.10/tests/checkbzip2_private_methods/mybz2.bz20000644000000000000000000000014312462537262021162 0ustar 00000000000000BZh91AY&SYMU߀@* ;l0 HjQi =CB ÐNcHnV-1˲:E{H )brebis-0.10/tests/checkbzip2_private_methods/mybz2.conf0000644000000000000000000000041612462537262021415 0ustar 00000000000000[main] name=mybz2 type=archive path=tests/checkbzip2_private_methods/mybz2.bz2 files_list=tests/checkbzip2_private_methods/mybz2.list sha512=b45fa678a2208bfbf457f602b2d3de0c83e82ad9ba042b029b8d37f23bfe2774d1cd25576da880d20bb7f6ffcfc2ecb4bcc80112e880415de82fe63d81f81cb7 brebis-0.10/tests/checkbzip2_private_methods/mybz2.list0000644000000000000000000000007312462537262021442 0ustar 00000000000000[files] mybz2| type|f md5|f5488b7ce878d89b59ef2752f260354f brebis-0.10/tests/checkbzip2_private_methods/mybzip2-list0000644000000000000000000000001712462537262021770 0ustar 00000000000000[files] mybz2| brebis-0.10/tests/checkbzip2_private_methods/mybzip2.conf0000644000000000000000000000011012462537262021735 0ustar 00000000000000[main] name=mybzip2 type=archive path=mybz2.bz2 files_list=mybzip2-list brebis-0.10/tests/checkgzip_private_methods/mygzip-list0000644000000000000000000000002012462537262021630 0ustar 00000000000000[files] mygzip| brebis-0.10/tests/checkgzip_private_methods/mygzip.conf0000644000000000000000000000010612462537262021610 0ustar 00000000000000[main] name=mygzip type=archive path=mygzip.gz files_list=mygzip-list brebis-0.10/tests/checkgzip_private_methods/mygzip.gz0000644000000000000000000000006212462537262021304 0ustar 00000000000000ЈNmygzipHWMS/WH,JU/|2brebis-0.10/tests/checktar_private_methods/mytargz/mytargz-list0000644000000000000000000000007712462537262023334 0ustar 00000000000000[archive] # initiate a CheckTar object [files] mytargz/hello| brebis-0.10/tests/checktar_private_methods/mytargz/mytargz.tar.gz0000644000000000000000000000027412462537262023566 0ustar 00000000000000tNM 0@=En`&y-"zzҢ.tD|f dko2[E)ћ9S"bmH Ϲr?@kzW.tکS덱+!:muh.Vs~88_ܳCi7쮯]jo"sU(brebis-0.10/tests/checktree_private_methods/mytargz/mytargz-list0000644000000000000000000000007712462537262023505 0ustar 00000000000000[archive] # initiate a CheckTar object [files] mytargz/hello| brebis-0.10/tests/checktree_private_methods/mytargz/mytargz.tar.gz0000644000000000000000000000027412462537262023737 0ustar 00000000000000tNM 0@=En`&y-"zzҢ.tD|f dko2[E)ћ9S"bmH Ϲr?@kzW.tکS덱+!:muh.Vs~88_ܳCi7쮯]jo"sU(brebis-0.10/tests/checktree_private_methods/mytree-list0000644000000000000000000000007612462537262021617 0ustar 00000000000000[archive] # initiate a CheckTar object [files] mytree/hello| brebis-0.10/tests/checktree_private_methods/mytree/hello0000644000000000000000000000000612462537262021742 0ustar 00000000000000hello brebis-0.10/tests/checktree_private_methods/mytree/riri0000777000000000000000000000000012462537262022633 2helloustar 00000000000000brebis-0.10/tests/checkzip_private_methods/myzip-list0000644000000000000000000000004712462537262021323 0ustar 00000000000000[archive] # initiate a CheckTar object brebis-0.10/tests/checkzip_private_methods/myzip.zip0000644000000000000000000000162012462537262021151 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/tests/corrupted_archives/MD5SUMS0000644000000000000000000000006712462537262017117 0ustar 000000000000008ea4379731bdfa5979ff854e0f3cb9cf md5-corrupted.tar.gz brebis-0.10/tests/corrupted_archives/SHA1SUMS0000644000000000000000000000010012462537262017212 0ustar 00000000000000e53b077e0a37317cdf0c652a3d62cbe1dfdd1b24 sha1-corrupted.tar.gz brebis-0.10/tests/corrupted_archives/SHA224SUMS0000644000000000000000000000012312462537262017366 0ustar 00000000000000b90e84a19555c2586084eb761b667c2e8d3eb9eeec9f4b166b868e98 sha224-corrupted.tar.bz2 brebis-0.10/tests/corrupted_archives/SHA256SUMS0000644000000000000000000000013212462537262017373 0ustar 0000000000000007903dbac57a7d94864ffe9123797f1fcc68aaff96c75948b2df9a03dc9b45e6 sha256-corrupted.tar.gz brebis-0.10/tests/corrupted_archives/SHA384SUMS0000644000000000000000000000017312462537262017402 0ustar 00000000000000276873e4cd59cbbc196f61e96a41aac783fa38fdc75646d9116e1cd93a2bf2480de63363b50129095e38a8665e8c43da sha384-corrupted.tar.bz2 brebis-0.10/tests/corrupted_archives/SHA512SUMS0000644000000000000000000000023212462537262017367 0ustar 0000000000000039fe2e5ec0da609b162db89bc8d985af85357fca37d8671af2c7eea62c0608cf543a4c69a117e899d59a095264e99595c57c0d0d006e39f9d5e88671afdd8615 sha512-corrupted.tar.gz brebis-0.10/tests/corrupted_archives/md5-corrupted.tar.gz0000644000000000000000000000032712462537262021717 0ustar 00000000000000Kcorrupted.tarM 0Eь wg= HиFI+Dig@>xtUT%ܼ$2RK,ʋquZMcCӈS%[*_M_+ck9T9`oK՜Z4Hr8v>uYoS<[O0ekλ(brebis-0.10/tests/corrupted_archives/sha1-corrupted.tar.gz0000644000000000000000000000031412462537262022062 0ustar 00000000000000JLsha1-corrupted.tarA 0{te3˞%+KUz*U(q d <^նW-{aD|P-4'4 ]֚MmT5?,)z3֥\j?_:;oWKws,?/4gzѽ(brebis-0.10/tests/corrupted_archives/sha224-corrupted.tar.bz20000644000000000000000000000030212462537262022303 0ustar 00000000000000BZh91AY&SY?{Ð @Di`ހ0 20&! bhEMRzj~M4Ѧ:je!Yzxi!3&"0Zߊ2y ёD;WORe6*dDiCxGq͗A1yK x{]ǚ!.p!9p~brebis-0.10/tests/corrupted_archives/sha256-corrupted.tar.gz0000644000000000000000000000031512462537262022237 0ustar 00000000000000LLsha256-corrupted.tarA 0{LMe"R^ZJA\"?Y$0W%&<(z!]BBLbrebis-0.10/tests/corrupted_archives/sha512-corrupted.tar.gz0000644000000000000000000000031612462537262022233 0ustar 00000000000000OLsha512-corrupted.tar 0ueg 誥*}jQ(q d N}]Lf2OF/¨}AՈ`ϽdTMjo19gL;Xɹ6?wv_O{ל36/sNwKGi=GQ(brebis-0.10/tests/expected_hash/archash/md5hashtararchive-list0000644000000000000000000000020612462537262022712 0ustar 00000000000000[archive] # md5 hash test for a tar.gz archive - good value is 47907de120577e6ba3b9dd8821374936 md5| 47907de120577e6ba3b9dd8821374937 brebis-0.10/tests/expected_hash/archash/md5hashtararchive.conf0000644000000000000000000000022712462537262022670 0ustar 00000000000000[main] name=md5hashtararchive type=archive path=tests/expected_hash/archash/mytar.tar.gz files_list=tests/expected_hash/archash/md5hashtararchive-list brebis-0.10/tests/expected_hash/archash/md5hashziparchive-list0000644000000000000000000000020312462537262022723 0ustar 00000000000000[archive] # md5 hash test for a zip archive - good value is e48e1ce2fbe0db616632ba8030ac2c9f md5| e48e1ce2fbe0db616632ba8030ac2c9e brebis-0.10/tests/expected_hash/archash/md5hashziparchive.conf0000644000000000000000000000022412462537262022701 0ustar 00000000000000[main] name=md5hashziparchive type=archive path=tests/expected_hash/archash/myzip.zip files_list=tests/expected_hash/archash/md5hashziparchive-list brebis-0.10/tests/expected_hash/archash/mytar.tar.gz0000644000000000000000000000035212462537262020701 0ustar 00000000000000MA 0Ь=HI,VԦUQ*UM dgpYNurN0kfRtزmDb]6Ðwޅ{8U}2{IL+/-m[TN5f. &rm7F_/_&@O`|KnCu}AՎl? mˇ-yGQa,| HH1(brebis-0.10/tests/expected_hash/archash/myzip.zip0000644000000000000000000000077512462537262020323 0ustar 00000000000000PK \>myzip/UT 84M!4Mux PK \>O myzip/totoUT 04M04Mux hi guys, what's up ? PK \>7/ myzip/titiUT 84M84Mux this is a really nice journey PK \>Amyzip/UT84Mux PK \>O @myzip/totoUT04Mux PK \>7/ myzip/titiUT84Mux PKbrebis-0.10/tests/expected_hash/archash/sha1hashtararchive-list0000644000000000000000000000022312462537262023060 0ustar 00000000000000[archive] # hash test for a tar.gz archive - good value is 84db203e2902fa5ea51e6d46ea365c7bfc5524b8 sha1| 84db203e2902fa5ea51e6d46ea365c7bfc5524b9 brebis-0.10/tests/expected_hash/archash/sha1hashtararchive.conf0000644000000000000000000000023112462537262023032 0ustar 00000000000000[main] name=sha1hashtararchive type=archive path=tests/expected_hash/archash/mytar.tar.gz files_list=tests/expected_hash/archash/sha1hashtararchive-list brebis-0.10/tests/expected_hash/archash/sha1hashziparchive-list0000644000000000000000000000022012462537262023071 0ustar 00000000000000[archive] # hash test for a zip archive - good value is 4cd5933d78603d8b4ba484ef8e45d2b6bc9fd5cf sha1| 4cd5933d78603d8b4ba484ef8e45d2b6bc9fd5ce brebis-0.10/tests/expected_hash/archash/sha1hashziparchive.conf0000644000000000000000000000022612462537262023052 0ustar 00000000000000[main] name=sha1hashziparchive type=archive path=tests/expected_hash/archash/myzip.zip files_list=tests/expected_hash/archash/sha1hashziparchive-list brebis-0.10/tests/expected_hash/archash/sha224hashtararchive-list0000644000000000000000000000026512462537262023235 0ustar 00000000000000[archive] # hash test for a tar.gz archive - good value is e25621dfdd2b2cfca451c735f4e676653e8628187e2b7ddc14402c1d sha224| e25621dfdd2b2cfca451c735f4e676653e8628187e2b7ddc14402c1e brebis-0.10/tests/expected_hash/archash/sha224hashtararchive.conf0000644000000000000000000000023512462537262023205 0ustar 00000000000000[main] name=sha224hashtararchive type=archive path=tests/expected_hash/archash/mytar.tar.gz files_list=tests/expected_hash/archash/sha224hashtararchive-list brebis-0.10/tests/expected_hash/archash/sha224hashziparchive-list0000644000000000000000000000026212462537262023246 0ustar 00000000000000[archive] # hash test for a zip archive - good value is 6e0838302f48cc7863a160f197a23492833b59862d89cabc46c2a1c3 sha224| 6e0838302f48cc7863a160f197a23492833b59862d89cabc46c2a1c4 brebis-0.10/tests/expected_hash/archash/sha224hashziparchive.conf0000644000000000000000000000023212462537262023216 0ustar 00000000000000[main] name=sha224hashziparchive type=archive path=tests/expected_hash/archash/myzip.zip files_list=tests/expected_hash/archash/sha224hashziparchive-list brebis-0.10/tests/expected_hash/archash/sha256hashtararchive-list0000644000000000000000000000030512462537262023235 0ustar 00000000000000[archive] # hash test for a tar.gz archive - good value is 7090d29295216e95ab4a190d489aa405d141cac978567c227f17ee78eb3f5fd4 sha256| 7090d29295216e95ab4a190d489aa405d141cac978567c227f17ee78eb3f5fd5 brebis-0.10/tests/expected_hash/archash/sha256hashtararchive.conf0000644000000000000000000000023512462537262023212 0ustar 00000000000000[main] name=sha256hashtararchive type=archive path=tests/expected_hash/archash/mytar.tar.gz files_list=tests/expected_hash/archash/sha256hashtararchive-list brebis-0.10/tests/expected_hash/archash/sha256hashziparchive-list0000644000000000000000000000030212462537262023246 0ustar 00000000000000[archive] # hash test for a zip archive - good value is 358bae9af3f9f510095b2e2a245a5e49ab27d7de862cd22f0dd4f212e25fb138 sha256| 358bae9af3f9f510095b2e2a245a5e49ab27d7de862cd22f0dd4f212e25fb139 brebis-0.10/tests/expected_hash/archash/sha256hashziparchive.conf0000644000000000000000000000023212462537262023223 0ustar 00000000000000[main] name=sha256hashziparchive type=archive path=tests/expected_hash/archash/myzip.zip files_list=tests/expected_hash/archash/sha256hashziparchive-list brebis-0.10/tests/expected_hash/archash/sha384hashtararchive-list0000644000000000000000000000040512462537262023240 0ustar 00000000000000[archive] # hash test for a tar.gz archive - good value is aa01a55142a04de52cebba3797ca25054e51c33a5fbfdc4dd0cc2f01f6252c6a62cb87f35405d9d8b07a506eefacfd10 sha384| aa01a55142a04de52cebba3797ca25054e51c33a5fbfdc4dd0cc2f01f6252c6a62cb87f35405d9d8b07a506eefacfd11 brebis-0.10/tests/expected_hash/archash/sha384hashtararchive.conf0000644000000000000000000000023512462537262023214 0ustar 00000000000000[main] name=sha384hashtararchive type=archive path=tests/expected_hash/archash/mytar.tar.gz files_list=tests/expected_hash/archash/sha384hashtararchive-list brebis-0.10/tests/expected_hash/archash/sha384hashziparchive-list0000644000000000000000000000040212462537262023251 0ustar 00000000000000[archive] # hash test for a zip archive - good value is 6a372e2867442826b64d1e3bca4b35e18d12d5df25e89decff214023d45f7f85d07ee79e6522f53961626e525ee29989 sha384| 6a372e2867442826b64d1e3bca4b35e18d12d5df25e89decff214023d45f7f85d07ee79e6522f53961626e525ee29988 brebis-0.10/tests/expected_hash/archash/sha384hashziparchive.conf0000644000000000000000000000023212462537262023225 0ustar 00000000000000[main] name=sha384hashziparchive type=archive path=tests/expected_hash/archash/myzip.zip files_list=tests/expected_hash/archash/sha384hashziparchive-list brebis-0.10/tests/expected_hash/archash/sha512hashtararchive-list0000644000000000000000000000050512462537262023232 0ustar 00000000000000[archive] # hash test for a tar.gz archive - good value is d72eef1d9c42615f6b2a92848e8fa65ffd4276d91d9976fa8c644b41c15d91441ae42f897b30a2403795a876b14ae6ed8addca4a74f24839f6506a29e662e587 sha512| d72eef1d9c42615f6b2a92848e8fa65ffd4276d91d9976fa8c644b41c15d91441ae42f897b30a2403795a876b14ae6ed8addca4a74f24839f6506a29e662e588 brebis-0.10/tests/expected_hash/archash/sha512hashtararchive.conf0000644000000000000000000000023512462537262023205 0ustar 00000000000000[main] name=sha512hashtararchive type=archive path=tests/expected_hash/archash/mytar.tar.gz files_list=tests/expected_hash/archash/sha512hashtararchive-list brebis-0.10/tests/expected_hash/archash/sha512hashziparchive-list0000644000000000000000000000050212462537262023243 0ustar 00000000000000[archive] # hash test for a zip archive - good value is c177ca5b618ca613f27c44991eabb922d589691000fa602a0d2767ba84b317c653e6ed541f5922d201d2e65158eee4cfb7d87665bbe1d31c07f636bb25dac7b3 sha512| c177ca5b618ca613f27c44991eabb922d589691000fa602a0d2767ba84b317c653e6ed541f5922d201d2e65158eee4cfb7d87665bbe1d31c07f636bb25dac7b2 brebis-0.10/tests/expected_hash/archash/sha512hashziparchive.conf0000644000000000000000000000023212462537262023216 0ustar 00000000000000[main] name=sha512hashziparchive type=archive path=tests/expected_hash/archash/myzip.zip files_list=tests/expected_hash/archash/sha512hashziparchive-list brebis-0.10/tests/expected_hash/bar.bz20000644000000000000000000000012612462537262016167 0ustar 00000000000000BZh91AY&SYO"AQ@?g HjyI7F0ٲY#g^+b&-FϜvK\WH H brebis-0.10/tests/expected_hash/bar.gz0000644000000000000000000000016212462537262016112 0ustar 00000000000000:nNbar%10 {^ϠX8"=af͚>8X56$ Jkϐ,gbYQstvtEV'xK 8[vsbrebis-0.10/tests/expected_hash/bar.xz0000644000000000000000000000010412462537262016127 0ustar 000000000000007zXZִF!t/ lzma test X" g}YZbrebis-0.10/tests/expected_hash/bar.zip0000644000000000000000000000212712462537262016277 0ustar 00000000000000PK !u=bar/UT YLXLux PK ʔu=h{In bar/bar5UT  YL YLux chop suey PK Ɣu=yabar/bar4UT YLYLux My tailor is rich PK ؔu=bar/bar6UT 'YL'YLux Let's grab something to eat PK u=:{bar/bar3UT XLXLux Paris PK u=kIbar/bar1UT XLXLux doooh! PK u=22p bar/bar2UT XLXLux Stanford University PK !u=Abar/UTYLux PK ʔu=h{In >bar/bar5UT YLux PK Ɣu=yabar/bar4UTYLux PK ؔu=bar/bar6UT'YLux PK u=:{<bar/bar3UTXLux PK u=kIbar/bar1UTXLux PK u=22p bar/bar2UTXLux PK#brebis-0.10/tests/expected_hash/bar/bar10000644000000000000000000000000712462537262016316 0ustar 00000000000000doooh! brebis-0.10/tests/expected_hash/bar/bar20000644000000000000000000000002412462537262016316 0ustar 00000000000000Stanford University brebis-0.10/tests/expected_hash/bar/bar30000644000000000000000000000000612462537262016317 0ustar 00000000000000Paris brebis-0.10/tests/expected_hash/bar/bar40000644000000000000000000000002212462537262016316 0ustar 00000000000000My tailor is rich brebis-0.10/tests/expected_hash/bar/bar50000644000000000000000000000001212462537262016316 0ustar 00000000000000chop suey brebis-0.10/tests/expected_hash/bar/bar60000644000000000000000000000003412462537262016323 0ustar 00000000000000Let's grab something to eat brebis-0.10/tests/expected_hash/bzip2-list0000644000000000000000000000002512462537262016724 0ustar 00000000000000[files] bar| md5|768 brebis-0.10/tests/expected_hash/files-list0000644000000000000000000000102512462537262017001 0ustar 00000000000000[files] foos/foo1| md5|3718422a0bf93f7fc46cff6b5e660ff8 foos/foo2| sha1|e0f58dcc57caad2182f701eb63f0c81f347d3fe5 foos/foo3| sha224|g3c1d88024b6e2e333cbf8bed96182a62fbafaf2aea6dd8b17639552 foos/foo4| sha256|35a670af482f46a76f8033e05cca7a53a58456fa42ef47ea56ffd2b16e408863 foos/foo5| sha384|744e19f5c4258a573400b5059747d88797b150c08456e406e6473bd777332c5f66afe66c5bf77820906b97961c124810 foos/foo6| sha512|c46dcb0f5124bd681cb5b91c812d2982efce703806026b1f9ffdeadf45c4128cd3e61fa939a0bc89af317e70d0d6c74b666edff9bd7ad9052cb8e7f42c8f7644 brebis-0.10/tests/expected_hash/filetree-list0000644000000000000000000000076712462537262017512 0ustar 00000000000000[files] bar1| md5|9151b18e6dd21a734890b56b5a15d24b bar2| sha1|3676c9d706eb6f6b02eb5d67ba86a9b3e855c13d bar3| sha224|33975be818906ec2228074d2a4438ef8f78ec33792aac4d037ad8f95 bar4| sha256|d67f2596a1ef0893f176b0b68d6e1445a9acd5fda2f5a073f1318ff4b75e5b84 bar5| sha384|65305af91a511f6d091237f97e5dbccd1427c6f48bcd509acd0a71938bfe9d708cfb93c3d163f96b328f6cabb80b0860 bar6| sha512|g0fc5b14ab8b242e4c6462deee58a0a10fabdb4bc792174fdeec92cd12df8d5a7a8fed9545e2c109b3cecd345d970afaea0183ea0dd19371913cb55b23b9fc2e brebis-0.10/tests/expected_hash/foos.tar.gz0000644000000000000000000000053312462537262017103 0ustar 00000000000000JLLn0 @9+ӎG-(TZ N*NaZ R@r$٘},-*P3Xsd ҆"S1\Wz ۖmScm0Ƙ\ H Wgf2p MxS s1&GZIsPrU5w,/Nc{'N6~r;s]7H!Xfoo/foo1UTS/Lux PK n=Afoo/bar/UTLux PKbrebis-0.10/tests/expected_mode/arcmode/mode644.tar.gz0000644000000000000000000000030012462537262020722 0ustar 00000000000000LM 0%7L~ϓ ҮmhQ)E,0oa.-r92!]03669=hnޕ9p g;w5'*J;m\r꿗9{-ͨ$r CgX6?BT9(brebis-0.10/tests/expected_mode/arcmode/mode644.zip0000644000000000000000000000067612462537262020337 0ustar 00000000000000PK n=foo/UT S/LLux PK n=foo/foo1UT S/LS/Lux PK n=foo/bar/UT LLux PK n=Afoo/UTS/Lux PK n=>foo/foo1UTS/Lux PK n=Afoo/bar/UTLux PKbrebis-0.10/tests/expected_mode/arcmode/mode755.tar.gz0000755000000000000000000000030012462537262020730 0ustar 00000000000000LM 0%7L~ϓ ҮmhQ)E,0oa.-r92!]03669=hnޕ9p g;w5'*J;m\r꿗9{-ͨ$r CgX6?BT9(brebis-0.10/tests/expected_mode/arcmode/mode755.zip0000755000000000000000000000067612462537262020345 0ustar 00000000000000PK n=foo/UT S/LLux PK n=foo/foo1UT S/LS/Lux PK n=foo/bar/UT LLux PK n=Afoo/UTS/Lux PK n=>foo/foo1UTS/Lux PK n=Afoo/bar/UTLux PKbrebis-0.10/tests/expected_mode/arcmode/tarmode4644-list0000644000000000000000000000006712462537262021274 0ustar 00000000000000[archive] # testing mode, good mode is 4644 mode| 4600 brebis-0.10/tests/expected_mode/arcmode/tarmode4644.conf0000644000000000000000000000021612462537262021243 0ustar 00000000000000[main] name=tarmode4644 type=archive path=tests/expected_mode/arcmode/mode4644.tar.gz files_list=tests/expected_mode/arcmode/tarmode4644-list brebis-0.10/tests/expected_mode/arcmode/tarmode644-list0000644000000000000000000000006512462537262021206 0ustar 00000000000000[archive] # testing mode, good mode is 644 mode| 654 brebis-0.10/tests/expected_mode/arcmode/tarmode644.conf0000644000000000000000000000021312462537262021154 0ustar 00000000000000[main] name=tarmode644 type=archive path=tests/expected_mode/arcmode/mode644.tar.gz files_list=tests/expected_mode/arcmode/tarmode644-list brebis-0.10/tests/expected_mode/arcmode/tarmode755-list0000644000000000000000000000006512462537262021211 0ustar 00000000000000[archive] # testing mode, good mode is 755 mode| 750 brebis-0.10/tests/expected_mode/arcmode/tarmode755.conf0000644000000000000000000000021312462537262021157 0ustar 00000000000000[main] name=tarmode755 type=archive path=tests/expected_mode/arcmode/mode755.tar.gz files_list=tests/expected_mode/arcmode/tarmode755-list brebis-0.10/tests/expected_mode/arcmode/zipmode4644-list0000644000000000000000000000006712462537262021310 0ustar 00000000000000[archive] # testing mode, good mode is 4644 mode| 4600 brebis-0.10/tests/expected_mode/arcmode/zipmode4644.conf0000644000000000000000000000021312462537262021254 0ustar 00000000000000[main] name=zipmode4644 type=archive path=tests/expected_mode/arcmode/mode4644.zip files_list=tests/expected_mode/arcmode/zipmode4644-list brebis-0.10/tests/expected_mode/arcmode/zipmode644-list0000644000000000000000000000006512462537262021222 0ustar 00000000000000[archive] # testing mode, good mode is 644 mode| 654 brebis-0.10/tests/expected_mode/arcmode/zipmode644.conf0000644000000000000000000000021012462537262021165 0ustar 00000000000000[main] name=zipmode644 type=archive path=tests/expected_mode/arcmode/mode644.zip files_list=tests/expected_mode/arcmode/zipmode644-list brebis-0.10/tests/expected_mode/arcmode/zipmode755-list0000644000000000000000000000006512462537262021225 0ustar 00000000000000[archive] # testing mode, good mode is 755 mode| 750 brebis-0.10/tests/expected_mode/arcmode/zipmode755.conf0000644000000000000000000000021012462537262021170 0ustar 00000000000000[main] name=zipmode755 type=archive path=tests/expected_mode/arcmode/mode755.zip files_list=tests/expected_mode/arcmode/zipmode755-list brebis-0.10/tests/expected_mode/files-list0000644000000000000000000000013412462537262017002 0ustar 00000000000000[files] foos/foo1| mode|644 foos/foo2| mode|755 foos/bar/foo3| mode|4644 foos/bar| mode|754 brebis-0.10/tests/expected_mode/foo/bar0000755000000000000000000000000012462537262016251 0ustar 00000000000000brebis-0.10/tests/expected_mode/foo/foo10000644000000000000000000000000012462537262016346 0ustar 00000000000000brebis-0.10/tests/expected_mode/foos.tar.gz0000644000000000000000000000030012462537262017074 0ustar 00000000000000LM 0%7L~ϓ ҮmhQ)E,0oa.-r92!]03669=hnޕ9p g;w5'*J;m\r꿗9{-ͨ$r CgX6?BT9(brebis-0.10/tests/expected_mode/tree.conf0000644000000000000000000000016212462537262016613 0ustar 00000000000000[main] name=expectedtreemode type=tree path=tests/expected_mode/foo files_list=tests/expected_mode/treefiles-list brebis-0.10/tests/expected_mode/treefiles-list0000644000000000000000000000004512462537262017663 0ustar 00000000000000[files] foo1| mode|664 bar| mode|754 brebis-0.10/tests/expected_type/archive.conf0000644000000000000000000000016512462537262017335 0ustar 00000000000000[main] name=expectedtype type=archive path=tests/expected_type/foos.tar.gz files_list=tests/expected_type/files-list brebis-0.10/tests/expected_type/files-list0000644000000000000000000000020612462537262017037 0ustar 00000000000000[files] foos/foo1| type|f foos/foo2| type|c foos/foo3| type|d foos/foo4| type|s foos/foo5| type|b foos/foo6| type|k foos/foo7| type|o brebis-0.10/tests/expected_type/filetree-list0000644000000000000000000000016312462537262017536 0ustar 00000000000000[files] foo1| type|d foo2| type|c foo3| type|d foo4| type|s foo5| type|b foo6| type|k bar| type|f bar/bar1| type|o brebis-0.10/tests/expected_type/foos.tar.gz0000644000000000000000000000031712462537262017141 0ustar 00000000000000B(LM 0@%7p&yJ`Q޷h L#yY֓%֒]9XTB\AO:xM2} gs_i΋ឞ33'PgM {/Hz-uϜjb8 Z<k$3(brebis-0.10/tests/expected_type/foos/bar/bar10000644000000000000000000000000012462537262017313 0ustar 00000000000000brebis-0.10/tests/expected_type/foos/foo10000644000000000000000000000000012462537262016566 0ustar 00000000000000brebis-0.10/tests/expected_type/foos/foo20000644000000000000000000000000012462537262016567 0ustar 00000000000000brebis-0.10/tests/expected_type/foos/foo30000644000000000000000000000000012462537262016570 0ustar 00000000000000brebis-0.10/tests/expected_type/foos/foo40000644000000000000000000000000012462537262016571 0ustar 00000000000000brebis-0.10/tests/expected_type/foos/foo50000644000000000000000000000000012462537262016572 0ustar 00000000000000brebis-0.10/tests/expected_type/foos/foo60000644000000000000000000000000012462537262016573 0ustar 00000000000000brebis-0.10/tests/expected_type/tree.conf0000644000000000000000000000016212462537262016650 0ustar 00000000000000[main] name=expectedtreetype type=tree path=tests/expected_type/foos files_list=tests/expected_type/filetree-list brebis-0.10/tests/expected_uid_gid/arc_uid_gid/tar-uid-gid-list0000644000000000000000000000013112462537262022714 0ustar 00000000000000[archive] # Test the uid and gid of the file | good value for both is 1000 uid| 5 gid| 6 brebis-0.10/tests/expected_uid_gid/arc_uid_gid/tar-uid-gid.conf0000644000000000000000000000023212462537262022671 0ustar 00000000000000[main] name=taruid-gid type=archive path=tests/expected_uid_gid/arc_uid_gid/uid-gid.tar.gz files_list=tests/expected_uid_gid/arc_uid_gid/tar-uid-gid-list brebis-0.10/tests/expected_uid_gid/arc_uid_gid/uid-gid.tar.gz0000644000000000000000000000027012462537262022367 0ustar 00000000000000pLM 0=E=3m~BM*} d1 ||4La`T҈UIʕ^,/q*qhwkեq.G[!_[K5j*)O8[OGKkOwR/3(brebis-0.10/tests/expected_uid_gid/arc_uid_gid/uid-gid.zip0000644000000000000000000000067612462537262021776 0ustar 00000000000000PK n=foo/UT S/LLux PK n=foo/foo1UT S/LS/Lux PK n=foo/bar/UT LLux PK n=Afoo/UTS/Lux PK n=>foo/foo1UTS/Lux PK n=Afoo/bar/UTLux PKbrebis-0.10/tests/expected_uid_gid/arc_uid_gid/zip-uid-gid-list0000644000000000000000000000013112462537262022730 0ustar 00000000000000[archive] # Test the uid and gid of the file | good value for both is 1000 uid| 5 gid| 6 brebis-0.10/tests/expected_uid_gid/arc_uid_gid/zip-uid-gid.conf0000644000000000000000000000022712462537262022711 0ustar 00000000000000[main] name=zipuid-gid type=archive path=tests/expected_uid_gid/arc_uid_gid/uid-gid.zip files_list=tests/expected_uid_gid/arc_uid_gid/zip-uid-gid-list brebis-0.10/tests/expected_uid_gid/archive.conf0000644000000000000000000000016312462537262017756 0ustar 00000000000000[main] name=essai type=archive path=tests/expected_uid_gid/foo.tar.gz files_list=tests/expected_uid_gid/files-list brebis-0.10/tests/expected_uid_gid/files-list0000644000000000000000000000004412462537262017462 0ustar 00000000000000[files] foo/foo1| uid|1001 gid|1001 brebis-0.10/tests/expected_uid_gid/foo.tar.gz0000644000000000000000000000027012462537262017377 0ustar 00000000000000pLM 0=E=3m~BM*} d1 ||4La`T҈UIʕ^,/q*qhwkեq.G[!_[K5j*)O8[OGKkOwR/3(brebis-0.10/tests/expected_uid_gid/foos.tar.gz0000644000000000000000000000032212462537262017560 0ustar 00000000000000NLM 0{yR(m}no,f`x:$ʢ[o`6k)Y#-6\C/Va?O*X#إ|_rBR^v>{{?dgIy( uxk\?i(brebis-0.10/tests/expected_uid_gid/multiplefiles-list0000644000000000000000000000010212462537262021231 0ustar 00000000000000[files] foos/foo1| uid|1001 gid|1001 foos/foo2| uid|1001 gid|1001 brebis-0.10/tests/expected_uid_gid/multiplefiles.conf0000644000000000000000000000020412462537262021207 0ustar 00000000000000[main] name=multiplefiles type=archive path=tests/expected_uid_gid/foos.tar.gz files_list=tests/expected_uid_gid/multiplefiles-list brebis-0.10/tests/file_size/archive.conf0000644000000000000000000000015012462537262016436 0ustar 00000000000000[main] name=essai type=archive path=tests/file_size/essai.tar.bz2 files_list=tests/file_size/essai-list brebis-0.10/tests/file_size/arcsize/biggerthantararchivesize.conf0000644000000000000000000000021412462537262023534 0ustar 00000000000000[main] name=biggerthantaressai type=archive path=tests/file_size/essai.tar.bz2 files_list=tests/file_size/arcsize/biggerthantararcsize-list brebis-0.10/tests/file_size/arcsize/biggerthantararcsize-list0000644000000000000000000000007112462537262022706 0ustar 00000000000000[archive] # equality test - good value 3161256 size| <12 brebis-0.10/tests/file_size/arcsize/biggerthanziparchivesize.conf0000644000000000000000000000021012462537262023544 0ustar 00000000000000[main] name=biggerthanzipessai type=archive path=tests/file_size/myzip.zip files_list=tests/file_size/arcsize/biggerthanziparcsize-list brebis-0.10/tests/file_size/arcsize/biggerthanziparcsize-list0000644000000000000000000000007112462537262022722 0ustar 00000000000000[archive] # equality test - good value 3161256 size| <12 brebis-0.10/tests/file_size/arcsize/equaltararchivesize.conf0000644000000000000000000000020212462537262022526 0ustar 00000000000000[main] name=equaltaressai type=archive path=tests/file_size/essai.tar.bz2 files_list=tests/file_size/arcsize/equaltararcsize-list brebis-0.10/tests/file_size/arcsize/equaltararcsize-list0000644000000000000000000000007612462537262021710 0ustar 00000000000000[archive] # equality test - good value 3161256 size| =3161257 brebis-0.10/tests/file_size/arcsize/equalziparchivesize.conf0000644000000000000000000000017612462537262022554 0ustar 00000000000000[main] name=equalzipessai type=archive path=tests/file_size/myzip.zip files_list=tests/file_size/arcsize/equalziparcsize-list brebis-0.10/tests/file_size/arcsize/equalziparcsize-list0000644000000000000000000000007712462537262021725 0ustar 00000000000000[archive] # equality test - good value 3161256 size| =31612570 brebis-0.10/tests/file_size/arcsize/smallerthantararchivesize.conf0000644000000000000000000000021612462537262023736 0ustar 00000000000000[main] name=smallerthantaressai type=archive path=tests/file_size/essai.tar.bz2 files_list=tests/file_size/arcsize/smallerthantararcsize-list brebis-0.10/tests/file_size/arcsize/smallerthantararcsize-list0000644000000000000000000000007112462537262023106 0ustar 00000000000000[archive] # equality test - good value 3161256 size| >4G brebis-0.10/tests/file_size/arcsize/smallerthanziparchivesize.conf0000644000000000000000000000021212462537262023746 0ustar 00000000000000[main] name=smallerthanzipessai type=archive path=tests/file_size/myzip.zip files_list=tests/file_size/arcsize/smallerthanziparcsize-list brebis-0.10/tests/file_size/arcsize/smallerthanziparcsize-list0000644000000000000000000000007112462537262023122 0ustar 00000000000000[archive] # equality test - good value 3161256 size| >4G brebis-0.10/tests/file_size/essai-list0000644000000000000000000000047312462537262016156 0ustar 00000000000000[files] # mandatory for test_checktar_missing_equality() in tests.py essai/dir/toto| =512M # mandatory for test_checktar_missing_bigger_than() in tests.py essai/titi| >512M # mandatory for test_checktar_missing_equality() in tests.py essai/dir/toutou| <19 # checking if missing files are identified essai/dir/zozo| brebis-0.10/tests/file_size/essai-list20000644000000000000000000000010212462537262016225 0ustar 00000000000000[files] myzip/titi| =512M myzip/foo/toto| >512M myzip/toutou| <2K brebis-0.10/tests/file_size/essai.tar.bz20000644000000000000000000000041412462537262016461 0ustar 00000000000000BZh91AY&SY#{@ޠ 0(2 i&CF1LOShj4ӂs[bu0abRdDO(mR1H$iDsI'ޘϕ?o. ݸM+Q! N䦐Bq'8m[Q Y]`X-ԂԂ+KlKRaH,+t$M!jQ@!5#2 bBWKBJPL'4oKrKeؔ)ĺӪiui]BBN brebis-0.10/tests/file_size/missing-bigger-than/mygzip-list0000644000000000000000000000002412462537262022217 0ustar 00000000000000[files] mygzip| >30 brebis-0.10/tests/file_size/missing-bigger-than/mygzip.conf0000644000000000000000000000010612462537262022173 0ustar 00000000000000[main] name=mygzip type=archive path=mygzip.gz files_list=mygzip-list brebis-0.10/tests/file_size/missing-bigger-than/mygzip.gz0000644000000000000000000000006212462537262021667 0ustar 00000000000000ĈNmygzipHWMS/WH,JU/|2brebis-0.10/tests/file_size/missing-smaller-than/mygzip-list0000644000000000000000000000002312462537262022416 0ustar 00000000000000[files] mygzip| <3 brebis-0.10/tests/file_size/missing-smaller-than/mygzip.conf0000644000000000000000000000010612462537262022373 0ustar 00000000000000[main] name=mygzip type=archive path=mygzip.gz files_list=mygzip-list brebis-0.10/tests/file_size/missing-smaller-than/mygzip.gz0000644000000000000000000000006212462537262022067 0ustar 00000000000000ĈNmygzipHWMS/WH,JU/|2brebis-0.10/tests/file_size/mygzip-list0000644000000000000000000000002412462537262016361 0ustar 00000000000000[files] mygzip| =30 brebis-0.10/tests/file_size/mygzip.conf0000644000000000000000000000010612462537262016335 0ustar 00000000000000[main] name=mygzip type=archive path=mygzip.gz files_list=mygzip-list brebis-0.10/tests/file_size/mygzip.gz0000644000000000000000000000006212462537262016031 0ustar 00000000000000ĈNmygzipHWMS/WH,JU/|2brebis-0.10/tests/file_size/myzip.zip0000644000000000000000000007537612462537262016070 0ustar 00000000000000PK B ;myzip/UT !KKux PK H ;6))_kFO+׺F IbOcIa wb]ۢ_ri½S q֢ FEָs3SdɯԚD*ƨpkL F..&2e%9%9; 8.b"b"tv6&@L6^ WdV_CHMm,^2VOin`1q\#_l~FDǔlfmTCJcJ1.p^&(N" ?f0m A%u`o=d'(r5^ @]Qcۃfw \~!yɰ,5+Q~s͐"<,/pXHA!?Ap sZKw4+x0<>p (62=oŷ_PRsQ>Ox5ʉ,`ڂd(Xxz} c~ZOP= 0?^3xDw~_rҨ?s­k:0NEH)G9Q k} 8m.Xj6' yrۨ(\maISD,{_E~(םBΞd7EZ]u.FPs1԰NR =j<6I [\qz@f``ʜB0;ZUbr`㟑%b|Rzv9F8 ,׹=?s)r6:q ~]FUQ:CcR|%g" v *Wߡ d9<(Pʗ< ̜x~#1R m-^@Ƕw^ KN~[O* : 19{PnLU1SH%Ǥ֊n`O聏(JyXi6jr@Fy!*O72T,'f.w @ѤM8"o,[EǙ7(%QX)5g9cG&I ,t˹ڞfU=3wr-fx9zɨ,!Zu1dBNs6ja]YhQ+TmI[yk9(5#, {ш{ stBQXcx,#SD)f \3B+(ͻenAPo`,Ea}g2veN3z-K.W/qa]eSaNX  n<Gn2ZNJ#a^5P <<xW't:b5rg?#cר/W3d%7=0J4<јoMjQMn̕\% %T {i=5įZ ]M <x˛7VyCe94T}3 %3 -Q{id~iVoں'!.8DX8LzلX~fRa0}p8V `C^L2Hg}_%CYr!޺;^Okqw>G9tp7$]2$|Q'|p(\pAK+98RI}7u>K K6nrwӆA/^I@퀡1g8N!ƒJ R":vFJV6cJX9J˂J~yRU7h^)A_I"eSf$qA hcsh))Jȼx;/Cb*;gZ5`5~k{HqX%BMZPYRE-b,~FA#՟:.eYv <*-p WwNs fsgL67 5]Ӈ$/zn[= Vh Ǣ|rI(W).%aK\bڟ>V Vmm8/7һ GQswH̪<ڛ>d<] HXR˙|k2إH Gs#T $6 A؉뗱I2imV"?׮[붡1ч8TnY GSZ\2e{ 琣,x,() oGđ{cбmg;Smfݮw<+L{%2&v*140~# avoǫV:O~ҿW7ʔɸd 9Fћ.,60{Jf\Bz$Sň "&4NgL(M}_롞_ [()˝26WYJ^Sv3ā|HϘ+O [nZ"Rp!ǹ"D$E1WΦM.(}gFzaHl4]tHq@dHnkʝ$Fizr'onk ܩˊN$|gOs&N"GE\:,ŁI!  뎪 2P}7 ? ;W)3?a#˱Mff$GGo/m_p)7" 0M\ "/(,T/T`H٠!{'K@ hX-Uh`ds};N٘= D K?nbKgCb䝻V*LdZR}F+*"읊CqvP vظpy'oqd6 *1? {yc+Zbd h]kR_lN/KdgIVYGxOaXU J qp#(&L֡5Q6Y&8r"IGV~Nb޿A_<-pDɄ2wV[POuرux@K)rOج*OrԱ): <¹"]';ÔRF #ЋL3T b6F4"3M!1C,A 7 ϛS[6N#3|b?KMɋRAdA-a9X]#b+7Jr8JȚ#/N6H[kSGwiPk}i8OY u_* I z䁩$hPoJb PVBRsE rݲ蔈Y2CiY}4t4Y#Wja֓a ~Wd<2|xR;3Lj'[?BPz%*s*쫲>q4(6}Pi<+ICa)`a_$ɾ-{yV88aW=ѶBA1K+n-vF[3E <.N* V2Ԭo0 ,%TGyiI UqNbŐq18 6Ĭ۴hI:Lx+3l7n%'c /*ueqj5Xa[nX,gOǖ2C[/E?ndFPs T"֨Ϛŝdc 3K䡎8jZ+h/qw2A/ 0Py]S"Bw.Bo3H ~nD^q[맂7֥zxY}]Xuɚo%g :z I)?r&P{35=cNd-2(Dr ~߷bG9|h>4ky X팃PǩHWmRXu‘2ؗeow(UK C@;, .9pNA+w!~|TM1 k Xw-3njQR1N3SmJPt3^t1aPpE! y6kma͋}3"5.oeH2ViP=QZmc(˜' mhp g a"hUލUq>syBM+D|\0gF =9wހ@6(46yъ/;8݊W7VRgJ5YRL@ LNA%ԏ5tTwq2[iI~R\Cxac݄eqt$x1j/{<}{.e~;^,'_=2$>\H rO9`qhO|`+kbF6cC 'P5tw(jdL.me~\Ec+"X#6 CRl^T8!G˔ʀN}ꏧ}_ɕ.ܳxU=yI г&L #wtk{ǛKoMb͎Ha%m1_) cmľg ([;>9jfVJx5)he:l;q_P-rFbU]j1rF( &aB5 fp9"6\UE ,>m& ͭYC^Ms P$Όxjp`Xwpψ7CDյ'5" }uE9$=w(AQ06c1̪@@r"|Va@)<̱شM^ź"s$AiTOg@_r,8R2& p`H53xu+*IBfJc6@ZCY_v\M+ByA`rx x\W_2\fӿs{f}cToiF?W7jN}e@k/DMcY*Cc&|&,0lWB%8TQpv-+ ABq$K *Dj/nRX(=쥳 9̛?'MQw];WxQZgՒK :ץK<<P|s=Ks{YV"Qh5f~0`En OZP_* 以g۝,#=57%9n0 r FCN!TjٔX8 D/S_Uy$ xI '*R>Fv&WfG1<c&7Ať;H47X] Ax'$85@pFϠOԤ&' O7652}ROU[iO$v{AH,`S];Q@/Wp}4̻'z{W&~(E8OmF dM"IX"lj&<=A!f؟G0)T#~,Ѝ ~<o񷀝s| 9"1iLi#ya2 ݦK咷sv+~aߧt0DKyf,"`5˔ !ӣ$7Ќ/- :]?v[4KKf]}o">T!!5à]"xe`}K/ ok=bՎX5T5jwtH87h OSa +a t@zsᲫ}c6/},UYn.F@!'bԕqjCj/bȍFI 5)s0?P:lDޛ_+ ,As|OJODȱcCS J5X!E5z )<}T_ix/=)Z F=, $9^ H+,wjEe;>1.SXN'^e)Xٗτ23奄 9WiBp42&n蚇[cWM͍MQc.md-qAG ɱ?[v=X6K\Zߪ Rý#U+<.VIbmk ,~ҝ-J&; .&j ܈ŋ);F|/_-5EW:\Yv9HAm$ ٗ$@1`.ڝ1{[ɸiai)a݇6h)"?)O '^BJl(M}s s(s'6K1@еw8tS&g6d( Ԗgܧ9&RI2V٢~۲ G8i8\X fGY^QC9?gTB^.DQk7 9¬],!ԥ.t>,QG1E.=}IiMcŗRv@%y)ʋ?9B2`@Cv-`#4{,3ů+z ~Nn=z~Vj:GA k~@ ((&~Pذ 1qЋʷGY+/(ƶCh'e`܏\H[a9LoB:G`DيT8+LnR =?efK ϏXʾ4HI6-^А'ÑRUԀ/[i{38u.&&k_7yˉ^k\e{}9"G6=BN E9}P8i0Û+(b`z>j9P+k&^.!=`2e|5>m#d_n7e>ij@t\l'kp7>*`Ny;'ONuRa܃p -9aAvZnx r(}Px`p7X{%olMk *T);" 9K xpaطc0u ,IÃΞuݪ Davf˽l~yX:85#yal+M+GzotD GyY` NFèx,zo(W:j(jKzTtU "7Usy<@1~S)ȔzOy—.Z0*r4gbwth*gg 븼ְ2Jn_~80&P%PmlzźO.vEd;o00LK7=@,ÔlG =o7=ݱ+0bZjui4=mP[}/E'; ]kcȏGqd\W0Ӑ[a< cV@*mŏ8aKC/{\Gbj3~sa!k$ ,,,FyM=SubzW>?:)vPylc%U LYH J3"Df jE9}~>JkQ*uē@I/R7E@"#s c|=oa*Kh>{)YsRX?X_Zq&x3Vk#JBS&t /AQaiӘW:-N0;xr5b3ZScb /Ա2-j3Y34f?raҞe\nl~)h@YFI@HtJ#"~zYeSnTM1.,BNTFn>a8J°"7%J^  XxGz ^b~eTfMg?yun,X e۴1VU_D)PHw<,VJszN*(܍ل߁`ˇb}Uk`˃uWntZ΄8 /6x: N{-rХ)rv0,^D\Vqāq_s#[9(3k8cCrMf^TD"}u>9g蘭?:G[ *}4ZdsnSȉדK)/ۮ|bQ!V-e_{u}0 MYR(_}(!: Vu즛b* "8hc5F"^iL`#%BHS-`0DTKJ2w~ygp#+amэK{yei؍>iQ|aѵloP)(Mix`En o&_·5Lg(l uQga>HN,S&BXH{9hevi=n34]KY.h,Wgh;*c~$Jtlq;Pk7}gKp?0rw IA۾jAugR pV7w&2#xPK B ;(( myzip/toutouUT !K!Kux vim/Z"mbrT;K6^6%pіaDve9u=1wՂ13ܨE$D+ \6Qm0q]rÁN0*:z# JHtK6>ɕQp3zFLRGa]@beABTHy|άdWM,"1ѥ[My p.Jq +n&[4eca`W:{:M8pR{R0&EmJϿK`%b%) =P ϫa{$#&{ MY Q8vsiNŸPVaߦRHY^P%P9i@.DP3SQت.jv"7<m19lzh 4HO\$dz齮Y#g=5ޭfM5gICdUC2n9&z\4a3AYF矠Ō%gڣ՟(LDK~06m1+jC#y:Pq6r3'p jt꥾>gddjRP:\FxnV ̚Bc\"wI ˟v8 l>3`#6%QWǾؗ[CxS@[rս+F4Y^ͺ7FGvU&ꥪ m"o&|pʒgkWsșJh,2S72孠h_*WNou ƚ)zH+DZ@ }Jk0 Y iW2 /wNp:2Sbqwvh=lau'~K;syAYkIy{,c:I9dȾ4 9%wb,} UZ!$:˷R[~dԓ;qUBdE Qx[ˌ(v9pޣ_S|֨ī,58j5{LPesIzC뙲ݔ%VST}+75E (=)L^P:5Ovx  P*S+O=_68P܄rSʯ,߅K~\ `*ͽ P(nZtjKMcJ8uIoӵ7r~mXe(辬UgFME.p5Ff?L[viv~hVϜv=sGpKČFo7H>jRrעQ>8.uo{{=oc#BFxtIv)l^Ū8]0SGX *MF}̂HwL0@BJ7ϫ8ژR_K]Ѣa^w7a ׉I\m>!6IfjB\4*n'o3MmRh0weT`¨v#+!KsS*RVN!ЀtiTao~pz5vO]k->]SĒxH3[D3/}$2Es$jZX+%N]X5Y.4"ӳp{+'T3k"bDATQ7SV180(UwK@zfg6ő׎:d ;tUZQIR写}P(gWr86~Z`DSg@P8*~DrrSV2 6 Y-o4w>W zx.V7e aT.3bt` d @z8_ƴWJVޠq-_4jO9\]Hgo̽;鲆D-)KHmf*ܘV\+V 68a!ޭ&~с-o`}4f%9kmՀ}<EV-W޻_ l|+F]aəWz˴!J!dK+(]2¬1C:] j;}É-ۛ~y2Pbzhy-Y+4Oܔ@l`#`;\;83MF?7? $EU:Kt.7Re(w0QT}׎ \i%'GPrZ>^tSPM'mޘtE;A$*hN)`^K[vDēA";2'\գJoG(GD-_[*%]S_t2oWe(fwj=1 2 <]+-bJqԠ !F̠`Vhv_v_R!{]f$3=>G&˥*AcCǪS>A^%7,4V% tKTfr>4J;1*oԮP!+ x}{'JrL5.N}i B"rx''@pyEq*(/'zuLJ, L2C`۞, =6SoEXͿlgsae8I-XtPjWԳ;QI;!S #p:Xy ooEΦ`hgjH`Tpc@b&|ҦDkwpSmIMJJ [.CN}cmg}(ӤˣF ;t'FJ$_y>甡5yC=g>]u!_6Z+ % nU >}Ry )ʖt%ְV#PoS"?CR~X&c.JGB;sll˙-Ju2*8P}heI6"؍154oHjnj>YutP( NS&P=Y]]G@H.ɘ fxhR.vҭ%>q ѥ⥅ɢ w&KwQ)xV^;G"T=5ŷxWIl:pd[E}VM* E4a1554+HܩZ wBeqiiBbZl-;K0RC~?PH.R:FsOB>%Dfuҡ_m75,">`J6pٿI(ΔH ُrQ\R"0o[ڼۛ'|YwS,`.6#iݱ)Psh̄&įG SmYϘKn <rF\?v_QTEKw/c)+!"ō2/uř 0oh})KVG}yӼe˹>2x1z3ƝǙ2I=ƪblsJvfg(z h =+J K&atv{q;j)hZwE QkXs82B5z.1Xh<Cp? %peVqo͈I[Wn&m խ_1wx*C&|cX2[$L ď`X<ԧ&6eG͈=L.;홸T%Vf,=7A<+ؔz;?,A:ƨ3wxa_<\-թ?͠|QAX%zԾ%= :1a_Ui*h.S_ba؊ "dn)PS7_H\4GC9GQM\JF?d"@KV̇% ǨCOm$~TF'EG_EeG_3uV@y, ,n-z6Бl2J/{7pWp@ST,nc)XcHb&exDBrZaJF2eҲSM;i E Yݼt$`'2]X'6ɟr:"b))[ٝk[[@ ZaqHʅ:bLY'rgZu(}k8k6}'1uv둿=_F4ԆPC}eXm^?bߐ:r4^"qXYn\~bOG/ӭ#ePbps4L<  bדQtUeZeL]˵k^,xו5IL^7`J!In^K.&aF|qtr!o4Um~D4~ӝbhf]ۇ$i0{XT)Otg?Y/  3B'MssA`(LEqƀˢHZ}8@B0˪s ؓ?`BO溈H}Nb~/[v5aty@7jS"+r@+1c͡Je=q 93e¨`vAjlb5p\1MdqߡzBTVq~]^F Ȉ}օJ]!oh4~Xp%) RPwoRF09EUbʣF2}gKo|4=ų .5&TVyCg3VJ_ P"zX&\VΉ & }Be{D*qQ QdNJZgM4 lǓxԠ}- Bl$֋cw]ZVjMcE"74z֚:^o9}nSx݉Hu xvh|Ԗ#D6sU"UPZNvߓWB_#;|0 ph92v% ZHbQ "W^ݮ6k z*,1I X&1Xeb`Vr45 I FX{HS7W7emdR q+P.<<$Î-վEUVf, /-JX%d*\2N`L #eSk0iSK](ԓYv%V¤Q4 &vR=nԻEnx9J4XFo0ײ1ӝ/z!|77P!_D9(qyXuvy WQyqPP2uLC&ޜ;n\$80%ul]3x,~S/iHoSi 54$P"UnEݹCk=10E1}MBOa ךok?`w=irqvRM# %/nHtŖ W|+!ej*4[eN@3DES57BJl qdCFkx)4&zO!='v7&ҥk#PuN8+ sixN5YHf^dyr$eCmS^whja3I|?Jh4up!.'3|NLI{1E( E{7xH!:!Y+v;{_ц([R"Ż|,grJJF&݂]3=6nCY0WyCR-n):aU?V^ej|pvW@ABNS:ViV\B4g)yΫ7HLygĖfԸ|8"xzI+]xɨ:8xlcE8AТȌ;ԏDhZ+3J1/Hh]DB<مm0 o]&.1}~FfGa)n nZ+E/ﭶ6[?k=K:mvOzp=t/CwrY3BҴkg>ܙmb~`մq֝us.A 4'?JΌvӇT!P-&ThL[:FE݁چho mdG1/_?_ t1imc5_sIj($yFG/&@:澻ޢD.{ ?PzfGkUAZ'dɺu=D_uqCyT]5 X7Gk+G^H.~DN2#u&LM`]*L3(+ٹ%"'V]!~买/V{꟒DIV-C|pC` iZJPĵ-!Kʠj{Yʯ) #Νu|Ldw/G Z>:%)ΛV=^]V~ÎCd#7Rî#XW^k0UVS"r(bl_]Aß%YjdG͐xdd? W>[:wye gP8oԋ:=!c.sWP8 WQDWio5h. ?tZqe|g vIo\D!2#|<9 eFs' #<hXGnG*y񈞿 #,-@| `6Vt@4>{n3F4ZTX# O9lq@=a'TsJe4g*=F'^Iq` k(t^Anez?> 9svG< i{-e_>8`Ȏ~t3NQ:nsF x]!2\ 0 z"9cƦDZEFqc䉲P'c/a 6=Ň}T>QPfM90'3ݥF.Q%G.Iy.ܢOj<4ϳI$UīHPzF/ %F3r4yv:LQe:m[jE̔O w?S 0.\ᏰxQxEFdbY zICd'R;0kK@A.).Xo/H߉W4# ridsfǍM@=hݙrSR4\s$&OWmJ8Z%km4 /Wg(T,XsoG6kpC >)EB/C81K.ɦ*dKMy&.Kxȿ-5rm1#8mjA j yOses PBĀh(sz篱hV ѼK_@; O ǹVe`t go+#_UeWꦕ'BRD  hF/%THE¡X{|$ |CwVzZU(\qZq}칋:6M< 8"D<*$qi7vS^0ӋO)k PdB3j:|=Ю'a7}*rCZN3Eg(`<?"WhĺԄA|@eC!ZN s\W,o{#TJdm %,C ̄'E$nY1y&܃RVNt 2X%O@OIxTdz”7"8%B5P71S 7[, 4;2EC.*>4{-/Б9xʊOd)(kT:2WLą9qoWO`5l]te2lZX\fĻBSԠݣӧr֮f,_i!J7lI඄߱ Y?A3~zD1vh`R$RrGc&8ѵ>sF븝e::P;%pr4k^w95`*2Xlu<@bO֞Y.v=ZN55ij4]U=kQ+` N8ЉrI'`Ɍ4_X茝=H~uǟs4} c>W2OhBq5YT&|݃ wG8KXR7(oGg'`,^7 f&p7MT|úh8UHE7] \bq+pj0=^*?^G'匜ч5W]ksZGbTP7R|p[Iī2 kȯyf="*'jvpqab zShL3A#.pHlI[nRRp-BzA"eH^W>-1sҐb PЈ5ȅ{#XmVSI;][y!Z\FEDb,k2=LKɭEgVTdԁ+q `>L-T9N0Pb}HX䴈Gro.c_zx9 a ѱHtYE XC>f|\CmaURu_Y 9)/;#٬=23!to3?>-dds-JZx =6g2f SY,H~: ,ي¼ò[2vco5/kӚ@f|׺'_ wQ&k)U 609%i&Cl{v-R"Np"fFd7AU=ao6^ ymwt;YnjrN^3{O &jWu4(Wr5]XT83K.1ۭy&GAGxdG <˔ I5ػ΢^A{c^l~fhtL:mn_=Cr L-(h?y$@ݲXcX/,O\1$b]n&$:a;~v1'bZyܛ B+ (4;&&Q7Pf[``v^_5al\C/v #}R[=?]:0+7Y֌)szv͂ˮ|uHDaw\Xkj|oB-%eAL;.a3=H9F)\)r8_.G'FSgV+SVrgw'_j#>^ˏgz\vvVV3["U5w\ D +'Gqt2-~3.-8c<|zi#75oaֵ{ LbC,ET2newjHW)D5Gߑ̫Z?d 5L 3ޜu?PceK24m%ov_]Rԗ& J5X\lA"hFDzx:0 "mďA UBR_mR!RV%1pD{ /)i9n!-\09YV{M[gy #?ׄAF49aK?5 M?$;Yl&-TuwWv)`B|%q kjJh[τ[0F5DNZ%,(N@ ;`$g.W$ :q3H~A/7W#ǔY9Zt%ٓB9TWG ҧRtS, s@ :w0ւx'4!&zmpOj7Q1(x4B?edRrD/~Zi6unִ%I IvsI@PϛxC |ԣ<|l^9d 5j6wX gQhm(IyՃM܆l)Jt|kӶGVSr/7HaM˙^;ǥ,,^٥$=z pëN* [;&CPXvG2&:;ƅQE]o%?]מ[ QM(t0 >0tR4Q0ebQ.sd,ӓTtt벝O&`VDށQYxwKU0sT z|3΁+uxE"Ƅm3߉J˖yn#h#S $͡E8Xqkh*֘>T$9Y4 da?[i:rV_h-0x:Ts #Wj- ~ϩ= [ƛ/B&<|",}+>t6&jP Tŧ-Ta-C\AE»y_Hȏjop" =g/넧,b{gړ &baTpqf P M /TA~#CH9''XEf&[ s]. VUXbBÌ9G+ѹ>@'{3t* jtamc-_jQj^Uz`eq!Ձ1$B$cQ63\Rv*J::s)%ef1 sBQX]xD5OGKzQaL]dv!MɌ:0jH*7s9WtwtMmd,Z :{q#,`mHd%Xt.}aW\DU1h #J?T*a| aK*rlyoaTc(zFז Yb>6cS$}:p# M֟e s='E]~`_.TP A}gD.+.i@,Q !^gu%2NcT%1ޭ5kݍ(3{Y\!Vk70;|7ٻJk2 V4:D^gjŽ(B8.zv6YcN]Ɖ*i9chp##닆c#SK>Cޙ0֠!LUw٪ q!2xC~~?MN'6 .'控XY옂D&kUɽhD[>kܑ72^6vKhKk100_/ wd5y9 o8޵XKHpRw+S o_oIbH kg@28$o)qFtOYdgbcLh ,NY>4WL{&_zR?.ɡB8OF 1)_gayU(sclwz\*JH Zl;Vv̀MʈBXx{\h\3V+&b TuyEȷi{EңFRǬfK^Vr7BA&a9.% !J4JRԀ#63/ r+ )jZ,At#6riʵ^3G ܶ22xvX`czGSQFrsW 8X6)>3'9uj$'uQg7,6 ~,Km5 z66*5p1T(.D Ra(8I< tَ4hƤ"*}veə *v\AuhP9b0q-L9u4D=FH@SV=7o 42[?f cθkĔKgwƲCp"Rmɔ{{ Ԕ;qJ( ~4|Hiјdȸ(?tԯM;ٳ)Gd7]׍c7u#%?jәf> ~CΆ_decDhqLKɯC-W{Gex+h%RyS P4%4*0љ ]N1 V;.&=y!+_fRBaP~/Q0-|ANn_(,z,0ϒjWYɀBwU}e!zm>&ޯ2S >p߼K;4?^]Bp^6y}Aޓ2G\k'UDvl_8:5#ypA4K5Rt#tԃoF8 M/,4oڟQ(y#s&;OȾe<֢ 񬶒 (i}-Eܕ{xkXn +\cun`̞Ȅwyt!zFoj޷ 3X a#Ȋk=IT\iP :+|([Py#q̀轝"q9l5 = H`ܱ=c6@~GBiLbHPK B ;Amyzip/UT!Kux PK H ;300G # mandatory for test_checktree_missing_smaller_than() in tests.py bar/foo3| <1K # checking if missing files are identified bar/toto| brebis-0.10/tests/filetree/filetree.conf0000644000000000000000000000012612462537262016445 0ustar 00000000000000[main] name=tree type=tree path=tests/filetree/foo files_list=tests/filetree/filelist brebis-0.10/tests/filetree/foo/bar/foo30000644000000000000000000000400012462537262016112 0ustar 00000000000000brebis-0.10/tests/filetree/foo/foo10000644000000000000000000000000312462537262015343 0ustar 00000000000000yo brebis-0.10/tests/filetree/foo/foo20000644000000000000000000000000612462537262015347 0ustar 00000000000000hello brebis-0.10/tests/generatelist_private_methods/mytar.list0000644000000000000000000000001512462537262022171 0ustar 00000000000000[files] foo: brebis-0.10/tests/generatelistforgzip_private_methods/mygzip.gz0000644000000000000000000000005012462537262023421 0ustar 000000000000006Nmygzip+,VD.+Z(brebis-0.10/tests/generatelistfortar_private_methods/mytar.tar.gz0000644000000000000000000000033012462537262023641 0ustar 00000000000000kNԽ0@>E}ڎ Joo\:Tc<n8\ӡj2)ޚF8k{eD)mӎu ZnUˤ;.>' C$zF߿NY !TWӾ.+ /3ynᨫfOO=x4SD(brebis-0.10/tests/generatelistfortree_private_methods/mydir/bar/rab0000644000000000000000000000000012462537262024100 0ustar 00000000000000brebis-0.10/tests/generatelistfortree_private_methods/mydir/foo0000644000000000000000000000002312462537262023360 0ustar 00000000000000this is a foo file brebis-0.10/tests/generatelistfortree_private_methods/mydir/oof0000777000000000000000000000000012462537262024070 2fooustar 00000000000000brebis-0.10/tests/generatelistforzip_private_methods/myzip.zip0000644000000000000000000000073312462537262023275 0ustar 00000000000000PK ve?myzip/UT /qNqNux PK se? myzip/bar/UT )qN)qNux PK ve?m myzip/fooUT /qN/qNux this is a foo file PK ve?Amyzip/UT/qNux PK se? A@myzip/bar/UT)qNux PK ve?m myzip/fooUT/qNux PKbrebis-0.10/tests/gzip/mygzip-list0000644000000000000000000000001512462537262015361 0ustar 00000000000000[files] foo| brebis-0.10/tests/gzip/mygzip.conf0000644000000000000000000000010612462537262015335 0ustar 00000000000000[main] name=mygzip type=archive path=mygzip.gz files_list=mygzip-list brebis-0.10/tests/gzip/mygzip.gz0000644000000000000000000000006212462537262015031 0ustar 00000000000000ĈNmygzipHWMS/WH,JU/|2brebis-0.10/tests/listtype/mybz2.bz20000644000000000000000000000014312462537262015536 0ustar 00000000000000BZh91AY&SYMU߀@* ;l0 HjQi =CB ÐNcHnV-1˲:E{H )brebis-0.10/tests/listtype/mygzip.gz0000644000000000000000000000006212462537262015735 0ustar 00000000000000ЈNmygzipHWMS/WH,JU/|2brebis-0.10/tests/listtype/mylzma.xz0000644000000000000000000000010412462537262015745 0ustar 000000000000007zXZִF!t/ lzma test X" g}YZbrebis-0.10/tests/listtype/mytargz.tar.gz0000644000000000000000000000027412462537262016705 0ustar 00000000000000tNM 0@=En`&y-"zzҢ.tD|f dko2[E)ћ9S"bmH Ϲr?@kzW.tکS덱+!:muh.Vs~88_ܳCi7쮯]jo"sU(brebis-0.10/tests/listtype/mytree/hello0000644000000000000000000000000612462537262016405 0ustar 00000000000000hello brebis-0.10/tests/listtype/mytree/riri0000777000000000000000000000000012462537262017276 2helloustar 00000000000000brebis-0.10/tests/listtype/myzip.zip0000644000000000000000000000162012462537262015751 0ustar 00000000000000PK ')?file-missing-in-zip/UT >iN>iNux PK -)?file-missing-in-zip/foo2/UT >iN>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT >iN>iNux hi PK )?鳢file-missing-in-zip/barUT >iN>iNux bar PK )?zzofile-missing-in-zip/fooUT >iN>iNux hi PK ')?Afile-missing-in-zip/UT>iNux PK -)?ANfile-missing-in-zip/foo2/UT>iNux PK -)?zzofile-missing-in-zip/foo2/bar2UT>iNux PK )?鳢file-missing-in-zip/barUT>iNux PK )?zzoPfile-missing-in-zip/fooUT>iNux PKbrebis-0.10/tests/lzma/mylzma-list0000644000000000000000000000001512462537262015345 0ustar 00000000000000[files] foo| brebis-0.10/tests/lzma/mylzma.xz0000644000000000000000000000010412462537262015033 0ustar 000000000000007zXZִF!t/ lzma test X" g}YZbrebis-0.10/tests/tar_bz2_archive_content/archive2.conf0000644000000000000000000000023112462537262021345 0ustar 00000000000000[main] name=essai2 type=archive path=/home/chaica/progra/python/brebis/tests/titi.tar.bz2 files_list=/home/chaica/progra/python/brebis/tests/essai2-list brebis-0.10/tests/tar_bz2_archive_content/essai2-list0000644000000000000000000000003112462537262021053 0ustar 00000000000000[files] titi/toutou/foo| brebis-0.10/tests/tar_bz2_archive_content/titi.tar.bz20000644000000000000000000000026312462537262021155 0ustar 00000000000000BZh91AY&SY9yy@@$i`0&&L1$4b/0ț4;G8M&90D"Xb JCֺBCiYJF,0EHPN\ RPAws4ih͠k7W0/*:ܑN$>N^^@brebis-0.10/tests/tar_gz_archive_content/archive.conf0000644000000000000000000000010712462537262021210 0ustar 00000000000000[main] name=essai type=archive path=essai.tar.gz files_list=essai-list brebis-0.10/tests/tar_gz_archive_content/essai-list0000644000000000000000000000005012462537262020715 0ustar 00000000000000[files] essai/dir/toto| essai/dir/titi| brebis-0.10/tests/tar_gz_archive_content/essai.tar.gz0000644000000000000000000000032012462537262021150 0ustar 00000000000000I/Kessai.tarY 0@|w/'BA@m# > 񨲒AzbTN}Ã/U^kw)ENO_wcXء IM3s_o8QΫ?߅k[[?hE 󿆩?wGy(brebis-0.10/tests/test_conf/archive.conf0000644000000000000000000000012312462537262016451 0ustar 00000000000000[main] name=essai type=archive path=essai.tar.gz files_list=essai-list delimiter=| brebis-0.10/tests/test_conf/essai-list0000644000000000000000000000005012462537262016160 0ustar 00000000000000[files] essai/dir/toto| essai/dir/titi| brebis-0.10/tests/test_conf/essai.tar.gz0000644000000000000000000000032012462537262016413 0ustar 00000000000000I/Kessai.tarY 0@|w/'BA@m# > 񨲒AzbTN}Ã/U^kw)ENO_wcXء IM3s_o8QΫ?߅k[[?hE 󿆩?wGy(brebis-0.10/tests/test_conf/subdir/archive2.conf0000644000000000000000000000012212462537262020022 0ustar 00000000000000[main] name=essai2 type=archive path=toto/essai.tar.gz files_list=toto/essai-list brebis-0.10/tests/test_conf/subdir/toto/essai-list0000644000000000000000000000005012462537262020435 0ustar 00000000000000[files] essai/dir/toto| essai/dir/titi| brebis-0.10/tests/test_conf/subdir/toto/essai.tar.gz0000644000000000000000000000032012462537262020670 0ustar 00000000000000I/Kessai.tarY 0@|w/'BA@m# > 񨲒AzbTN}Ã/U^kw)ENO_wcXء IM3s_o8QΫ?߅k[[?hE 󿆩?wGy(brebis-0.10/tests/test_conf_gpg/archive.conf0000644000000000000000000000171612462537262017317 0ustar 00000000000000-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 [main] name=strip-gpg-header-tar-gz type=archive path=essai.tar.gz files_list=essai.list -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAEBCAAGBQJSYw6BAAoJEAJwonWM1zbi1sEP/38PWWTYpBrUd33VN6Qr5o2h 0Xs6k23CiCORBHMFG6qrwRgJuWqAMJg3fqRFu8oXvFzduZuRP1sLVoM+TQ7CuCbH LOMLPljsa9U8SF5s6q2LcAPRHtn9+tY9PukL95kRrzq+dt5yDD5GOx538R384I4U h6DaHfCh0b6jE5Uv5kqdtKtZaiKXLdYX+R3ljmh0VauS8XZcbqybeL+YE8qBTD9R 0sh6wRDAnAd7W3blIVaoZPh/QJ89IX87ngmh7/qRf8Zcl7xek8VQ1CIOCOPAO0wc Pg+pVg2zP2q0SYwuFaf598c8AqxpgZV29qMty6P/8VLbm2scFD63SDrQlREZwQG6 WEumMGpr3O86ygpikjsag/DP9DEOwaJun1M3PcSK1ewWKkFIgjh+mKKGF+B6GhG0 USEJAikKstcQuzjUEenf2uYKfzOsIulYsr2f40SEeJ0S5r1iRn7SXCw/7ahwsKXd RbKMpJfSTgPZ2RBPS2YOUMnHo2gJQr32U/JBr6vHZl0byKnblqi/NAPuk8qKgsVY RYsmCfOZRXvqTqCT3MMyIAP3m1IvolGAHcv/MeC9yG8BM/r2X7N+x71+KuuWMHlQ 89Wz0CRr21uu4SFVzkQwAgr39iGasO8ICKu3N/qeQ2fWCoDLINfXHi2yohVZYPIW ennHbVX0g6KFh3G7k7XJ =c72L -----END PGP SIGNATURE----- brebis-0.10/tests/test_conf_gpg/essai.list0000644000000000000000000000005012462537262017016 0ustar 00000000000000[files] essai/dir/toto| essai/dir/titi| brebis-0.10/tests/test_conf_gpg/essai.tar.gz0000644000000000000000000000032012462537262017250 0ustar 00000000000000I/Kessai.tarY 0@|w/'BA@m# > 񨲒AzbTN}Ã/U^kw)ENO_wcXء IM3s_o8QΫ?߅k[[?hE 󿆩?wGy(brebis-0.10/tests/test_conf_gpg/result0000644000000000000000000000013112462537262016256 0ustar 00000000000000[main] name=strip-gpg-header-tar-gz type=archive path=essai.tar.gz files_list=essai.list brebis-0.10/tests/unexpected_files/archive.conf0000644000000000000000000000016112462537262020015 0ustar 00000000000000[main] name=foo type=archive path=tests/unexpected_files/foo.tar.gz files_list=tests/unexpected_files/files-list brebis-0.10/tests/unexpected_files/files-list0000644000000000000000000000006012462537262017521 0ustar 00000000000000[files] foo/foo1| foo/foo2| foo/bar| unexpected brebis-0.10/tests/unexpected_files/foo.tar.gz0000644000000000000000000000024112462537262017436 0ustar 00000000000000&(La 0 7Xy`ۂnAx()GeęVcJژn,6i`z+k2e*}zSsͿ޳G 8Ǹ'zCmȿ;յǁS?/<<{. R(brebis-0.10/tests/zip/cryptedzip.zip0000644000000000000000000000077612462537262015736 0ustar 00000000000000PK vk=foo/UT /L.Lux PK vk= 0:6foo/barUT /L/Lux ՓJ q4SdnPK 0:6PK rk= foo/foo1UT /L/Lux O[nDPK PK vk=Afoo/UT/Lux PK vk= 0:6>foo/barUT/Lux PK rk= foo/foo1UT/Lux PKbrebis-0.10/tests/zip/mycryptedzip.conf0000644000000000000000000000014112462537262016411 0ustar 00000000000000[main] name=mycryptedzip type=archive path=tests/cryptedzip.zip files_list=tests/cryptedzip-list brebis-0.10/tests/zip/myzip-list0000644000000000000000000000004012462537262015041 0ustar 00000000000000[files] myzip/bar1| toto/bling| brebis-0.10/tests/zip/myzip.conf0000644000000000000000000000012012462537262015013 0ustar 00000000000000[main] name=myzip type=archive path=tests/myzip.zip files_list=tests/myzip-list brebis-0.10/tests/zip/myzip.zip0000644000000000000000000000116212462537262014677 0ustar 00000000000000PK jz;myzip/UT rKrKux PK jz; 0:6 myzip/bar1UT rKrKux hello PK jz; myzip/foo/UT rKrKux PKjz;.myzip/foo/bar2UT rKrKux .PK jz;Amyzip/UTrKux PK jz; 0:6 @myzip/bar1UTrKux PK jz; Amyzip/foo/UTrKux PKjz;.myzip/foo/bar2UTrKux PK@