mirror of https://github.com/ARMmbed/mbed-os.git
142 lines
6.2 KiB
Python
142 lines
6.2 KiB
Python
"""
|
|
mbed SDK
|
|
Copyright (c) 2011-2015 ARM Limited
|
|
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.
|
|
"""
|
|
|
|
import six
|
|
import sys
|
|
import unittest
|
|
|
|
from mock import patch
|
|
from mbed_greentea.mbed_greentea_hooks import GreenteaCliTestHook
|
|
from mbed_greentea.mbed_greentea_hooks import LcovHook
|
|
|
|
class GreenteaCliTestHookTest(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.cli_hooks = GreenteaCliTestHook('test_hook', 'some command')
|
|
self.lcov_hooks = LcovHook('test_hook', 'some command')
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
def test_format_before_run(self):
|
|
command = LcovHook.format_before_run("command {expansion}", None, verbose=True)
|
|
self.assertEqual(command, "command {expansion}")
|
|
|
|
expansions = ["test", "test2"]
|
|
command = LcovHook.format_before_run("command {expansion}", {"expansion": expansions}, verbose=True)
|
|
self.assertEqual(command, "command ['test', 'test2']")
|
|
|
|
def test_expand_parameters_with_1_list(self):
|
|
# Simple list
|
|
self.assertEqual('new_value_1 new_value_2',
|
|
self.cli_hooks.expand_parameters('[{token_list}]', {
|
|
"token_list" : ['new_value_1', 'new_value_2']
|
|
}))
|
|
|
|
# List with prefix
|
|
self.assertEqual('-a new_value_1 -a new_value_2',
|
|
self.cli_hooks.expand_parameters('[-a {token_list}]', {
|
|
"token_list" : ['new_value_1', 'new_value_2']
|
|
}))
|
|
|
|
# List with prefix and extra text
|
|
self.assertEqual('-a /path/to/new_value_1 -a /path/to/new_value_2',
|
|
self.cli_hooks.expand_parameters('[-a /path/to/{token_list}]', {
|
|
"token_list" : ['new_value_1', 'new_value_2']
|
|
}))
|
|
|
|
def test_expand_parameters_with_2_lists(self):
|
|
self.assertEqual('ytA T1',
|
|
self.cli_hooks.expand_parameters('[{yt_target_list} {test_list}]', {
|
|
"test_list" : ['T1'],
|
|
"yt_target_list" : ['ytA'],
|
|
}))
|
|
|
|
self.assertEqual('ytA T1 ytA T2 ytA T3 ytB T1 ytB T2 ytB T3 ytC T1 ytC T2 ytC T3',
|
|
self.cli_hooks.expand_parameters('[{yt_target_list} {test_list}]', {
|
|
"test_list" : ['T1', 'T2', 'T3'],
|
|
"yt_target_list" : ['ytA', 'ytB', 'ytC'],
|
|
}))
|
|
|
|
# In this test we expect {yotta_target_name} token to stay untouched because it is not declared as a list
|
|
self.assertEqual('lcov -a /build/{yotta_target_name}/mbed-drivers-test-basic.info -a /build/{yotta_target_name}/mbed-drivers-test-hello.info',
|
|
self.cli_hooks.expand_parameters('lcov [-a /build/{yotta_target_name}/{test_list}.info]', {
|
|
"test_list" : ['mbed-drivers-test-basic', 'mbed-drivers-test-hello'],
|
|
"yotta_target_name" : 'frdm-k64f-gcc'
|
|
}))
|
|
|
|
def test_expand_parameters_exceptions(self):
|
|
# Here [] is reduced to empty string
|
|
self.assertEqual('',
|
|
self.cli_hooks.expand_parameters('[]', {
|
|
"test_list" : ['mbed-drivers-test-basic', 'mbed-drivers-test-hello'],
|
|
"yotta_target_name" : 'frdm-k64f-gcc'
|
|
}))
|
|
|
|
# Here [some string] is reduced to empty string
|
|
self.assertEqual('',
|
|
self.cli_hooks.expand_parameters('[some string]', {
|
|
"test_list" : ['mbed-drivers-test-basic', 'mbed-drivers-test-hello'],
|
|
"yotta_target_name" : 'frdm-k64f-gcc'
|
|
}))
|
|
|
|
# Here [some string] is reduced to empty string
|
|
self.assertEqual('-+=abc',
|
|
self.cli_hooks.expand_parameters('-+=[some string]abc', {
|
|
"test_list" : ['mbed-drivers-test-basic', 'mbed-drivers-test-hello'],
|
|
"yotta_target_name" : 'frdm-k64f-gcc'
|
|
}))
|
|
|
|
self.assertEqual(None,
|
|
self.cli_hooks.expand_parameters('some text without square brackets but with tokes: {test_list} and {yotta_target_name}', {
|
|
"test_list" : ['mbed-drivers-test-basic', 'mbed-drivers-test-hello'],
|
|
"yotta_target_name" : 'frdm-k64f-gcc'
|
|
}))
|
|
|
|
def test_format_before_run_with_1_list_1_string(self):
|
|
# {test_name_list} should expand [] list twice
|
|
# {yotta_target_name} should not be used to expand, only to replace
|
|
self.assertEqual('build path = -a /build/frdm-k64f-gcc/mbed-drivers-test-basic -a /build/frdm-k64f-gcc/mbed-drivers-test-hello',
|
|
self.cli_hooks.format_before_run('build path = [-a /build/{yotta_target_name}/{test_name_list}]', {
|
|
"test_name_list" : ['mbed-drivers-test-basic', 'mbed-drivers-test-hello'],
|
|
"yotta_target_name" : 'frdm-k64f-gcc',
|
|
}))
|
|
|
|
@patch('os.path.exists')
|
|
@patch('os.path.getsize')
|
|
def test_check_if_file_exists(self, pathGetsize_mock, pathExists_mock):
|
|
pathExists_mock.return_value = True
|
|
self.assertEqual('-a ./build/frdm-k64f-gcc.info',
|
|
self.lcov_hooks.check_if_file_exists_or_is_empty('(-a <<./build/frdm-k64f-gcc.info>>)'))
|
|
|
|
pathExists_mock.return_value = False
|
|
self.assertEqual('',
|
|
self.lcov_hooks.check_if_file_exists_or_is_empty('(-a <<./build/frdm-k64f-gcc.info>>)'))
|
|
|
|
@patch('os.path.exists')
|
|
@patch('os.path.getsize')
|
|
def test_check_if_file_is_empty(self, pathGetsize_mock, pathExists_mock):
|
|
pathExists_mock.return_value = True
|
|
pathGetsize_mock.return_value = 1
|
|
self.assertEqual('-a ./build/frdm-k64f-gcc.info',
|
|
self.lcov_hooks.check_if_file_exists_or_is_empty('(-a <<./build/frdm-k64f-gcc.info>>)'))
|
|
|
|
pathExists_mock.return_value = True
|
|
pathGetsize_mock.return_value = 0
|
|
self.assertEqual('',
|
|
self.lcov_hooks.check_if_file_exists_or_is_empty('(-a <<./build/frdm-k64f-gcc.info>>)'))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|