From 595e4e3a436d6346d0a5edd13cd463d0b054d085 Mon Sep 17 00:00:00 2001 From: Nora Abi Akar <nora.abiakar@gmail.com> Date: Thu, 29 Apr 2021 14:40:51 +0200 Subject: [PATCH] Propagate python unit test failure to github actions. (#1505) * Exit with correct exit code from Python test runners. * Fix unit tests that were using older APIs. --- .github/workflows/basic.yml | 5 ++++- python/test/unit/runner.py | 3 ++- python/test/unit/test_event_generators.py | 18 ++++++----------- python/test/unit_distributed/runner.py | 4 +++- .../test_domain_decompositions.py | 20 +++++++++---------- .../test/unit_distributed/test_simulator.py | 6 +++--- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/basic.yml b/.github/workflows/basic.yml index 3ffd089a..2e321da4 100644 --- a/.github/workflows/basic.yml +++ b/.github/workflows/basic.yml @@ -184,7 +184,10 @@ jobs: mpirun -n 4 -oversubscribe build/bin/ring mpirun -n 4 -oversubscribe build/bin/single-cell - name: Run python tests - run: python python/test/unit/runner.py + run: | + cd build + python ../python/test/unit/runner.py + cd - - if: ${{ matrix.config.mpi == 'ON' }} name: Run python+MPI tests run: mpirun -n 4 -oversubscribe python python/test/unit_distributed/runner.py diff --git a/python/test/unit/runner.py b/python/test/unit/runner.py index fb796792..cc9f16d2 100644 --- a/python/test/unit/runner.py +++ b/python/test/unit/runner.py @@ -58,4 +58,5 @@ def suite(): if __name__ == "__main__": v = options.parse_arguments().verbosity runner = unittest.TextTestRunner(verbosity = v) - runner.run(suite()) + result = runner.run(suite()) + sys.exit(not(result.wasSuccessful())) diff --git a/python/test/unit/test_event_generators.py b/python/test/unit/test_event_generators.py index 4099d461..a8b83738 100644 --- a/python/test/unit/test_event_generators.py +++ b/python/test/unit/test_event_generators.py @@ -22,27 +22,21 @@ all tests for event generators (regular, explicit, poisson) class EventGenerator(unittest.TestCase): def test_event_generator_regular_schedule(self): - cm = arb.cell_member(42,3) rs = arb.regular_schedule(2.0, 1., 100.) - rg = arb.event_generator(cm, 3.14, rs) - self.assertEqual(rg.target.gid, 42) - self.assertEqual(rg.target.index, 3) + rg = arb.event_generator(3, 3.14, rs) + self.assertEqual(rg.target, 3) self.assertAlmostEqual(rg.weight, 3.14) def test_event_generator_explicit_schedule(self): - cm = arb.cell_member(0,42) es = arb.explicit_schedule([0,1,2,3,4.4]) - eg = arb.event_generator(cm, -0.01, es) - self.assertEqual(eg.target.gid, 0) - self.assertEqual(eg.target.index, 42) + eg = arb.event_generator(42, -0.01, es) + self.assertEqual(eg.target, 42) self.assertAlmostEqual(eg.weight, -0.01) def test_event_generator_poisson_schedule(self): - cm = arb.cell_member(4,2) ps = arb.poisson_schedule(0., 10., 0) - pg = arb.event_generator(cm, 42., ps) - self.assertEqual(pg.target.gid, 4) - self.assertEqual(pg.target.index, 2) + pg = arb.event_generator(2, 42., ps) + self.assertEqual(pg.target, 2) self.assertEqual(pg.weight, 42.) def suite(): diff --git a/python/test/unit_distributed/runner.py b/python/test/unit_distributed/runner.py index 57d36da4..cb8ddf5d 100644 --- a/python/test/unit_distributed/runner.py +++ b/python/test/unit_distributed/runner.py @@ -72,7 +72,9 @@ if __name__ == "__main__": sys.stdout = open(os.devnull, 'w') runner = unittest.TextTestRunner(stream=sys.stdout) - runner.run(suite()) + result = runner.run(suite()) if not arb.mpi_is_finalized(): arb.mpi_finalize() + + sys.exit(not(result.wasSuccessful())) diff --git a/python/test/unit_distributed/test_domain_decompositions.py b/python/test/unit_distributed/test_domain_decompositions.py index ad6c5fda..7a52288e 100644 --- a/python/test/unit_distributed/test_domain_decompositions.py +++ b/python/test/unit_distributed/test_domain_decompositions.py @@ -79,22 +79,22 @@ class gj_switch: return getattr(self, 'case_' + str(arg), lambda: default)() def case_1(self): - return [arb.gap_junction_connection(arb.cell_member(7 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1)] + return [arb.gap_junction_connection(arb.cell_member(7 + self.shift_, 0), 0, 0.1)] def case_2(self): - return [arb.gap_junction_connection(arb.cell_member(6 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1), - arb.gap_junction_connection(arb.cell_member(9 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1)] + return [arb.gap_junction_connection(arb.cell_member(6 + self.shift_, 0), 0, 0.1), + arb.gap_junction_connection(arb.cell_member(9 + self.shift_, 0), 0, 0.1)] def case_6(self): - return [arb.gap_junction_connection(arb.cell_member(2 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1), - arb.gap_junction_connection(arb.cell_member(7 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1)] + return [arb.gap_junction_connection(arb.cell_member(2 + self.shift_, 0), 0, 0.1), + arb.gap_junction_connection(arb.cell_member(7 + self.shift_, 0), 0, 0.1)] def case_7(self): - return [arb.gap_junction_connection(arb.cell_member(6 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1), - arb.gap_junction_connection(arb.cell_member(1 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1)] + return [arb.gap_junction_connection(arb.cell_member(6 + self.shift_, 0), 0, 0.1), + arb.gap_junction_connection(arb.cell_member(1 + self.shift_, 0), 0, 0.1)] def case_9(self): - return [arb.gap_junction_connection(arb.cell_member(2 + self.shift_, 0), arb.cell_member(self.gid_, 0), 0.1)] + return [arb.gap_junction_connection(arb.cell_member(2 + self.shift_, 0), 0, 0.1)] class gj_symmetric (arb.recipe): def __init__(self, num_ranks): @@ -137,9 +137,9 @@ class gj_non_symmetric (arb.recipe): id = gid%self.size if (id == group and group != (self.groups - 1)): - return [arb.gap_junction_connection(arb.cell_member(gid + self.size, 0), arb.cell_member(gid, 0), 0.1)] + return [arb.gap_junction_connection(arb.cell_member(gid + self.size, 0), 0, 0.1)] elif (id == group - 1): - return [arb.gap_junction_connection(arb.cell_member(gid - self.size, 0), arb.cell_member(gid, 0), 0.1)] + return [arb.gap_junction_connection(arb.cell_member(gid - self.size, 0), 0, 0.1)] else: return [] diff --git a/python/test/unit_distributed/test_simulator.py b/python/test/unit_distributed/test_simulator.py index abc477c5..399ffdc4 100644 --- a/python/test/unit_distributed/test_simulator.py +++ b/python/test/unit_distributed/test_simulator.py @@ -32,10 +32,10 @@ class lifN_recipe(A.recipe): return self.n_cell def num_targets(self, gid): - return 0 + return 1 def num_sources(self, gid): - return 0 + return 1 def cell_kind(self, gid): return A.cell_kind.lif @@ -46,7 +46,7 @@ class lifN_recipe(A.recipe): def event_generators(self, gid): sched_dt = 0.25 weight = 400 - return [A.event_generator((gid,0), weight, A.regular_schedule(sched_dt)) for gid in range(0, self.num_cells())] + return [A.event_generator(0, weight, A.regular_schedule(sched_dt)) for gid in range(0, self.num_cells())] def probes(self, gid): return [] -- GitLab