$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r69181 - in branches/quickbook-filenames/tools/quickbook: src test
From: dnljms_at_[hidden]
Date: 2011-02-22 15:47:27
Author: danieljames
Date: 2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
New Revision: 69181
URL: http://svn.boost.org/trac/boost/changeset/69181
Log:
Another testing flag to allow testing xinclude.
Not ideal, since not testing normal use. But at least it would have
caught the error fixed in [68308].
Text files modified: 
   branches/quickbook-filenames/tools/quickbook/src/actions.cpp            |     4 ++--                                    
   branches/quickbook-filenames/tools/quickbook/src/actions_class.cpp      |     8 ++++----                                
   branches/quickbook-filenames/tools/quickbook/src/actions_class.hpp      |     4 ++--                                    
   branches/quickbook-filenames/tools/quickbook/src/quickbook.cpp          |    29 ++++++++++++++++++++++-------           
   branches/quickbook-filenames/tools/quickbook/test/Jamfile.v2            |     2 +-                                      
   branches/quickbook-filenames/tools/quickbook/test/quickbook-testing.jam |     4 +++-                                    
   branches/quickbook-filenames/tools/quickbook/test/xinclude.gold         |     2 +-                                      
   7 files changed, 35 insertions(+), 18 deletions(-)
Modified: branches/quickbook-filenames/tools/quickbook/src/actions.cpp
==============================================================================
--- branches/quickbook-filenames/tools/quickbook/src/actions.cpp	(original)
+++ branches/quickbook-filenames/tools/quickbook/src/actions.cpp	2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
@@ -1515,8 +1515,8 @@
         {
             fs::path infile = fs::absolute(actions.filename).normalize();
             path = (infile.parent_path() / path).normalize();
-            fs::path outdir = fs::absolute(actions.outdir).normalize();
-            path = path_difference(outdir, path);
+            fs::path xinclude_base = fs::absolute(actions.xinclude_base).normalize();
+            path = path_difference(xinclude_base, path);
         }
         return path;
     }
Modified: branches/quickbook-filenames/tools/quickbook/src/actions_class.cpp
==============================================================================
--- branches/quickbook-filenames/tools/quickbook/src/actions_class.cpp	(original)
+++ branches/quickbook-filenames/tools/quickbook/src/actions_class.cpp	2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
@@ -20,7 +20,7 @@
 
 namespace quickbook
 {
-    actions::actions(fs::path const& filein_, fs::path const& outdir_, string_stream& out_)
+    actions::actions(fs::path const& filein_, fs::path const& xinclude_base_, string_stream& out_)
         : grammar_()
 
     // header info
@@ -45,7 +45,7 @@
 
     // state
         , filename(fs::absolute(filein_))
-        , outdir(outdir_)
+        , xinclude_base(xinclude_base_)
         , macro_change_depth(0)
         , macro()
         , section_level(0)
@@ -116,7 +116,7 @@
         state_stack.push(
             boost::make_tuple(
                 filename
-              , outdir
+              , xinclude_base
               , macro_change_depth
               , section_level
               , min_section_level
@@ -156,7 +156,7 @@
     
         boost::tie(
             filename
-          , outdir
+          , xinclude_base
           , macro_change_depth
           , section_level
           , min_section_level
Modified: branches/quickbook-filenames/tools/quickbook/src/actions_class.hpp
==============================================================================
--- branches/quickbook-filenames/tools/quickbook/src/actions_class.hpp	(original)
+++ branches/quickbook-filenames/tools/quickbook/src/actions_class.hpp	2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
@@ -23,7 +23,7 @@
 
     struct actions
     {
-        actions(fs::path const& filein_, fs::path const& outdir, string_stream& out_);
+        actions(fs::path const& filein_, fs::path const& xinclude_base, string_stream& out_);
 
     private:
         boost::scoped_ptr<quickbook_grammar> grammar_;
@@ -63,7 +63,7 @@
 
     // state
         fs::path                filename;
-        fs::path                outdir;
+        fs::path                xinclude_base;
         std::size_t             macro_change_depth;
         string_symbols          macro;
         int                     section_level;
Modified: branches/quickbook-filenames/tools/quickbook/src/quickbook.cpp
==============================================================================
--- branches/quickbook-filenames/tools/quickbook/src/quickbook.cpp	(original)
+++ branches/quickbook-filenames/tools/quickbook/src/quickbook.cpp	2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
@@ -109,9 +109,10 @@
     }
 
     static int
-    parse_document(fs::path const& filein_, fs::path const& outdir, string_stream& out, bool ignore_docinfo = false)
+    parse_document(fs::path const& filein_, fs::path const& xinclude_base,
+            string_stream& out, bool ignore_docinfo = false)
     {
-        actions actor(filein_, outdir, out);
+        actions actor(filein_, xinclude_base, out);
 
         set_macros(actor);
         bool r = parse_file(filein_, actor);
@@ -133,16 +134,14 @@
     parse_document(
         fs::path const& filein_
       , fs::path const& fileout_
+      , fs::path const& xinclude_base_
       , int indent
       , int linewidth
       , bool pretty_print)
     {
         int result = 0;
-        fs::path outdir = fileout_.parent_path();
-        if (outdir.empty())
-            outdir = ".";
         string_stream buffer;
-        result = parse_document(filein_, outdir, buffer);
+        result = parse_document(filein_, xinclude_base_, buffer);
 
         if (result == 0)
         {
@@ -220,6 +219,9 @@
             ("expect-errors",
                 "Succeed if the input file contains a correctly handled "
                 "error, fail otherwise.")
+            ("xinclude-base", PO_VALUE<input_string>(),
+                "Generate xincludes as if generating for this target "
+                "directory.")
         ;
 
         all.add(desc).add(hidden);
@@ -347,12 +349,25 @@
                 fileout = filein;
                 fileout.replace_extension(".xml");
             }
+            
+            fs::path xinclude_base;
+            if (vm.count("xinclude-base"))
+            {
+                xinclude_base = quickbook::detail::input_to_path(
+                    vm["xinclude-base"].as<input_string>());
+            }
+            else
+            {
+                xinclude_base = fileout.parent_path();
+                if (xinclude_base.empty())
+                    xinclude_base = ".";
+            }
 
             quickbook::detail::out() << "Generating Output File: "
                 << quickbook::detail::path_to_stream(fileout)
                 << std::endl;
 
-            int r = quickbook::parse_document(filein, fileout, indent, linewidth, pretty_print);
+            int r = quickbook::parse_document(filein, fileout, xinclude_base, indent, linewidth, pretty_print);
 
             if (expect_errors)
             {
Modified: branches/quickbook-filenames/tools/quickbook/test/Jamfile.v2
==============================================================================
--- branches/quickbook-filenames/tools/quickbook/test/Jamfile.v2	(original)
+++ branches/quickbook-filenames/tools/quickbook/test/Jamfile.v2	2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
@@ -36,7 +36,7 @@
     [ quickbook-test mismatched-brackets-1 ]
     [ quickbook-test mismatched-brackets-2 ]
     [ quickbook-error-test mismatched-brackets-3 ]
-    #[ quickbook-test xinclude ]
+    [ quickbook-test xinclude : : : <quickbook-xinclude-base>../src ]
     [ quickbook-test import ]
     [ quickbook-test include_1_5 ]
     [ quickbook-test include_1_6 ]
Modified: branches/quickbook-filenames/tools/quickbook/test/quickbook-testing.jam
==============================================================================
--- branches/quickbook-filenames/tools/quickbook/test/quickbook-testing.jam	(original)
+++ branches/quickbook-filenames/tools/quickbook/test/quickbook-testing.jam	2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
@@ -17,6 +17,7 @@
 
 feature.feature quickbook-testing.quickbook-command : : free dependency ;
 feature.feature <quickbook-test-define> : : free ;
+feature.feature <quickbook-xinclude-base> : : free ;
 
 type.register QUICKBOOK_INPUT : quickbook ;
 type.register QUICKBOOK_OUTPUT ;
@@ -124,6 +125,7 @@
 ################################################################################
 toolset.flags quickbook-testing.process-quickbook quickbook-command <quickbook-testing.quickbook-command> ;
 toolset.flags quickbook-testing.process-quickbook QB-DEFINES        <quickbook-test-define> ;
+toolset.flags quickbook-testing.process-quickbook XINCLUDE          <quickbook-xinclude-base> ;
 
 rule process-quickbook ( target : source : properties * )
 {
@@ -132,6 +134,6 @@
 
 actions process-quickbook bind quickbook-command
 {
-    $(quickbook-command) $(>) --output-file=$(<) --debug -D"$(QB-DEFINES)" $(OPTIONS)
+    $(quickbook-command) $(>) --output-file=$(<) --debug -D"$(QB-DEFINES)" --xinclude-base=$(XINCLUDE)
 }
 
Modified: branches/quickbook-filenames/tools/quickbook/test/xinclude.gold
==============================================================================
--- branches/quickbook-filenames/tools/quickbook/test/xinclude.gold	(original)
+++ branches/quickbook-filenames/tools/quickbook/test/xinclude.gold	2011-02-22 15:47:15 EST (Tue, 22 Feb 2011)
@@ -2,5 +2,5 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="include" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Include</title>
-  <xi:include href="../../../../../../../../../tools/quickbook/test/stub.xml" />
+  <xi:include href="../test/stub.xml" />
 </article>