blob: b08b24b4fa51204dafe4a320481773fb1df39338 [file] [log] [blame]
#!/usr/bin/env vpython
# Copyright 2021 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.
"""Tests for local_device_gtest_test_run."""
# pylint: disable=protected-access
from __future__ import absolute_import
import os
import tempfile
import unittest
from pylib.gtest import gtest_test_instance
from pylib.local.device import local_device_environment
from pylib.local.device import local_device_gtest_run
from py_utils import tempfile_ext
import mock # pylint: disable=import-error
class LocalDeviceGtestRunTest(unittest.TestCase):
def setUp(self):
self._obj = local_device_gtest_run.LocalDeviceGtestRun(
mock.MagicMock(spec=local_device_environment.LocalDeviceEnvironment),
mock.MagicMock(spec=gtest_test_instance.GtestTestInstance))
def testExtractTestsFromFilter(self):
# Checks splitting by colons.
self.assertEqual([
'b17',
'm4e3',
'p51',
], local_device_gtest_run._ExtractTestsFromFilter('b17:m4e3:p51'))
# Checks the '-' sign.
self.assertIsNone(local_device_gtest_run._ExtractTestsFromFilter('-mk2'))
# Checks the more than one asterick.
self.assertIsNone(
local_device_gtest_run._ExtractTestsFromFilter('.mk2*:.M67*'))
# Checks just an asterick without a period
self.assertIsNone(local_device_gtest_run._ExtractTestsFromFilter('M67*'))
# Checks an asterick at the end with a period.
self.assertEqual(['.M67*'],
local_device_gtest_run._ExtractTestsFromFilter('.M67*'))
def testGetLLVMProfilePath(self):
path = local_device_gtest_run._GetLLVMProfilePath('test_dir', 'sr71', '5')
self.assertEqual(path, os.path.join('test_dir', 'sr71_5_%2m.profraw'))
@mock.patch('subprocess.check_output')
def testMergeCoverageFiles(self, mock_sub):
with tempfile_ext.NamedTemporaryDirectory() as cov_tempd:
pro_tempd = os.path.join(cov_tempd, 'profraw')
os.mkdir(pro_tempd)
profdata = tempfile.NamedTemporaryFile(
dir=pro_tempd,
delete=False,
suffix=local_device_gtest_run._PROFRAW_FILE_EXTENSION)
local_device_gtest_run._MergeCoverageFiles(cov_tempd, pro_tempd)
# Merged file should be deleted.
self.assertFalse(os.path.exists(profdata.name))
self.assertTrue(mock_sub.called)
@mock.patch('pylib.utils.google_storage_helper.upload')
def testUploadTestArtifacts(self, mock_gsh):
link = self._obj._UploadTestArtifacts(mock.MagicMock(), None)
self.assertFalse(mock_gsh.called)
self.assertIsNone(link)
result = 'A/10/warthog/path'
mock_gsh.return_value = result
with tempfile_ext.NamedTemporaryFile() as temp_f:
link = self._obj._UploadTestArtifacts(mock.MagicMock(), temp_f)
self.assertTrue(mock_gsh.called)
self.assertEqual(result, link)
if __name__ == '__main__':
unittest.main(verbosity=2)