#!/usr/bin/env python3
#
#   Copyright 2020 - The Android Open Source Project
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

from blueberry.tests.gd.cert import gd_base_test
from shim.cert.stack_test_lib import StackTestBase
from mobly import test_runner


class StackTestBb(gd_base_test.GdBaseTestClass, StackTestBase):

    def setup_class(self):
        super().setup_class(dut_module='SHIM', cert_module='SHIM')


if __name__ == '__main__':
    test_runner.main()
