Scripts/programs to test FreeBSD ethernet interfaces.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

48 lines
2.0 KiB

  1. # !!fetch -q -o - https://www.funkthat.com/gitea/jmg/bitelab/raw/branch/main/bitelab/mocks.py
  2. #
  3. # Copyright (c) 2020 The FreeBSD Foundation
  4. #
  5. # This software1 was developed by John-Mark Gurney under sponsorship
  6. # from the FreeBSD Foundation.
  7. #
  8. # Redistribution and use in source and binary forms, with or without
  9. # modification, are permitted provided that the following conditions
  10. # are met:
  11. # 1. Redistributions of source code must retain the above copyright
  12. # notice, this list of conditions and the following disclaimer.
  13. # 2. Redistributions in binary form must reproduce the above copyright
  14. # notice, this list of conditions and the following disclaimer in the
  15. # documentation and/or other materials provided with the distribution.
  16. #
  17. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  18. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20. # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  21. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27. # SUCH DAMAGE.
  28. #
  29. from unittest.mock import AsyncMock, Mock
  30. __all__ = [ 'wrap_subprocess_exec' ]
  31. def wrap_subprocess_exec(mockobj, stdout=b'', stderr=b'', retcode=0):
  32. assert isinstance(stdout, bytes)
  33. assert isinstance(stderr, bytes)
  34. proc = Mock()
  35. proc.communicate = AsyncMock()
  36. proc.communicate.return_value = (stdout, stderr)
  37. proc.stdout.read = AsyncMock()
  38. proc.stdout.read.side_effect = [ stdout, b'' ]
  39. proc.stdin.drain = AsyncMock()
  40. proc.stdin.wait_closed = AsyncMock()
  41. proc.wait = AsyncMock()
  42. proc.wait.return_value = retcode
  43. proc.returncode = retcode
  44. mockobj.return_value = proc