Error messages in mfer/ and internal/cli/ are lowercase except names and acronyms, carry no "failed to" or command-name prefix, and each wrap names only the operation and thing the wrapped error does not already name, so a stacked message names what failed once. Wraps around errors that already name their operation and path (os and afero path errors, url.Error, the gpg helpers' own errors) are dropped. runGPG appends gpg's stderr only when gpg wrote some, so no message ends in a colon. errHTTPStatus reads "unexpected HTTP status"; both inner-not-set sentinels read "inner message not set". No sentinel, errors.Is result or exit status changes. Message tests pin the new text through the real call sites. Model: opus-5-5
This commit is contained in:
@@ -303,7 +303,7 @@ func TestManifestLoaderHTTPStatusMessage(t *testing.T) {
|
||||
_, err := mfa.openManifestReader(context.Background(), server.URL+"/foo.mf")
|
||||
require.ErrorIs(t, err, errHTTPStatus)
|
||||
assert.EqualError(t, err,
|
||||
"failed to fetch "+server.URL+"/foo.mf: HTTP 404")
|
||||
"download manifest "+server.URL+"/foo.mf: unexpected HTTP status 404")
|
||||
}
|
||||
|
||||
func TestFetchManifestHTTPStatusMessage(t *testing.T) {
|
||||
@@ -325,7 +325,7 @@ func TestFetchManifestHTTPStatusMessage(t *testing.T) {
|
||||
return cmd.Run(context.Background(), []string{cmdFetch, server.URL})
|
||||
})
|
||||
require.ErrorIs(t, err, errHTTPStatus)
|
||||
assert.EqualError(t, err, "failed to fetch manifest: HTTP 404")
|
||||
assert.EqualError(t, err, "download manifest: unexpected HTTP status 404")
|
||||
}
|
||||
|
||||
func TestFetchFileHTTPStatusMessage(t *testing.T) {
|
||||
@@ -343,7 +343,66 @@ func TestFetchFileHTTPStatusMessage(t *testing.T) {
|
||||
&mfer.MFFilePath{}, nil)
|
||||
})
|
||||
require.ErrorIs(t, err, errHTTPStatus)
|
||||
assert.EqualError(t, err, "HTTP 500")
|
||||
assert.EqualError(t, err, "unexpected HTTP status 500")
|
||||
}
|
||||
|
||||
// TestCheckCorruptManifestMessage runs check on a file that is not a
|
||||
// manifest.
|
||||
func TestCheckCorruptManifestMessage(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
fs := afero.NewMemMapFs()
|
||||
require.NoError(t, afero.WriteFile(fs, "/bad.mf", []byte("not a manifest"), 0o644))
|
||||
|
||||
mfa := &CLIApp{Fs: fs}
|
||||
cmd := mfa.checkCommand()
|
||||
cmd.Action = mfa.checkManifestOperation
|
||||
|
||||
// checkManifestOperation logs to the process-global logger.
|
||||
err := runLocked(func() error {
|
||||
return cmd.Run(context.Background(), []string{cmdCheck, "/bad.mf"})
|
||||
})
|
||||
assert.EqualError(t, err, "load manifest: invalid file format")
|
||||
}
|
||||
|
||||
// TestListMissingManifestMessage runs list on a manifest file that does not
|
||||
// exist.
|
||||
func TestListMissingManifestMessage(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
mfa := &CLIApp{Fs: afero.NewMemMapFs()}
|
||||
cmd := mfa.listCommand()
|
||||
|
||||
// listManifestOperation sets the process-global log level.
|
||||
err := runLocked(func() error {
|
||||
return cmd.Run(context.Background(), []string{cmdList, "/nope.mf"})
|
||||
})
|
||||
require.ErrorIs(t, err, os.ErrNotExist)
|
||||
assert.EqualError(t, err, "open /nope.mf: file does not exist")
|
||||
}
|
||||
|
||||
// TestFetchHashMismatchMessage runs fetch against a server that sends a
|
||||
// listed file with other content of the same size.
|
||||
func TestFetchHashMismatchMessage(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
manifest := builtManifest(t, map[string][]byte{testFileTxt: []byte("listed")})
|
||||
|
||||
server := httptest.NewServer(fetchTestHandler(manifest,
|
||||
map[string][]byte{testFileTxt: []byte("served")}))
|
||||
defer server.Close()
|
||||
|
||||
mfa := &CLIApp{Fs: afero.NewMemMapFs(), maxManifestSize: mfer.MaxManifestSize}
|
||||
cmd := mfa.fetchCommand()
|
||||
cmd.Action = mfa.fetchManifestOperation
|
||||
|
||||
// fetchManifestOperation logs to the process-global logger.
|
||||
err := runLocked(func() error {
|
||||
return cmd.Run(context.Background(),
|
||||
[]string{cmdFetch, "--" + flagDest, t.TempDir(), server.URL})
|
||||
})
|
||||
require.ErrorIs(t, err, errHashMismatch)
|
||||
assert.EqualError(t, err, "download "+testFileTxt+": hash mismatch")
|
||||
}
|
||||
|
||||
func TestURLRequiredMessage(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user