Esempio n. 1
0
 def testExtractTo(self):
     flist = filelist.FileList()
     tf = filelist_test.TempFileSystem()
     tf.Clear()
     tf.Make()
     flist.AddFile(tf.root_in_tmp, tf.test_txt)
     flist.AddSymLink(tf.root_in_tmp, tf.sym_dir)
     bundle_zip = os.path.join(tf.root_tmp, 'bundle.zip')
     car = cobalt_archive.CobaltArchive(bundle_zip)
     car.MakeArchive(platform_name='fake',
                     platform_sdk_version='fake_sdk',
                     config='devel',
                     file_list=flist)
     out_dir = os.path.join(tf.root_tmp, 'out')
     car.ExtractTo(out_dir)
     out_from_dir = os.path.join(out_dir, 'from_dir')
     out_from_dir_lnk = os.path.join(out_dir, 'from_dir_lnk')
     self.assertEqual(filelist.GetFileType(out_from_dir),
                      filelist.TYPE_DIRECTORY)
     self.assertEqual(filelist.GetFileType(out_from_dir_lnk),
                      filelist.TYPE_SYMLINK_DIR)
     resolved_from_link_path = os.path.join(
         out_dir, port_symlink.ReadSymLink(out_from_dir_lnk))
     self.assertEqual(os.path.abspath(out_from_dir),
                      os.path.abspath(resolved_from_link_path))
Esempio n. 2
0
 def testExecutionAttribute(self):
     flist = filelist.FileList()
     tf = filelist_test.TempFileSystem()
     tf.Make()
     # Execution bit seems to turn off the read bit, so we just set all
     # read/write/execute bit for the user.
     write_flags = stat.S_IXUSR | stat.S_IWUSR | stat.S_IRUSR
     os.chmod(tf.test_txt, write_flags)
     self.assertNotEqual(
         0, write_flags & cobalt_archive._GetFilePermissions(tf.test_txt))
     flist.AddFile(tf.root_tmp, tf.test_txt)
     bundle_zip = os.path.join(tf.root_tmp, 'bundle.zip')
     car = cobalt_archive.CobaltArchive(bundle_zip)
     car.MakeArchive(platform_name='fake',
                     platform_sdk_version='fake_sdk',
                     config='devel',
                     file_list=flist)
     # Now grab the json file and check that the file appears in the
     # executable_file list.
     json_str = car.ReadFile(
         '__cobalt_archive/finalize_decompression/decompress.json')
     decompress_dict = json.loads(json_str)
     executable_files = decompress_dict.get('executable_files')
     # Expect that the executable file appears in the executable_files.
     self.assertTrue(executable_files)
     archive_path = os.path.relpath(tf.test_txt, tf.root_tmp)
     self.assertIn(archive_path, executable_files)
     out_dir = os.path.join(tf.root_tmp, 'out')
     car.ExtractTo(output_dir=out_dir)
     out_file = os.path.join(out_dir, tf.test_txt)
     self.assertTrue(_LongPathExists(out_file))
     perms = cobalt_archive._GetFilePermissions(out_file)
     self.assertTrue(perms & stat.S_IXUSR)
Esempio n. 3
0
    def testExtractFileWithLongFileName(self):
        """Tests that a long file name can be archived and extracted."""
        flist = filelist.FileList()
        tf = filelist_test.TempFileSystem()
        tf.Clear()
        tf.Make()
        self.assertTrue(os.path.exists(tf.root_in_tmp))
        suffix_path = os.path.join(
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
            'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'test.txt')
        input_dst = os.path.join(tf.root_in_tmp, suffix_path)
        out_dir = os.path.join(tf.root_tmp, 'out')
        output_dst = os.path.join(out_dir, suffix_path)
        _MoveFileWithLongPath(tf.test_txt, input_dst)
        self.assertTrue(_LongPathExists(input_dst))
        flist.AddFile(tf.root_in_tmp, input_dst)

        bundle_zip = os.path.join(tf.root_tmp, 'bundle.zip')
        car = cobalt_archive.CobaltArchive(bundle_zip)
        car.MakeArchive(platform_name='fake',
                        platform_sdk_version='fake_sdk',
                        config='devel',
                        file_list=flist)
        car.ExtractTo(out_dir)
        self.assertTrue(_LongPathExists(output_dst))
Esempio n. 4
0
 def testFoldIdenticalFiles(self):
     tf_root = filelist_test.TempFileSystem('bundler_fold')
     tf_root.Clear()
     tf1 = filelist_test.TempFileSystem(os.path.join('bundler_fold', '1'))
     tf2 = filelist_test.TempFileSystem(os.path.join('bundler_fold', '2'))
     tf1.Make()
     tf2.Make()
     flist = filelist.FileList()
     subdirs = [tf1.root_in_tmp, tf2.root_in_tmp]
     flist.AddAllFilesInPaths(tf_root.root_tmp, subdirs)
     flist.Print()
     identical_files = [tf1.test_txt, tf2.test_txt]
     physical_files, copy_files = cobalt_archive._FoldIdenticalFiles(
         identical_files)
     self.assertEqual(tf1.test_txt, physical_files[0])
     self.assertIn(tf1.test_txt, copy_files[0][0])
     self.assertIn(tf2.test_txt, copy_files[0][1])
Esempio n. 5
0
 def testMakesDeployInfo(self):
     flist = filelist.FileList()
     tf = filelist_test.TempFileSystem()
     tf.Clear()
     tf.Make()
     bundle_zip = os.path.join(tf.root_tmp, 'bundle.zip')
     car = cobalt_archive.CobaltArchive(bundle_zip)
     car.MakeArchive(platform_name='fake',
                     platform_sdk_version='fake_sdk',
                     config='devel',
                     file_list=flist)
     out_dir = os.path.join(tf.root_tmp, 'out')
     car.ExtractTo(out_dir)
     out_metadata_file = os.path.join(out_dir,
                                      cobalt_archive._OUT_METADATA_PATH)
     self.assertEqual(filelist.GetFileType(out_metadata_file),
                      filelist.TYPE_FILE)
     with open(out_metadata_file) as fd:
         text = fd.read()
         js = json.loads(text)
         self.assertTrue(js)
         self.assertEqual(js['sdk_version'], 'fake_sdk')
         self.assertEqual(js['platform'], 'fake')
         self.assertEqual(js['config'], 'devel')