mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
8b83306d54
This is a squashed commit of the following from parallel-wget: ecd6977 Refactor mainly the test cases classes d26c8eb Create package test for test case classes 507383d Move server classes to package server.protocol 195393b Create package conf where rules and hooks are put 42e482a Create package exc and move TestFailed to exc 82f44f3 Fix a typo in Test-Proto.py 31e5f33 From WgetTest.py move WgetFile to misc 422171d Create package misc, move ColourTerm.py to misc
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
from difflib import unified_diff
|
|
import os
|
|
import sys
|
|
from conf import hook
|
|
from exc.test_failed import TestFailed
|
|
|
|
|
|
@hook()
|
|
class ExpectedFiles:
|
|
def __init__(self, expected_fs):
|
|
self.expected_fs = expected_fs
|
|
|
|
@staticmethod
|
|
def gen_local_fs_snapshot():
|
|
snapshot = {}
|
|
for parent, dirs, files in os.walk('.'):
|
|
for name in files:
|
|
f = {'content': ''}
|
|
file_path = os.path.join(parent, name)
|
|
with open(file_path) as fp:
|
|
f['content'] = fp.read()
|
|
snapshot[file_path[2:]] = f
|
|
|
|
return snapshot
|
|
|
|
def __call__(self, test_obj):
|
|
local_fs = self.gen_local_fs_snapshot()
|
|
for file in self.expected_fs:
|
|
if file.name in local_fs:
|
|
local_file = local_fs.pop(file.name)
|
|
if file.content != local_file['content']:
|
|
for line in unified_diff(local_file['content'],
|
|
file.content,
|
|
fromfile='Actual',
|
|
tofile='Expected'):
|
|
print(line, file=sys.stderr)
|
|
raise TestFailed('Contents of %s do not match.' % file.name)
|
|
else:
|
|
raise TestFailed('Expected file %s not found.' % file.name)
|
|
if local_fs:
|
|
print(local_fs)
|
|
raise TestFailed('Extra files downloaded.')
|