mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-03-21 00:10:24 +00:00
git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@1020 e7d03fd6-7b0d-0410-9947-9c21f3af8025
98 lines
2.3 KiB
Python
98 lines
2.3 KiB
Python
# -*- coding: iso-8859-1 -*-
|
|
"""Supporting definitions for the Python regression test."""
|
|
from linkcheck.log.Logger import Logger
|
|
|
|
class Error (Exception):
|
|
"""Base class for regression test exceptions."""
|
|
|
|
class TestFailed (Error):
|
|
"""Test failed."""
|
|
|
|
class TestSkipped (Error):
|
|
"""Test skipped.
|
|
|
|
This can be raised to indicate that a test was deliberatly
|
|
skipped, but not because a feature wasn't available. For
|
|
example, if some resource can't be used, such as the network
|
|
appears to be unavailable, this should be raised instead of
|
|
TestFailed.
|
|
|
|
"""
|
|
|
|
|
|
verbose = True # Flag set to 0 by regrtest.py
|
|
|
|
def unload (name):
|
|
import sys
|
|
try:
|
|
del sys.modules[name]
|
|
except KeyError:
|
|
pass
|
|
|
|
def forget (modname):
|
|
unload(modname)
|
|
import sys, os
|
|
for dirname in sys.path:
|
|
try:
|
|
os.unlink(os.path.join(dirname, modname + '.pyc'))
|
|
except os.error:
|
|
pass
|
|
|
|
FUZZ = 1e-6
|
|
|
|
def fcmp (x, y): # fuzzy comparison function
|
|
if type(x) == type(0.0) or type(y) == type(0.0):
|
|
try:
|
|
x, y = coerce(x, y)
|
|
fuzz = (abs(x) + abs(y)) * FUZZ
|
|
if abs(x-y) <= fuzz:
|
|
return 0
|
|
except:
|
|
pass
|
|
elif type(x) == type(y) and type(x) in (type(()), type([])):
|
|
for i in range(min(len(x), len(y))):
|
|
outcome = fcmp(x[i], y[i])
|
|
if outcome <> 0:
|
|
return outcome
|
|
return cmp(len(x), len(y))
|
|
return cmp(x, y)
|
|
|
|
TESTFN = '@test' # Filename used for testing
|
|
|
|
def findfile (file, here=__file__):
|
|
import os
|
|
if os.path.isabs(file):
|
|
return file
|
|
import sys
|
|
path = sys.path
|
|
path = [os.path.dirname(here)] + path
|
|
for dn in path:
|
|
fn = os.path.join(dn, file)
|
|
if os.path.exists(fn): return fn
|
|
return file
|
|
|
|
|
|
class TestLogger (Logger):
|
|
""" Output for regression test """
|
|
def init (self):
|
|
pass
|
|
|
|
def newUrl (self, urlData):
|
|
print 'url', urlData.urlName
|
|
if urlData.cached:
|
|
print "cached"
|
|
if urlData.name:
|
|
print "name", urlData.name
|
|
if urlData.baseRef:
|
|
print "baseurl", urlData.baseRef
|
|
if urlData.infoString:
|
|
print "info", urlData.infoString
|
|
if urlData.warningString:
|
|
print "warning", urlData.warningString
|
|
if urlData.valid:
|
|
print "valid"
|
|
else:
|
|
print "error"
|
|
|
|
def endOfOutput (self, linknumber=-1):
|
|
pass
|