blob: 12edeaba6c3584ec0eb0bea2985de8dc758d7330 [file] [log] [blame]
Simon Glassbf7fd502016-11-25 20:15:51 -07001#
2# Copyright (c) 2016 Google, Inc
3# Written by Simon Glass <sjg@chromium.org>
4#
5# SPDX-License-Identifier: GPL-2.0+
6#
7# Test for the fdt modules
8
9import os
10import sys
11import tempfile
12import unittest
13
14from fdt_select import FdtScan
15import fdt_util
16import tools
17
18class TestFdt(unittest.TestCase):
19 @classmethod
20 def setUpClass(self):
21 self._binman_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
22 self._indir = tempfile.mkdtemp(prefix='binmant.')
23 tools.PrepareOutputDir(self._indir, True)
24
25 def TestFile(self, fname):
26 return os.path.join(self._binman_dir, 'test', fname)
27
28 def GetCompiled(self, fname):
29 return fdt_util.EnsureCompiled(self.TestFile(fname))
30
Simon Glass1d88ebb2017-05-27 07:38:20 -060031 def _DeleteProp(self, dt):
32 node = dt.GetNode('/microcode/update@0')
Simon Glassbf7fd502016-11-25 20:15:51 -070033 node.DeleteProp('data')
34
35 def testFdtNormal(self):
36 fname = self.GetCompiled('34_x86_ucode.dts')
Simon Glass1d88ebb2017-05-27 07:38:20 -060037 dt = FdtScan(fname)
38 self._DeleteProp(dt)
Simon Glassbf7fd502016-11-25 20:15:51 -070039
40 def testFdtFallback(self):
41 fname = self.GetCompiled('34_x86_ucode.dts')
Simon Glass1d88ebb2017-05-27 07:38:20 -060042 dt = FdtScan(fname, True)
43 dt.GetProp('/microcode/update@0', 'data')
Simon Glassbf7fd502016-11-25 20:15:51 -070044 self.assertEqual('fred',
Simon Glass1d88ebb2017-05-27 07:38:20 -060045 dt.GetProp('/microcode/update@0', 'none', default='fred'))
Simon Glassbf7fd502016-11-25 20:15:51 -070046 self.assertEqual('12345678 12345679',
Simon Glass1d88ebb2017-05-27 07:38:20 -060047 dt.GetProp('/microcode/update@0', 'data', typespec='x'))
48 self._DeleteProp(dt)