Make sbang handle lua

- use --! instead of #! for patched lua scripts.
This commit is contained in:
Todd Gamblin
2016-06-23 00:03:23 -07:00
parent 86893e3dc4
commit 27e9bc6d02
3 changed files with 35 additions and 6 deletions

View File

@@ -23,6 +23,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import os
import re
import llnl.util.tty as tty
@@ -57,11 +58,15 @@ def filter_shebang(path):
if original.startswith(new_sbang_line):
return
# Use --! instead of #! on second line for lua.
if re.search(r'^#!(/[^/]*)*lua\b', original):
original = re.sub(r'^#', '--', original)
with open(path, 'w') as new_file:
new_file.write(new_sbang_line)
new_file.write(original)
tty.warn("Patched overly long shebang in %s" % path)
tty.warn("Patched overlong shebang in %s" % path)
def filter_shebangs_in_directory(directory):

View File

@@ -34,10 +34,12 @@
from spack.hooks.sbang import filter_shebangs_in_directory
import spack
short_line = "#!/this/is/short/bin/bash\n"
long_line = "#!/this/" + ('x' * 200) + "/is/long\n"
sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.spack_root
last_line = "last!\n"
short_line = "#!/this/is/short/bin/bash\n"
long_line = "#!/this/" + ('x' * 200) + "/is/long\n"
lua_line = "#!/this/" + ('x' * 200) + "/is/lua\n"
lua_line_patched = "--!/this/" + ('x' * 200) + "/is/lua\n"
sbang_line = '#!/bin/bash %s/bin/sbang\n' % spack.spack_root
last_line = "last!\n"
class SbangTest(unittest.TestCase):
def setUp(self):
@@ -59,6 +61,12 @@ def setUp(self):
f.write(long_line)
f.write(last_line)
# Lua script with long shebang
self.lua_shebang = os.path.join(self.tempdir, 'lua')
with open(self.lua_shebang, 'w') as f:
f.write(lua_line)
f.write(last_line)
# Script already using sbang.
self.has_shebang = os.path.join(self.tempdir, 'shebang')
with open(self.has_shebang, 'w') as f:
@@ -71,7 +79,6 @@ def tearDown(self):
shutil.rmtree(self.tempdir, ignore_errors=True)
def test_shebang_handling(self):
filter_shebangs_in_directory(self.tempdir)
@@ -86,6 +93,12 @@ def test_shebang_handling(self):
self.assertEqual(f.readline(), long_line)
self.assertEqual(f.readline(), last_line)
# Make sure this got patched.
with open(self.lua_shebang, 'r') as f:
self.assertEqual(f.readline(), sbang_line)
self.assertEqual(f.readline(), lua_line_patched)
self.assertEqual(f.readline(), last_line)
# Make sure this is untouched
with open(self.has_shebang, 'r') as f:
self.assertEqual(f.readline(), sbang_line)