<br><br><div class="gmail_quote">On Tue, Aug 7, 2012 at 1:22 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@google.com" target="_blank">chandlerc@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
On Tue, Aug 7, 2012 at 1:59 AM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Author: samsonov<br>Date: Tue Aug  7 03:59:15 2012<br>New Revision: 161406<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=161406&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=161406&view=rev</a><br>
Log:<br>[ASan] Add support for running unit tests by lit (as a part of 'make check-asan' command)<br><br>Added:<br>    compiler-rt/trunk/lib/asan/lit_tests/Unit/<br>    compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.cfg<br>
    compiler-rt/trunk/lib/asan/lit_tests/Unit/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a><br>    compiler-rt/trunk/lib/lit.common.unit.cfg<br>Modified:<br>    compiler-rt/trunk/lib/asan/lit_tests/CMakeLists.txt<br>
    compiler-rt/trunk/lib/asan/lit_tests/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a><br>    compiler-rt/trunk/lib/asan/tests/CMakeLists.txt<br><br>Modified: compiler-rt/trunk/lib/asan/lit_tests/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/CMakeLists.txt?rev=161406&r1=161405&r2=161406&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/CMakeLists.txt?rev=161406&r1=161405&r2=161406&view=diff</a><br>
==============================================================================<br>--- compiler-rt/trunk/lib/asan/lit_tests/CMakeLists.txt (original)<br>+++ compiler-rt/trunk/lib/asan/lit_tests/CMakeLists.txt Tue Aug  7 03:59:15 2012<br>
@@ -1,15 +1,39 @@<br>+set(ASAN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)<br>+set(ASAN_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/..)<br>+<br> configure_lit_site_cfg(<br>   ${CMAKE_CURRENT_SOURCE_DIR}/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a><br>
   ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg<br>   )<br><br>+configure_lit_site_cfg(<br>+  ${CMAKE_CURRENT_SOURCE_DIR}/Unit/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a><br>+  ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg<br>
+  )<br>+<br> set(ASAN_TEST_DEPS<br>-  clang clang-headers FileCheck count not<br>   clang-rt.asan-x86_64 clang-rt.asan-i386<br></blockquote><div><br></div><div>I don't think you even need the runtime libraries... AsanUnitTests should bring everything it needs?</div>
</div></div></blockquote><div><br></div><div>Only if LLVM_INCLUDE_TESTS is set.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
   )<br>+if(LLVM_INCLUDE_TESTS)<br>+  list(APPEND ASAN_TEST_DEPS AsanUnitTests)<br>+endif()<br><br>-add_lit_testsuite(check-asan "Running the AddressSanitizer tests"<br>-  ${CMAKE_CURRENT_BINARY_DIR}<br>-  DEPENDS ${ASAN_TEST_DEPS}<br>
-  )<br>-set_target_properties(check-asan PROPERTIES FOLDER "ASan tests")<br>+if("${CMAKE_HOST_SYSTEM}" STREQUAL "${CMAKE_SYSTEM}")<br>+  # Run ASan output tests only if we're not cross-compiling,<br>
+  # and can be sure that clang would produce working binaries.<br>+  list(APPEND ASAN_TEST_DEPS<br>+    clang clang-headers FileCheck count not<br>+    )<br>+  add_lit_testsuite(check-asan "Running the AddressSanitizer tests"<br>
+    ${CMAKE_CURRENT_BINARY_DIR}<br>+    DEPENDS ${ASAN_TEST_DEPS}<br>+    )<br>+  set_target_properties(check-asan PROPERTIES FOLDER "ASan tests")<br>+elseif(LLVM_INCLUDE_TESTS)<br>+  # Otherwise run only ASan unit tests.<br>
+  add_lit_testsuite(check-asan "Running the AddressSanitizer unit tests"<br>+    ${CMAKE_CURRENT_BINARY_DIR}/Unit<br>+    DEPENDS ${ASAN_TEST_DEPS}<br>+    )<br>+  set_target_properties(check-asan PROPERTIES FOLDER "ASan unit tests")<br>
+endif()<br><br>Added: compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.cfg<br>URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.cfg?rev=161406&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.cfg?rev=161406&view=auto</a><br>
==============================================================================<br>--- compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.cfg (added)<br>+++ compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.cfg Tue Aug  7 03:59:15 2012<br>
@@ -0,0 +1,27 @@<br>+# -*- Python -*-<br>+<br>+import os<br>+<br>+def get_required_attr(config, attr_name):<br>+  attr_value = getattr(config, attr_name, None)<br>+  if not attr_value:<br>+    lit.fatal("No attribute %r in test configuration! You may need to run "<br>
+              "tests from your build directory or add this attribute "<br>+              "to lit.site.cfg " % attr_name)<br>+  return attr_value<br>+<br>+# Setup attributes common for all compiler-rt projects.<br>
+llvm_src_root = get_required_attr(config, 'llvm_src_root')<br>+compiler_rt_lit_unit_cfg = os.path.join(llvm_src_root, "projects",<br>+                                        "compiler-rt", "lib",<br>
+                                        "lit.common.unit.cfg")<br>+lit.load_config(config, compiler_rt_lit_unit_cfg)<br>+<br>+# Setup config name.<br>+<a href="http://config.name/" target="_blank">config.name</a> = 'AddressSanitizer-Unit'<br>
+<br>+# Setup test source and exec root. For unit tests, we define<br>+# it as build directory with ASan unit tests.<br>+asan_binary_dir = get_required_attr(config, "asan_binary_dir")<br>+config.test_exec_root = os.path.join(asan_binary_dir, "tests")<br>
+config.test_source_root = config.test_exec_root<br><br>Added: compiler-rt/trunk/lib/asan/lit_tests/Unit/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a><br>URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.site.cfg.in?rev=161406&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/Unit/lit.site.cfg.in?rev=161406&view=auto</a><br>
==============================================================================<br>--- compiler-rt/trunk/lib/asan/lit_tests/Unit/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a> (added)<br>+++ compiler-rt/trunk/lib/asan/lit_tests/Unit/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a> Tue Aug  7 03:59:15 2012<br>
@@ -0,0 +1,10 @@<br>+## Autogenerated by LLVM/Clang configuration.<br>+# Do not edit!<br>+<br>+config.target_triple = "@TARGET_TRIPLE@"<br>+config.llvm_src_root = "@LLVM_SOURCE_DIR@"<br>+config.build_type = "@CMAKE_BUILD_TYPE@"<br>
+config.asan_binary_dir = "@ASAN_BINARY_DIR@"<br>+<br>+# Let the main config do the real work.<br>+lit.load_config(config, "@ASAN_SOURCE_DIR@/lit_tests/Unit/lit.cfg")<br><br>Modified: compiler-rt/trunk/lib/asan/lit_tests/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/lit.site.cfg.in?rev=161406&r1=161405&r2=161406&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/lit.site.cfg.in?rev=161406&r1=161405&r2=161406&view=diff</a><br>
==============================================================================<br>--- compiler-rt/trunk/lib/asan/lit_tests/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a> (original)<br>+++ compiler-rt/trunk/lib/asan/lit_tests/<a href="http://lit.site.cfg.in/" target="_blank">lit.site.cfg.in</a> Tue Aug  7 03:59:15 2012<br>
@@ -6,4 +6,4 @@<br> config.clang = "@LLVM_BINARY_DIR@/bin/clang"<br><br> # Let the main config do the real work.<br>-lit.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg")<br>+lit.load_config(config, "@ASAN_SOURCE_DIR@/lit_tests/lit.cfg")<br>
<br>Modified: compiler-rt/trunk/lib/asan/tests/CMakeLists.txt<br>URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/CMakeLists.txt?rev=161406&r1=161405&r2=161406&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/CMakeLists.txt?rev=161406&r1=161405&r2=161406&view=diff</a><br>
==============================================================================<br>--- compiler-rt/trunk/lib/asan/tests/CMakeLists.txt (original)<br>+++ compiler-rt/trunk/lib/asan/tests/CMakeLists.txt Tue Aug  7 03:59:15 2012<br>
@@ -47,10 +47,10 @@<br>   -DASAN_UAR=0<br> )<br><br>-add_custom_target(AsanTests)<br>-set_target_properties(AsanTests PROPERTIES FOLDER "ASan tests")<br>+add_custom_target(AsanUnitTests)<br>+set_target_properties(AsanUnitTests PROPERTIES FOLDER "ASan unit tests")<br>
 function(add_asan_test testname)<br>-  add_unittest(AsanTests ${testname} ${ARGN})<br>+  add_unittest(AsanUnitTests ${testname} ${ARGN})<br>   if(LLVM_BUILD_32_BITS)<br>     target_link_libraries(${testname} clang_rt.asan-i386)<br>
   else()<br><br>Added: compiler-rt/trunk/lib/lit.common.unit.cfg<br>URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lit.common.unit.cfg?rev=161406&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lit.common.unit.cfg?rev=161406&view=auto</a><br>
==============================================================================<br>--- compiler-rt/trunk/lib/lit.common.unit.cfg (added)<br>+++ compiler-rt/trunk/lib/lit.common.unit.cfg Tue Aug  7 03:59:15 2012<br>@@ -0,0 +1,21 @@<br>
+# -*- Python -*-<br>+<br>+# Configuration file for 'lit' test runner.<br>+# This file contains common config setup rules for unit tests in various<br>+# compiler-rt testsuites.<br>+<br>+import os<br>+<br>+# Setup test format<br>
+build_type = getattr(config, "build_type", "Debug")<br>+config.test_format = lit.formats.GoogleTest(build_type, "Test")<br>+<br>+# Setup test suffixes.<br>+config.suffixes = []<br>+<br>+# Propagate the temp directory. Windows requires this because it uses \Windows\<br>
+# if none of these are present.<br>+if 'TMP' in os.environ:<br>+    config.environment['TMP'] = os.environ['TMP']<br>+if 'TEMP' in os.environ:<br>+    config.environment['TEMP'] = os.environ['TEMP']<br>
<br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div><div><br></div>