(self, filename, libraries=None, includes=None, force_c=False, cflags=None, output_basename=None, output_suffix=None)
| 941 | |
| 942 | # Build JavaScript code from source code |
| 943 | def build(self, filename, libraries=None, includes=None, force_c=False, cflags=None, output_basename=None, output_suffix=None): |
| 944 | filename = maybe_test_file(filename) |
| 945 | compiler = [compiler_for(filename, force_c)] |
| 946 | |
| 947 | if force_c: |
| 948 | assert utils.suffix(filename) != '.c', 'force_c is not needed for source files ending in .c' |
| 949 | compiler.append('-xc') |
| 950 | |
| 951 | all_cflags = self.get_cflags(main_file=True) |
| 952 | if cflags: |
| 953 | all_cflags += cflags |
| 954 | if not output_suffix: |
| 955 | output_suffix = get_output_suffix(all_cflags) |
| 956 | |
| 957 | if output_basename: |
| 958 | output = output_basename + output_suffix |
| 959 | else: |
| 960 | output = utils.unsuffixed_basename(filename) + output_suffix |
| 961 | cmd = compiler + [str(filename), '-o', output] + all_cflags |
| 962 | if libraries: |
| 963 | cmd += libraries |
| 964 | if includes: |
| 965 | cmd += ['-I' + str(include) for include in includes] |
| 966 | |
| 967 | self.run_process(cmd, stderr=self.stderr_redirect if not DEBUG else None) |
| 968 | self.assertExists(output) |
| 969 | |
| 970 | if output_suffix in {'.js', '.mjs'}: |
| 971 | # Make sure we produced correct line endings |
| 972 | self.assertEqual(line_endings.check_line_endings(output), 0) |
| 973 | |
| 974 | return output |
| 975 | |
| 976 | def get_func(self, src, name): |
| 977 | start = src.index('function ' + name + '(') |
no test coverage detected