X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fmain.cc;h=c405bf203fd72732f39f8e098732d923360f53d7;hb=0f8935c1217d98bb2d7054eeea797cfc73a5bd17;hp=453d29668afdfb45d7f2cdd5f07182dcb6535d28;hpb=1a09bec1c62a5068126735cc0915020bf487f4b1;p=awesomized%2Flibmemcached diff --git a/libtest/main.cc b/libtest/main.cc index 453d2966..c405bf20 100644 --- a/libtest/main.cc +++ b/libtest/main.cc @@ -34,7 +34,7 @@ * */ -#include +#include "libtest/yatlcon.h" #include #include @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -58,7 +59,7 @@ using namespace libtest; -static void stats_print(Framework *frame) +static void stats_print(libtest::Framework *frame) { if (frame->failed() == 0 and frame->success() == 0) { @@ -87,6 +88,23 @@ int main(int argc, char *argv[]) bool opt_quiet= false; std::string collection_to_run; std::string wildcard; + std::string binary_name; + + const char *just_filename= rindex(argv[0], '/'); + if (just_filename) + { + just_filename++; + } + else + { + just_filename= argv[0]; + } + + if (just_filename[0] == 'l' and just_filename[1] == 't' and just_filename[2] == '-') + { + just_filename+= 3; + } + binary_name.append(just_filename); /* Valgrind does not currently work reliably, or sometimes at all, on OSX @@ -202,22 +220,24 @@ int main(int argc, char *argv[]) is_massive(opt_massive); } - char buffer[1024]; + libtest::vchar_t tmp_directory; + tmp_directory.resize(1024); if (getenv("LIBTEST_TMP")) { - snprintf(buffer, sizeof(buffer), "%s", getenv("LIBTEST_TMP")); + snprintf(&tmp_directory[0], tmp_directory.size(), "%s", getenv("LIBTEST_TMP")); } else { - snprintf(buffer, sizeof(buffer), "%s", LIBTEST_TEMP); + snprintf(&tmp_directory[0], tmp_directory.size(), "%s", LIBTEST_TEMP); } - if (chdir(buffer) == -1) + if (chdir(&tmp_directory[0]) == -1) { - char getcwd_buffer[1024]; - char *dir= getcwd(getcwd_buffer, sizeof(getcwd_buffer)); + libtest::vchar_t getcwd_buffer; + getcwd_buffer.resize(1024); + char *dir= getcwd(&getcwd_buffer[0], getcwd_buffer.size()); - Error << "Unable to chdir() from " << dir << " to " << buffer << " errno:" << strerror(errno); + Error << "Unable to chdir() from " << dir << " to " << &tmp_directory[0] << " errno:" << strerror(errno); return EXIT_FAILURE; } @@ -261,7 +281,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - std::auto_ptr frame(new Framework(signal, collection_to_run, wildcard)); + std::auto_ptr frame(new libtest::Framework(signal, binary_name, collection_to_run, wildcard)); // Run create(), bail on error. { @@ -303,11 +323,20 @@ int main(int argc, char *argv[]) } else if (frame->success() and (frame->failed() == 0)) { + Out; Out << "All tests completed successfully."; } stats_print(frame.get()); + std::ofstream xml_file; + std::string file_name; + file_name.append(&tmp_directory[0]); + file_name.append(frame->name()); + file_name.append(".xml"); + xml_file.open(file_name.c_str(), std::ios::trunc); + libtest::Formatter::xml(*frame, xml_file); + Outn(); // Generate a blank to break up the messages if make check/test has been run } while (exit_code == EXIT_SUCCESS and --opt_repeat); }