test_config_fixer_test.py 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/env python
  2. #
  3. # Copyright (C) 2019 The Android Open Source Project
  4. #
  5. # Licensed under the Apache License, Version 2.0 (the "License");
  6. # you may not use this file except in compliance with the License.
  7. # You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. #
  17. """Unit tests for test_config_fixer.py."""
  18. import io
  19. import sys
  20. import unittest
  21. from xml.dom import minidom
  22. import test_config_fixer
  23. sys.dont_write_bytecode = True
  24. class OverwritePackageNameTest(unittest.TestCase):
  25. """ Unit tests for overwrite_package_name function """
  26. manifest = (
  27. '<?xml version="1.0" encoding="utf-8"?>\n'
  28. '<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n'
  29. ' package="com.android.foo">\n'
  30. ' <application>\n'
  31. ' </application>\n'
  32. '</manifest>\n')
  33. test_config = (
  34. '<?xml version="1.0" encoding="utf-8"?>\n'
  35. '<configuration description="Runs some tests.">\n'
  36. ' <option name="test-suite-tag" value="apct"/>\n'
  37. ' <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">\n'
  38. ' <option name="package" value="%s"/>\n'
  39. ' </target_preparer>\n'
  40. ' <test class="com.android.tradefed.testtype.AndroidJUnitTest">\n'
  41. ' <option name="package" value="%s"/>\n'
  42. ' <option name="runtime-hint" value="20s"/>\n'
  43. ' </test>\n'
  44. ' <test class="com.android.tradefed.testtype.AndroidJUnitTest">\n'
  45. ' <option name="package" value="%s"/>\n'
  46. ' <option name="runtime-hint" value="15s"/>\n'
  47. ' </test>\n'
  48. '</configuration>\n')
  49. def test_all(self):
  50. doc = minidom.parseString(self.test_config % ("com.android.foo", "com.android.foo", "com.android.bar"))
  51. manifest = minidom.parseString(self.manifest)
  52. test_config_fixer.overwrite_package_name(doc, manifest, "com.soong.foo")
  53. output = io.StringIO()
  54. test_config_fixer.write_xml(output, doc)
  55. # Only the matching package name in a test node should be updated.
  56. expected = self.test_config % ("com.android.foo", "com.soong.foo", "com.android.bar")
  57. self.assertEqual(expected, output.getvalue())
  58. class OverwriteTestFileNameTest(unittest.TestCase):
  59. """ Unit tests for overwrite_test_file_name function """
  60. test_config = (
  61. '<?xml version="1.0" encoding="utf-8"?>\n'
  62. '<configuration description="Runs some tests.">\n'
  63. ' <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">\n'
  64. ' <option name="test-file-name" value="%s"/>\n'
  65. ' </target_preparer>\n'
  66. ' <test class="com.android.tradefed.testtype.AndroidJUnitTest">\n'
  67. ' <option name="package" value="com.android.foo"/>\n'
  68. ' <option name="runtime-hint" value="20s"/>\n'
  69. ' </test>\n'
  70. '</configuration>\n')
  71. def test_all(self):
  72. doc = minidom.parseString(self.test_config % ("foo.apk"))
  73. test_config_fixer.overwrite_test_file_name(doc, "bar.apk")
  74. output = io.StringIO()
  75. test_config_fixer.write_xml(output, doc)
  76. # Only the matching package name in a test node should be updated.
  77. expected = self.test_config % ("bar.apk")
  78. self.assertEqual(expected, output.getvalue())
  79. if __name__ == '__main__':
  80. unittest.main(verbosity=2)