* Remove test_ prefix in tests
* tests now honor EIGEN_REPEAT and EIGEN_SEED if no arguments were passed
diff --git a/cmake/EigenTesting.cmake b/cmake/EigenTesting.cmake
index c1fd49e..8e52152 100644
--- a/cmake/EigenTesting.cmake
+++ b/cmake/EigenTesting.cmake
@@ -19,7 +19,7 @@
 
 #internal. See documentation of ei_add_test for details.
 macro(ei_add_test_internal testname testname_with_suffix)
-  set(targetname test_${testname_with_suffix})
+  set(targetname ${testname_with_suffix})
 
   set(filename ${testname}.cpp)
   add_executable(${targetname} ${filename})
@@ -79,8 +79,8 @@
 #
 # A. Default behavior
 #
-# this macro add an executable test_<testname> as well as a ctest test
-# named <testname>.
+# this macro adds an executable <testname> as well as a ctest test
+# named <testname> too.
 #
 # On platforms with bash simply run:
 #   "ctest -V" or "ctest -V -R <testname>"
@@ -102,7 +102,7 @@
 # executables is built passing -DEIGEN_TEST_PART_N. This allows to split large tests
 # into smaller executables.
 #
-# Moreover, targets test_<testname> are still generated, they
+# Moreover, targets <testname> are still generated, they
 # have the effect of building all the parts of the test.
 #
 # Again, ctest -R allows to run all matching tests.
@@ -118,11 +118,11 @@
   string(REGEX REPLACE "CALL_SUBTEST_|EIGEN_TEST_PART_" "" suffixes "${occurences}")
   list(REMOVE_DUPLICATES suffixes)
   if(EIGEN_SPLIT_LARGE_TESTS AND suffixes)
-    add_custom_target(test_${testname})
+    add_custom_target(${testname})
     foreach(suffix ${suffixes})
       ei_add_test_internal(${testname} ${testname}_${suffix}
         "${ARGV1} -DEIGEN_TEST_PART_${suffix}=1" "${ARGV2}")
-      add_dependencies(test_${testname} test_${testname}_${suffix})
+      add_dependencies(${testname} ${testname}_${suffix})
     endforeach(suffix)
   else(EIGEN_SPLIT_LARGE_TESTS AND suffixes)
     set(symbols_to_enable_all_parts "")
diff --git a/scripts/buildtests.in b/scripts/buildtests.in
index 1cc8e95..3c42828 100755
--- a/scripts/buildtests.in
+++ b/scripts/buildtests.in
@@ -9,7 +9,7 @@
 
 TESTSLIST="${EIGEN_TESTS_LIST}"
 
-targets_to_make=`echo "$TESTSLIST" | egrep "$1" | sed s/^/test_/g | xargs echo`
+targets_to_make=`echo "$TESTSLIST" | egrep "$1" | xargs echo`
 
 if [ $# == 1 ]
 then
diff --git a/test/main.h b/test/main.h
index 9624838..8bc71b3 100644
--- a/test/main.h
+++ b/test/main.h
@@ -24,6 +24,7 @@
 // Eigen. If not, see <http://www.gnu.org/licenses/>.
 
 #include <cstdlib>
+#include <cerrno>
 #include <ctime>
 #include <iostream>
 #include <string>
@@ -49,6 +50,8 @@
 {
   static std::vector<std::string> g_test_stack;
   static int g_repeat;
+  static unsigned int g_seed;
+  static bool g_has_set_repeat, g_has_set_seed;
 }
 
 #define EI_PP_MAKE_STRING2(S) #S
@@ -385,46 +388,55 @@
 
 using namespace Eigen;
 
+void set_repeat_from_string(const char *str)
+{
+  errno = 0;
+  g_repeat = int(strtoul(str, 0, 10));
+  if(errno || g_repeat <= 0)
+  {
+    std::cout << "Invalid repeat value " << str << std::endl;
+    exit(EXIT_FAILURE);
+  }
+  g_has_set_repeat = true;
+}
+
+void set_seed_from_string(const char *str)
+{
+  errno = 0;
+  g_seed = strtoul(str, 0, 10);
+  if(errno || g_seed == 0)
+  {
+    std::cout << "Invalid seed value " << str << std::endl;
+    exit(EXIT_FAILURE);
+  }
+  g_has_set_seed = true;
+}
+
 int main(int argc, char *argv[])
 {
-    bool has_set_repeat = false;
-    bool has_set_seed = false;
+    g_has_set_repeat = false;
+    g_has_set_seed = false;
     bool need_help = false;
-    unsigned int seed = 0;
-    int repeat = DEFAULT_REPEAT;
 
     for(int i = 1; i < argc; i++)
     {
       if(argv[i][0] == 'r')
       {
-        if(has_set_repeat)
+        if(g_has_set_repeat)
         {
           std::cout << "Argument " << argv[i] << " conflicting with a former argument" << std::endl;
           return 1;
         }
-        repeat = atoi(argv[i]+1);
-        has_set_repeat = true;
-        if(repeat <= 0)
-        {
-          std::cout << "Invalid \'repeat\' value " << argv[i]+1 << std::endl;
-          return 1;
-        }
+        set_repeat_from_string(argv[i]+1);
       }
       else if(argv[i][0] == 's')
       {
-        if(has_set_seed)
+        if(g_has_set_seed)
         {
           std::cout << "Argument " << argv[i] << " conflicting with a former argument" << std::endl;
           return 1;
         }
-        seed = int(strtoul(argv[i]+1, 0, 10));
-        has_set_seed = true;
-        bool ok = seed!=0;
-        if(!ok)
-        {
-          std::cout << "Invalid \'seed\' value " << argv[i]+1 << std::endl;
-          return 1;
-        }
+         set_seed_from_string(argv[i]+1);
       }
       else
       {
@@ -437,17 +449,26 @@
       std::cout << "This test application takes the following optional arguments:" << std::endl;
       std::cout << "  rN     Repeat each test N times (default: " << DEFAULT_REPEAT << ")" << std::endl;
       std::cout << "  sN     Use N as seed for random numbers (default: based on current time)" << std::endl;
+      std::cout << std::endl;
+      std::cout << "If defined, the environment variables EIGEN_REPEAT and EIGEN_SEED" << std::endl;
+      std::cout << "will be used as default values for these parameters." << std::endl;
       return 1;
     }
 
-    if(!has_set_seed) seed = (unsigned int) time(NULL);
-    if(!has_set_repeat) repeat = DEFAULT_REPEAT;
+    char *env_EIGEN_REPEAT = getenv("EIGEN_REPEAT");
+    if(!g_has_set_repeat && env_EIGEN_REPEAT)
+      set_repeat_from_string(env_EIGEN_REPEAT);
+    char *env_EIGEN_SEED = getenv("EIGEN_SEED");
+    if(!g_has_set_seed && env_EIGEN_SEED)
+      set_seed_from_string(env_EIGEN_SEED);
 
-    std::cout << "Initializing random number generator with seed " << seed << std::endl;
-    srand(seed);
-    std::cout << "Repeating each test " << repeat << " times" << std::endl;
+    if(!g_has_set_seed) g_seed = (unsigned int) time(NULL);
+    if(!g_has_set_repeat) g_repeat = DEFAULT_REPEAT;
 
-    Eigen::g_repeat = repeat;
+    std::cout << "Initializing random number generator with seed " << g_seed << std::endl;
+    srand(g_seed);
+    std::cout << "Repeating each test " << g_repeat << " times" << std::endl;
+
     Eigen::g_test_stack.push_back(EI_PP_MAKE_STRING(EIGEN_TEST_FUNC));
 
     EIGEN_CAT(test_,EIGEN_TEST_FUNC)();
diff --git a/test/runtest.sh b/test/runtest.sh
index 31d1ca6..2be2508 100755
--- a/test/runtest.sh
+++ b/test/runtest.sh
@@ -9,7 +9,7 @@
 cyan='\E[36m'
 white='\E[37m'
 
-if ! ./test_$1 > /dev/null 2> .runtest.log ; then
+if ! ./$1 > /dev/null 2> .runtest.log ; then
   echo -e  $red Test $1 failed: $black
   echo -e $blue
   cat .runtest.log
diff --git a/unsupported/doc/examples/CMakeLists.txt b/unsupported/doc/examples/CMakeLists.txt
index af4de4b..d78af13 100644
--- a/unsupported/doc/examples/CMakeLists.txt
+++ b/unsupported/doc/examples/CMakeLists.txt
@@ -4,14 +4,14 @@
 
 FOREACH(example_src ${examples_SRCS})
 GET_FILENAME_COMPONENT(example ${example_src} NAME_WE)
-ADD_EXECUTABLE(${example} ${example_src})
+ADD_EXECUTABLE(example_${example} ${example_src})
 GET_TARGET_PROPERTY(example_executable
                     ${example} LOCATION)
 ADD_CUSTOM_COMMAND(
-  TARGET ${example}
+  TARGET example_${example}
   POST_BUILD
   COMMAND ${example_executable}
   ARGS >${CMAKE_CURRENT_BINARY_DIR}/${example}.out
 )
-ADD_DEPENDENCIES(unsupported_examples ${example})
+ADD_DEPENDENCIES(unsupported_examples example_${example})
 ENDFOREACH(example_src)