You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2013/06/12 19:21:02 UTC

svn commit: r1492295 - /subversion/trunk/subversion/bindings/swig/ruby/test/util.rb

Author: pburba
Date: Wed Jun 12 17:21:02 2013
New Revision: 1492295

URL: http://svn.apache.org/r1492295
Log:
Follow-up to r1480412: Unbreak the Ruby binding tests with out-of-tree
builds.

See http://svn.haxx.se/dev/archive-2013-06/0134.shtml

* subversion/bindings/swig/ruby/test/util.rb
  (util.rb): Adjust requirement of ../svn/util.rb so it works with Ruby 1.8
   or 1.9 and when the CWD is not the parent of the required file.

Modified:
    subversion/trunk/subversion/bindings/swig/ruby/test/util.rb

Modified: subversion/trunk/subversion/bindings/swig/ruby/test/util.rb
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/ruby/test/util.rb?rev=1492295&r1=1492294&r2=1492295&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/ruby/test/util.rb (original)
+++ subversion/trunk/subversion/bindings/swig/ruby/test/util.rb Wed Jun 12 17:21:02 2013
@@ -19,7 +19,41 @@
 
 require "fileutils"
 require "pathname"
-require "./svn/util"
+
+# Tale of a hack...
+#
+# Here we are, %SVN-WC-ROOT%/subversion/bindings/swig/ruby/test/util.rb,
+# trying to require %SVN-WC-ROOT%/subversion/bindings/swig/ruby/svn/util.rb,
+# all the while supporting both Ruby 1.8 and 1.9.  Simply using this,
+#
+#   require "svn/util"
+#
+# works for Ruby 1.8 if the CWD is subversion/bindings/swig/ruby
+# when we are running the tests, e.g.:
+#
+#   %SVN-WC-ROOT%/subversion/bindings/swig/ruby>ruby test\run-test.rb
+#
+# This is because the CWD is included in the load path when Ruby 1.8
+# searches for required files.  But this doesn't work for Ruby 1.9,
+# which doesn't include the CWD this way, so instead we could use this:
+#
+#   require "./svn/util"
+#
+# But that only works if ./svn/util is relative to the CWD (again if the
+# CWD is %SVN-WC-ROOT%/subversion/bindings/swig/ruby).  However, if we run
+# the tests from a different CWD and specify
+# %SVN-WC-ROOT%/subversion/bindings/swig/ruby as an additional $LOAD_PATH
+# using the ruby -I option, then that fails on both 1.8 and 1.9 with a
+# LoadError.
+#
+# The usual solution in a case like this is to use require_relative,
+#
+#  require_relative "../svn/util"
+#
+# But that's only available in Ruby 1.9.  We could require the backports gem
+# but there is a simple workaround, just calculate the full path of util:
+require File.join(File.dirname(__FILE__), '../svn/util')
+
 require "tmpdir"
 
 require "my-assertions"