Kilo beta 3 unit test errors in Debian: AttributeError: 'ValidationError' object has no attribute 'relative_path'

Bug #1436224 reported by Thomas Goirand
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Designate
Incomplete
High
Kiall Mac Innes

Bug Description

When building Kilo b3 release of Designate, I had the below unit tests errors. Please help me to fix this and find out what's going on.

Cheers,

Thomas Goirand (zigo)

======================================================================
FAIL: designate.tests.test_objects.test_base.DesignateObjectTest.test_validate
designate.tests.test_objects.test_base.DesignateObjectTest.test_validate
----------------------------------------------------------------------
_StringException: pythonlogging:'': {{{
DEBUG [stevedore.extension] found extension EntryPoint.parse('qpid = oslo_messaging._drivers.impl_qpid:QpidDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('amqp = oslo_messaging._drivers.protocols.amqp.driver:ProtonDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('kombu = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('rabbit = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = oslo_messaging._drivers.impl_fake:FakeDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('zmq = oslo_messaging._drivers.impl_zmq:ZmqDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('log = oslo_messaging.notify._impl_log:LogDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messagingv2 = oslo_messaging.notify._impl_messaging:MessagingV2Driver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = oslo_messaging.notify._impl_noop:NoOpDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('routing = oslo_messaging.notify._impl_routing:RoutingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('test = oslo_messaging.notify._impl_test:TestDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messaging = oslo_messaging.notify._impl_messaging:MessagingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
   DEBUG [designate.utils] Searching for configuration at path: policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Found configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /etc/designate/policy.json
    INFO [designate.policy] Using policy_file found at: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.policy] Enforcer is not present, recreating.
   DEBUG [designate.service] Creating RPC Server on topic 'central'
   DEBUG [stevedore.extension] found extension EntryPoint.parse('aioeventlet = oslo_messaging._executors.impl_aioeventlet:AsyncioEventletExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('threading = oslo_messaging._executors.impl_thread:ThreadExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('blocking = oslo_messaging._executors.impl_blocking:BlockingExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('eventlet = oslo_messaging._executors.impl_eventlet:EventletExecutor')
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.quota] Loading quota driver: storage
   DEBUG [designate.plugin] Looking for driver storage in designate.quota
   DEBUG [stevedore.extension] found extension EntryPoint.parse('storage = designate.quota.impl_storage:StorageQuota')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = designate.quota.impl_noop:NoopQuota')
   DEBUG [designate.plugin] Loaded plugin quota:storage
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
    INFO [sqlalchemy.engine.base.Engine] SELECT 1
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [sqlalchemy.engine.base.Engine] SELECT tlds.id, tlds.version, tlds.created_at, tlds.updated_at, tlds.name, tlds.description
FROM tlds ORDER BY tlds.created_at ASC, tlds.id ASC, tlds.created_at ASC
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [designate.central.service] NOT checking for TLDs
    INFO [designate.service] Starting central service (version: 2015.1-b3)
   DEBUG [designate.service] Starting RPC server on topic 'central'
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.objects.base] Validating 'TestValidatableObject' object with values: {}
   DEBUG [designate.network_api.fake] Resetting any allocations.
}}}

Traceback (most recent call last):
  File "designate/tests/test_objects/test_base.py", line 348, in test_validate
    obj.validate()
  File "designate/objects/base.py", line 302, in validate
    errors.append(ValidationError.from_js_error(error))
  File "designate/objects/validation_error.py", line 33, in from_js_error
    e.relative_path = js_error.relative_path
AttributeError: 'ValidationError' object has no attribute 'relative_path'
Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

pythonlogging:'': {{{
DEBUG [stevedore.extension] found extension EntryPoint.parse('qpid = oslo_messaging._drivers.impl_qpid:QpidDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('amqp = oslo_messaging._drivers.protocols.amqp.driver:ProtonDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('kombu = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('rabbit = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = oslo_messaging._drivers.impl_fake:FakeDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('zmq = oslo_messaging._drivers.impl_zmq:ZmqDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('log = oslo_messaging.notify._impl_log:LogDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messagingv2 = oslo_messaging.notify._impl_messaging:MessagingV2Driver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = oslo_messaging.notify._impl_noop:NoOpDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('routing = oslo_messaging.notify._impl_routing:RoutingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('test = oslo_messaging.notify._impl_test:TestDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messaging = oslo_messaging.notify._impl_messaging:MessagingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
   DEBUG [designate.utils] Searching for configuration at path: policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Found configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /etc/designate/policy.json
    INFO [designate.policy] Using policy_file found at: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.policy] Enforcer is not present, recreating.
   DEBUG [designate.service] Creating RPC Server on topic 'central'
   DEBUG [stevedore.extension] found extension EntryPoint.parse('aioeventlet = oslo_messaging._executors.impl_aioeventlet:AsyncioEventletExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('threading = oslo_messaging._executors.impl_thread:ThreadExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('blocking = oslo_messaging._executors.impl_blocking:BlockingExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('eventlet = oslo_messaging._executors.impl_eventlet:EventletExecutor')
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.quota] Loading quota driver: storage
   DEBUG [designate.plugin] Looking for driver storage in designate.quota
   DEBUG [stevedore.extension] found extension EntryPoint.parse('storage = designate.quota.impl_storage:StorageQuota')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = designate.quota.impl_noop:NoopQuota')
   DEBUG [designate.plugin] Loaded plugin quota:storage
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
    INFO [sqlalchemy.engine.base.Engine] SELECT 1
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [sqlalchemy.engine.base.Engine] SELECT tlds.id, tlds.version, tlds.created_at, tlds.updated_at, tlds.name, tlds.description
FROM tlds ORDER BY tlds.created_at ASC, tlds.id ASC, tlds.created_at ASC
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [designate.central.service] NOT checking for TLDs
    INFO [designate.service] Starting central service (version: 2015.1-b3)
   DEBUG [designate.service] Starting RPC server on topic 'central'
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.objects.base] Validating 'TestValidatableObject' object with values: {}
   DEBUG [designate.network_api.fake] Resetting any allocations.
}}}

Traceback (most recent call last):
  File "designate/tests/test_objects/test_base.py", line 348, in test_validate
    obj.validate()
  File "designate/objects/base.py", line 302, in validate
    errors.append(ValidationError.from_js_error(error))
  File "designate/objects/validation_error.py", line 33, in from_js_error
    e.relative_path = js_error.relative_path
AttributeError: 'ValidationError' object has no attribute 'relative_path'

Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

pythonlogging:'': {{{
DEBUG [stevedore.extension] found extension EntryPoint.parse('qpid = oslo_messaging._drivers.impl_qpid:QpidDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('amqp = oslo_messaging._drivers.protocols.amqp.driver:ProtonDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('kombu = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('rabbit = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = oslo_messaging._drivers.impl_fake:FakeDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('zmq = oslo_messaging._drivers.impl_zmq:ZmqDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('log = oslo_messaging.notify._impl_log:LogDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messagingv2 = oslo_messaging.notify._impl_messaging:MessagingV2Driver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = oslo_messaging.notify._impl_noop:NoOpDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('routing = oslo_messaging.notify._impl_routing:RoutingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('test = oslo_messaging.notify._impl_test:TestDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messaging = oslo_messaging.notify._impl_messaging:MessagingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
   DEBUG [designate.utils] Searching for configuration at path: policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Found configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /etc/designate/policy.json
    INFO [designate.policy] Using policy_file found at: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.policy] Enforcer is not present, recreating.
   DEBUG [designate.service] Creating RPC Server on topic 'central'
   DEBUG [stevedore.extension] found extension EntryPoint.parse('aioeventlet = oslo_messaging._executors.impl_aioeventlet:AsyncioEventletExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('threading = oslo_messaging._executors.impl_thread:ThreadExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('blocking = oslo_messaging._executors.impl_blocking:BlockingExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('eventlet = oslo_messaging._executors.impl_eventlet:EventletExecutor')
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.quota] Loading quota driver: storage
   DEBUG [designate.plugin] Looking for driver storage in designate.quota
   DEBUG [stevedore.extension] found extension EntryPoint.parse('storage = designate.quota.impl_storage:StorageQuota')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = designate.quota.impl_noop:NoopQuota')
   DEBUG [designate.plugin] Loaded plugin quota:storage
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
    INFO [sqlalchemy.engine.base.Engine] SELECT 1
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [sqlalchemy.engine.base.Engine] SELECT tlds.id, tlds.version, tlds.created_at, tlds.updated_at, tlds.name, tlds.description
FROM tlds ORDER BY tlds.created_at ASC, tlds.id ASC, tlds.created_at ASC
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [designate.central.service] NOT checking for TLDs
    INFO [designate.service] Starting central service (version: 2015.1-b3)
   DEBUG [designate.service] Starting RPC server on topic 'central'
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.objects.base] Validating 'TestValidatableObject' object with values: {}
   DEBUG [designate.network_api.fake] Resetting any allocations.
}}}

Traceback (most recent call last):
  File "designate/tests/test_objects/test_base.py", line 348, in test_validate
    obj.validate()
  File "designate/objects/base.py", line 302, in validate
    errors.append(ValidationError.from_js_error(error))
  File "designate/objects/validation_error.py", line 33, in from_js_error
    e.relative_path = js_error.relative_path
AttributeError: 'ValidationError' object has no attribute 'relative_path'

======================================================================
FAIL: designate.tests.test_objects.test_base.DesignateObjectTest.test_validate_recursive
designate.tests.test_objects.test_base.DesignateObjectTest.test_validate_recursive
----------------------------------------------------------------------
_StringException: pythonlogging:'': {{{
DEBUG [stevedore.extension] found extension EntryPoint.parse('qpid = oslo_messaging._drivers.impl_qpid:QpidDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('amqp = oslo_messaging._drivers.protocols.amqp.driver:ProtonDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('kombu = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('rabbit = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = oslo_messaging._drivers.impl_fake:FakeDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('zmq = oslo_messaging._drivers.impl_zmq:ZmqDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('log = oslo_messaging.notify._impl_log:LogDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messagingv2 = oslo_messaging.notify._impl_messaging:MessagingV2Driver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = oslo_messaging.notify._impl_noop:NoOpDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('routing = oslo_messaging.notify._impl_routing:RoutingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('test = oslo_messaging.notify._impl_test:TestDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messaging = oslo_messaging.notify._impl_messaging:MessagingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
   DEBUG [designate.utils] Searching for configuration at path: policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Found configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /etc/designate/policy.json
    INFO [designate.policy] Using policy_file found at: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.policy] Enforcer is not present, recreating.
   DEBUG [designate.service] Creating RPC Server on topic 'central'
   DEBUG [stevedore.extension] found extension EntryPoint.parse('aioeventlet = oslo_messaging._executors.impl_aioeventlet:AsyncioEventletExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('threading = oslo_messaging._executors.impl_thread:ThreadExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('blocking = oslo_messaging._executors.impl_blocking:BlockingExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('eventlet = oslo_messaging._executors.impl_eventlet:EventletExecutor')
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.quota] Loading quota driver: storage
   DEBUG [designate.plugin] Looking for driver storage in designate.quota
   DEBUG [stevedore.extension] found extension EntryPoint.parse('storage = designate.quota.impl_storage:StorageQuota')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = designate.quota.impl_noop:NoopQuota')
   DEBUG [designate.plugin] Loaded plugin quota:storage
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
    INFO [sqlalchemy.engine.base.Engine] SELECT 1
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [sqlalchemy.engine.base.Engine] SELECT tlds.id, tlds.version, tlds.created_at, tlds.updated_at, tlds.name, tlds.description
FROM tlds ORDER BY tlds.created_at ASC, tlds.id ASC, tlds.created_at ASC
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [designate.central.service] NOT checking for TLDs
    INFO [designate.service] Starting central service (version: 2015.1-b3)
   DEBUG [designate.service] Starting RPC server on topic 'central'
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.objects.base] Validating 'TestValidatableObject' object with values: {'id': 'MyID', 'nested': {'id': 'MyID'}}
   DEBUG [designate.network_api.fake] Resetting any allocations.
}}}

Traceback (most recent call last):
  File "designate/tests/test_objects/test_base.py", line 368, in test_validate_recursive
    obj.validate()
  File "designate/objects/base.py", line 302, in validate
    errors.append(ValidationError.from_js_error(error))
  File "designate/objects/validation_error.py", line 33, in from_js_error
    e.relative_path = js_error.relative_path
AttributeError: 'ValidationError' object has no attribute 'relative_path'
Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

pythonlogging:'': {{{
DEBUG [stevedore.extension] found extension EntryPoint.parse('qpid = oslo_messaging._drivers.impl_qpid:QpidDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('amqp = oslo_messaging._drivers.protocols.amqp.driver:ProtonDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('kombu = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('rabbit = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = oslo_messaging._drivers.impl_fake:FakeDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('zmq = oslo_messaging._drivers.impl_zmq:ZmqDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('log = oslo_messaging.notify._impl_log:LogDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messagingv2 = oslo_messaging.notify._impl_messaging:MessagingV2Driver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = oslo_messaging.notify._impl_noop:NoOpDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('routing = oslo_messaging.notify._impl_routing:RoutingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('test = oslo_messaging.notify._impl_test:TestDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messaging = oslo_messaging.notify._impl_messaging:MessagingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
   DEBUG [designate.utils] Searching for configuration at path: policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Found configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /etc/designate/policy.json
    INFO [designate.policy] Using policy_file found at: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.policy] Enforcer is not present, recreating.
   DEBUG [designate.service] Creating RPC Server on topic 'central'
   DEBUG [stevedore.extension] found extension EntryPoint.parse('aioeventlet = oslo_messaging._executors.impl_aioeventlet:AsyncioEventletExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('threading = oslo_messaging._executors.impl_thread:ThreadExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('blocking = oslo_messaging._executors.impl_blocking:BlockingExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('eventlet = oslo_messaging._executors.impl_eventlet:EventletExecutor')
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.quota] Loading quota driver: storage
   DEBUG [designate.plugin] Looking for driver storage in designate.quota
   DEBUG [stevedore.extension] found extension EntryPoint.parse('storage = designate.quota.impl_storage:StorageQuota')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = designate.quota.impl_noop:NoopQuota')
   DEBUG [designate.plugin] Loaded plugin quota:storage
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
    INFO [sqlalchemy.engine.base.Engine] SELECT 1
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [sqlalchemy.engine.base.Engine] SELECT tlds.id, tlds.version, tlds.created_at, tlds.updated_at, tlds.name, tlds.description
FROM tlds ORDER BY tlds.created_at ASC, tlds.id ASC, tlds.created_at ASC
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [designate.central.service] NOT checking for TLDs
    INFO [designate.service] Starting central service (version: 2015.1-b3)
   DEBUG [designate.service] Starting RPC server on topic 'central'
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.objects.base] Validating 'TestValidatableObject' object with values: {'id': 'MyID', 'nested': {'id': 'MyID'}}
   DEBUG [designate.network_api.fake] Resetting any allocations.
}}}

Traceback (most recent call last):
  File "designate/tests/test_objects/test_base.py", line 368, in test_validate_recursive
    obj.validate()
  File "designate/objects/base.py", line 302, in validate
    errors.append(ValidationError.from_js_error(error))
  File "designate/objects/validation_error.py", line 33, in from_js_error
    e.relative_path = js_error.relative_path
AttributeError: 'ValidationError' object has no attribute 'relative_path'

Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

pythonlogging:'': {{{
DEBUG [stevedore.extension] found extension EntryPoint.parse('qpid = oslo_messaging._drivers.impl_qpid:QpidDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('amqp = oslo_messaging._drivers.protocols.amqp.driver:ProtonDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('kombu = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('rabbit = oslo_messaging._drivers.impl_rabbit:RabbitDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = oslo_messaging._drivers.impl_fake:FakeDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('zmq = oslo_messaging._drivers.impl_zmq:ZmqDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('log = oslo_messaging.notify._impl_log:LogDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messagingv2 = oslo_messaging.notify._impl_messaging:MessagingV2Driver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = oslo_messaging.notify._impl_noop:NoOpDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('routing = oslo_messaging.notify._impl_routing:RoutingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('test = oslo_messaging.notify._impl_test:TestDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('messaging = oslo_messaging.notify._impl_messaging:MessagingDriver')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('powerdns = designate.backend.impl_powerdns:PowerDNSBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('bind9 = designate.backend.agent_backend.impl_bind9:Bind9Backend')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.backend.agent_backend.impl_fake:FakeBackend')
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
   DEBUG [designate.utils] Searching for configuration at path: policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Found configuration at path: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/etc/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /«PKGBUILDDIR»/policy.json
   DEBUG [designate.utils] Searching for configuration at path: /etc/designate/policy.json
    INFO [designate.policy] Using policy_file found at: /«PKGBUILDDIR»/etc/designate/policy.json
   DEBUG [designate.policy] Enforcer is not present, recreating.
   DEBUG [designate.service] Creating RPC Server on topic 'central'
   DEBUG [stevedore.extension] found extension EntryPoint.parse('aioeventlet = oslo_messaging._executors.impl_aioeventlet:AsyncioEventletExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('threading = oslo_messaging._executors.impl_thread:ThreadExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('blocking = oslo_messaging._executors.impl_blocking:BlockingExecutor')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('eventlet = oslo_messaging._executors.impl_eventlet:EventletExecutor')
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.quota] Loading quota driver: storage
   DEBUG [designate.plugin] Looking for driver storage in designate.quota
   DEBUG [stevedore.extension] found extension EntryPoint.parse('storage = designate.quota.impl_storage:StorageQuota')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('noop = designate.quota.impl_noop:NoopQuota')
   DEBUG [designate.plugin] Loaded plugin quota:storage
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.network_api] Loading network_api driver: fake
   DEBUG [designate.plugin] Looking for driver fake in designate.network_api
   DEBUG [stevedore.extension] found extension EntryPoint.parse('neutron = designate.network_api.neutron:NeutronNetworkAPI')
   DEBUG [stevedore.extension] found extension EntryPoint.parse('fake = designate.network_api.fake:FakeNetworkAPI')
   DEBUG [designate.plugin] Loaded plugin network_api:fake
    INFO [sqlalchemy.engine.base.Engine] SELECT 1
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [sqlalchemy.engine.base.Engine] SELECT tlds.id, tlds.version, tlds.created_at, tlds.updated_at, tlds.name, tlds.description
FROM tlds ORDER BY tlds.created_at ASC, tlds.id ASC, tlds.created_at ASC
    INFO [sqlalchemy.engine.base.Engine] ()
    INFO [designate.central.service] NOT checking for TLDs
    INFO [designate.service] Starting central service (version: 2015.1-b3)
   DEBUG [designate.service] Starting RPC server on topic 'central'
   DEBUG [designate.plugin] Looking for driver sqlalchemy in designate.storage
   DEBUG [stevedore.extension] found extension EntryPoint.parse('sqlalchemy = designate.storage.impl_sqlalchemy:SQLAlchemyStorage')
   DEBUG [designate.plugin] Loaded plugin storage:sqlalchemy
   DEBUG [designate.objects.base] Validating 'TestValidatableObject' object with values: {'id': 'MyID', 'nested': {'id': 'MyID'}}
   DEBUG [designate.network_api.fake] Resetting any allocations.
}}}

Traceback (most recent call last):
  File "designate/tests/test_objects/test_base.py", line 368, in test_validate_recursive
    obj.validate()
  File "designate/objects/base.py", line 302, in validate
    errors.append(ValidationError.from_js_error(error))
  File "designate/objects/validation_error.py", line 33, in from_js_error
    e.relative_path = js_error.relative_path
AttributeError: 'ValidationError' object has no attribute 'relative_path'

summary: - Kilo beta 3 unit test errors in Debian
+ Kilo beta 3 unit test errors in Debian: AttributeError:
+ 'ValidationError' object has no attribute 'relative_path'
Revision history for this message
Kiall Mac Innes (kiall) wrote :

Hey Thomas - All the unit tests are ran before any code can be checked into the repository, and while we've had changes to this area of the code recently, I suspect we may have an environmental issues with the build? Maybe a mix of old and new code?

I'm guessing this is happening as part of a debian pkg build, on the same system, is it possible to reproduce the issue with `tox -e py27`, or to avoid the tox virtualenv, manually installing the .deb dependencies and running `python setup.py testr` outside of the debian pkg build?

Changed in designate:
status: New → Incomplete
milestone: none → kilo-rc1
assignee: nobody → Kiall Mac Innes (kiall)
importance: Undecided → High
Revision history for this message
Kiall Mac Innes (kiall) wrote :

bug 1436261 has pointed out what's happening here

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.