Home | History | Annotate | Download | only in archive
      1 #!/usr/bin/env python
      2 #
      3 # Copyright (C) 2016 The Android Open Source Project
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #      http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 #
     17 
     18 import os
     19 import unittest
     20 
     21 from vts.utils.python.archive import archive_parser
     22 
     23 
     24 class ArchiveParserTest(unittest.TestCase):
     25     """Unit tests for archive_parser of vts.utils.python.archive.
     26     """
     27 
     28     def testReadHeaderPass(self):
     29         """Tests that archive is read when header is correct.
     30 
     31         Parses archive content containing only the signature.
     32         """
     33         try:
     34             archive = archive_parser.Archive(archive_parser.Archive.GLOBAL_SIG)
     35             archive.Parse()
     36         except ValueError:
     37             self.fail('Archive reader read improperly.')
     38 
     39     def testReadHeaderFail(self):
     40         """Tests that parser throws error when header is invalid.
     41 
     42         Parses archive content lacking the correct signature.
     43         """
     44         archive = archive_parser.Archive('Fail.')
     45         self.assertRaises(ValueError, archive.Parse)
     46 
     47     def testReadFile(self):
     48         """Tests that file is read correctly.
     49 
     50         Tests that correctly formatted file in archive is read correctly.
     51         """
     52         content = archive_parser.Archive.GLOBAL_SIG
     53         file_name = 'test_file'
     54         content += file_name + ' ' * (archive_parser.Archive.FILE_ID_LENGTH -
     55                                       len(file_name))
     56         content += ' ' * archive_parser.Archive.FILE_TIMESTAMP_LENGTH
     57         content += ' ' * archive_parser.Archive.OWNER_ID_LENGTH
     58         content += ' ' * archive_parser.Archive.GROUP_ID_LENGTH
     59         content += ' ' * archive_parser.Archive.FILE_MODE_LENGTH
     60 
     61         message = 'test file contents'
     62         message_size = str(len(message))
     63         content += message_size + ' ' * (archive_parser.Archive.CONTENT_SIZE_LENGTH -
     64                                          len(message_size))
     65         content += archive_parser.Archive.END_TAG
     66         content += message
     67         archive = archive_parser.Archive(content)
     68         archive.Parse()
     69         self.assertIn(file_name, archive.files)
     70         self.assertEquals(archive.files[file_name], message)
     71 
     72 if __name__ == "__main__":
     73     unittest.main()
     74