Add tests for conv_linker_config
to cover the recent features.
- conv_linker_config proto with empty input
- conv_linker_config proto with existing output
- conv_linker_config proto with --append
- conv_linker_config proto with --force
Bug: n/a
Test: conv_linker_config_test
Change-Id: I0de79b6e05c2608e0e2f30dfbf04d8289672f362
diff --git a/scripts/conv_linker_config_test.py b/scripts/conv_linker_config_test.py
index f7c7300..d19a47b 100644
--- a/scripts/conv_linker_config_test.py
+++ b/scripts/conv_linker_config_test.py
@@ -16,12 +16,14 @@
#
"""Unit tests for conv_linker_config.py."""
+import io
import os
import shutil
import tempfile
import unittest
import conv_linker_config
+from contextlib import redirect_stderr
from linker_config_pb2 import LinkerConfig
class FileArgs:
@@ -67,6 +69,22 @@
class ConvLinkerConfigTest(TempDirTest):
"""Unit tests for conv_linker_config."""
+
+ def test_Proto_empty_input(self):
+ self.command(['proto', '-s', '-o', FileArg('out.pb')])
+ pb = LinkerConfig()
+ pb.ParseFromString(self.read('out.pb'))
+ self.assertEqual(pb, LinkerConfig())
+
+
+ def test_Proto_single_input(self):
+ self.write('foo.json', b'{ "provideLibs": ["libfoo.so"]}')
+ self.command(['proto', '-s', FileArg('foo.json'), '-o', FileArg('out.pb')])
+ pb = LinkerConfig()
+ pb.ParseFromString(self.read('out.pb'))
+ self.assertSequenceEqual(pb.provideLibs, ['libfoo.so'])
+
+
def test_Proto_with_multiple_input(self):
self.write('foo.json', b'{ "provideLibs": ["libfoo.so"]}')
self.write('bar.json', b'{ "provideLibs": ["libbar.so"]}')
@@ -76,6 +94,34 @@
self.assertSetEqual(set(pb.provideLibs), set(['libfoo.so', 'libbar.so']))
+ def test_Proto_with_existing_output(self):
+ self.write('out.pb', LinkerConfig(provideLibs=['libfoo.so']).SerializeToString())
+ buf = io.StringIO()
+ with self.assertRaises(SystemExit) as err:
+ with redirect_stderr(buf):
+ self.command(['proto', '-o', FileArg('out.pb')])
+ self.assertEqual(err.exception.code, 1)
+ self.assertRegex(buf.getvalue(), r'.*out\.pb exists')
+
+
+ def test_Proto_with_append(self):
+ self.write('out.pb', LinkerConfig(provideLibs=['libfoo.so']).SerializeToString())
+ self.write('bar.json', b'{ "provideLibs": ["libbar.so"]}')
+ self.command(['proto', '-s', FileArg('bar.json'), '-o', FileArg('out.pb'), '-a'])
+ pb = LinkerConfig()
+ pb.ParseFromString(self.read('out.pb'))
+ self.assertSetEqual(set(pb.provideLibs), set(['libfoo.so', 'libbar.so']))
+
+
+ def test_Proto_with_force(self):
+ self.write('out.pb', LinkerConfig(provideLibs=['libfoo.so']).SerializeToString())
+ self.write('bar.json', b'{ "provideLibs": ["libbar.so"]}')
+ self.command(['proto', '-s', FileArg('bar.json'), '-o', FileArg('out.pb'), '-f'])
+ pb = LinkerConfig()
+ pb.ParseFromString(self.read('out.pb'))
+ self.assertSetEqual(set(pb.provideLibs), set(['libbar.so']))
+
+
def command(self, args):
parser = conv_linker_config.GetArgParser()
parsed_args = parser.parse_args(self.resolve_paths(args))