def check_shebangs_fix(interpreter, path): """Checks shebang substitution for the given interpreter""" deployment = Deployment('test') temp = tempfile.NamedTemporaryFile() # We cheat here a little. The fix_shebangs walks through the # project directory, however we can just point to a single # file, as the underlying mechanism is just grep -r. deployment.bin_dir = temp.name expected_shebang = '#!' + os.path.join(path, 'bin/python') + '\n' with open(temp.name, 'w') as f: f.write('#!/usr/bin/{0}\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.read(), expected_shebang) with open(temp.name, 'w') as f: f.write('#!/usr/bin/env {0}\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.readline(), expected_shebang)
def test_install_package(callmock): d = Deployment('test') d.bin_dir = 'derp' d.pip_prefix = ['derp/python', 'derp/pip'] d.install_package() callmock.assert_called_with([ 'derp/python', 'derp/pip', '.', ], cwd=os.getcwd())
def test_install_package(callmock): d = Deployment('test') d.bin_dir = 'derp' d.install_package() callmock.assert_called_with([ 'derp/python', 'setup.py', 'install', '--record', 'foo', '--install-headers', 'debian/test/usr/share/python/test/include/site/python2.6' ])
def test_find_script_files_normal_shebang(bin_dir): d = Deployment('testing') d.bin_dir = bin_dir script_files = [os.path.join(bin_dir, s) for s in ('s1', 's2', 's3')] for script in script_files: with open(os.path.join(bin_dir, script), 'w') as f: f.write('#!/usr/bin/python\n') with open(os.path.join(bin_dir, 'n1'), 'w') as f: f.write('#!/bin/bash') found_files = sorted(d.find_script_files()) eq_(found_files, script_files)
def check_shebangs_fix(interpreter, path): """Checks shebang substitution for the given interpreter""" deployment = Deployment('test') temp = tempfile.NamedTemporaryFile() # We cheat here a little. The fix_shebangs walks through the # project directory, however we can just point to a single # file, as the underlying mechanism is just grep -r. deployment.bin_dir = temp.name expected_shebang = '#!' + os.path.join(path, 'bin/python') + '\n' with open(temp.name, 'w') as f: f.write('#!/usr/bin/{0}\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.read(), expected_shebang) with open(temp.name, 'w') as f: f.write('#!/usr/bin/env {0}\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.readline(), expected_shebang) with open(temp.name, 'w') as f: f.write('#!{0}\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.readline(), expected_shebang) # Additional test to check for paths wrapped in quotes because they contained space # Example: # #!"/some/local/path/dest/path/bin/python" # was changed to: # #!/dest/path/bin/python" # which caused interpreter not found error with open(temp.name, 'w') as f: f.write('#!"/usr/bin/{0}"\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.readline(), expected_shebang)
def test_find_script_files_long_shebang(bin_dir): d = Deployment('testing') d.bin_dir = bin_dir script_files = [os.path.join(bin_dir, s) for s in ('s1', 's2', 's3')] for script in script_files: with open(os.path.join(bin_dir, script), 'w') as f: # It does not really matter what we write into the # exec statement as executable here f.write(create_new_style_shebang('/usr/bin/python')) with open(os.path.join(bin_dir, 'n1'), 'w') as f: f.write('#!/bin/bash') found_files = sorted(d.find_script_files()) eq_(found_files, script_files)
def test_find_script_files_long_shebang(bin_dir): d = Deployment('testing') d.bin_dir = bin_dir script_files = [os.path.join(bin_dir, s) for s in ('s1', 's2', 's3')] for script in script_files: with open(os.path.join(bin_dir, script), 'w') as f: # It does not really matter what we write into the # exec statement as executable here f.write( create_new_style_shebang('/usr/bin/python')) with open(os.path.join(bin_dir, 'n1'), 'w') as f: f.write('#!/bin/bash') found_files = sorted(d.find_script_files()) eq_(found_files, script_files)
def check_shebangs_fix_on_new_pip(path): """Test new pip style shebangs get replaced properly""" deployment = Deployment('test') temp = tempfile.NamedTemporaryFile() # We cheat here a little. The fix_shebangs walks through the # project directory, however we can just point to a single # file, as the underlying mechanism is just grep -r. deployment.bin_dir = temp.name build_time_shebang = create_new_style_shebang(os.path.join( deployment.virtualenv_install_dir, 'bin', 'python')) expected_shebang = create_new_style_shebang(os.path.join( path, 'bin/python')) with open(temp.name, 'w') as f: f.write(build_time_shebang) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.read(), expected_shebang)
def check_shebangs_fix_on_new_pip(path): """Test new pip style shebangs get replaced properly""" deployment = Deployment('test') temp = tempfile.NamedTemporaryFile() # We cheat here a little. The fix_shebangs walks through the # project directory, however we can just point to a single # file, as the underlying mechanism is just grep -r. deployment.bin_dir = temp.name build_time_shebang = create_new_style_shebang( os.path.join(deployment.virtualenv_install_dir, 'bin', 'python')) expected_shebang = create_new_style_shebang( os.path.join(path, 'bin/python')) with open(temp.name, 'w') as f: f.write(build_time_shebang) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.read(), expected_shebang)
def check_shebangs_fix(interpreter, path): """Checks shebang substitution for the given interpreter""" deployment = Deployment('test') temp = tempfile.NamedTemporaryFile() # We cheat here a little. The fix_shebangs walks through the # project directory, however we can just point to a single # file, as the underlying mechanism is just grep -r. deployment.bin_dir = temp.name expected_shebang = '#!' + os.path.join(path, 'bin/python') + '\n' with open(temp.name, 'w') as f: f.write('#!/usr/bin/{0}\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.read(), expected_shebang) with open(temp.name, 'w') as f: f.write('#!/usr/bin/env {0}\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.readline(), expected_shebang) # Additional test to check for paths wrapped in quotes because they contained space # Example: # #!"/some/local/path/dest/path/bin/python" # was changed to: # #!/dest/path/bin/python" # which caused interpreter not found error with open(temp.name, 'w') as f: f.write('#!"/usr/bin/{0}"\n'.format(interpreter)) deployment.fix_shebangs() with open(temp.name) as f: eq_(f.readline(), expected_shebang)
def test_shebangs_fix(): deployment = Deployment('test') temp = tempfile.NamedTemporaryFile() # We cheat here a little. The fix_shebangs walks through the # project directory, however we can just point to a single # file, as the underlying mechanism is just grep -r. deployment.bin_dir = temp.name with open(temp.name, 'w') as f: f.write('#!/usr/bin/python\n') deployment.fix_shebangs() with open(temp.name) as f: eq_('#!/usr/share/python/test/bin/python\n', f.read()) with open(temp.name, 'w') as f: f.write('#!/usr/bin/env python\n') deployment.fix_shebangs() with open(temp.name) as f: eq_('#!/usr/share/python/test/bin/python\n', f.readline())
def test_shebangs_fix_overridden_root(): os.environ['DH_VIRTUALENV_INSTALL_ROOT'] = 'foo' deployment = Deployment('test') temp = tempfile.NamedTemporaryFile() # We cheat here a little. The fix_shebangs walks through the # project directory, however we can just point to a single # file, as the underlying mechanism is just grep -r. deployment.bin_dir = temp.name with open(temp.name, 'w') as f: f.write('#!/usr/bin/python\n') deployment.fix_shebangs() with open(temp.name) as f: eq_('#!foo/test/bin/python\n', f.read()) with open(temp.name, 'w') as f: f.write('#!/usr/bin/env python\n') deployment.fix_shebangs() with open(temp.name) as f: eq_('#!foo/test/bin/python\n', f.readline()) del os.environ['DH_VIRTUALENV_INSTALL_ROOT']
def test_install_package(callmock): d = Deployment("test") d.bin_dir = "derp" d.pip_prefix = ["derp/python", "derp/pip"] d.install_package() callmock.assert_called_with(["derp/python", "derp/pip", "."])