Fix an assertion exception when misusing install_data

* Failing test case for trying to install_data a custom_target

* Validate install_data() arguments are either string or file
pull/5330/head
Jon Turney 5 years ago committed by Jussi Pakkanen
parent 128d313b66
commit 261878f438
  1. 4
      mesonbuild/interpreter.py
  2. 1
      test cases/failing/97 custom target install data/Info.plist.cpp
  3. 11
      test cases/failing/97 custom target install data/meson.build
  4. 13
      test cases/failing/97 custom target install data/preproc.py

@ -3421,8 +3421,10 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
for s in raw_sources:
if isinstance(s, mesonlib.File):
sources.append(s)
else:
elif isinstance(s, str):
source_strings.append(s)
else:
raise InvalidArguments('Argument {!r} must be string or file.'.format(s))
sources += self.source_strings_to_files(source_strings)
install_dir = kwargs.get('install_dir', None)
if not isinstance(install_dir, (str, type(None))):

@ -0,0 +1 @@
Some data which gets processed before installation

@ -0,0 +1,11 @@
project('custom target install data')
preproc = find_program('preproc.py')
t = custom_target('Info.plist',
command: [preproc, '@INPUT@', '@OUTPUT@'],
input: 'Info.plist.cpp',
output: 'Info.plist',
)
install_data(t)

@ -0,0 +1,13 @@
#!/usr/bin/env python3
import sys
if len(sys.argv) != 3:
print(sys.argv[0], '<input>', '<output>')
inf = sys.argv[1]
outf = sys.argv[2]
with open(outf, 'wb') as o:
with open(inf, 'rb') as i:
o.write(i.read())
Loading…
Cancel
Save