diff --git a/tools/releasetools/test_common.py b/tools/releasetools/test_common.py
index 787e675..c0c2d3f 100644
--- a/tools/releasetools/test_common.py
+++ b/tools/releasetools/test_common.py
@@ -1899,7 +1899,7 @@
 
 class PartitionBuildPropsTest(test_utils.ReleaseToolsTestCase):
   def setUp(self):
-    self.odm_build_prop = [
+    self.build_prop = [
         'ro.odm.build.date.utc=1578430045',
         'ro.odm.build.fingerprint='
         'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
@@ -1918,81 +1918,13 @@
 
   def test_parseBuildProps_noImportStatement(self):
     build_prop = [
-        'ro.odm.build.date.utc=1578430045',
-        'ro.odm.build.fingerprint='
-        'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
-        'ro.product.odm.device=coral',
-    ]
-    input_file = self._BuildZipFile({
-        'ODM/etc/build.prop': '\n'.join(build_prop),
-    })
-
-    with zipfile.ZipFile(input_file, 'r') as input_zip:
-      placeholder_values = {
-          'ro.boot.product.device_name': ['std', 'pro']
-      }
-      partition_props = common.PartitionBuildProps.FromInputFile(
-          input_zip, 'odm', placeholder_values)
-
-    self.assertEqual({
-        'ro.odm.build.date.utc': '1578430045',
-        'ro.odm.build.fingerprint':
-        'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
-        'ro.product.odm.device': 'coral',
-    }, partition_props.build_props)
-
-    self.assertEqual(set(), partition_props.prop_overrides)
-
-  def test_parseBuildProps_singleImportStatement(self):
-    build_std_prop = [
-        'ro.product.odm.device=coral',
-        'ro.product.odm.name=product1',
-    ]
-    build_pro_prop = [
-        'ro.product.odm.device=coralpro',
-        'ro.product.odm.name=product2',
-    ]
-
-    input_file = self._BuildZipFile({
-        'ODM/etc/build.prop': '\n'.join(self.odm_build_prop),
-        'ODM/etc/build_std.prop': '\n'.join(build_std_prop),
-        'ODM/etc/build_pro.prop': '\n'.join(build_pro_prop),
-    })
-
-    with zipfile.ZipFile(input_file, 'r') as input_zip:
-      placeholder_values = {
-          'ro.boot.product.device_name': 'std'
-      }
-      partition_props = common.PartitionBuildProps.FromInputFile(
-          input_zip, 'odm', placeholder_values)
-
-    self.assertEqual({
-      'ro.odm.build.date.utc': '1578430045',
-      'ro.odm.build.fingerprint':
+      'ro.odm.build.date.utc=1578430045',
+      'ro.odm.build.fingerprint='
       'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
-      'ro.product.odm.device': 'coral',
-      'ro.product.odm.name': 'product1',
-    }, partition_props.build_props)
-
-    with zipfile.ZipFile(input_file, 'r') as input_zip:
-      placeholder_values = {
-          'ro.boot.product.device_name': 'pro'
-      }
-      partition_props = common.PartitionBuildProps.FromInputFile(
-          input_zip, 'odm', placeholder_values)
-
-    self.assertEqual({
-        'ro.odm.build.date.utc': '1578430045',
-        'ro.odm.build.fingerprint':
-        'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
-        'ro.product.odm.device': 'coralpro',
-        'ro.product.odm.name': 'product2',
-    }, partition_props.build_props)
-
-  def test_parseBuildProps_noPlaceHolders(self):
-    build_prop = copy.copy(self.odm_build_prop)
+      'ro.product.odm.device=coral',
+    ]
     input_file = self._BuildZipFile({
-        'ODM/etc/build.prop': '\n'.join(build_prop),
+      'ODM/etc/build.prop': '\n'.join(build_prop),
     })
 
     with zipfile.ZipFile(input_file, 'r') as input_zip:
@@ -2000,136 +1932,10 @@
           input_zip, 'odm')
 
     self.assertEqual({
-        'ro.odm.build.date.utc': '1578430045',
-        'ro.odm.build.fingerprint':
-        'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
-        'ro.product.odm.device': 'coral',
+      'ro.odm.build.date.utc': '1578430045',
+      'ro.odm.build.fingerprint':
+      'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
+      'ro.product.odm.device': 'coral',
     }, partition_props.build_props)
 
-    self.assertEqual(set(), partition_props.prop_overrides)
-
-  def test_parseBuildProps_multipleImportStatements(self):
-    build_prop = copy.deepcopy(self.odm_build_prop)
-    build_prop.append(
-        'import /odm/etc/build_${ro.boot.product.product_name}.prop')
-
-    build_std_prop = [
-        'ro.product.odm.device=coral',
-    ]
-    build_pro_prop = [
-        'ro.product.odm.device=coralpro',
-    ]
-
-    product1_prop = [
-        'ro.product.odm.name=product1',
-        'ro.product.not_care=not_care',
-    ]
-
-    product2_prop = [
-        'ro.product.odm.name=product2',
-        'ro.product.not_care=not_care',
-    ]
-
-    input_file = self._BuildZipFile({
-        'ODM/etc/build.prop': '\n'.join(build_prop),
-        'ODM/etc/build_std.prop': '\n'.join(build_std_prop),
-        'ODM/etc/build_pro.prop': '\n'.join(build_pro_prop),
-        'ODM/etc/build_product1.prop': '\n'.join(product1_prop),
-        'ODM/etc/build_product2.prop': '\n'.join(product2_prop),
-    })
-
-    with zipfile.ZipFile(input_file, 'r') as input_zip:
-      placeholder_values = {
-          'ro.boot.product.device_name': 'std',
-          'ro.boot.product.product_name': 'product1',
-          'ro.boot.product.not_care': 'not_care',
-      }
-      partition_props = common.PartitionBuildProps.FromInputFile(
-          input_zip, 'odm', placeholder_values)
-
-    self.assertEqual({
-        'ro.odm.build.date.utc': '1578430045',
-        'ro.odm.build.fingerprint':
-        'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
-        'ro.product.odm.device': 'coral',
-        'ro.product.odm.name': 'product1'
-    }, partition_props.build_props)
-
-    with zipfile.ZipFile(input_file, 'r') as input_zip:
-      placeholder_values = {
-          'ro.boot.product.device_name': 'pro',
-          'ro.boot.product.product_name': 'product2',
-          'ro.boot.product.not_care': 'not_care',
-      }
-      partition_props = common.PartitionBuildProps.FromInputFile(
-          input_zip, 'odm', placeholder_values)
-
-    self.assertEqual({
-        'ro.odm.build.date.utc': '1578430045',
-        'ro.odm.build.fingerprint':
-        'google/coral/coral:10/RP1A.200325.001/6337676:user/dev-keys',
-        'ro.product.odm.device': 'coralpro',
-        'ro.product.odm.name': 'product2'
-    }, partition_props.build_props)
-
-  def test_parseBuildProps_defineAfterOverride(self):
-    build_prop = copy.deepcopy(self.odm_build_prop)
-    build_prop.append('ro.product.odm.device=coral')
-
-    build_std_prop = [
-        'ro.product.odm.device=coral',
-    ]
-    build_pro_prop = [
-        'ro.product.odm.device=coralpro',
-    ]
-
-    input_file = self._BuildZipFile({
-        'ODM/etc/build.prop': '\n'.join(build_prop),
-        'ODM/etc/build_std.prop': '\n'.join(build_std_prop),
-        'ODM/etc/build_pro.prop': '\n'.join(build_pro_prop),
-    })
-
-    with zipfile.ZipFile(input_file, 'r') as input_zip:
-      placeholder_values = {
-          'ro.boot.product.device_name': 'std',
-      }
-
-      self.assertRaises(ValueError, common.PartitionBuildProps.FromInputFile,
-                        input_zip, 'odm', placeholder_values)
-
-  def test_parseBuildProps_duplicateOverride(self):
-    build_prop = copy.deepcopy(self.odm_build_prop)
-    build_prop.append(
-        'import /odm/etc/build_${ro.boot.product.product_name}.prop')
-
-    build_std_prop = [
-        'ro.product.odm.device=coral',
-        'ro.product.odm.name=product1',
-    ]
-    build_pro_prop = [
-        'ro.product.odm.device=coralpro',
-    ]
-
-    product1_prop = [
-        'ro.product.odm.name=product1',
-    ]
-
-    product2_prop = [
-        'ro.product.odm.name=product2',
-    ]
-
-    input_file = self._BuildZipFile({
-        'ODM/etc/build.prop': '\n'.join(build_prop),
-        'ODM/etc/build_std.prop': '\n'.join(build_std_prop),
-        'ODM/etc/build_pro.prop': '\n'.join(build_pro_prop),
-        'ODM/etc/build_product1.prop': '\n'.join(product1_prop),
-        'ODM/etc/build_product2.prop': '\n'.join(product2_prop),
-    })
-
-    with zipfile.ZipFile(input_file, 'r') as input_zip:
-      placeholder_values = {
-          'ro.boot.product.device_name': 'std',
-          'ro.boot.product.product_name': 'product1',
-      }
-      self.assertRaises(ValueError, common.PartitionBuildProps.FromInputFile,
-                        input_zip, 'odm', placeholder_values)
+    self.assertEqual({}, partition_props.prop_overrides)
