tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

avd_test.py (4272B)


      1 #!/usr/bin/env vpython3
      2 # Copyright 2024 The Chromium Authors
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 import os
      7 import sys
      8 import unittest
      9 
     10 from unittest.mock import patch, mock_open
     11 
     12 sys.path.append(
     13    os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')))
     14 from pylib.local.emulator import avd
     15 from pylib.local.emulator.proto import avd_pb2
     16 
     17 
     18 def CreateAvdSettings():
     19  # python generated codes are simplified since Protobuf v3.20.0 and cause
     20  # pylint error: https://github.com/protocolbuffers/protobuf/issues/9730
     21  # pylint: disable=no-member
     22  return avd_pb2.AvdSettings()
     23 
     24 
     25 class DebugTagsTest(unittest.TestCase):
     26 
     27  def testOrdering(self):
     28    self.assertEqual(['a', 'b', 'c'], avd.ProcessDebugTags('c,b,a'))
     29    self.assertEqual(['a', 'd', '-b', '-c'], avd.ProcessDebugTags('-c,-b,d,a'))
     30 
     31  def testOrderingWithDefaultTags(self):
     32    default_debug_tags = ['a', '-d', '-c']
     33    tags = avd.ProcessDebugTags('c,b,-e', default_debug_tags=default_debug_tags)
     34    self.assertEqual(['a', 'b', 'c', '-c', '-d', '-e'], tags)
     35 
     36 
     37 class AvdCreateTest(unittest.TestCase):
     38 
     39  _CONFIG = """
     40  avd_settings {
     41    screen {
     42      density: 480
     43      height: 1920
     44      width: 1080
     45    }
     46  }
     47  """
     48 
     49  def setUp(self):
     50    with patch('builtins.open', mock_open(read_data=self._CONFIG)):
     51      self.avd_config = avd.AvdConfig('/path/to/creation.textpb')
     52 
     53  def testGetAvdSettingsWithoutVariants(self):
     54    avd_settings = self.avd_config.GetAvdSettings()
     55    self.assertEqual(avd_settings.screen.density, 480)
     56    self.assertEqual(avd_settings.screen.height, 1920)
     57    self.assertEqual(avd_settings.screen.width, 1080)
     58 
     59    with self.assertRaises(avd.AvdException):
     60      self.avd_config.GetAvdSettings('baz')
     61 
     62  def testGetAvdSettingsWithVariants(self):
     63    avd_settings = CreateAvdSettings()
     64    avd_settings.avd_properties['disk.dataPartition.size'] = '4G'
     65    self.avd_config.avd_variants['foo'].CopyFrom(avd_settings)
     66    avd_settings.avd_properties['disk.dataPartition.size'] = '8G'
     67    self.avd_config.avd_variants['bar'].CopyFrom(avd_settings)
     68 
     69    avd_settings_foo = self.avd_config.GetAvdSettings('foo')
     70    avd_settings_bar = self.avd_config.GetAvdSettings('bar')
     71 
     72    # The value of screen should be the same.
     73    self.assertEqual(avd_settings_foo.screen.density, 480)
     74    self.assertEqual(avd_settings_foo.screen.height, 1920)
     75    self.assertEqual(avd_settings_foo.screen.width, 1080)
     76 
     77    self.assertEqual(avd_settings_bar.screen.density, 480)
     78    self.assertEqual(avd_settings_bar.screen.height, 1920)
     79    self.assertEqual(avd_settings_bar.screen.width, 1080)
     80 
     81    # The values of the avd_properties should be different.
     82    self.assertEqual(avd_settings_foo.avd_properties['disk.dataPartition.size'],
     83                     '4G')
     84    self.assertEqual(avd_settings_bar.avd_properties['disk.dataPartition.size'],
     85                     '8G')
     86 
     87    # The base avd_settings should not be changed.
     88    self.assertEqual(self.avd_config.avd_settings.screen.density, 480)
     89    self.assertEqual(self.avd_config.avd_settings.screen.height, 1920)
     90    self.assertEqual(self.avd_config.avd_settings.screen.width, 1080)
     91    self.assertNotIn('disk.dataPartition.size',
     92                     self.avd_config.avd_settings.avd_properties)
     93 
     94    # Non-exist variant
     95    with self.assertRaises(avd.AvdException):
     96      self.avd_config.GetAvdSettings('baz')
     97 
     98  def testGetMetadataWithoutVariants(self):
     99    metadata = self.avd_config.GetMetadata()
    100    self.assertIn('avd_proto_path', metadata)
    101    self.assertIn('is_available', metadata)
    102    self.assertNotIn('avd_variants', metadata)
    103 
    104  def testGetMetadataWithVariants(self):
    105    avd_settings = CreateAvdSettings()
    106    avd_settings.avd_properties['disk.dataPartition.size'] = '4G'
    107    self.avd_config.avd_variants['foo'].CopyFrom(avd_settings)
    108    avd_settings.avd_properties['disk.dataPartition.size'] = '8G'
    109    self.avd_config.avd_variants['bar'].CopyFrom(avd_settings)
    110 
    111    metadata = self.avd_config.GetMetadata()
    112    self.assertIn('avd_proto_path', metadata)
    113    self.assertIn('is_available', metadata)
    114    self.assertIn('avd_variants', metadata)
    115    self.assertEqual(['bar', 'foo'], metadata['avd_variants'])
    116 
    117 
    118 if __name__ == "__main__":
    119  unittest.main()