def _generate_jemalloc_integration_tests(): paths = build_common.find_all_files( 'android/external/jemalloc/test/integration', ['.c'], include_tests=True) # Disable some multi-threaded tests flaky under ARM qemu. if OPTIONS.is_arm(): paths.remove( 'android/external/jemalloc/test/integration/MALLOCX_ARENA.c') paths.remove( 'android/external/jemalloc/test/integration/thread_arena.c') for path in paths: name = os.path.splitext(os.path.basename(path))[0] n = ninja_generator.TestNinjaGenerator('jemalloc_integartion_test_' + name) n.add_include_paths('android/external/jemalloc/include', 'android/external/jemalloc/test/include') n.add_c_flags('-Werror') n.add_c_flags('-DJEMALLOC_INTEGRATION_TEST') if OPTIONS.enable_jemalloc_debug(): n.add_c_flags('-DJEMALLOC_DEBUG') # Needs C99 for "restrict" keyword. n.add_c_flags('-std=gnu99') n.add_library_deps('libjemalloc.a') n.add_library_deps('libjemalloc_integrationtest.a') n.build_default([path]) n.run(n.link(), enable_valgrind=OPTIONS.enable_valgrind(), rule='run_test')
def _generate_jemalloc_unit_tests(): paths = build_common.find_all_files('android/external/jemalloc/test/unit', ['.c'], include_tests=True) # These tests need -DJEMALLOC_PROF which we do not enable. paths.remove('android/external/jemalloc/test/unit/prof_accum.c') paths.remove('android/external/jemalloc/test/unit/prof_accum_a.c') paths.remove('android/external/jemalloc/test/unit/prof_accum_b.c') paths.remove('android/external/jemalloc/test/unit/prof_gdump.c') paths.remove('android/external/jemalloc/test/unit/prof_idump.c') # Disable some multi-threaded tests flaky under ARM qemu. if OPTIONS.is_arm(): paths.remove('android/external/jemalloc/test/unit/mq.c') paths.remove('android/external/jemalloc/test/unit/mtx.c') for path in paths: name = os.path.splitext(os.path.basename(path))[0] n = ninja_generator.TestNinjaGenerator('jemalloc_unit_test_' + name) n.add_include_paths('android/external/jemalloc/include', 'android/external/jemalloc/test/include') n.add_c_flags('-Werror') n.add_c_flags('-DJEMALLOC_UNIT_TEST') if OPTIONS.enable_jemalloc_debug(): n.add_c_flags('-DJEMALLOC_DEBUG') # Needs C99 for "restrict" keyword. n.add_c_flags('-std=gnu99') n.add_library_deps('libjemalloc_jet.a') n.add_library_deps('libjemalloc_unittest.a') n.build_default([path]) n.run(n.link(), enable_valgrind=OPTIONS.enable_valgrind(), rule='run_test')
def generate_test_ninjas(): n = ninja_generator.TestNinjaGenerator('libcommon_test', force_compiler='clang', enable_cxx11=True, base_path='src/common') n.build_default_all_test_sources() if build_common.use_ndk_direct_execution(): n.add_compiler_flags('-DUSE_NDK_DIRECT_EXECUTION') n.add_compiler_flags('-Werror') n.add_library_deps('libgccdemangle_static.a') _add_compile_flags(n) n.run(n.link())
def generate_test_ninjas(): if not OPTIONS.is_nacl_x86_64(): return n = ninja_generator.TestNinjaGenerator( 'libunwind_test', base_path='android/external/libunwind', enable_cxx11=True) sources = [] if OPTIONS.is_x86_64(): sources.append('src/x86_64/ucontext_i_test.cc') n.build_default(sources) n.run(n.link())
def _generate_unit_test_ninja(): n = ninja_generator.TestNinjaGenerator('graphics_translation_unit_test', force_compiler='clang', enable_cxx11=True, base_path='graphics_translation') _add_compile_flags(n) n.add_ppapi_link_flags() n.add_library_deps('libcutils_static.a', 'libetc1_static.a', 'libgccdemangle_static.a', 'liblog_static.a', 'libutils_static.a', 'libppapi_mocks.a', 'libegl.a', 'libgles.a') sources = n.find_all_files('graphics_translation/gles', ['_test.cpp'], include_tests=True) n.build_default(sources, base_path='mods') n.run(n.link())
def generate_test_ninjas(): n = ninja_generator.TestNinjaGenerator('stlport_unittest', base_path=_STLPORT_ROOT + '/test/unit') n.add_c_flags('-Werror') n.add_cxx_flags('-Werror') # For avoiding compile failure on min_test.cpp. n.add_cxx_flags('-Wno-sequence-point') # For avoiding compile failure on sstream_test.cpp and time_facets_test.cpp. n.add_cxx_flags('-Wno-uninitialized') if n.is_clang_enabled(): # For avoiding compile failure on string_test.cpp. n.add_cxx_flags('-Wno-unused-comparison') # For avoiding compile failure on resolve_name.cpp. n.add_cxx_flags('-Wno-unused-function') # For avoiding compile failure on fstream_test.cpp and sstream_test.cpp. n.add_cxx_flags('-Wno-unused-private-field') # For avoiding compile failure on slist_test.cpp, list_test.cpp and # type_traits_test.cpp. n.add_cxx_flags('-Wno-unused-variable') else: # For avoiding compile failure on --disable-debug-code. n.add_cxx_flags('-Wno-maybe-uninitialized') # Define STLPORT so that cppunit_proxy.h does not define # CPPUNIT_MINI_USE_EXCEPTIONS n.add_cxx_flags('-DSTLPORT') n.build_default(n.find_all_files(_STLPORT_ROOT + '/test/unit', ['.cpp', '.c'], include_tests=True, exclude=_EXCLUDE_FILES), base_path=None) argv = '-x=%s' % ','.join(_EXCLUDE_TESTS) n.run(n.link(), argv=argv, enable_valgrind=OPTIONS.enable_valgrind(), rule='run_test')
def _generate_libutils_arc_tests_ninja(): base_path = 'android/system/core/libutils/arc_tests' n = ninja_generator.TestNinjaGenerator('libutils_arc_tests', base_path=base_path) n.build_default_all_test_sources() n.emit_framework_common_flags() n.add_compiler_flags('-Werror') library_deps = [ 'libchromium_base.a', # for libcommon.a etc. 'libcommon.a', 'libcutils_static.a', 'libgccdemangle_static.a', 'libpluginhandle.a', 'libunwind_static.a', 'libutils_static.a' ] n.add_library_deps(*library_deps) n.run(n.link())
def _generate_chromium_base_test_ninja(): base_path = 'android/external/chromium_org' n = ninja_generator.TestNinjaGenerator('libchromium_base_test', base_path=base_path, force_compiler='clang', enable_cxx11=True) _add_chromium_base_compiler_flags(n) # For third_party/testing/gmock. chromium_org/base/*_test.cc include gmock # files with '#include "testing/gmock/...". n.add_include_paths('out/staging') n.add_compiler_flags('-DUNIT_TEST') # for base/at_exit.h # TODO(crbug.com/239062): Support DEATH_TEST on Linux and enable these tests. # 'base/memory/weak_ptr_unittest.cc' # 'base/synchronization/cancellation_flag_unittest.cc' test_files = [ 'base/at_exit_unittest.cc', 'base/atomicops_unittest.cc', 'base/bits_unittest.cc', 'base/files/file_path_unittest.cc', 'base/id_map_unittest.cc', 'base/json/json_parser_unittest.cc', 'base/json/json_value_converter_unittest.cc', 'base/json/string_escape_unittest.cc', 'base/md5_unittest.cc', 'base/memory/linked_ptr_unittest.cc', 'base/memory/ref_counted_memory_unittest.cc', 'base/memory/ref_counted_unittest.cc', 'base/memory/scoped_ptr_unittest.cc', 'base/memory/scoped_vector_unittest.cc', 'base/memory/singleton_unittest.cc', 'base/numerics/safe_numerics_unittest.cc', 'base/scoped_clear_errno_unittest.cc', 'base/sha1_unittest.cc', 'base/stl_util_unittest.cc', 'base/strings/string16_unittest.cc', 'base/strings/string_number_conversions_unittest.cc', 'base/strings/string_piece_unittest.cc', 'base/strings/string_split_unittest.cc', 'base/strings/string_tokenizer_unittest.cc', 'base/strings/string_util_unittest.cc', 'base/strings/stringize_macros_unittest.cc', 'base/strings/stringprintf_unittest.cc', 'base/strings/utf_offset_string_conversions_unittest.cc', 'base/strings/utf_string_conversions_unittest.cc', 'base/template_util_unittest.cc', 'base/time/time_unittest.cc', 'base/tuple_unittest.cc', 'base/values_unittest.cc', 'libchromium_base_test_main.cc' ] # main function if not build_options.OPTIONS.is_nacl_build(): test_files.extend(['base/environment_unittest.cc']) if not build_options.OPTIONS.is_arm(): # qemu-arm does not support threading at this point. test_files.extend([ 'base/lazy_instance_unittest.cc', 'base/synchronization/condition_variable_unittest.cc', 'base/synchronization/lock_unittest.cc', 'base/synchronization/waitable_event_unittest.cc' ]) test_files = [os.path.join(base_path, f) for f in test_files] n.build_default(test_files, base_path=None) # Exclude FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe since the test # indirectly depends on base/strings/sys_string_conversions_posix.cc which in # turn calls functions like ::wcrtomb() to convert a std::wstring to a system # locale's multi byte one. For Linux build, we could make such MB/WC function # work by calling ::setlocale(LC_ALL, "en_US.utf8") in the main function, but # for NaCl, we have no way. exclude = ['FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe'] # Exclude TimeTest.FromLocalExplodedCrashOnAndroid for now because the test # relies on timezone info, which is located at # '/system/usr/share/zoneinfo/tzdata' in the readonly filesystem, but we do # not have an easy way to access this data from unit tests. exclude.append('TimeTest.FromLocalExplodedCrashOnAndroid') # TODO(crbug.com/414569): L-rebase: Exclude TimeDelta.FromAndIn for now due to # subtle floating point issues, e.g. # TimeDelta::FromSecondsD(13.1).InSecondsF() != 13.1. exclude.append('TimeDelta.FromAndIn') # These tests are flaky under Valgrind. if build_options.OPTIONS.enable_valgrind(): # This test queues up 4000 tasks among 200 threads. Under normal # circumstances each thread gets to run at least one task, but on several # occasions some threads have starved under Valgrind on the bots. exclude.append('ConditionVariableTest.LargeFastTaskTest') n.add_disabled_tests(*exclude) n.run(n.link())