Bug 1256730 - Fail configure when API key files do not exist or are empty. r=chmanchester draft
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 09 Aug 2016 18:17:35 +0900
changeset 465823 dc1096ded5c148b25cfd4f25b0fa67c1a033833e
parent 465822 edbe919e219b7f18cc5425dec6e48dfbe5723dd4
child 465824 e2b8a96308082792109c62075d821b8a38923058
push id42734
push userbmo:mh+mozilla@glandium.org
push dateTue, 24 Jan 2017 23:38:44 +0000
reviewerschmanchester
bugs1256730
milestone54.0a1
Bug 1256730 - Fail configure when API key files do not exist or are empty. r=chmanchester
build/moz.configure/keyfiles.configure
python/mozbuild/mozbuild/test/configure/test_checks_configure.py
--- a/build/moz.configure/keyfiles.configure
+++ b/build/moz.configure/keyfiles.configure
@@ -20,20 +20,19 @@ def keyfile(desc, help=None, callback=la
     @imports(_from='__builtin__', _import='IOError')
     def keyfile(value):
         if value:
             try:
                 with open(value[0]) as fh:
                     result = fh.read().strip()
                     if result:
                         return callback(result)
-            except FatalCheckError:
-                raise
-            except IOError:
-                pass
+                    raise FatalCheckError("'%s' is empty." % value[0])
+            except IOError as e:
+                raise FatalCheckError("'%s': %s." % (value[0], e.strerror))
         return no_key
 
     return keyfile
 
 
 @template
 def simple_keyfile(desc):
     value = keyfile(desc)
--- a/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
+++ b/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
@@ -835,23 +835,34 @@ class TestChecksConfigure(unittest.TestC
         self.assertEqual(config, {
             'MOZ_MOZILLA_API_KEY': 'no-mozilla-api-key',
         })
 
         config, output, status = self.get_result(
             "simple_keyfile('Mozilla API')",
             args=['--with-mozilla-api-keyfile=/foo/bar/does/not/exist'],
             includes=includes)
-        self.assertEqual(status, 0)
+        self.assertEqual(status, 1)
         self.assertEqual(output, textwrap.dedent('''\
             checking for the Mozilla API key... no
+            ERROR: '/foo/bar/does/not/exist': No such file or directory.
         '''))
-        self.assertEqual(config, {
-            'MOZ_MOZILLA_API_KEY': 'no-mozilla-api-key',
-        })
+        self.assertEqual(config, {})
+
+        with MockedOpen({'key': ''}):
+            config, output, status = self.get_result(
+                "simple_keyfile('Mozilla API')",
+                args=['--with-mozilla-api-keyfile=key'],
+                includes=includes)
+            self.assertEqual(status, 1)
+            self.assertEqual(output, textwrap.dedent('''\
+                checking for the Mozilla API key... no
+                ERROR: 'key' is empty.
+            '''))
+            self.assertEqual(config, {})
 
         with MockedOpen({'key': 'fake-key\n'}):
             config, output, status = self.get_result(
                 "simple_keyfile('Mozilla API')",
                 args=['--with-mozilla-api-keyfile=key'],
                 includes=includes)
             self.assertEqual(status, 0)
             self.assertEqual(output, textwrap.dedent('''\
@@ -874,24 +885,34 @@ class TestChecksConfigure(unittest.TestC
             'MOZ_BING_API_CLIENTID': 'no-bing-api-clientid',
             'MOZ_BING_API_KEY': 'no-bing-api-key',
         })
 
         config, output, status = self.get_result(
             "id_and_secret_keyfile('Bing API')",
             args=['--with-bing-api-keyfile=/foo/bar/does/not/exist'],
             includes=includes)
-        self.assertEqual(status, 0)
+        self.assertEqual(status, 1)
         self.assertEqual(output, textwrap.dedent('''\
             checking for the Bing API key... no
+            ERROR: '/foo/bar/does/not/exist': No such file or directory.
         '''))
-        self.assertEqual(config, {
-            'MOZ_BING_API_CLIENTID': 'no-bing-api-clientid',
-            'MOZ_BING_API_KEY': 'no-bing-api-key',
-        })
+        self.assertEqual(config, {})
+
+        with MockedOpen({'key': ''}):
+            config, output, status = self.get_result(
+                "id_and_secret_keyfile('Bing API')",
+                args=['--with-bing-api-keyfile=key'],
+                includes=includes)
+            self.assertEqual(status, 1)
+            self.assertEqual(output, textwrap.dedent('''\
+                checking for the Bing API key... no
+                ERROR: 'key' is empty.
+            '''))
+            self.assertEqual(config, {})
 
         with MockedOpen({'key': 'fake-id fake-key\n'}):
             config, output, status = self.get_result(
                 "id_and_secret_keyfile('Bing API')",
                 args=['--with-bing-api-keyfile=key'],
                 includes=includes)
             self.assertEqual(status, 0)
             self.assertEqual(output, textwrap.dedent('''\