From 12a3a1e05c03fdc9767ef62e5ff9e0d677946525 Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Sat, 7 Jun 2014 18:33:09 +0200 Subject: Move the settings into the main git2go --- Makefile | 7 +-- script/with-less-static.sh | 13 ------ settings.go | 102 ++++++++++++++++++++++++++++++++++++++++++ settings/settings.go | 108 --------------------------------------------- settings/settings_test.go | 66 --------------------------- settings_test.go | 50 +++++++++++++++++++++ 6 files changed, 154 insertions(+), 192 deletions(-) delete mode 100755 script/with-less-static.sh create mode 100644 settings.go delete mode 100644 settings/settings.go delete mode 100644 settings/settings_test.go create mode 100644 settings_test.go diff --git a/Makefile b/Makefile index 66f3d92..4ecc8a4 100644 --- a/Makefile +++ b/Makefile @@ -2,12 +2,9 @@ default: test build-libgit2: ./script/build-libgit2-static.sh - cat ./vendor/libgit2/libgit2.pc - cat ./vendor/install/lib/pkgconfig/libgit2.pc -test: install build-libgit2 - ./script/with-static.sh go test - ./script/with-less-static.sh go test ./settings +test: build-libgit2 + ./script/with-static.sh go test ./... install: build-libgit2 ./script/with-static.sh go install ./... diff --git a/script/with-less-static.sh b/script/with-less-static.sh deleted file mode 100755 index faaeb01..0000000 --- a/script/with-less-static.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -set -ex - -export INSTALL_LOCATION=$PWD/vendor/install -export PKG_CONFIG_PATH=$INSTALL_LOCATION/lib/pkgconfig - -export PCFILE="$PWD/vendor/libgit2/libgit2.pc" - -export CGO_LDFLAGS="$(pkg-config --static --libs $PCFILE)" -export CGO_CFLAGS="$(pkg-config --static --cflags $PCFILE)" - -$@ diff --git a/settings.go b/settings.go new file mode 100644 index 0000000..c7f1850 --- /dev/null +++ b/settings.go @@ -0,0 +1,102 @@ +package git + +/* +#include + +int _go_git_opts_get_search_path(int level, git_buf *buf) +{ + return git_libgit2_opts(GIT_OPT_GET_SEARCH_PATH, level, buf); +} + +int _go_git_opts_set_search_path(int level, const char *path) +{ + return git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, level, path); +} + +int _go_git_opts_set_size_t(int opt, size_t val) +{ + return git_libgit2_opts(opt, val); +} + +int _go_git_opts_get_size_t(int opt, size_t *val) +{ + return git_libgit2_opts(opt, val); +} +*/ +import "C" +import ( + "runtime" + "unsafe" +) + +func SearchPath(level ConfigLevel) (string, error) { + var buf C.git_buf + defer C.git_buf_free(&buf) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + err := C._go_git_opts_get_search_path(C.int(level), &buf) + if err < 0 { + return "", MakeGitError(err) + } + + return C.GoString(buf.ptr), nil +} + +func SetSearchPath(level ConfigLevel, path string) error { + cpath := C.CString(path) + defer C.free(unsafe.Pointer(cpath)) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + err := C._go_git_opts_set_search_path(C.int(level), cpath) + if err < 0 { + return MakeGitError(err) + } + + return nil +} + +func MwindowSize() (int, error) { + return getSizet(C.GIT_OPT_GET_MWINDOW_SIZE) +} + +func SetMwindowSize(size int) error { + return setSizet(C.GIT_OPT_SET_MWINDOW_SIZE, size) +} + +func MwindowMappedLimit() (int, error) { + return getSizet(C.GIT_OPT_GET_MWINDOW_MAPPED_LIMIT) +} + +func SetMwindowMappedLimit(size int) error { + return setSizet(C.GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size) +} + +func getSizet(opt C.int) (int, error) { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + var val C.size_t + err := C._go_git_opts_get_size_t(opt, &val) + if err < 0 { + return 0, MakeGitError(err) + } + + return int(val), nil +} + +func setSizet(opt C.int, val int) error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + cval := C.size_t(val) + err := C._go_git_opts_set_size_t(opt, cval) + if err < 0 { + return MakeGitError(err) + } + + return nil +} diff --git a/settings/settings.go b/settings/settings.go deleted file mode 100644 index a7f96c7..0000000 --- a/settings/settings.go +++ /dev/null @@ -1,108 +0,0 @@ -package settings - -/* -#include - -int _go_git_opts_get_search_path(int level, git_buf *buf) -{ - return git_libgit2_opts(GIT_OPT_GET_SEARCH_PATH, level, buf); -} - -int _go_git_opts_set_search_path(int level, const char *path) -{ - return git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, level, path); -} - -int _go_git_opts_set_size_t(int opt, size_t val) -{ - return git_libgit2_opts(opt, val); -} - -int _go_git_opts_get_size_t(int opt, size_t *val) -{ - return git_libgit2_opts(opt, val); -} - -*/ -import "C" -import ( - "runtime" - "unsafe" - "github.com/libgit2/git2go" -) - -func MakeGitError(err C.int) error { - return git.MakeGitError2(int(err)) -} - -func SearchPath(level git.ConfigLevel) (string, error) { - var buf C.git_buf - defer C.git_buf_free(&buf) - - runtime.LockOSThread() - defer runtime.UnlockOSThread() - - err := C._go_git_opts_get_search_path(C.int(level), &buf) - if err < 0 { - return "", MakeGitError(err) - } - - return C.GoString(buf.ptr), nil -} - -func SetSearchPath(level git.ConfigLevel, path string) error { - cpath := C.CString(path) - defer C.free(unsafe.Pointer(cpath)) - - runtime.LockOSThread() - defer runtime.UnlockOSThread() - - err := C._go_git_opts_set_search_path(C.int(level), cpath) - if err < 0 { - return MakeGitError(err) - } - - return nil -} - -func getSizet(opt C.int) (int, error) { - runtime.LockOSThread() - defer runtime.UnlockOSThread() - - var val C.size_t - err := C._go_git_opts_get_size_t(opt, &val); - if err < 0 { - return 0, MakeGitError(err) - } - - return int(val), nil -} - -func setSizet(opt C.int, val int) error { - runtime.LockOSThread() - defer runtime.UnlockOSThread() - - cval := C.size_t(val) - err := C._go_git_opts_set_size_t(opt, cval); - if err < 0 { - return MakeGitError(err) - } - - return nil -} - -func MwindowSize() (int, error) { - return getSizet(C.GIT_OPT_GET_MWINDOW_SIZE) -} - -func SetMwindowSize(size int) error { - return setSizet(C.GIT_OPT_SET_MWINDOW_SIZE, size) -} - -func MwindowMappedLimit() (int, error) { - return getSizet(C.GIT_OPT_GET_MWINDOW_MAPPED_LIMIT) -} - -func SetMwindowMappedLimit(size int) error { - return setSizet(C.GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size) -} diff --git a/settings/settings_test.go b/settings/settings_test.go deleted file mode 100644 index 55b08c8..0000000 --- a/settings/settings_test.go +++ /dev/null @@ -1,66 +0,0 @@ -package settings - -import ( - "testing" - "runtime" - "github.com/libgit2/git2go" -) - -type pathPair struct { - Level git.ConfigLevel - Path string -} - -func TestSearchPath(t *testing.T) { - paths := []pathPair{ - pathPair{git.ConfigLevelSystem, "/tmp/system"}, - pathPair{git.ConfigLevelGlobal, "/tmp/global"}, - pathPair{git.ConfigLevelXDG, "/tmp/xdg"}, - } - - for _, pair := range paths { - err := SetSearchPath(pair.Level, pair.Path) - checkFatal(t, err) - - actual, err := SearchPath(pair.Level) - checkFatal(t, err) - - if pair.Path != actual { - t.Fatal("Search paths don't match") - } - } -} - -func TestMmapSizes(t *testing.T) { - size := 42 * 1024 - - err := SetMwindowSize(size) - checkFatal(t, err) - - actual, err := MwindowSize() - if size != actual { - t.Fatal("Sizes don't match") - } - - err = SetMwindowMappedLimit(size) - checkFatal(t, err) - - actual, err = MwindowMappedLimit() - if size != actual { - t.Fatal("Sizes don't match") - } -} - -func checkFatal(t *testing.T, err error) { - if err == nil { - return - } - - // The failure happens at wherever we were called, not here - _, file, line, ok := runtime.Caller(1) - if !ok { - t.Fatal() - } - - t.Fatalf("Fail at %v:%v; %v", file, line, err) -} diff --git a/settings_test.go b/settings_test.go new file mode 100644 index 0000000..3a4ce0a --- /dev/null +++ b/settings_test.go @@ -0,0 +1,50 @@ +package git + +import ( + "testing" +) + +type pathPair struct { + Level ConfigLevel + Path string +} + +func TestSearchPath(t *testing.T) { + paths := []pathPair{ + pathPair{ConfigLevelSystem, "/tmp/system"}, + pathPair{ConfigLevelGlobal, "/tmp/global"}, + pathPair{ConfigLevelXDG, "/tmp/xdg"}, + } + + for _, pair := range paths { + err := SetSearchPath(pair.Level, pair.Path) + checkFatal(t, err) + + actual, err := SearchPath(pair.Level) + checkFatal(t, err) + + if pair.Path != actual { + t.Fatal("Search paths don't match") + } + } +} + +func TestMmapSizes(t *testing.T) { + size := 42 * 1024 + + err := SetMwindowSize(size) + checkFatal(t, err) + + actual, err := MwindowSize() + if size != actual { + t.Fatal("Sizes don't match") + } + + err = SetMwindowMappedLimit(size) + checkFatal(t, err) + + actual, err = MwindowMappedLimit() + if size != actual { + t.Fatal("Sizes don't match") + } +} -- cgit v1.2.3