1bf7fd50bSSimon Glass# 2bf7fd50bSSimon Glass# Copyright (c) 2016 Google, Inc 3bf7fd50bSSimon Glass# Written by Simon Glass <sjg@chromium.org> 4bf7fd50bSSimon Glass# 5bf7fd50bSSimon Glass# SPDX-License-Identifier: GPL-2.0+ 6bf7fd50bSSimon Glass# 7bf7fd50bSSimon Glass# Test for the fdt modules 8bf7fd50bSSimon Glass 9bf7fd50bSSimon Glassimport os 10bf7fd50bSSimon Glassimport sys 11bf7fd50bSSimon Glassimport tempfile 12bf7fd50bSSimon Glassimport unittest 13bf7fd50bSSimon Glass 14bf7fd50bSSimon Glassfrom fdt_select import FdtScan 15bf7fd50bSSimon Glassimport fdt_util 16bf7fd50bSSimon Glassimport tools 17bf7fd50bSSimon Glass 18bf7fd50bSSimon Glassclass TestFdt(unittest.TestCase): 19bf7fd50bSSimon Glass @classmethod 20bf7fd50bSSimon Glass def setUpClass(self): 21bf7fd50bSSimon Glass self._binman_dir = os.path.dirname(os.path.realpath(sys.argv[0])) 22bf7fd50bSSimon Glass self._indir = tempfile.mkdtemp(prefix='binmant.') 23bf7fd50bSSimon Glass tools.PrepareOutputDir(self._indir, True) 24bf7fd50bSSimon Glass 25bf7fd50bSSimon Glass def TestFile(self, fname): 26bf7fd50bSSimon Glass return os.path.join(self._binman_dir, 'test', fname) 27bf7fd50bSSimon Glass 28bf7fd50bSSimon Glass def GetCompiled(self, fname): 29bf7fd50bSSimon Glass return fdt_util.EnsureCompiled(self.TestFile(fname)) 30bf7fd50bSSimon Glass 31*1d88ebb2SSimon Glass def _DeleteProp(self, dt): 32*1d88ebb2SSimon Glass node = dt.GetNode('/microcode/update@0') 33bf7fd50bSSimon Glass node.DeleteProp('data') 34bf7fd50bSSimon Glass 35bf7fd50bSSimon Glass def testFdtNormal(self): 36bf7fd50bSSimon Glass fname = self.GetCompiled('34_x86_ucode.dts') 37*1d88ebb2SSimon Glass dt = FdtScan(fname) 38*1d88ebb2SSimon Glass self._DeleteProp(dt) 39bf7fd50bSSimon Glass 40bf7fd50bSSimon Glass def testFdtFallback(self): 41bf7fd50bSSimon Glass fname = self.GetCompiled('34_x86_ucode.dts') 42*1d88ebb2SSimon Glass dt = FdtScan(fname, True) 43*1d88ebb2SSimon Glass dt.GetProp('/microcode/update@0', 'data') 44bf7fd50bSSimon Glass self.assertEqual('fred', 45*1d88ebb2SSimon Glass dt.GetProp('/microcode/update@0', 'none', default='fred')) 46bf7fd50bSSimon Glass self.assertEqual('12345678 12345679', 47*1d88ebb2SSimon Glass dt.GetProp('/microcode/update@0', 'data', typespec='x')) 48*1d88ebb2SSimon Glass self._DeleteProp(dt) 49