/Lib/distutils/tests/test_install_scripts.py

http://unladen-swallow.googlecode.com/ · Python · 79 lines · 62 code · 16 blank · 1 comment · 2 complexity · e545553a25d255b6c88e9d2b94c26cf5 MD5 · raw file

  1. """Tests for distutils.command.install_scripts."""
  2. import os
  3. import unittest
  4. from distutils.command.install_scripts import install_scripts
  5. from distutils.core import Distribution
  6. from distutils.tests import support
  7. class InstallScriptsTestCase(support.TempdirManager,
  8. support.LoggingSilencer,
  9. unittest.TestCase):
  10. def test_default_settings(self):
  11. dist = Distribution()
  12. dist.command_obj["build"] = support.DummyCommand(
  13. build_scripts="/foo/bar")
  14. dist.command_obj["install"] = support.DummyCommand(
  15. install_scripts="/splat/funk",
  16. force=1,
  17. skip_build=1,
  18. )
  19. cmd = install_scripts(dist)
  20. self.assert_(not cmd.force)
  21. self.assert_(not cmd.skip_build)
  22. self.assert_(cmd.build_dir is None)
  23. self.assert_(cmd.install_dir is None)
  24. cmd.finalize_options()
  25. self.assert_(cmd.force)
  26. self.assert_(cmd.skip_build)
  27. self.assertEqual(cmd.build_dir, "/foo/bar")
  28. self.assertEqual(cmd.install_dir, "/splat/funk")
  29. def test_installation(self):
  30. source = self.mkdtemp()
  31. expected = []
  32. def write_script(name, text):
  33. expected.append(name)
  34. f = open(os.path.join(source, name), "w")
  35. f.write(text)
  36. f.close()
  37. write_script("script1.py", ("#! /usr/bin/env python2.3\n"
  38. "# bogus script w/ Python sh-bang\n"
  39. "pass\n"))
  40. write_script("script2.py", ("#!/usr/bin/python\n"
  41. "# bogus script w/ Python sh-bang\n"
  42. "pass\n"))
  43. write_script("shell.sh", ("#!/bin/sh\n"
  44. "# bogus shell script w/ sh-bang\n"
  45. "exit 0\n"))
  46. target = self.mkdtemp()
  47. dist = Distribution()
  48. dist.command_obj["build"] = support.DummyCommand(build_scripts=source)
  49. dist.command_obj["install"] = support.DummyCommand(
  50. install_scripts=target,
  51. force=1,
  52. skip_build=1,
  53. )
  54. cmd = install_scripts(dist)
  55. cmd.finalize_options()
  56. cmd.run()
  57. installed = os.listdir(target)
  58. for name in expected:
  59. self.assert_(name in installed)
  60. def test_suite():
  61. return unittest.makeSuite(InstallScriptsTestCase)
  62. if __name__ == "__main__":
  63. unittest.main(defaultTest="test_suite")