From ab41e005c9a3837c458b87803df7805291e1199b Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sat, 14 Feb 2015 16:19:36 -0500 Subject: [PATCH] Unit Tests - Added on-exit test for unexpected JSON output. --- test/hooks.on-exit.t | 14 ++++++++++++++ test/test_hooks/on-exit-misbehave2 | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 test/test_hooks/on-exit-misbehave2 diff --git a/test/hooks.on-exit.t b/test/hooks.on-exit.t index 8417b919f..ebc4c2529 100755 --- a/test/hooks.on-exit.t +++ b/test/hooks.on-exit.t @@ -83,6 +83,20 @@ class TestHooksOnExit(TestCase): logs = self.t.hooks[hookname].get_logs() self.assertEqual(self.t.hooks[hookname].get_logs()["output"]["msgs"][0], "FEEDBACK") + def test_onexit_builtin_misbehave2(self): + """on-exit-misbehave2 - Emits unexpected JSON.""" + hookname = 'on-exit-misbehave2' + self.t.hooks.add_default(hookname, log=True) + + # Failing hook should prevent processing. + code, out, err = self.t.runError(("version",)) + self.assertIn("Hook Error: Expected 0 JSON task(s), found 1", err) + self.t.hooks[hookname].assertTriggered() + self.t.hooks[hookname].assertTriggeredCount(1) + self.t.hooks[hookname].assertExitcode(0) + logs = self.t.hooks[hookname].get_logs() + self.assertEqual(self.t.hooks[hookname].get_logs()["output"]["msgs"][0], "FEEDBACK") + if __name__ == "__main__": from simpletap import TAPTestRunner unittest.main(testRunner=TAPTestRunner()) diff --git a/test/test_hooks/on-exit-misbehave2 b/test/test_hooks/on-exit-misbehave2 new file mode 100644 index 000000000..2b52b012b --- /dev/null +++ b/test/test_hooks/on-exit-misbehave2 @@ -0,0 +1,18 @@ +#!/bin/sh + +# The on-exit event is triggered once, after initialization, before any +# processing occurs. This hooks script has no effect on processing. + +# Input: +# - None + +# Output: +# - Optional feedback/error. +echo '{"description":"extra","status":"pending"}' +echo 'FEEDBACK' + +# Status: +# - 0: JSON ignored, non-JSON is feedback. +# - non-0: JSON ignored, non-JSON is error. +exit 0 +