old_contents: # Copyright (C) 2020 Freie Universität Berlin
  #
  # This file is subject to the terms and conditions of the GNU Lesser
  # General Public License v2.1. See the file LICENSE in the top level
  # directory for more details.
  
  
  class MockSpawn():
      def __init__(self, *args, **kwargs):
          # set some expected attributes
          self.before = None
          self.echo = False
          self.output = None
          self.last_command = None
  
      def sendline(self, line, *args, **kwargs):
          self.last_command = line
          if self.output is None:
              # just echo last input for before (what replwrap is assembling
              # output from)
              self.before = line
          else:
              # use pre-configured output in case command expects a specific
              # output
              self.before = self.output
  
      def expect_exact(self, *args, **kwargs):
          # always match on prompt with replwrap
          return 0
  
  
  class MockRIOTCtrl():
      """
      Mock RIOT ctrl
      """
      def __init__(self, *args, **kwargs):
          self.term = MockSpawn()
          self.last_command = None
  
  
  def init_ctrl(output=None):
      rc = MockRIOTCtrl("foobar", env={"BOARD": "native"})
      rc.term.output = output
      return rc
  
new_contents: # Copyright (C) 2020 Freie Universität Berlin
  #
  # This file is subject to the terms and conditions of the GNU Lesser
  # General Public License v2.1. See the file LICENSE in the top level
  # directory for more details.
  
  import contextlib
  
  
  class MockSpawn():
      def __init__(self, ctrl, *args, **kwargs):
          self.ctrl = ctrl
          self.last_command = None
          # set some expected attributes
          self.before = None
          self.echo = False
  
      def sendline(self, line, *args, **kwargs):
          self.last_command = line
          if self.ctrl.output is None:
              # just echo last input for before (what replwrap is assembling
              # output from)
              self.before = line
          else:
              # use pre-configured output in case command expects a specific
              # output
              self.before = self.ctrl.output
  
      def expect_exact(self, *args, **kwargs):
          # always match on prompt with replwrap
          return 0
  
  
  class MockRIOTCtrl():
      """
      Mock RIOT ctrl
      """
      def __init__(self, *args, **kwargs):
          self.term = None
          self.output = None
          self.last_command = None
  
      @contextlib.contextmanager
      def run_term(self, reset=True, **startkwargs):
          try:
              self.start_term(**startkwargs)
              yield self.term
          finally:
              self.stop_term()
  
      def start_term(self, **spawnkwargs):
          self.term = MockSpawn(self)
  
      def stop_term(self):
          pass
  
  
  def init_ctrl(output=None):
      rc = MockRIOTCtrl("foobar", env={"BOARD": "native"})
      rc.output = output
      return rc
  
subject: rewrite Mock to detect missing check_term