sublime-build: Provide specific prompts for missing GOPATH/GOROOT

The new build of sublime-config raises exceptions if the GOPATH or
GOROOT can not be found on disk. This update handles these new
exceptions and presents them to the user.

Change-Id: I4a7589fa9fae8cdf5d2d2025d4ad16026e78f579
Reviewed-on: https://go-review.googlesource.com/16571
Reviewed-by: Jason Buberel <jbuberel@google.com>
diff --git a/dev/tests.py b/dev/tests.py
index 87e4b94..2316d05 100644
--- a/dev/tests.py
+++ b/dev/tests.py
@@ -442,6 +442,27 @@
             self.assertTrue(confirm_user('Were you prompted that GOPATH was not set?'))
             self.assertTrue(confirm_user('When you pressed "Open Documentation", was it opened in your browser?'))
 
+    def test_build_missing_gopath(self):
+        ensure_not_ui_thread()
+
+        shell, env = shellenv.get_env()
+        env['GOPATH'] += '12345678'
+        with GolangBuildMock(shell=shell, env=env):
+
+            file_path = path.join(TEST_GOPATH, 'src', 'good', 'rune_len.go')
+
+            def _run_build(view, result_queue):
+                notify_user('Press the "Open Documentation" button when prompted about GOPATH not being found')
+
+                view.window().run_command('golang_build')
+
+            custom_view_settings = VIEW_SETTINGS.copy()
+            del custom_view_settings['GOPATH']
+            open_file(file_path, custom_view_settings, _run_build)
+            time.sleep(0.5)
+            self.assertTrue(confirm_user('Were you prompted that GOPATH was not found?'))
+            self.assertTrue(confirm_user('When you pressed "Open Documentation", was it opened in your browser?'))
+
 
 def ensure_not_ui_thread():
     """
diff --git a/golang_build.py b/golang_build.py
index c76fcae..ecb0781 100644
--- a/golang_build.py
+++ b/golang_build.py
@@ -551,6 +551,23 @@
                 {'url': 'https://github.com/golang/sublime-build/blob/master/docs/configuration.md'}
             )
 
+    except (golangconfig.GoRootNotFoundError, golangconfig.GoPathNotFoundError) as e:
+        error_message = '''
+            Golang Build
+
+            %s.
+
+            Would you like to view the configuration documentation?
+        '''
+
+        prompt = error_message % str_cls(e)
+
+        if sublime.ok_cancel_dialog(_format_message(prompt), 'Open Documentation'):
+            window.run_command(
+                'open_url',
+                {'url': 'https://github.com/golang/sublime-build/blob/master/docs/configuration.md'}
+            )
+
     return (None, None)