[Swan-dev] swantest bug

D. Hugh Redelmeier hugh at mimosa.com
Sun Jul 19 17:26:26 EEST 2015

I ran a "make UPDATE=1 check".  It failed with a python error about seven
hours later.  It is in the code that summarizes the results.

write text summary file /home/build/results/bluebird.mimosa.com/2015-07-19-bluebird.mimosa.com-v3.14rc3-49-g9fb59ee-dirty-master/table.txt
Traceback (most recent call last):
  File "../utils/swantest", line 2212, in <module>
  File "../utils/swantest", line 2197, in main
  File "../utils/swantest", line 2150, in gen_graphs_tables
  File "../utils/swantest", line 497, in scan_test_runs
  File "../utils/swantest", line 684, in scan_test_results
    e = self.create_test_run_table()
  File "../utils/swantest", line 762, in create_test_run_table
  File "../utils/swantest", line 782, in write_txt
    line = self.make_test_line(test)
  File "../utils/swantest", line 811, in make_test_line
    test["result"], test["expect"], test["name"], st1, st2)
KeyError: 'expect'
Makefile:33: recipe for target 'check' failed
make[2]: *** [check] Error 1
make[2]: Leaving directory '/home/build/libreswan/testing/pluto'
../mk/subdirs.mk:33: recipe for target 'check' failed

Line 811 in swantest is obviously wrong: it is in an ELSE clause
of an IF that tests for "expect" in test.  So we know there is no
"expect", and yet 811 tries to print test["expect"].

This chunk of swantest has not changed in half a year.  It has always
been wrong.  Why is it hitting me now?

There is a hint in commit 58d2fa75746b83954ae7865f221acc3bd66789ba.
That included this hunk:

@@ -688,7 +700,11 @@ class scantests:
         for key, test in self.tests.items():
             row = []
-            row.append(test["expect"])
+            if "expect" in test:
+                row.append(test["expect"])
+            elif "output" in test:
+                row.append(test["output"])
             if "result" in test:

It sure looks as if test["expect"] is no longer unconditionally used.
(The last added line has trailing whitespace. "git show" shows it in red.)

What is the correct fix to swantest?

After I fix this, how should I resume the tests summary process
without starting the tests all over again?

More information about the Swan-dev mailing list