diff options
| author | David Pierce <[email protected]> | 2015-09-26 15:37:48 -0700 |
|---|---|---|
| committer | David Pierce <[email protected]> | 2015-10-08 09:37:36 -0700 |
| commit | 80cf533fe4e48ddfab3015d9570f2833951c1dea (patch) | |
| tree | 9718ba3aad22d286eb7c1a2041fa39373f2604d1 | |
| parent | 1c855246ca0cb3faf7d8a644b22355e0ef6856a1 (diff) | |
Config#LookupString uses git_buf to load value
| -rw-r--r-- | config.go | 8 | ||||
| -rw-r--r-- | config_test.go | 58 |
2 files changed, 63 insertions, 3 deletions
@@ -115,18 +115,20 @@ func (c *Config) LookupInt64(name string) (int64, error) { } func (c *Config) LookupString(name string) (string, error) { - var ptr *C.char cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) + valBuf := C.git_buf{} + runtime.LockOSThread() defer runtime.UnlockOSThread() - if ret := C.git_config_get_string(&ptr, c.ptr, cname); ret < 0 { + if ret := C.git_config_get_string_buf(&valBuf, c.ptr, cname); ret < 0 { return "", MakeGitError(ret) } + defer C.git_buf_free(&valBuf) - return C.GoString(ptr), nil + return C.GoString(valBuf.ptr), nil } func (c *Config) LookupBool(name string) (bool, error) { diff --git a/config_test.go b/config_test.go new file mode 100644 index 0000000..e4a2c1f --- /dev/null +++ b/config_test.go @@ -0,0 +1,58 @@ +package git + +import ( + "os" + "testing" +) + +func setupConfig() (*Config, error) { + var ( + c *Config + err error + p string + ) + + p, err = ConfigFindGlobal() + if err != nil { + return nil, err + } + + c, err = OpenOndisk(nil, p) + if err != nil { + return nil, err + } + + c.SetString("foo.bar", "baz") + + return c, err +} + +func cleanupConfig() { + os.Remove(tempConfig) +} + +func TestConfigLookupString(t *testing.T) { + var ( + err error + val string + c *Config + ) + + c, err = setupConfig() + defer cleanupConfig() + if err != nil { + t.Errorf("Setup error: '%v'. Expected none\n", err) + t.FailNow() + } + defer c.Free() + + val, err = c.LookupString("foo.bar") + if err != nil { + t.Errorf("Got error: '%v', expected none\n", err) + t.FailNow() + } + + if val != "baz" { + t.Errorf("Got '%s', expected 'bar'\n", val) + } +} |
