2
0

test_tools.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import pytest
  2. import subprocess
  3. import sys
  4. import os
  5. import tempfile
  6. import panda3d
  7. if sys.platform == "emscripten":
  8. pytest.skip(allow_module_level=True)
  9. try:
  10. panda3d_tools = pytest.importorskip("panda3d_tools")
  11. except:
  12. panda3d_tools = None
  13. def get_tool(name):
  14. if sys.platform == 'win32':
  15. name += '.exe'
  16. if panda3d_tools:
  17. tools_dir = os.path.dirname(panda3d_tools.__file__)
  18. else:
  19. tools_dir = os.path.join(os.path.dirname(os.path.dirname(panda3d.__file__)), 'bin')
  20. path = os.path.join(tools_dir, name)
  21. if not os.path.isfile(path):
  22. pytest.skip(name + ' not found')
  23. return path
  24. def test_bam_info():
  25. path = get_tool('bam-info')
  26. output = subprocess.check_output([path, '-h'], stderr=subprocess.STDOUT).strip()
  27. assert output.startswith(b"This program scans one or more Bam files")
  28. def test_egg_trans():
  29. path = get_tool('egg-trans')
  30. output = subprocess.check_output([path, '-h'], stderr=subprocess.STDOUT).strip()
  31. assert output.startswith(b"egg-trans reads an egg file and writes")
  32. def test_pzip():
  33. data = b'test \000 data'
  34. try:
  35. file = tempfile.NamedTemporaryFile(suffix='.bin', delete=False)
  36. file.write(data)
  37. file.close()
  38. path = get_tool('pzip')
  39. subprocess.check_output([path, file.name])
  40. zlib = pytest.importorskip('zlib')
  41. with open(file.name + '.pz', 'rb') as pz:
  42. assert zlib.decompress(pz.read(), 32 + 15, 4096) == data
  43. finally:
  44. if os.path.isfile(file.name):
  45. os.remove(file.name)
  46. if os.path.isfile(file.name + '.pz'):
  47. os.remove(file.name + '.pz')