|
@@ -10,6 +10,7 @@ tool.
|
|
|
"""
|
|
|
|
|
|
import collections
|
|
|
+import glob
|
|
|
import os
|
|
|
import struct
|
|
|
import tempfile
|
|
@@ -302,6 +303,11 @@ U_BOOT_DEVICE(spl_test3) = {
|
|
|
|
|
|
self._check_strings(self.platdata_text, data)
|
|
|
|
|
|
+ # Try the 'all' command
|
|
|
+ self.run_test(['all'], dtb_file, output)
|
|
|
+ data = tools.ReadFile(output, binary=False)
|
|
|
+ self._check_strings(self.platdata_text + self.struct_text, data)
|
|
|
+
|
|
|
def test_driver_alias(self):
|
|
|
"""Test output from a device tree file with a driver alias"""
|
|
|
dtb_file = get_dtb_file('dtoc_test_driver_alias.dts')
|
|
@@ -888,9 +894,9 @@ U_BOOT_DEVICE(spl_test2) = {
|
|
|
"""Test output of multiple pieces to a single file"""
|
|
|
dtb_file = get_dtb_file('dtoc_test_simple.dts')
|
|
|
output = tools.GetOutputFilename('output')
|
|
|
- self.run_test(['struct,platdata'], dtb_file, output)
|
|
|
+ self.run_test(['all'], dtb_file, output)
|
|
|
data = tools.ReadFile(output, binary=False)
|
|
|
- self._check_strings(self.struct_text + self.platdata_text, data)
|
|
|
+ self._check_strings(self.platdata_text + self.struct_text, data)
|
|
|
|
|
|
def test_no_command(self):
|
|
|
"""Test running dtoc without a command"""
|
|
@@ -905,7 +911,7 @@ U_BOOT_DEVICE(spl_test2) = {
|
|
|
output = tools.GetOutputFilename('output')
|
|
|
with self.assertRaises(ValueError) as exc:
|
|
|
self.run_test(['invalid-cmd'], dtb_file, output)
|
|
|
- self.assertIn("Unknown command 'invalid-cmd': (use: struct, platdata)",
|
|
|
+ self.assertIn("Unknown command 'invalid-cmd': (use: platdata, struct)",
|
|
|
str(exc.exception))
|
|
|
|
|
|
@staticmethod
|
|
@@ -945,3 +951,31 @@ U_BOOT_DEVICE(spl_test2) = {
|
|
|
self.assertEqual(drv1, drv3)
|
|
|
self.assertNotEqual(drv1, drv2)
|
|
|
self.assertNotEqual(drv2, drv3)
|
|
|
+
|
|
|
+ def test_output_conflict(self):
|
|
|
+ """Test a conflict between and output dirs and output file"""
|
|
|
+ with self.assertRaises(ValueError) as exc:
|
|
|
+ dtb_platdata.run_steps(['all'], None, False, 'out', ['cdir'], True)
|
|
|
+ self.assertIn("Must specify either output or output_dirs, not both",
|
|
|
+ str(exc.exception))
|
|
|
+
|
|
|
+ def test_output_dirs(self):
|
|
|
+ """Test outputting files to a directory"""
|
|
|
+ # Remove the directory so that files from other tests are not there
|
|
|
+ tools._RemoveOutputDir()
|
|
|
+ tools.PrepareOutputDir(None)
|
|
|
+
|
|
|
+ # This should create the .dts and .dtb in the output directory
|
|
|
+ dtb_file = get_dtb_file('dtoc_test_simple.dts')
|
|
|
+ outdir = tools.GetOutputDir()
|
|
|
+ fnames = glob.glob(outdir + '/*')
|
|
|
+ self.assertEqual(2, len(fnames))
|
|
|
+
|
|
|
+ dtb_platdata.run_steps(['all'], dtb_file, False, None, [outdir], True)
|
|
|
+ fnames = glob.glob(outdir + '/*')
|
|
|
+ self.assertEqual(4, len(fnames))
|
|
|
+
|
|
|
+ leafs = set(os.path.basename(fname) for fname in fnames)
|
|
|
+ self.assertEqual(
|
|
|
+ {'dt-structs-gen.h', 'source.dts', 'dt-platdata.c', 'source.dtb'},
|
|
|
+ leafs)
|