Browse Source

Merge patch to update tools/regression to Boost.Filesystem V3.

[SVN r68589]
Vladimir Prus 15 years ago
parent
commit
dc1b7f33b7

+ 5 - 1
tools/regression/doc/library_status.html

@@ -451,7 +451,11 @@
   through all test results for all test in all libraries.</p>
   <hr />
 
-  <p>Copyright 2007 Robert Ramey. Distributed under the Boost Software
+
+  <p>Copyright 2011 Bryce Lelbach.</p>
+  <p>Copyright 2007-2011 Robert Ramey.</p>
+
+  <p>Distributed under the Boost Software
   License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
   http://www.boost.org/LICENSE_1_0.txt)</p>
 

+ 34 - 31
tools/regression/src/compiler_status.cpp

@@ -1,8 +1,11 @@
 //  Generate Compiler Status HTML from jam regression test output  -----------//
 
-//  Copyright Beman Dawes 2002.  Distributed under the Boost
-//  Software License, Version 1.0. (See accompanying file
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//  Copyright Bryce Lelbach 2011 
+//  Copyright Beman Dawes 2002-2011.
+
+//  Distributed under the Boost Software License, Version 1.0. (See accompanying
+//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//  See http://www.boost.org/tools/regression/ for documentation.
 
 //  See http://www.boost.org/tools/regression/ for documentation.
 
@@ -194,11 +197,11 @@ namespace
     if ( !fs::exists( dir_path ) ) return false;
     for ( fs::directory_iterator itr( dir_path ); itr != end_itr; ++itr )
       if ( fs::is_directory( *itr )
-        && itr->filename() != ignore_dir_named )
+        && itr->path().string() != ignore_dir_named )
       {
         if ( find_file( *itr, name, path_found ) ) return true;
       }
-      else if ( itr->filename() == name )
+      else if ( itr->path().string() == name )
       {
         path_found = *itr;
         return true;
@@ -284,16 +287,16 @@ namespace
         // SunCC creates an internal subdirectory everywhere it writes
         // object files.  This confuses the target_directory() algorithm.
         // This patch ignores the SunCC internal directory. Jens Maurer
-        if ( (*itr).filename() == "SunWS_cache" ) continue;
+        if ( (*itr).path().string() == "SunWS_cache" ) continue;
         // SGI does something similar for template instantiations. Jens Maurer
-        if(  (*itr).filename() == "ii_files" ) continue; 
+        if(  (*itr).path().string() == "ii_files" ) continue; 
 
         if ( child.empty() ) child = *itr;
         else
         {
           std::cout << "Warning: only first of two target possibilities will be reported for: \n "
-            << root.string() << ": " << child.filename()
-            << " and " << (*itr).filename() << "\n";
+            << root.string() << ": " << child.string()
+            << " and " << (*itr).path().string() << "\n";
         }
       }
     }
@@ -365,7 +368,7 @@ const fs::path find_bin_path(const string& relative)
       std::cerr << "warning: could not find build results for '" 
                 << relative << "'.\n";
       std::cerr << "warning: tried directory " 
-                << bin_path.native_directory_string() << "\n";
+                << bin_path.parent_path().string() << "\n";
       bin_path = "";
     }
   }
@@ -738,11 +741,11 @@ const fs::path find_bin_path(const string& relative)
     for ( fs::directory_iterator itr( bin_dir ); itr != end_itr; ++itr )
     {
       if ( fs::is_directory( *itr )
-        && itr->string().find( ".test" ) == (itr->string().size()-5) )
+        && itr->path().string().find( ".test" ) == (itr->path().string().size()-5) )
       {
         results.push_back( std::string() ); 
         do_row( *itr,
-                itr->filename().substr( 0, itr->filename().size()-5 ),
+                itr->path().string().substr( 0, itr->path().string().size()-5 ),
                 results[results.size()-1] );
       }
     }
@@ -758,15 +761,15 @@ const fs::path find_bin_path(const string& relative)
     for (; compiler_itr != end_itr; ++compiler_itr )
     {
       if ( fs::is_directory( *compiler_itr )  // check just to be sure
-        && compiler_itr->filename() != "test" ) // avoid strange directory (Jamfile bug?)
+        && compiler_itr->path().string() != "test" ) // avoid strange directory (Jamfile bug?)
       {
         if ( specific_compiler.size() != 0
-          && specific_compiler != compiler_itr->filename() ) continue;
-        toolsets.push_back( compiler_itr->filename() );
-        string desc( compiler_desc( compiler_itr->filename() ) );
-        string vers( version_desc( compiler_itr->filename() ) );
+          && specific_compiler != compiler_itr->path().string() ) continue;
+        toolsets.push_back( compiler_itr->path().string() );
+        string desc( compiler_desc( compiler_itr->path().string() ) );
+        string vers( version_desc( compiler_itr->path().string() ) );
         report << "<td>"
-             << (desc.size() ? desc : compiler_itr->filename())
+             << (desc.size() ? desc : compiler_itr->path().string())
              << (vers.size() ? (string( "<br>" ) + vers ) : string( "" ))
              << "</td>\n";
         error_count.push_back( 0 );
@@ -880,7 +883,7 @@ const fs::path find_bin_path(const string& relative)
       fs::recursive_directory_iterator ritr( bin_path );
       fs::recursive_directory_iterator end_ritr;
       while ( ritr != end_ritr 
-        && ((ritr->string().find( ".test" ) != (ritr->string().size()-5))
+        && ((ritr->path().string().find( ".test" ) != (ritr->path().string().size()-5))
         || !fs::is_directory( *ritr )))
         ++ritr; // bypass chaff
       if ( ritr != end_ritr )
@@ -892,7 +895,7 @@ const fs::path find_bin_path(const string& relative)
     {
       fs::directory_iterator itr( bin_path );
       while ( itr != end_itr 
-        && ((itr->string().find( ".test" ) != (itr->string().size()-5))
+        && ((itr->path().string().find( ".test" ) != (itr->path().string().size()-5))
         || !fs::is_directory( *itr )))
         ++itr; // bypass chaff
       if ( itr != end_itr )
@@ -937,19 +940,19 @@ int cpp_main( int argc, char * argv[] ) // note name!
     if ( argc > 2 && std::strcmp( argv[1], "--compiler" ) == 0 )
       { specific_compiler = argv[2]; --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--locate-root" ) == 0 )
-      { locate_root = fs::path( argv[2], fs::native ); --argc; ++argv; }
+      { locate_root = fs::path( argv[2] ); --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--comment" ) == 0 )
-      { comment_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+      { comment_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--notes" ) == 0 )
-      { notes_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+      { notes_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--notes-map" ) == 0 )
-      { notes_map_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+      { notes_map_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( std::strcmp( argv[1], "--ignore-pass" ) == 0 ) ignore_pass = true;
     else if ( std::strcmp( argv[1], "--no-warn" ) == 0 ) no_warn = true;
     else if ( std::strcmp( argv[1], "--v1" ) == 0 ) boost_build_v2 = false;
     else if ( std::strcmp( argv[1], "--v2" ) == 0 ) boost_build_v2 = true;
     else if ( argc > 2 && std::strcmp( argv[1], "--jamfile" ) == 0)
-      { jamfile_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+      { jamfile_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( std::strcmp( argv[1], "--compile-time" ) == 0 ) compile_time = true;
     else if ( std::strcmp( argv[1], "--run-time" ) == 0 ) run_time = true;
     else { std::cerr << "Unknown option: " << argv[1] << "\n"; argc = 1; }
@@ -990,7 +993,7 @@ int cpp_main( int argc, char * argv[] ) // note name!
     return 1;
   }
 
-  boost_root = fs::path( argv[1], fs::native );
+  boost_root = fs::path( argv[1] );
   if ( locate_root.empty() ) locate_root = boost_root;
   
   if (jamfile_path.empty())
@@ -998,15 +1001,15 @@ int cpp_main( int argc, char * argv[] ) // note name!
       jamfile_path = "Jamfile.v2";
     else
       jamfile_path = "Jamfile";
-  jamfile_path = fs::complete( jamfile_path, fs::initial_path() );
+  jamfile_path = fs::system_complete( jamfile_path );
   jamfile.open( jamfile_path );
   if ( !jamfile )
   {
-    std::cerr << "Could not open Jamfile: " << jamfile_path.native_file_string() << std::endl;
+    std::cerr << "Could not open Jamfile: " << jamfile_path.string() << std::endl;
     return 1;
   }
 
-  report.open( fs::path( argv[2], fs::native ) );
+  report.open( fs::path( argv[2] ) );
   if ( !report )
   {
     std::cerr << "Could not open report output file: " << argv[2] << std::endl;
@@ -1015,8 +1018,8 @@ int cpp_main( int argc, char * argv[] ) // note name!
 
   if ( argc == 4 )
   {
-    fs::path links_path( argv[3], fs::native );
-    links_name = links_path.filename();
+    fs::path links_path( argv[3] );
+    links_name = links_path.string();
     links_file.open( links_path );
     if ( !links_file )
     {

+ 34 - 30
tools/regression/src/library_status.cpp

@@ -1,9 +1,10 @@
-//  Generate Compiler Status HTML from jam regression test output  -----------//
+//  Generate Library Status HTML from jam regression test output  -----------//
 
-//  Copyright Beman Dawes 2002.  Distributed under the Boost
-//  Software License, Version 1.0. (See accompanying file
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//  Copyright Bryce Lelbach 2011 
+//  Copyright Beman Dawes 2002-2011.
 
+//  Distributed under the Boost Software License, Version 1.0. (See accompanying
+//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //  See http://www.boost.org/tools/regression/ for documentation.
 
 //Note: This version of the original program builds a large table
@@ -130,7 +131,7 @@ namespace
             if(fs::is_directory(*itr)){
                 std::pair<col_node::subcolumns_t::iterator, bool> result 
                     = node.m_subcolumns.insert(
-                        std::make_pair(itr->filename(), col_node())
+                        std::make_pair(itr->path().native(), col_node())
                     );
                 build_node_tree(*itr, result.first->second);
             }
@@ -629,7 +630,7 @@ namespace
             if(! fs::is_directory(*itr))
                 continue;
             
-            string test_name = itr->filename();
+            string test_name = itr->path().native();
             // if the file name contains ".test"
             string::size_type s = test_name.find( ".test" );
             if(string::npos != s)
@@ -711,12 +712,12 @@ namespace
         }
     }
 
-    fs::path find_lib_test_dir(){
+    fs::path find_lib_test_dir(fs::path const& initial_path){
         // walk up from the path were we started until we find
         // bin or bin.v2
 
-        fs::path::const_iterator leaf_itr = fs::initial_path().end();
-        fs::path test_lib_dir = fs::initial_path();
+        fs::path::const_iterator it = initial_path.end(), end = initial_path.end();
+        fs::path test_lib_dir = initial_path;
         for(;;){
             if(fs::is_directory( test_lib_dir / "bin.v2")){
                 test_lib_dir /= "bin.v2";
@@ -730,16 +731,17 @@ namespace
             }
             if(test_lib_dir.empty())
                 throw std::string("binary path not found");
-            if(*leaf_itr != "libs")
-                --leaf_itr;
+            if(*it != "libs")
+                --it;
             test_lib_dir.remove_filename();
         }
 
-        if(leaf_itr == fs::initial_path().end())
+        if(it == end)
             throw std::string("must be run from within a library directory");
 
-        while(leaf_itr != fs::initial_path().end()){
-            test_lib_dir /= *leaf_itr++;    // append "libs"
+
+        for(;it != end; ++it){ 
+            test_lib_dir /= *it;    // append "libs"
         }
         return test_lib_dir;
     }
@@ -756,7 +758,7 @@ namespace
         }
         string library_name;
         for(;;){
-            library_name.append(*++e_itr);
+            library_name.append((*++e_itr).native());
             if(1 == --count)
                 break;
             library_name.append("/");
@@ -764,8 +766,8 @@ namespace
         return library_name;
     }
 
-    fs::path find_boost_root(){
-        fs::path boost_root = fs::initial_path();
+    fs::path find_boost_root(fs::path initial_path){
+        fs::path boost_root = initial_path;
         for(;;){
             if(fs::is_directory( boost_root / "boost")){
                 break;
@@ -779,11 +781,11 @@ namespace
     }
 
     //  do_table  ----------------------------------------------------------------//
-    void do_table(const string & lib_name)
+    void do_table(fs::path const& initial_path, const string & lib_name)
     {
         col_node root_node;
 
-        fs::path lib_test_dir = find_lib_test_dir();
+        fs::path lib_test_dir = find_lib_test_dir(initial_path);
 
         for ( fs::directory_iterator itr(lib_test_dir); itr != end_itr; ++itr )
         {
@@ -825,21 +827,23 @@ namespace
 
 int cpp_main( int argc, char * argv[] ) // note name!
 {
+    fs::path initial_path = fs::initial_path();
+
     fs::path comment_path;
     while ( argc > 1 && *argv[1] == '-' )
     {
         if ( argc > 2 && std::strcmp( argv[1], "--compiler" ) == 0 )
         { specific_compiler = argv[2]; --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--locate-root" ) == 0 )
-        { locate_root = fs::path( argv[2], fs::native ); --argc; ++argv; }
+        { locate_root = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--boost-root" ) == 0 )
-        { boost_root = fs::path( argv[2], fs::native ); --argc; ++argv; }
+        { boost_root = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--comment" ) == 0 )
-        { comment_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+        { comment_path = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--notes" ) == 0 )
-        { notes_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+        { notes_path = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--notes-map" ) == 0 )
-        { notes_map_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+        { notes_map_path = fs::path( argv[2] ); --argc; ++argv; }
         else if ( std::strcmp( argv[1], "--ignore-pass" ) == 0 ) ignore_pass = true;
         else if ( std::strcmp( argv[1], "--no-warn" ) == 0 ) no_warn = true;
         else if ( std::strcmp( argv[1], "--v2" ) == 0 )
@@ -878,11 +882,11 @@ int cpp_main( int argc, char * argv[] ) // note name!
     }
 
     if(boost_root.empty())
-        boost_root = find_boost_root();
+        boost_root = find_boost_root(initial_path);
     if ( locate_root.empty() ) 
         locate_root = boost_root;
 
-    report.open( fs::path( argv[1], fs::native ) );
+    report.open( fs::path( argv[1] ) );
     if ( !report )
     {
         std::cerr << "Could not open report output file: " << argv[2] << std::endl;
@@ -891,8 +895,8 @@ int cpp_main( int argc, char * argv[] ) // note name!
 
     if ( argc == 3 )
     {
-        fs::path links_path( argv[2], fs::native );
-        links_name = links_path.filename();
+        fs::path links_path( argv[2] );
+        links_name = links_path.native();
         links_file.open( links_path );
         if ( !links_file )
         {
@@ -904,7 +908,7 @@ int cpp_main( int argc, char * argv[] ) // note name!
 
     build_notes_bookmarks();
 
-    const string library_name = find_lib_name(fs::initial_path());
+    const string library_name = find_lib_name(initial_path);
 
     char run_date[128];
     std::time_t tod;
@@ -968,7 +972,7 @@ int cpp_main( int argc, char * argv[] ) // note name!
             ;
     }
 
-    do_table(library_name);
+    do_table(initial_path, library_name);
 
     if ( load_notes_html() ) report << notes_html << "\n";
 

+ 5 - 3
tools/regression/src/process_jam_log.cpp

@@ -6,6 +6,8 @@
 
 //  See http://www.boost.org/tools/regression for documentation.
 
+#define BOOST_FILESYSTEM_VERSION 3
+
 #include <boost/config/warning_disable.hpp>
 
 #include "detail/tiny_xml.hpp"
@@ -609,7 +611,7 @@ int main( int argc, char ** argv )
         std::cout << "Abort: option --boost-root requires a directory argument\n";
         std::exit(1);
       }
-      boost_root = fs::path( argv[1], fs::native );
+      boost_root = fs::path( argv[1] );
       if ( !boost_root.is_complete() )
         boost_root = ( fs::initial_path() / boost_root ).normalize();
       
@@ -623,7 +625,7 @@ int main( int argc, char ** argv )
         std::cout << "Abort: option --locate-root requires a directory argument\n";
         std::exit(1);
       }
-      locate_root = fs::path( argv[1], fs::native );
+      locate_root = fs::path( argv[1] );
       --argc; ++argv;
     } 
     else if ( std::strcmp( argv[1], "--input-file" ) == 0 )
@@ -644,7 +646,7 @@ int main( int argc, char ** argv )
     }
     else
     {
-      locate_root = fs::path( argv[1], fs::native );
+      locate_root = fs::path( argv[1] );
       --argc; ++argv;
     }
   }

+ 1 - 2
tools/regression/test/Jamfile.v2

@@ -24,5 +24,4 @@ test-suite testlib :
     [ run run_pass.cpp ]
     [ run run_warn-note.cpp ]
     [ run run_warn.cpp ]
-
-    ;
+    ;

粤ICP备19079148号