old_contents: import pytest
  
  from openshift_checks import OpenShiftCheck, OpenShiftCheckException
  from openshift_checks import load_checks, get_var
  
  
  # Fixtures
  
  
  @pytest.fixture()
  def task_vars():
      return dict(foo=42, bar=dict(baz="openshift"))
  
  
  @pytest.fixture(params=[
      ("notfound",),
      ("multiple", "keys", "not", "in", "task_vars"),
  ])
  def missing_keys(request):
      return request.param
  
  
  # Tests
  
  
  def test_OpenShiftCheck_init():
      class TestCheck(OpenShiftCheck):
          name = "test_check"
          run = NotImplemented
  
      # initialization requires at least one argument (apart from self)
      with pytest.raises(TypeError) as excinfo:
          TestCheck()
      assert 'execute_module' in str(excinfo.value)
      assert 'module_executor' in str(excinfo.value)
  
      execute_module = object()
  
      # initialize with positional argument
      check = TestCheck(execute_module)
      # new recommended name
      assert check.execute_module == execute_module
      # deprecated attribute name
      assert check.module_executor == execute_module
  
      # initialize with keyword argument, recommended name
      check = TestCheck(execute_module=execute_module)
      # new recommended name
      assert check.execute_module == execute_module
      # deprecated attribute name
      assert check.module_executor == execute_module
  
      # initialize with keyword argument, deprecated name
      check = TestCheck(module_executor=execute_module)
      # new recommended name
      assert check.execute_module == execute_module
      # deprecated attribute name
      assert check.module_executor == execute_module
  
  
  def test_load_checks():
      """Loading checks should load and return Python modules."""
      modules = load_checks()
      assert modules
  
  
  @pytest.mark.parametrize("keys,expected", [
      (("foo",), 42),
      (("bar", "baz"), "openshift"),
  ])
  def test_get_var_ok(task_vars, keys, expected):
      assert get_var(task_vars, *keys) == expected
  
  
  def test_get_var_error(task_vars, missing_keys):
      with pytest.raises(OpenShiftCheckException):
          get_var(task_vars, *missing_keys)
  
  
  def test_get_var_default(task_vars, missing_keys):
      default = object()
      assert get_var(task_vars, *missing_keys, default=default) == default
  
new_contents: import pytest
  
  from openshift_checks import OpenShiftCheck, OpenShiftCheckException
  from openshift_checks import load_checks, get_var
  
  
  # Fixtures
  
  
  @pytest.fixture()
  def task_vars():
      return dict(foo=42, bar=dict(baz="openshift"))
  
  
  @pytest.fixture(params=[
      ("notfound",),
      ("multiple", "keys", "not", "in", "task_vars"),
  ])
  def missing_keys(request):
      return request.param
  
  
  # Tests
  
  
  def test_OpenShiftCheck_init():
      class TestCheck(OpenShiftCheck):
          name = "test_check"
          run = NotImplemented
  
      # initialization requires at least one argument (apart from self)
      with pytest.raises(TypeError) as excinfo:
          TestCheck()
      assert 'execute_module' in str(excinfo.value)
      assert 'module_executor' in str(excinfo.value)
  
      execute_module = object()
  
      # initialize with positional argument
      check = TestCheck(execute_module)
      # new recommended name
      assert check.execute_module == execute_module
      # deprecated attribute name
      assert check.module_executor == execute_module
  
      # initialize with keyword argument, recommended name
      check = TestCheck(execute_module=execute_module)
      # new recommended name
      assert check.execute_module == execute_module
      # deprecated attribute name
      assert check.module_executor == execute_module
  
      # initialize with keyword argument, deprecated name
      check = TestCheck(module_executor=execute_module)
      # new recommended name
      assert check.execute_module == execute_module
      # deprecated attribute name
      assert check.module_executor == execute_module
  
  
  def test_subclasses():
      """OpenShiftCheck.subclasses should find all subclasses recursively."""
      class TestCheck1(OpenShiftCheck):
          pass
  
      class TestCheck2(OpenShiftCheck):
          pass
  
      class TestCheck1A(TestCheck1):
          pass
  
      local_subclasses = set([TestCheck1, TestCheck1A, TestCheck2])
      known_subclasses = set(OpenShiftCheck.subclasses())
  
      assert local_subclasses - known_subclasses == set(), "local_subclasses should be a subset of known_subclasses"
  
  
  def test_load_checks():
      """Loading checks should load and return Python modules."""
      modules = load_checks()
      assert modules
  
  
  @pytest.mark.parametrize("keys,expected", [
      (("foo",), 42),
      (("bar", "baz"), "openshift"),
  ])
  def test_get_var_ok(task_vars, keys, expected):
      assert get_var(task_vars, *keys) == expected
  
  
  def test_get_var_error(task_vars, missing_keys):
      with pytest.raises(OpenShiftCheckException):
          get_var(task_vars, *missing_keys)
  
  
  def test_get_var_default(task_vars, missing_keys):
      default = object()
      assert get_var(task_vars, *missing_keys, default=default) == default
  
subject: Test recursively finding subclasses