Skip to content

Commit

Permalink
Make test for identity
Browse files Browse the repository at this point in the history
(cherry picked from commit ae6426c)
  • Loading branch information
Ericson2314 committed Jun 9, 2019
1 parent b9d7e98 commit 6d6af46
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 0 deletions.
12 changes: 12 additions & 0 deletions run_unittests.py
Original file line number Diff line number Diff line change
Expand Up @@ -5206,6 +5206,18 @@ def test_std_remains(self):
self.assertRegex(compdb[0]['command'], '-std=c99')
self.build()

def test_identity_cross(self):
testdir = os.path.join(self.unit_test_dir, '58 identity cross')
crossfile = tempfile.NamedTemporaryFile(mode='w')
os.environ['CC'] = '"' + os.path.join(testdir, 'build_wrapper.py') + '"'
crossfile.write('''[binaries]
c = ['{0}']
'''.format(os.path.join(testdir, 'host_wrapper.py')))
crossfile.flush()
self.meson_cross_file = crossfile.name
# TODO should someday be explicit about build platform only here
self.init(testdir)

def should_run_cross_arm_tests():
return shutil.which('arm-linux-gnueabihf-gcc') and not platform.machine().lower().startswith('arm')

Expand Down
5 changes: 5 additions & 0 deletions test cases/unit/58 identity cross/build_wrapper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env python

import subprocess, sys

subprocess.call(["cc", "-DEXTERNAL_BUILD"] + sys.argv[1:])
5 changes: 5 additions & 0 deletions test cases/unit/58 identity cross/host_wrapper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env python

import subprocess, sys

subprocess.call(["cc", "-DEXTERNAL_HOST"] + sys.argv[1:])
15 changes: 15 additions & 0 deletions test cases/unit/58 identity cross/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
project('identity cross test', 'c')

assert(meson.get_compiler('c', native: true).get_define(
'GOT',
args : [ '-DARG_BUILD' ],
prefix : '#include "stuff.h"',
include_directories: include_directories('.'),
) == 'BUILD', 'did not get BUILD from native: true compiler')

assert(meson.get_compiler('c', native: false).get_define(
'GOT',
args : [ '-DARG_HOST' ],
prefix : '#include "stuff.h"',
include_directories: include_directories('.'),
) == 'HOST', 'did not get HOST from native: false compiler')
27 changes: 27 additions & 0 deletions test cases/unit/58 identity cross/stuff.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#ifdef EXTERNAL_BUILD
#ifndef ARG_BUILD
#error "External is build but arg_build is not set."
#elif defined(ARG_HOST)
#error "External is build but arg_host is set."
#else
#define GOT BUILD
#endif
#endif

#ifdef EXTERNAL_HOST
#ifndef ARG_HOST
#error "External is host but arg_host is not set."
#elif defined(ARG_BUILD)
#error "External is host but arg_build is set."
#else
#define GOT HOST
#endif
#endif

#if defined(EXTERNAL_BUILD) && defined(EXTERNAL_HOST)
#error "Both external build and external host set."
#endif

#if !defined(EXTERNAL_BUILD) && !defined(EXTERNAL_HOST)
#error "Neither external build nor external host is set."
#endif

0 comments on commit 6d6af46

Please sign in to comment.