mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
# Copyright 2014 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import logging
|
|
import os
|
|
import os.path
|
|
|
|
import mojo_unittest
|
|
import validation_test_interfaces_mojom
|
|
|
|
# pylint: disable=E0611
|
|
import mojo_system as system
|
|
from mojo_bindings import messaging
|
|
from mojo_tests import validation_util
|
|
from mopy.paths import Paths
|
|
|
|
logging.basicConfig(level=logging.ERROR)
|
|
paths = Paths()
|
|
|
|
|
|
class RoutingMessageReceiver(messaging.MessageReceiver):
|
|
def __init__(self, request, response):
|
|
self.request = request
|
|
self.response = response
|
|
|
|
def Accept(self, message):
|
|
if message.header.is_response:
|
|
return self.response.Accept(message)
|
|
else:
|
|
return self.request.Accept(message)
|
|
|
|
|
|
class SinkMessageReceiver(messaging.MessageReceiverWithResponder):
|
|
|
|
def Accept(self, message):
|
|
return False
|
|
|
|
def AcceptWithResponder(self, message, responder):
|
|
return False
|
|
|
|
def Close(self):
|
|
pass
|
|
|
|
|
|
class HandleMock(object):
|
|
def IsValid(self):
|
|
return True
|
|
|
|
def Close(self):
|
|
pass
|
|
|
|
|
|
class ValidationTest(mojo_unittest.MojoTestCase):
|
|
|
|
@staticmethod
|
|
def ParseData(data_dir, filename):
|
|
data = validation_util.ParseData(
|
|
open(os.path.join(data_dir, filename), 'r').read())
|
|
expect_file = filename[:-4] + 'expected'
|
|
expected_error = open(
|
|
os.path.join(data_dir, expect_file), 'r').read().strip();
|
|
success = expected_error == 'PASS'
|
|
return (filename, data, success)
|
|
|
|
@staticmethod
|
|
def GetData(prefix):
|
|
data_dir = os.path.join(paths.src_root, 'mojo', 'public', 'interfaces',
|
|
'bindings', 'tests', 'data', 'validation')
|
|
|
|
# TODO(yzshen): Skip some interface versioning tests.
|
|
skipped_tests = ["conformance_mthd13_good_2.data"]
|
|
|
|
return [ValidationTest.ParseData(data_dir, x) for x in os.listdir(data_dir)
|
|
if x.startswith(prefix) and x.endswith('.data') and
|
|
x not in skipped_tests]
|
|
|
|
def runTest(self, prefix, message_receiver):
|
|
for (filename, data, expected) in ValidationTest.GetData(prefix):
|
|
self.assertEquals(len(data.error_message), 0)
|
|
handles = [HandleMock() for _ in xrange(data.num_handles)]
|
|
message = messaging.Message(data.data, handles)
|
|
self.assertEquals(message_receiver.Accept(message), expected,
|
|
'Unexpected result for test: %s' % filename)
|
|
|
|
def testConformance(self):
|
|
manager = validation_test_interfaces_mojom.ConformanceTestInterface.manager
|
|
proxy = manager._InternalProxy(SinkMessageReceiver(), None, 0)
|
|
stub = manager._Stub(proxy)
|
|
self.runTest('conformance_', stub)
|