| #!/usr/bin/env vpython3 |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """File for testing ffx_emulator.py.""" |
| |
| import argparse |
| import unittest |
| import unittest.mock as mock |
| |
| from ffx_emulator import FfxEmulator |
| |
| |
| class FfxEmulatorTest(unittest.TestCase): |
| """Unittests for ffx_emulator.py""" |
| def test_use_fixed_node_name(self) -> None: |
| """FfxEmulator should use a fixed node name.""" |
| # Allowing the test case to access FfxEmulator._node_name directly. |
| # pylint: disable=protected-access |
| self.assertEqual( |
| FfxEmulator( |
| argparse.Namespace( |
| **{ |
| 'product': None, |
| 'enable_graphics': False, |
| 'hardware_gpu': False, |
| 'logs_dir': '.', |
| 'with_network': False, |
| 'everlasting': True, |
| 'device_spec': '' |
| }))._node_name, 'fuchsia-everlasting-emulator') |
| |
| def test_use_random_node_name(self) -> None: |
| """FfxEmulator should not use a fixed node name.""" |
| # Allowing the test case to access FfxEmulator._node_name directly. |
| # pylint: disable=protected-access |
| self.assertNotEqual( |
| FfxEmulator( |
| argparse.Namespace( |
| **{ |
| 'product': None, |
| 'enable_graphics': False, |
| 'hardware_gpu': False, |
| 'logs_dir': '.', |
| 'with_network': False, |
| 'everlasting': False, |
| 'device_spec': '' |
| }))._node_name, 'fuchsia-everlasting-emulator') |
| |
| @mock.patch('ffx_emulator.run_ffx_command') |
| def test_use_none_device_spec(self, mock_ffx) -> None: |
| """FfxEmulator should use the default device spec if spec is None.""" |
| FfxEmulator( |
| argparse.Namespace( |
| **{ |
| 'product': None, |
| 'enable_graphics': False, |
| 'hardware_gpu': False, |
| 'logs_dir': '.', |
| 'with_network': False, |
| 'everlasting': False, |
| 'device_spec': None |
| })).__enter__() |
| self.assertIn(' '.join(['--net', 'user']), |
| ' '.join(mock_ffx.call_args.kwargs['cmd'])) |
| self.assertNotIn('--device', mock_ffx.call_args.kwargs['cmd']) |
| |
| @mock.patch('ffx_emulator.run_ffx_command') |
| def test_use_empty_device_spec(self, mock_ffx) -> None: |
| """FfxEmulator should use the default device spec if spec is empty.""" |
| FfxEmulator( |
| argparse.Namespace( |
| **{ |
| 'product': None, |
| 'enable_graphics': False, |
| 'hardware_gpu': False, |
| 'logs_dir': '.', |
| 'with_network': False, |
| 'everlasting': False, |
| 'device_spec': '' |
| })).__enter__() |
| self.assertIn(' '.join(['--net', 'user']), |
| ' '.join(mock_ffx.call_args.kwargs['cmd'])) |
| self.assertNotIn('--device', mock_ffx.call_args.kwargs['cmd']) |
| |
| @mock.patch('ffx_emulator.run_ffx_command') |
| def test_use_large_device_spec(self, mock_ffx) -> None: |
| """FfxEmulator should use large device spec.""" |
| FfxEmulator( |
| argparse.Namespace( |
| **{ |
| 'product': None, |
| 'enable_graphics': False, |
| 'hardware_gpu': False, |
| 'logs_dir': '.', |
| 'with_network': False, |
| 'everlasting': False, |
| 'device_spec': 'large' |
| })).__enter__() |
| self.assertIn(' '.join(['--device', 'large']), |
| ' '.join(mock_ffx.call_args.kwargs['cmd'])) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |