зеркало из https://github.com/mozilla/gecko-dev.git
86 строки
2.5 KiB
Python
86 строки
2.5 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
from random import randint
|
|
from zipfile import ZipFile
|
|
import os
|
|
import shutil
|
|
|
|
|
|
def gen_binary_file(path, size):
|
|
with open(path, 'wb') as f:
|
|
for i in xrange(size):
|
|
byte = '%c' % randint(0, 255)
|
|
f.write(byte)
|
|
|
|
|
|
def gen_zip(path, files, stripped_prefix=''):
|
|
with ZipFile(path, 'w') as z:
|
|
for f in files:
|
|
new_name = f.replace(stripped_prefix, '')
|
|
z.write(f, new_name)
|
|
|
|
|
|
def mkdir(path, *args):
|
|
try:
|
|
os.mkdir(path, *args)
|
|
except OSError:
|
|
pass
|
|
|
|
|
|
def gen_folder_structure():
|
|
root = 'test-files'
|
|
prefix = os.path.join(root, 'push2')
|
|
mkdir(prefix)
|
|
|
|
gen_binary_file(os.path.join(prefix, 'file4.bin'), 59036)
|
|
mkdir(os.path.join(prefix, 'sub1'))
|
|
shutil.copyfile(os.path.join(root, 'mytext.txt'),
|
|
os.path.join(prefix, 'sub1', 'file1.txt'))
|
|
mkdir(os.path.join(prefix, 'sub1', 'sub1.1'))
|
|
shutil.copyfile(os.path.join(root, 'mytext.txt'),
|
|
os.path.join(prefix, 'sub1', 'sub1.1', 'file2.txt'))
|
|
mkdir(os.path.join(prefix, 'sub2'))
|
|
shutil.copyfile(os.path.join(root, 'mytext.txt'),
|
|
os.path.join(prefix, 'sub2', 'file3.txt'))
|
|
|
|
|
|
def gen_test_files():
|
|
gen_folder_structure()
|
|
flist = [
|
|
os.path.join('test-files', 'push2'),
|
|
os.path.join('test-files', 'push2', 'file4.bin'),
|
|
os.path.join('test-files', 'push2', 'sub1'),
|
|
os.path.join('test-files', 'push2', 'sub1', 'file1.txt'),
|
|
os.path.join('test-files', 'push2', 'sub1', 'sub1.1'),
|
|
os.path.join('test-files', 'push2', 'sub1', 'sub1.1', 'file2.txt'),
|
|
os.path.join('test-files', 'push2', 'sub2'),
|
|
os.path.join('test-files', 'push2', 'sub2', 'file3.txt')
|
|
]
|
|
gen_zip(os.path.join('test-files', 'mybinary.zip'),
|
|
flist, stripped_prefix=('test-files' + os.path.sep))
|
|
gen_zip(os.path.join('test-files', 'mytext.zip'),
|
|
[os.path.join('test-files', 'mytext.txt')])
|
|
|
|
|
|
def clean_test_files():
|
|
ds = [os.path.join('test-files', d) for d in ('push1', 'push2')]
|
|
for d in ds:
|
|
try:
|
|
shutil.rmtree(d)
|
|
except OSError:
|
|
pass
|
|
|
|
fs = [os.path.join('test-files', f) for f in ('mybinary.zip', 'mytext.zip')]
|
|
for f in fs:
|
|
try:
|
|
os.remove(f)
|
|
except OSError:
|
|
pass
|
|
|
|
|
|
if __name__ == '__main__':
|
|
gen_test_files()
|