From 2f4c9b59ce70b6d2f1281b7c3496110fd0258ff9 Mon Sep 17 00:00:00 2001
From: Jeremy Fee <jmfee@usgs.gov>
Date: Tue, 6 Nov 2018 13:36:39 -0700
Subject: [PATCH] Update WebService to use configurable error stream, to reduce
 test noise

---
 geomagio/WebService.py  | 8 +++++---
 test/WebService_test.py | 2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/geomagio/WebService.py b/geomagio/WebService.py
index e304ade0..bb567864 100644
--- a/geomagio/WebService.py
+++ b/geomagio/WebService.py
@@ -77,7 +77,8 @@ def _get_param(params, key, required=False):
 
 class WebService(object):
     def __init__(self, factory=None, version=None, metadata=None,
-            usage_documentation=None):
+            usage_documentation=None, error_stream=sys.stderr):
+        self.error_stream = error_stream
         self.factory = factory or EdgeFactory()
         self.metadata = metadata or ObservatoryMetadata().metadata
         self.version = version
@@ -110,8 +111,9 @@ class WebService(object):
             if isinstance(timeseries_string, str):
                 timeseries_string = timeseries_string.encode('utf8')
         except Exception as e:
-            print("Error processing request: %s" % str(e),
-                    file=sys.stderr)
+            if self.error_stream:
+                print("Error processing request: %s" % str(e),
+                        file=self.error_stream)
             message = "Server error."
             error_body = self.error(500, message, environ, start_response)
             return [error_body]
diff --git a/test/WebService_test.py b/test/WebService_test.py
index b57167bf..7c305270 100644
--- a/test/WebService_test.py
+++ b/test/WebService_test.py
@@ -138,7 +138,7 @@ def test_requests():
     assert_equals(response.status, '200 OK')
     assert_equals(response.content_type, 'text/plain')
     # Test internal server error (use fake factory)
-    app = TestApp(WebService(ErrorFactory()))
+    app = TestApp(WebService(ErrorFactory(), error_stream=None))
     response = app.get('/?id=BOU', expect_errors=True)
     assert_equals(response.status_int, 500)
     assert_equals(response.status, '500 Internal Server Error')
-- 
GitLab