summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Gorodnev <agorodnev@mirantis.com>2013-08-09 05:34:55 -0400
committerAlexander Gorodnev <agorodnev@mirantis.com>2013-08-09 05:34:55 -0400
commit6c49132491e5b5d82816d9576616fdaf74603092 (patch)
treecc197518c27a81f2c71ec4fe257e7aea1cfba6cf
parent8719d26fd030b37dc4335e0e7e63e5b468073ebd (diff)
downloadoslo-6c49132491e5b5d82816d9576616fdaf74603092.tar.gz
oslo-6c49132491e5b5d82816d9576616fdaf74603092.tar.xz
oslo-6c49132491e5b5d82816d9576616fdaf74603092.zip
Replace using tests.utils with openstack.common.test
It is the first step to replace using tests.utils with openstack.common.test. All these tests don't use mock objects, stubs, config files and use only BaseTestCase class. Change-Id: I511816b5c9e6c5c34ebff199296ee4fc8b84c672 bp: common-unit-tests
-rw-r--r--tests/unit/apiclient/test_auth.py7
-rw-r--r--tests/unit/apiclient/test_base.py9
-rw-r--r--tests/unit/apiclient/test_client.py7
-rw-r--r--tests/unit/apiclient/test_exceptions.py5
-rw-r--r--tests/unit/crypto/test_utils.py4
-rw-r--r--tests/unit/db/sqlalchemy/test_models.py6
-rw-r--r--tests/unit/middleware/test_context.py6
-rw-r--r--tests/unit/scheduler/test_weights.py4
-rw-r--r--tests/unit/test_authutils.py4
-rw-r--r--tests/unit/test_cliutils.py4
-rw-r--r--tests/unit/test_context.py4
-rw-r--r--tests/unit/test_fileutils.py12
-rw-r--r--tests/unit/test_funcutils.py5
-rw-r--r--tests/unit/test_importutils.py4
-rw-r--r--tests/unit/test_jsonutils.py6
-rw-r--r--tests/unit/test_local.py4
-rw-r--r--tests/unit/test_loopingcall.py4
-rw-r--r--tests/unit/test_memorycache.py4
-rw-r--r--tests/unit/test_network_utils.py4
-rw-r--r--tests/unit/test_pastedeploy.py4
-rw-r--r--tests/unit/test_processutils.py10
-rw-r--r--tests/unit/test_sslutils.py4
-rw-r--r--tests/unit/test_strutils.py4
-rw-r--r--tests/unit/test_threadgroup.py4
-rw-r--r--tests/unit/test_timeutils.py6
-rw-r--r--tests/unit/test_uuidutils.py4
-rw-r--r--tests/unit/test_xmlutils.py6
27 files changed, 70 insertions, 75 deletions
diff --git a/tests/unit/apiclient/test_auth.py b/tests/unit/apiclient/test_auth.py
index b3c432c..15d9ef9 100644
--- a/tests/unit/apiclient/test_auth.py
+++ b/tests/unit/apiclient/test_auth.py
@@ -31,8 +31,7 @@ except ImportError:
from openstack.common.apiclient import auth
from openstack.common.apiclient import client
from openstack.common.apiclient import fake_client
-
-from tests import utils
+from openstack.common import test
TEST_REQUEST_BASE = {
@@ -91,7 +90,7 @@ class BaseFakePlugin(auth.BaseAuthPlugin):
pass
-class GlobalFunctionsTest(utils.BaseTestCase):
+class GlobalFunctionsTest(test.BaseTestCase):
def test_load_auth_system_opts(self):
self.useFixture(fixtures.MonkeyPatch(
@@ -114,7 +113,7 @@ class MockEntrypoint(object):
self.plugin = plugin
-class AuthPluginTest(utils.BaseTestCase):
+class AuthPluginTest(test.BaseTestCase):
@mock.patch.object(requests.Session, "request")
@mock.patch.object(extension.ExtensionManager, "map")
def test_auth_system_success(self, mock_mgr_map, mock_request):
diff --git a/tests/unit/apiclient/test_base.py b/tests/unit/apiclient/test_base.py
index 460ee2c..86f2941 100644
--- a/tests/unit/apiclient/test_base.py
+++ b/tests/unit/apiclient/test_base.py
@@ -19,8 +19,7 @@ from openstack.common.apiclient import base
from openstack.common.apiclient import client
from openstack.common.apiclient import exceptions
from openstack.common.apiclient import fake_client
-
-from tests import utils
+from openstack.common import test
class HumanResource(base.Resource):
@@ -121,7 +120,7 @@ class TestClient(client.BaseClient):
self.crud_resources = CrudResourceManager(self)
-class ResourceTest(utils.BaseTestCase):
+class ResourceTest(test.BaseTestCase):
def test_resource_repr(self):
r = base.Resource(None, dict(foo="bar", baz="spam"))
@@ -139,7 +138,7 @@ class ResourceTest(utils.BaseTestCase):
self.assertEqual(r.human_id, "1")
-class BaseManagerTest(utils.BaseTestCase):
+class BaseManagerTest(test.BaseTestCase):
def setUp(self):
super(BaseManagerTest, self).setUp()
@@ -187,7 +186,7 @@ class BaseManagerTest(utils.BaseTestCase):
self.assertEqual(human_resource.name, name)
-class CrudManagerTest(utils.BaseTestCase):
+class CrudManagerTest(test.BaseTestCase):
domain_id = "my-domain"
crud_resource_id = "1"
diff --git a/tests/unit/apiclient/test_client.py b/tests/unit/apiclient/test_client.py
index 4594a6a..b48ba12 100644
--- a/tests/unit/apiclient/test_client.py
+++ b/tests/unit/apiclient/test_client.py
@@ -22,8 +22,7 @@ import requests
from openstack.common.apiclient import auth
from openstack.common.apiclient import client
from openstack.common.apiclient import exceptions
-
-from tests import utils
+from openstack.common import test
class TestClient(client.BaseClient):
@@ -42,7 +41,7 @@ class FakeAuthPlugin(auth.BaseAuthPlugin):
return ("token-%s" % self.attempt, "/endpoint-%s" % self.attempt)
-class ClientTest(utils.BaseTestCase):
+class ClientTest(test.BaseTestCase):
def test_client_with_timeout(self):
http_client = client.HTTPClient(None, timeout=2)
@@ -115,7 +114,7 @@ class FakeClient21(object):
pass
-class GetClientClassTestCase(utils.BaseTestCase):
+class GetClientClassTestCase(test.BaseTestCase):
version_map = {
"1": "%s.FakeClient1" % __name__,
"2.1": "%s.FakeClient21" % __name__,
diff --git a/tests/unit/apiclient/test_exceptions.py b/tests/unit/apiclient/test_exceptions.py
index bfbd2b0..39753ec 100644
--- a/tests/unit/apiclient/test_exceptions.py
+++ b/tests/unit/apiclient/test_exceptions.py
@@ -13,9 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
-from tests import utils
-
from openstack.common.apiclient import exceptions
+from openstack.common import test
class FakeResponse(object):
@@ -29,7 +28,7 @@ class FakeResponse(object):
return self.json_data
-class ExceptionsArgsTest(utils.BaseTestCase):
+class ExceptionsArgsTest(test.BaseTestCase):
def assert_exception(self, ex_cls, method, url, status_code, json_data):
ex = exceptions.from_response(
diff --git a/tests/unit/crypto/test_utils.py b/tests/unit/crypto/test_utils.py
index 3a39100..a6cb6a2 100644
--- a/tests/unit/crypto/test_utils.py
+++ b/tests/unit/crypto/test_utils.py
@@ -18,10 +18,10 @@ Unit Tests for crypto utils.
"""
from openstack.common.crypto import utils as cryptoutils
-from tests import utils as test_utils
+from openstack.common import test
-class CryptoUtilsTestCase(test_utils.BaseTestCase):
+class CryptoUtilsTestCase(test.BaseTestCase):
# Uses Tests from RFC5869
def _test_HKDF(self, ikm, prk, okm, length,
diff --git a/tests/unit/db/sqlalchemy/test_models.py b/tests/unit/db/sqlalchemy/test_models.py
index 04905a6..89bf83f 100644
--- a/tests/unit/db/sqlalchemy/test_models.py
+++ b/tests/unit/db/sqlalchemy/test_models.py
@@ -16,10 +16,10 @@
# under the License.
from openstack.common.db.sqlalchemy import models
-from tests import utils as test_utils
+from openstack.common import test
-class ModelBaseTest(test_utils.BaseTestCase):
+class ModelBaseTest(test.BaseTestCase):
def test_modelbase_has_dict_methods(self):
dict_methods = ('__getitem__',
@@ -73,7 +73,7 @@ class ModelBaseTest(test_utils.BaseTestCase):
self.assertEqual(min_items, found_items)
-class TimestampMixinTest(test_utils.BaseTestCase):
+class TimestampMixinTest(test.BaseTestCase):
def test_timestampmixin_attr(self):
diff --git a/tests/unit/middleware/test_context.py b/tests/unit/middleware/test_context.py
index 5bf5ae4..daffa60 100644
--- a/tests/unit/middleware/test_context.py
+++ b/tests/unit/middleware/test_context.py
@@ -20,10 +20,10 @@ import mock
import openstack.common.context
from openstack.common.middleware import context
-from tests import utils
+from openstack.common import test
-class ContextMiddlewareTest(utils.BaseTestCase):
+class ContextMiddlewareTest(test.BaseTestCase):
def test_process_request(self):
req = mock.Mock()
@@ -59,7 +59,7 @@ class ContextMiddlewareTest(utils.BaseTestCase):
import_class.assert_called_with(mock.sentinel.arg)
-class FilterFactoryTest(utils.BaseTestCase):
+class FilterFactoryTest(test.BaseTestCase):
def test_filter_factory(self):
global_conf = dict(sentinel=mock.sentinel.global_conf)
diff --git a/tests/unit/scheduler/test_weights.py b/tests/unit/scheduler/test_weights.py
index 21d3f3e..fcb25c6 100644
--- a/tests/unit/scheduler/test_weights.py
+++ b/tests/unit/scheduler/test_weights.py
@@ -17,11 +17,11 @@ Tests For Scheduler weights.
"""
from openstack.common.scheduler import base_weight
+from openstack.common import test
from tests.unit import fakes
-from tests import utils
-class TestWeightHandler(utils.BaseTestCase):
+class TestWeightHandler(test.BaseTestCase):
def test_get_all_classes(self):
namespace = "openstack.common.tests.fakes.weights"
handler = base_weight.BaseWeightHandler(
diff --git a/tests/unit/test_authutils.py b/tests/unit/test_authutils.py
index 3596df9..82433ad 100644
--- a/tests/unit/test_authutils.py
+++ b/tests/unit/test_authutils.py
@@ -16,10 +16,10 @@
# under the License.
from openstack.common import authutils
-from tests import utils
+from openstack.common import test
-class AuthUtilsTest(utils.BaseTestCase):
+class AuthUtilsTest(test.BaseTestCase):
def test_auth_str_equal(self):
self.assertTrue(authutils.auth_str_equal('abc123', 'abc123'))
diff --git a/tests/unit/test_cliutils.py b/tests/unit/test_cliutils.py
index 13f954c..fada65f 100644
--- a/tests/unit/test_cliutils.py
+++ b/tests/unit/test_cliutils.py
@@ -15,10 +15,10 @@
# under the License.
from openstack.common import cliutils
-from tests import utils
+from openstack.common import test
-class ValidateArgsTest(utils.BaseTestCase):
+class ValidateArgsTest(test.BaseTestCase):
def test_lambda_no_args(self):
cliutils.validate_args(lambda: None)
diff --git a/tests/unit/test_context.py b/tests/unit/test_context.py
index 2f9a3de..ae79b31 100644
--- a/tests/unit/test_context.py
+++ b/tests/unit/test_context.py
@@ -16,10 +16,10 @@
# under the License.
from openstack.common import context
-from tests import utils
+from openstack.common import test
-class ContextTest(utils.BaseTestCase):
+class ContextTest(test.BaseTestCase):
def test_context(self):
ctx = context.RequestContext()
diff --git a/tests/unit/test_fileutils.py b/tests/unit/test_fileutils.py
index 4214e83..706ae71 100644
--- a/tests/unit/test_fileutils.py
+++ b/tests/unit/test_fileutils.py
@@ -25,10 +25,10 @@ import mock
import mox
from openstack.common import fileutils
-from tests import utils
+from openstack.common import test
-class EnsureTree(utils.BaseTestCase):
+class EnsureTree(test.BaseTestCase):
def test_ensure_tree(self):
tmpdir = tempfile.mkdtemp()
try:
@@ -41,7 +41,7 @@ class EnsureTree(utils.BaseTestCase):
shutil.rmtree(tmpdir)
-class TestCachedFile(utils.BaseTestCase):
+class TestCachedFile(test.BaseTestCase):
def setUp(self):
super(TestCachedFile, self).setUp()
@@ -86,7 +86,7 @@ class TestCachedFile(utils.BaseTestCase):
self.assertTrue(fresh)
-class DeleteIfExists(utils.BaseTestCase):
+class DeleteIfExists(test.BaseTestCase):
def test_file_present(self):
tmpfile = tempfile.mktemp()
@@ -113,7 +113,7 @@ class DeleteIfExists(utils.BaseTestCase):
self.assertRaises(OSError, fileutils.delete_if_exists, tmpfile)
-class RemovePathOnError(utils.BaseTestCase):
+class RemovePathOnError(test.BaseTestCase):
def test_error(self):
tmpfile = tempfile.mktemp()
open(tmpfile, 'w')
@@ -134,7 +134,7 @@ class RemovePathOnError(utils.BaseTestCase):
os.unlink(tmpfile)
-class UtilsTestCase(utils.BaseTestCase):
+class UtilsTestCase(test.BaseTestCase):
def test_file_open(self):
dst_fd, dst_path = tempfile.mkstemp()
try:
diff --git a/tests/unit/test_funcutils.py b/tests/unit/test_funcutils.py
index 439d825..1cf665b 100644
--- a/tests/unit/test_funcutils.py
+++ b/tests/unit/test_funcutils.py
@@ -20,11 +20,10 @@
import functools
from openstack.common import funcutils
+from openstack.common import test
-from tests import utils
-
-class FuncutilsTestCase(utils.BaseTestCase):
+class FuncutilsTestCase(test.BaseTestCase):
def _test_func(self, instance, red=None, blue=None):
pass
diff --git a/tests/unit/test_importutils.py b/tests/unit/test_importutils.py
index 372bb6d..d716929 100644
--- a/tests/unit/test_importutils.py
+++ b/tests/unit/test_importutils.py
@@ -19,10 +19,10 @@ import datetime
import sys
from openstack.common import importutils
-from tests import utils
+from openstack.common import test
-class ImportUtilsTest(utils.BaseTestCase):
+class ImportUtilsTest(test.BaseTestCase):
# NOTE(jkoelker) There has GOT to be a way to test this. But mocking
# __import__ is the devil. Right now we just make
diff --git a/tests/unit/test_jsonutils.py b/tests/unit/test_jsonutils.py
index 5dc23f7..41bbcf5 100644
--- a/tests/unit/test_jsonutils.py
+++ b/tests/unit/test_jsonutils.py
@@ -22,10 +22,10 @@ import netaddr
import six
from openstack.common import jsonutils
-from tests import utils
+from openstack.common import test
-class JSONUtilsTestCase(utils.BaseTestCase):
+class JSONUtilsTestCase(test.BaseTestCase):
def test_dumps(self):
self.assertEqual(jsonutils.dumps({'a': 'b'}), '{"a": "b"}')
@@ -38,7 +38,7 @@ class JSONUtilsTestCase(utils.BaseTestCase):
self.assertEqual(jsonutils.load(x), {'a': 'b'})
-class ToPrimitiveTestCase(utils.BaseTestCase):
+class ToPrimitiveTestCase(test.BaseTestCase):
def test_list(self):
self.assertEquals(jsonutils.to_primitive([1, 2, 3]), [1, 2, 3])
diff --git a/tests/unit/test_local.py b/tests/unit/test_local.py
index bc7b05d..a8c9ab6 100644
--- a/tests/unit/test_local.py
+++ b/tests/unit/test_local.py
@@ -18,7 +18,7 @@
import threading
from openstack.common import local
-from tests import utils
+from openstack.common import test
class Dict(dict):
@@ -26,7 +26,7 @@ class Dict(dict):
pass
-class LocalStoreTestCase(utils.BaseTestCase):
+class LocalStoreTestCase(test.BaseTestCase):
v1 = Dict(a='1')
v2 = Dict(a='2')
v3 = Dict(a='3')
diff --git a/tests/unit/test_loopingcall.py b/tests/unit/test_loopingcall.py
index 89cf336..9746b88 100644
--- a/tests/unit/test_loopingcall.py
+++ b/tests/unit/test_loopingcall.py
@@ -20,11 +20,11 @@ from eventlet import greenthread
import mox
from openstack.common import loopingcall
+from openstack.common import test
from openstack.common import timeutils
-from tests import utils
-class LoopingCallTestCase(utils.BaseTestCase):
+class LoopingCallTestCase(test.BaseTestCase):
def setUp(self):
super(LoopingCallTestCase, self).setUp()
diff --git a/tests/unit/test_memorycache.py b/tests/unit/test_memorycache.py
index 48a36b5..0d176da 100644
--- a/tests/unit/test_memorycache.py
+++ b/tests/unit/test_memorycache.py
@@ -18,11 +18,11 @@
import datetime
from openstack.common import memorycache
+from openstack.common import test
from openstack.common import timeutils
-from tests import utils
-class MemorycacheTest(utils.BaseTestCase):
+class MemorycacheTest(test.BaseTestCase):
def setUp(self):
self.client = memorycache.get_client()
super(MemorycacheTest, self).setUp()
diff --git a/tests/unit/test_network_utils.py b/tests/unit/test_network_utils.py
index 4ac0222..a4b9042 100644
--- a/tests/unit/test_network_utils.py
+++ b/tests/unit/test_network_utils.py
@@ -16,10 +16,10 @@
# under the License.
from openstack.common import network_utils
-from tests import utils
+from openstack.common import test
-class NetworkUtilsTest(utils.BaseTestCase):
+class NetworkUtilsTest(test.BaseTestCase):
def test_parse_host_port(self):
self.assertEqual(('server01', 80),
diff --git a/tests/unit/test_pastedeploy.py b/tests/unit/test_pastedeploy.py
index 3dd02d7..9b64c1c 100644
--- a/tests/unit/test_pastedeploy.py
+++ b/tests/unit/test_pastedeploy.py
@@ -20,7 +20,7 @@ import tempfile
import fixtures
from openstack.common import pastedeploy
-from tests import utils
+from openstack.common import test
class App(object):
@@ -43,7 +43,7 @@ class Filter(object):
self.data = data
-class PasteTestCase(utils.BaseTestCase):
+class PasteTestCase(test.BaseTestCase):
def setUp(self):
super(PasteTestCase, self).setUp()
diff --git a/tests/unit/test_processutils.py b/tests/unit/test_processutils.py
index 8a14eaf..032c7f6 100644
--- a/tests/unit/test_processutils.py
+++ b/tests/unit/test_processutils.py
@@ -24,10 +24,10 @@ import tempfile
import six
from openstack.common import processutils
-from tests import utils
+from openstack.common import test
-class UtilsTest(utils.BaseTestCase):
+class UtilsTest(test.BaseTestCase):
# NOTE(jkoelker) Moar tests from nova need to be ported. But they
# need to be mock'd out. Currently they requre actually
# running code.
@@ -37,7 +37,7 @@ class UtilsTest(utils.BaseTestCase):
hozer=True)
-class ProcessExecutionErrorTest(utils.BaseTestCase):
+class ProcessExecutionErrorTest(test.BaseTestCase):
def test_defaults(self):
err = processutils.ProcessExecutionError()
@@ -181,7 +181,7 @@ def fake_execute_raises(*cmd, **kwargs):
'command'])
-class TryCmdTestCase(utils.BaseTestCase):
+class TryCmdTestCase(test.BaseTestCase):
def test_keep_warnings(self):
self.useFixture(fixtures.MonkeyPatch(
'openstack.common.processutils.execute', fake_execute))
@@ -231,7 +231,7 @@ class FakeSshConnection(object):
six.StringIO('stderr'))
-class SshExecuteTestCase(utils.BaseTestCase):
+class SshExecuteTestCase(test.BaseTestCase):
def test_invalid_addl_env(self):
self.assertRaises(processutils.InvalidArgumentError,
processutils.ssh_execute,
diff --git a/tests/unit/test_sslutils.py b/tests/unit/test_sslutils.py
index 4c0646e..ce9176f 100644
--- a/tests/unit/test_sslutils.py
+++ b/tests/unit/test_sslutils.py
@@ -17,10 +17,10 @@
import ssl
from openstack.common import sslutils
-from tests import utils
+from openstack.common import test
-class SSLUtilsTest(utils.BaseTestCase):
+class SSLUtilsTest(test.BaseTestCase):
def test_valid_versions(self):
self.assertEquals(sslutils.validate_ssl_version("SSLv3"),
ssl.PROTOCOL_SSLv3)
diff --git a/tests/unit/test_strutils.py b/tests/unit/test_strutils.py
index a8d8462..8c5b618 100644
--- a/tests/unit/test_strutils.py
+++ b/tests/unit/test_strutils.py
@@ -20,10 +20,10 @@ import mock
import six
from openstack.common import strutils
-from tests import utils
+from openstack.common import test
-class StrUtilsTest(utils.BaseTestCase):
+class StrUtilsTest(test.BaseTestCase):
def test_bool_bool_from_string(self):
self.assertTrue(strutils.bool_from_string(True))
diff --git a/tests/unit/test_threadgroup.py b/tests/unit/test_threadgroup.py
index 5af6653..2273800 100644
--- a/tests/unit/test_threadgroup.py
+++ b/tests/unit/test_threadgroup.py
@@ -20,13 +20,13 @@ Unit Tests for thread groups
"""
from openstack.common import log as logging
+from openstack.common import test
from openstack.common import threadgroup
-from tests import utils
LOG = logging.getLogger(__name__)
-class ThreadGroupTestCase(utils.BaseTestCase):
+class ThreadGroupTestCase(test.BaseTestCase):
"""Test cases for thread group."""
def setUp(self):
super(ThreadGroupTestCase, self).setUp()
diff --git a/tests/unit/test_timeutils.py b/tests/unit/test_timeutils.py
index bfab278..cd6188b 100644
--- a/tests/unit/test_timeutils.py
+++ b/tests/unit/test_timeutils.py
@@ -21,11 +21,11 @@ import datetime
import iso8601
import mock
+from openstack.common import test
from openstack.common import timeutils
-from tests import utils
-class TimeUtilsTest(utils.BaseTestCase):
+class TimeUtilsTest(test.BaseTestCase):
def setUp(self):
super(TimeUtilsTest, self).setUp()
@@ -181,7 +181,7 @@ class TimeUtilsTest(utils.BaseTestCase):
self.assertTrue(timeutils.is_soon(expires, 0))
-class TestIso8601Time(utils.BaseTestCase):
+class TestIso8601Time(test.BaseTestCase):
def _instaneous(self, timestamp, yr, mon, day, hr, min, sec, micro):
self.assertEquals(timestamp.year, yr)
diff --git a/tests/unit/test_uuidutils.py b/tests/unit/test_uuidutils.py
index e9348e2..4af5a8e 100644
--- a/tests/unit/test_uuidutils.py
+++ b/tests/unit/test_uuidutils.py
@@ -17,11 +17,11 @@
import uuid
+from openstack.common import test
from openstack.common import uuidutils
-from tests import utils
-class UUIDUtilsTest(utils.BaseTestCase):
+class UUIDUtilsTest(test.BaseTestCase):
def test_generate_uuid(self):
uuid_string = uuidutils.generate_uuid()
diff --git a/tests/unit/test_xmlutils.py b/tests/unit/test_xmlutils.py
index 5d2bd05..a5bd29f 100644
--- a/tests/unit/test_xmlutils.py
+++ b/tests/unit/test_xmlutils.py
@@ -16,11 +16,11 @@
from xml.dom import minidom
+from openstack.common import test
from openstack.common import xmlutils
-from tests import utils
-class XMLUtilsTestCase(utils.BaseTestCase):
+class XMLUtilsTestCase(test.BaseTestCase):
def test_safe_parse_xml(self):
normal_body = ("""
@@ -55,7 +55,7 @@ class XMLUtilsTestCase(utils.BaseTestCase):
killer_body())
-class SafeParserTestCase(utils.BaseTestCase):
+class SafeParserTestCase(test.BaseTestCase):
def test_external_dtd(self):
xml_string = ("""<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"