test_stateful_shell.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """Tests for stateful_shell.py
  2. Usage:
  3. python -m unittest
  4. """
  5. import unittest
  6. import stateful_shell
  7. class TestStatefulShell(unittest.TestCase):
  8. """Testcases for stateful_shell.py."""
  9. def setUp(self):
  10. """Prepares stateful shell instance for tests."""
  11. self.shell = stateful_shell.StatefulShell()
  12. def test_cmd_output(self):
  13. """Tests shell command output."""
  14. resp = self.shell.run_cmd("echo test123", return_cmd_output=True).strip()
  15. self.assertEqual(resp, "test123")
  16. def test_set_env_in_shell(self):
  17. """Tests setting env variables in shell."""
  18. self.shell.run_cmd("export TESTVAR=123")
  19. self.assertEqual(self.shell.env["TESTVAR"], "123")
  20. def test_set_env_outside_shell(self):
  21. """Tests setting env variables outside shell call."""
  22. self.shell.env["TESTVAR"] = "1234"
  23. resp = self.shell.run_cmd("echo $TESTVAR", return_cmd_output=True).strip()
  24. self.assertEqual(resp, "1234")
  25. def test_env_var_set_get(self):
  26. """Tests setting and getting env vars between calls."""
  27. self.shell.run_cmd("export TESTVAR=123")
  28. resp = self.shell.run_cmd("echo $TESTVAR", return_cmd_output=True).strip()
  29. self.assertEqual(resp, "123")
  30. def test_raise_on_returncode(self):
  31. """Tests raising errors when returncode is nonzero."""
  32. with self.assertRaises(RuntimeError):
  33. self.shell.run_cmd("invalid_cmd > /dev/null 2>&1", raise_on_returncode=True)
  34. if __name__ == "__main__":
  35. unittest.main()