Re: [U-Boot] [PATCH v3 16/18] buildman: Expand output test to cover directory prefixes

2014-09-10 Thread Simon Glass
Applied to u-boot-x86/buildman.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v3 16/18] buildman: Expand output test to cover directory prefixes

2014-09-05 Thread Simon Glass
Now that buildman supports removing the build directory prefix from output,
add a test for it. Also ensure that output directories are removed when the
test completes.

Signed-off-by: Simon Glass s...@chromium.org
---

Changes in v3: None
Changes in v2:
- Add patch to expand output test to cover directory prefixes

 tools/buildman/test.py | 54 ++
 1 file changed, 46 insertions(+), 8 deletions(-)

diff --git a/tools/buildman/test.py b/tools/buildman/test.py
index f0c4d0e..a2a85ac 100644
--- a/tools/buildman/test.py
+++ b/tools/buildman/test.py
@@ -46,6 +46,20 @@ powerpc-linux-ld: u-boot: section .reloc lma 0xa400 
overlaps previous sectio
 powerpc-linux-ld: u-boot: section .data lma 0xcd38 overlaps previous 
sections
 powerpc-linux-ld: u-boot: section .u_boot_cmd lma 0xeb40 overlaps previous 
sections
 powerpc-linux-ld: u-boot: section .bootpg lma 0xf198 overlaps previous 
sections
+''',
+   '''In file included from %(basedir)sarch/sandbox/cpu/cpu.c:9:0:
+%(basedir)sarch/sandbox/include/asm/state.h:44:0: warning:  redefined 
[enabled by default]
+%(basedir)sarch/sandbox/include/asm/state.h:43:0: note: this is the location 
of the previous definition
+%(basedir)sarch/sandbox/cpu/cpu.c: In function 'do_reset':
+%(basedir)sarch/sandbox/cpu/cpu.c:27:1: error: unknown type name 'blah'
+%(basedir)sarch/sandbox/cpu/cpu.c:28:12: error: expected declaration 
specifiers or '...' before numeric constant
+make[2]: *** [arch/sandbox/cpu/cpu.o] Error 1
+make[1]: *** [arch/sandbox/cpu] Error 2
+make[1]: *** Waiting for unfinished jobs
+In file included from %(basedir)scommon/board_f.c:55:0:
+%(basedir)sarch/sandbox/include/asm/state.h:44:0: warning:  redefined 
[enabled by default]
+%(basedir)sarch/sandbox/include/asm/state.h:43:0: note: this is the location 
of the previous definition
+make: *** [sub-make] Error 2
 '''
 ]
 
@@ -57,7 +71,8 @@ commits = [
 ['9012', 'Third commit, error', 1, errors[0:2]],
 ['3456', 'Fourth commit, warning', 0, [errors[0], errors[2]]],
 ['7890', 'Fifth commit, link errors', 1, [errors[0], errors[3]]],
-['abcd', 'Sixth commit, fixes all errors', 0, []]
+['abcd', 'Sixth commit, fixes all errors', 0, []],
+['ef01', 'Seventh commit, check directory suppression', 1, [errors[4]]],
 ]
 
 boards = [
@@ -109,15 +124,19 @@ class TestBuild(unittest.TestCase):
 self._col = terminal.Color()
 
 def Make(self, commit, brd, stage, *args, **kwargs):
+global base_dir
+
 result = command.CommandResult()
 boardnum = int(brd.target[-1])
 result.return_code = 0
 result.stderr = ''
 result.stdout = ('This is the test output for board %s, commit %s' %
 (brd.target, commit.hash))
-if boardnum = 1 and boardnum = commit.sequence:
+if ((boardnum = 1 and boardnum = commit.sequence) or
+boardnum == 4 and commit.sequence == 6):
 result.return_code = commit.return_code
-result.stderr = ''.join(commit.error_list)
+result.stderr = (''.join(commit.error_list)
+% {'basedir' : base_dir + '/.bm-work/00/'})
 if stage == 'build':
 target_dir = None
 for arg in args:
@@ -146,10 +165,12 @@ class TestBuild(unittest.TestCase):
 
 This does a line-by-line verification of the summary output.
 
-output_dir = tempfile.mkdtemp()
-if not os.path.isdir(output_dir):
-os.mkdir(output_dir)
-build = builder.Builder(self.toolchains, output_dir, None, 1, 2,
+global base_dir
+
+base_dir = tempfile.mkdtemp()
+if not os.path.isdir(base_dir):
+os.mkdir(base_dir)
+build = builder.Builder(self.toolchains, base_dir, None, 1, 2,
 checkout=False, show_unknown=False)
 build.do_make = self.Make
 board_selected = self.boards.GetSelectedDict()
@@ -167,6 +188,7 @@ class TestBuild(unittest.TestCase):
 self.assertEqual(count, len(commits) * len(boards) + 1)
 build.SetDisplayOptions(show_errors=True);
 build.ShowSummary(self.commits, board_selected)
+#terminal.EchoPrintTestLines()
 lines = terminal.GetPrintTestLines()
 self.assertEqual(lines[0].text, '01: %s' % commits[0][1])
 self.assertEqual(lines[1].text, '02: %s' % commits[1][1])
@@ -230,7 +252,22 @@ class TestBuild(unittest.TestCase):
 self.assertEqual(lines[24].text, 'w-%s' %
 errors[0].rstrip().replace('\n', '\nw-'))
 
-self.assertEqual(len(lines), 25)
+self.assertEqual(lines[25].text, '07: %s' % commits[6][1])
+self.assertSummary(lines[26].text, 'sandbox', '+', ['board4'])
+
+# Pick out the correct error lines
+expect_str = errors[4].rstrip().replace('%(basedir)s', '').split('\n')
+expect = expect_str[3:8] + [expect_str[-1]]
+