From f133f0c8096e6590a3cccdd58b4f78800b7f17b9 Mon Sep 17 00:00:00 2001
From: Jimmy Petersson <jimmy.petersson@gmail.com>
Date: Fri, 13 Jan 2017 17:30:17 +0100
Subject: [PATCH] Use strtobool to parse boolean env variables

---
 klaus/contrib/app_args.py | 11 +++++++----
 tests/test_contrib.py     | 18 ++++++++++++++----
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/klaus/contrib/app_args.py b/klaus/contrib/app_args.py
index c428976..dc9a913 100644
--- a/klaus/contrib/app_args.py
+++ b/klaus/contrib/app_args.py
@@ -1,4 +1,5 @@
 import os
+from distutils.util import strtobool
 
 
 def get_args_from_env():
@@ -11,10 +12,12 @@ def get_args_from_env():
     )
     kwargs = dict(
         htdigest_file=os.environ.get('KLAUS_HTDIGEST_FILE'),
-        use_smarthttp=bool(os.environ.get('KLAUS_USE_SMARTHTTP')),
-        require_browser_auth=bool(os.environ.get('KLAUS_REQUIRE_BROWSER_AUTH')),
-        disable_push=bool(os.environ.get('KLAUS_DISABLE_PUSH')),
-        unauthenticated_push=bool(os.environ.get('KLAUS_UNAUTHENTICATED_PUSH')),
+        use_smarthttp=strtobool(os.environ.get('KLAUS_USE_SMARTHTTP', '0')),
+        require_browser_auth=strtobool(
+            os.environ.get('KLAUS_REQUIRE_BROWSER_AUTH', '0')),
+        disable_push=strtobool(os.environ.get('KLAUS_DISABLE_PUSH', '0')),
+        unauthenticated_push=strtobool(
+            os.environ.get('KLAUS_UNAUTHENTICATED_PUSH', '0')),
         ctags_policy=os.environ.get('KLAUS_CTAGS_POLICY', 'none')
     )
     return args, kwargs
diff --git a/tests/test_contrib.py b/tests/test_contrib.py
index 35b6cb1..9f2a558 100644
--- a/tests/test_contrib.py
+++ b/tests/test_contrib.py
@@ -49,8 +49,8 @@ def test_app_args_from_env():
             'KLAUS_HTDIGEST_FILE': HTDIGEST_FILE,
             'KLAUS_USE_SMARTHTTP': 'yes',
             'KLAUS_REQUIRE_BROWSER_AUTH': '1',
-            'KLAUS_DISABLE_PUSH': 'false',  # TODO?
-            'KLAUS_UNAUTHENTICATED_PUSH': '0',  # TODO?
+            'KLAUS_DISABLE_PUSH': 'false',
+            'KLAUS_UNAUTHENTICATED_PUSH': '0',
             'KLAUS_CTAGS_POLICY': 'ALL'
         },
         ([TEST_REPO], TEST_SITE_NAME),
@@ -58,11 +58,21 @@ def test_app_args_from_env():
             htdigest_file=HTDIGEST_FILE,
             use_smarthttp=True,
             require_browser_auth=True,
-            disable_push=True,
-            unauthenticated_push=True,
+            disable_push=False,
+            unauthenticated_push=False,
             ctags_policy='ALL')
     )
 
+    with pytest.raises(ValueError):
+        check_env(
+            {
+                'KLAUS_REPOS': TEST_REPO,
+                'KLAUS_SITE_NAME': TEST_SITE_NAME,
+                'KLAUS_HTDIGEST_FILE': HTDIGEST_FILE,
+                'KLAUS_USE_SMARTHTTP': 'unsupported',
+            }, (), {}
+        )
+
 
 def test_wsgi():
     clear_env()
-- 
GitLab