1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liang.qing-syncrypto

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
test_filetree.py 4.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Qing Liang Отправлено 10 лет назад 2b456b0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2015 Qing Liang (https://github.com/liangqing)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function
from __future__ import unicode_literals
import unittest
import os
import os.path
import shutil
from tempfile import mkstemp, mkdtemp
from syncrypto import FileEntry, FileTree
from time import time
from util import prepare_filetree
try:
from cStringIO import StringIO as BytesIO
except ImportError:
from io import BytesIO
class FileEntryTestCase(unittest.TestCase):
def setUp(self):
file_fp, file_path = mkstemp()
self.file_path = file_path
stat = os.stat(self.file_path)
self.file_attrs = {
'pathname': os.path.basename(self.file_path),
'size': stat.st_size,
'ctime': int(time()),
'mtime': stat.st_mtime,
'mode': stat.st_mode,
}
self.file_object = FileEntry(**self.file_attrs)
os.close(file_fp)
def tearDown(self):
os.remove(self.file_path)
def test_property(self):
stat = os.stat(self.file_path)
self.assertEqual(self.file_object.isdir, False)
self.assertEqual(self.file_object.digest, None)
self.assertEqual(self.file_object.size, stat.st_size)
self.assertEqual(self.file_object.ctime, int(stat.st_ctime))
self.assertEqual(self.file_object.mtime, stat.st_mtime)
self.assertEqual(self.file_object.mode, stat.st_mode)
self.assertEqual(self.file_object.pathname,
os.path.basename(self.file_path))
def test_to_dict(self):
d = self.file_object.to_dict()
for k in self.file_attrs:
self.assertEqual(d[k], self.file_attrs[k])
def test_from_file(self):
stat = os.stat(self.file_path)
d = {
'pathname': os.path.basename(self.file_path),
'fs_pathname': os.path.basename(self.file_path),
'size': stat.st_size,
'ctime': stat.st_ctime,
'mtime': stat.st_mtime,
'mode': stat.st_mode,
'digest': None,
'isdir': False,
'salt': None
}
file_object = FileEntry.from_file(self.file_path, d['pathname'])
self.assertEqual(d, file_object.to_dict())
def test_from_dict(self):
stat = os.stat(self.file_path)
d = {
'pathname': os.path.basename(self.file_path),
'fs_pathname': os.path.basename(self.file_path),
'size': stat.st_size,
'ctime': int(time()),
'mtime': stat.st_mtime,
'mode': stat.st_mode,
'digest': None,
'isdir': False,
'salt': None
}
file_object = FileEntry(**d)
self.assertEqual(d, file_object.to_dict())
class FileTreeTestCase(unittest.TestCase):
def setUp(self):
self.directory_path = mkdtemp()
def tearDown(self):
shutil.rmtree(self.directory_path)
def test_walk_tree(self):
prepare_filetree(self.directory_path, '''
a
b/
c/d/e/f
1/2
''')
filetree = FileTree.from_fs(self.directory_path)
self.assertEqual(filetree.get('a').isdir, False)
self.assertEqual(filetree.get('b').isdir, True)
self.assertEqual(filetree.get('c').isdir, True)
self.assertEqual(filetree.get('c/d').isdir, True)
self.assertEqual(filetree.get('c/d/e').isdir, True)
self.assertEqual(filetree.get('c/d/e/f').isdir, False)
self.assertEqual(filetree.get('1').isdir, True)
self.assertEqual(filetree.get('1/2').isdir, False)
self.assertEqual(len(filetree.files()), 3)
self.assertEqual(len(filetree.folders()), 5)
if __name__ == '__main__':
unittest.main()

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/liang.qing-syncrypto.git
git@gitlife.ru:oschina-mirror/liang.qing-syncrypto.git
oschina-mirror
liang.qing-syncrypto
liang.qing-syncrypto
master