commit 878f90cc3aba39fe86f762ef15bac9f848938f4b
Author: Damian Johnson <[email protected]>
Date:   Sun Mar 27 12:33:02 2016 -0700

    Don't provide man's '--encoding' argument on OSX
    
    Turns out the argument isn't available on OSX. Caught by Sebastian...
    
      https://trac.torproject.org/projects/tor/ticket/18660
---
 stem/cached_tor_manual.cfg |  6 +++---
 stem/manual.py             | 10 ++++++++--
 test/integ/manual.py       |  3 ++-
 test/unit/manual.py        |  1 +
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/stem/cached_tor_manual.cfg b/stem/cached_tor_manual.cfg
index 835024c..fade04b 100644
--- a/stem/cached_tor_manual.cfg
+++ b/stem/cached_tor_manual.cfg
@@ -6,8 +6,8 @@ description
 |Basically, Tor provides a distributed network of servers or relays ("onion 
routers"). Users bounce their TCP streams -- web traffic, ftp, ssh, etc. -- 
around the network, and recipients, observers, and even the relays themselves 
have difficulty tracking the source of the stream.
 |
 |By default, tor will only act as a client only. To help the network by 
providing bandwidth as a relay, change the ORPort configuration option -- see 
below. Please also consult the documentation on the Tor Project's website.
-man_commit 424af93ded7e1d9d98733ed17b2b6fee143262b9
-stem_commit 7f4fcf8f6da3941e84376ee67747135e7f34462b
+man_commit 94cb8792e8c28e75bc71434fc557ddefa5c03083
+stem_commit 27a654e2e0495c7ac701d792e7db7ed47d4e9753
 commandline_options -f FILE => Specify a new configuration file to contain 
further Tor configuration options OR pass - to make Tor read its configuration 
from standard input. (Default: @CONFDIR@/torrc, or $HOME/.torrc if that file is 
not found)
 commandline_options --ignore-missing-torrc => Specifies that Tor should treat 
a missing torrc file as though it were empty. Ordinarily, Tor does this for 
missing default torrc files, but not for those specified on the command line.
 commandline_options --list-fingerprint => Generate your keys and output your 
nickname and fingerprint.
@@ -110,7 +110,7 @@ config_options.ExcludeNodes.name ExcludeNodes
 config_options.ExcludeNodes.usage node,node,...
 config_options.ExcludeNodes.summary Relays or locales never to be used in 
circuits
 config_options.ExcludeNodes.description 
-|A list of identity fingerprints, country codes, and address patterns of nodes 
to avoid when building a circuit. Country codes are 2-letter ISA3166 codes, and 
must be wrapped in braces; fingerprints may be preceded by a dollar sign. 
(Example: ExcludeNodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, {cc}, 
255.254.0.0/8)
+|A list of identity fingerprints, country codes, and address patterns of nodes 
to avoid when building a circuit. Country codes are 2-letter ISO3166 codes, and 
must be wrapped in braces; fingerprints may be preceded by a dollar sign. 
(Example: ExcludeNodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, {cc}, 
255.254.0.0/8)
 |
 |By default, this option is treated as a preference that Tor is allowed to 
override in order to keep working. For example, if you try to connect to a 
hidden service, but you have excluded all of the hidden service's introduction 
points, Tor will connect to one of them anyway. If you do not want this 
behavior, set the StrictNodes option (documented below).
 |
diff --git a/stem/manual.py b/stem/manual.py
index 31f9ed1..be7b224 100644
--- a/stem/manual.py
+++ b/stem/manual.py
@@ -360,6 +360,10 @@ class Manual(object):
     """
     Reads and parses a given man page.
 
+    On OSX the man command doesn't have an '--encoding' argument so its results
+    may not quite match other platforms. For instance, it normalizes long
+    dashes into '--'.
+
     :param str man_path: path argument for 'man', for example you might want
       '/path/to/tor/doc/tor.1' to read from tor's git repository
 
@@ -368,10 +372,12 @@ class Manual(object):
     :raises: **IOError** if unable to retrieve the manual
     """
 
+    man_cmd = 'man %s -P cat %s' % ('' if stem.util.system.is_mac() else 
'--encoding=ascii', man_path)
+
     try:
-      man_output = stem.util.system.call('man --encoding=ascii -P cat %s' % 
man_path, env = {'MANWIDTH': '10000000'})
+      man_output = stem.util.system.call(man_cmd, env = {'MANWIDTH': 
'10000000'})
     except OSError as exc:
-      raise IOError("Unable to run 'man --encoding=ascii -P cat %s': %s" % 
(man_path, exc))
+      raise IOError("Unable to run '%s': %s" % (man_cmd, exc))
 
     categories, config_options = _get_categories(man_output), OrderedDict()
 
diff --git a/test/integ/manual.py b/test/integ/manual.py
index d20c407..dbef86a 100644
--- a/test/integ/manual.py
+++ b/test/integ/manual.py
@@ -107,7 +107,8 @@ class TestManual(unittest.TestCase):
           stem.manual.download_man_page(file_handle = tmp)
           self.man_path = tmp.name
 
-        self.man_content = stem.util.system.call('man --encoding=ascii -P cat 
%s' % self.man_path, env = {'MANWIDTH': '10000000'})
+        man_cmd = 'man %s -P cat %s' % ('' if stem.util.system.is_mac() else 
'--encoding=ascii', self.man_path)
+        self.man_content = stem.util.system.call(man_cmd, env = {'MANWIDTH': 
'10000000'})
       except Exception as exc:
         self.download_error = 'Unable to download the man page: %s' % exc
 
diff --git a/test/unit/manual.py b/test/unit/manual.py
index 99628b0..be0ee9c 100644
--- a/test/unit/manual.py
+++ b/test/unit/manual.py
@@ -268,6 +268,7 @@ class TestManual(unittest.TestCase):
     self.assertEqual(b'a2x output', output.getvalue())
     call_mock.assert_called_once_with('a2x -f manpage /no/such/path/tor.1.txt')
 
+  @patch('stem.util.system.is_mac', Mock(return_value = False))
   @patch('stem.util.system.call', Mock(side_effect = OSError('man 
--encoding=ascii -P cat tor returned exit status 16')))
   def test_from_man_when_manual_is_unavailable(self):
     try:

_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to