goldctl - Fail sooner and with more detail if the shared config file doesn't exist.

Change-Id: I6f7d330479a0ba7143d549415d4ee535768bb286
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/229281
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
diff --git a/gold-client/go/goldclient/goldclient.go b/gold-client/go/goldclient/goldclient.go
index 3b18405..618b643 100644
--- a/gold-client/go/goldclient/goldclient.go
+++ b/gold-client/go/goldclient/goldclient.go
@@ -224,7 +224,7 @@
 	var err error
 	ret.resultState, err = loadStateFromJson(ret.getResultStatePath())
 	if err != nil {
-		return nil, skerr.Fmt("Could not load disk from state: %s", err)
+		return nil, skerr.Fmt("Could not load state from disk: %s", err)
 	}
 	if err = ret.setHttpClient(); err != nil {
 		return nil, skerr.Fmt("Error setting http client: %s", err)
@@ -527,7 +527,7 @@
 		return nil, err
 	}
 	if !exists {
-		return nil, nil
+		return nil, skerr.Fmt("The state file %q doesn't exist.", fileName)
 	}
 	return ret, nil
 }
diff --git a/gold-client/go/goldclient/goldclient_test.go b/gold-client/go/goldclient/goldclient_test.go
index 1e181fa..43bb5cb 100644
--- a/gold-client/go/goldclient/goldclient_test.go
+++ b/gold-client/go/goldclient/goldclient_test.go
@@ -178,6 +178,9 @@
 	assert.Len(t, state.Expectations, 1)
 	assert.Len(t, state.Expectations["ThisIsTheOnlyTest"], 2)
 	assert.Equal(t, testSharedConfig, *state.SharedConfig)
+
+	state, err = loadStateFromJson("/tmp/some-file-guaranteed-not-to-exist")
+	assert.Error(t, err)
 }
 
 // Test that the client does not fetch from the server if UploadOnly is set.