summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-01-29 15:15:28 +0100
committerCarlos Martín Nieto <[email protected]>2015-01-29 15:15:28 +0100
commit2b17dffc07f5bc0c79ef4eff805ac3ab1cd4d004 (patch)
tree562b93b4b3cfd079156302cd572682ceec01dbbb
parent4a17f8038d0f5d42a4c2788ae56894e2fd90eb7e (diff)
parent2e481dbc7909beefd1afe199ba95b995819866cd (diff)
Merge pull request #171 from pks-t/submodule-foreach-fix
Submodule foreach fix
-rw-r--r--submodule.go4
-rw-r--r--submodule_test.go24
2 files changed, 26 insertions, 2 deletions
diff --git a/submodule.go b/submodule.go
index f3e9e83..6923c61 100644
--- a/submodule.go
+++ b/submodule.go
@@ -97,10 +97,10 @@ func (repo *Repository) LookupSubmodule(name string) (*Submodule, error) {
type SubmoduleCbk func(sub *Submodule, name string) int
//export SubmoduleVisitor
-func SubmoduleVisitor(csub unsafe.Pointer, name string, cfct unsafe.Pointer) int {
+func SubmoduleVisitor(csub unsafe.Pointer, name *C.char, cfct unsafe.Pointer) C.int {
sub := &Submodule{(*C.git_submodule)(csub)}
fct := *(*SubmoduleCbk)(cfct)
- return fct(sub, name)
+ return (C.int)(fct(sub, C.GoString(name)))
}
func (repo *Repository) ForeachSubmodule(cbk SubmoduleCbk) error {
diff --git a/submodule_test.go b/submodule_test.go
new file mode 100644
index 0000000..1c8f471
--- /dev/null
+++ b/submodule_test.go
@@ -0,0 +1,24 @@
+package git
+
+import (
+ "testing"
+)
+
+func TestSubmoduleForeach(t *testing.T) {
+ repo := createTestRepo(t)
+ seedTestRepo(t, repo)
+
+ _, err := repo.AddSubmodule("http://example.org/submodule", "submodule", true)
+ checkFatal(t, err)
+
+ i := 0
+ err = repo.ForeachSubmodule(func(sub *Submodule, name string) int {
+ i++
+ return 0
+ })
+ checkFatal(t, err)
+
+ if i != 1 {
+ t.Fatalf("expected one submodule found but got %i", i)
+ }
+}