Fix several Setstat typos in request-server
Added a test that breaks w/ old code which has typos but is fixed with
typos fixed. Also added switch-default error message that would have
helped diagnose this (should have been there already).
diff --git a/request-example.go b/request-example.go
index 0cb4616..ae7bba4 100644
--- a/request-example.go
+++ b/request-example.go
@@ -62,7 +62,7 @@
fs.filesLock.Lock()
defer fs.filesLock.Unlock()
switch r.Method {
- case "SetStat":
+ case "Setstat":
return nil
case "Rename":
file, err := fs.fetch(r.Filepath)
diff --git a/request-server_test.go b/request-server_test.go
index 643d05a..dc8501c 100644
--- a/request-server_test.go
+++ b/request-server_test.go
@@ -241,6 +241,24 @@
assert.NoError(t, testOsSys(fi.Sys()))
}
+// NOTE: Setstat is a noop in the request server tests, but we want to test
+// that is does nothing without crapping out.
+func TestRequestSetstat(t *testing.T) {
+ p := clientRequestServerPair(t)
+ defer p.Close()
+ _, err := putTestFile(p.cli, "/foo", "hello")
+ assert.Nil(t, err)
+ mode := os.FileMode(0644)
+ err = p.cli.Chmod("/foo", mode)
+ assert.Nil(t, err)
+ fi, err := p.cli.Stat("/foo")
+ assert.Nil(t, err)
+ assert.Equal(t, fi.Name(), "foo")
+ assert.Equal(t, fi.Size(), int64(5))
+ assert.Equal(t, fi.Mode(), os.FileMode(0644))
+ assert.NoError(t, testOsSys(fi.Sys()))
+}
+
func TestRequestStatFail(t *testing.T) {
p := clientRequestServerPair(t)
defer p.Close()
diff --git a/request.go b/request.go
index 8a1855e..7196f05 100644
--- a/request.go
+++ b/request.go
@@ -13,7 +13,7 @@
// Request contains the data and state for the incoming service request.
type Request struct {
- // Get, Put, SetStat, Stat, Rename, Remove
+ // Get, Put, Setstat, Stat, Rename, Remove
// Rmdir, Mkdir, List, Readlink, Symlink
Method string
Filepath string
@@ -128,10 +128,12 @@
rpkt, err = fileget(handlers.FileGet, r)
case "Put": // add "Append" to this to handle append only file writes
rpkt, err = fileput(handlers.FilePut, r)
- case "SetStat", "Rename", "Rmdir", "Mkdir", "Symlink", "Remove":
+ case "Setstat", "Rename", "Rmdir", "Mkdir", "Symlink", "Remove":
rpkt, err = filecmd(handlers.FileCmd, r)
case "List", "Stat", "Readlink":
rpkt, err = fileinfo(handlers.FileInfo, r)
+ default:
+ return rpkt, errors.Errorf("unexpected method: %s", r.Method)
}
return rpkt, err
}