This commit is contained in:
Adam Majer 2025-02-20 19:25:36 +01:00
parent bfeaed40d5
commit ee6d704e1e
3 changed files with 21 additions and 19 deletions

View File

@ -1,4 +1,4 @@
package main package common
import ( import (
"bytes" "bytes"

View File

@ -1,28 +1,30 @@
package main package common_test
import ( import (
"bytes" "bytes"
"slices" "slices"
"strings" "strings"
"testing" "testing"
"src.opensuse.org/autogits/common"
) )
func TestSubmodulesParsing(t *testing.T) { func TestSubmodulesParsing(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
file string file string
subs []Submodule subs []common.Submodule
has_error bool has_error bool
}{ }{
{ {
name: "Empty submodules file", name: "Empty submodules file",
file: "", file: "",
subs: []Submodule{}, subs: []common.Submodule{},
}, },
{ {
name: "Empty single submodule", name: "Empty single submodule",
file: "[submodule \"Foo\"]", file: "[submodule \"Foo\"]",
subs: []Submodule{ subs: []common.Submodule{
{Name: "Foo"}, {Name: "Foo"},
}, },
}, },
@ -59,7 +61,7 @@ func TestSubmodulesParsing(t *testing.T) {
{ {
name: "Submodule with one entry", name: "Submodule with one entry",
file: "[submodule \"libfoo\"]\npath = foo\n\n", file: "[submodule \"libfoo\"]\npath = foo\n\n",
subs: []Submodule{ subs: []common.Submodule{
{ {
Name: "libfoo", Name: "libfoo",
Path: "foo", Path: "foo",
@ -69,7 +71,7 @@ func TestSubmodulesParsing(t *testing.T) {
{ {
name: "Submodules with funny entries entries", name: "Submodules with funny entries entries",
file: "[submodule \"libfoo\"]\npath = foo [ bar \n\n [ submodule \"test \" ]\npath=ma ma\nurl= safe", file: "[submodule \"libfoo\"]\npath = foo [ bar \n\n [ submodule \"test \" ]\npath=ma ma\nurl= safe",
subs: []Submodule{ subs: []common.Submodule{
{ {
Name: "libfoo", Name: "libfoo",
Path: "foo [ bar", Path: "foo [ bar",
@ -84,7 +86,7 @@ func TestSubmodulesParsing(t *testing.T) {
{ {
name: "Submodule with valid entries", name: "Submodule with valid entries",
file: "[submodule \"libfoo\"]\npath=foo\nurl=goo\nupdate=none\nbranch=test\nignore=all\nshallow=true", file: "[submodule \"libfoo\"]\npath=foo\nurl=goo\nupdate=none\nbranch=test\nignore=all\nshallow=true",
subs: []Submodule{ subs: []common.Submodule{
{ {
Name: "libfoo", Name: "libfoo",
Path: "foo", Path: "foo",
@ -105,7 +107,7 @@ func TestSubmodulesParsing(t *testing.T) {
for _, test := range tests { for _, test := range tests {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
mods, err := ParseSubmodulesFile(strings.NewReader(test.file)) mods, err := common.ParseSubmodulesFile(strings.NewReader(test.file))
if test.has_error { if test.has_error {
if err == nil { if err == nil {
t.Error("Expected an error") t.Error("Expected an error")
@ -123,7 +125,7 @@ func TestSubmodulesParsing(t *testing.T) {
func TestSubmodulesWriting(t *testing.T) { func TestSubmodulesWriting(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
subs []Submodule subs []common.Submodule
output []byte output []byte
has_error bool has_error bool
}{ }{
@ -133,7 +135,7 @@ func TestSubmodulesWriting(t *testing.T) {
}, },
{ {
name: "single submodule", name: "single submodule",
subs: []Submodule{ subs: []common.Submodule{
{ {
Name: "foo", Name: "foo",
Url: "bar", Url: "bar",
@ -143,7 +145,7 @@ func TestSubmodulesWriting(t *testing.T) {
}, },
{ {
name: "empty name submodule", name: "empty name submodule",
subs: []Submodule{ subs: []common.Submodule{
{ {
Name: "foo", Name: "foo",
Url: "bar", Url: "bar",
@ -154,7 +156,7 @@ func TestSubmodulesWriting(t *testing.T) {
}, },
{ {
name: "submodule with all the things", name: "submodule with all the things",
subs: []Submodule{ subs: []common.Submodule{
{ {
Name: "foo", Name: "foo",
Url: "bar", Url: "bar",
@ -176,7 +178,7 @@ func TestSubmodulesWriting(t *testing.T) {
for _, test := range tests { for _, test := range tests {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
out := bytes.Buffer{} out := bytes.Buffer{}
if err := WriteSubmodules(test.subs, &out); err != nil { if err := common.WriteSubmodules(test.subs, &out); err != nil {
if !test.has_error { if !test.has_error {
t.Error(err) t.Error(err)
} }

View File

@ -262,15 +262,15 @@ func (rs *PRSet) Merge() error {
return fmt.Errorf("Failed fetching data during .gitmodules merge resoulution: %w", err) return fmt.Errorf("Failed fetching data during .gitmodules merge resoulution: %w", err)
} }
subs1, err := ParseSubmodulesFile(strings.NewReader(s1)) subs1, err := common.ParseSubmodulesFile(strings.NewReader(s1))
if err != nil { if err != nil {
return fmt.Errorf("Failed parsing submodule file [%s] in merge: %w", s.States[0], err) return fmt.Errorf("Failed parsing submodule file [%s] in merge: %w", s.States[0], err)
} }
subs2, err := ParseSubmodulesFile(strings.NewReader(s2)) subs2, err := common.ParseSubmodulesFile(strings.NewReader(s2))
if err != nil { if err != nil {
return fmt.Errorf("Failed parsing submodule file [%s] in merge: %w", s.States[0], err) return fmt.Errorf("Failed parsing submodule file [%s] in merge: %w", s.States[0], err)
} }
subs3, err := ParseSubmodulesFile(strings.NewReader(s3)) subs3, err := common.ParseSubmodulesFile(strings.NewReader(s3))
if err != nil { if err != nil {
return fmt.Errorf("Failed parsing submodule file [%s] in merge: %w", s.States[0], err) return fmt.Errorf("Failed parsing submodule file [%s] in merge: %w", s.States[0], err)
} }
@ -279,7 +279,7 @@ func (rs *PRSet) Merge() error {
// this will update submodules // this will update submodules
mergedSubs := slices.Concat(subs1, subs2, subs3) mergedSubs := slices.Concat(subs1, subs2, subs3)
var filteredSubs []Submodule = make([]Submodule, 0, max(len(subs1), len(subs2), len(subs3))) var filteredSubs []common.Submodule = make([]common.Submodule, 0, max(len(subs1), len(subs2), len(subs3)))
nextSub: nextSub:
for subName := range submodules { for subName := range submodules {
@ -296,7 +296,7 @@ func (rs *PRSet) Merge() error {
if err != nil { if err != nil {
return fmt.Errorf("Can't open .gitmodules for writing: %w", err) return fmt.Errorf("Can't open .gitmodules for writing: %w", err)
} }
if err = WriteSubmodules(filteredSubs, out); err != nil { if err = common.WriteSubmodules(filteredSubs, out); err != nil {
return fmt.Errorf("Can't write .gitmodules: %w", err) return fmt.Errorf("Can't write .gitmodules: %w", err)
} }
if out.Close(); err != nil { if out.Close(); err != nil {