Merge pull request #61 from carlosdp/fix-maps-race
Fix maps iteration order error in append_test, merge_test, and graphviz_test
This commit is contained in:
commit
8c7b80d172
|
@ -15,13 +15,18 @@ func Append(c1, c2 *Config) (*Config, error) {
|
||||||
// Append unknown keys, but keep them unique since it is a set
|
// Append unknown keys, but keep them unique since it is a set
|
||||||
unknowns := make(map[string]struct{})
|
unknowns := make(map[string]struct{})
|
||||||
for _, k := range c1.unknownKeys {
|
for _, k := range c1.unknownKeys {
|
||||||
unknowns[k] = struct{}{}
|
_, present := unknowns[k]
|
||||||
|
if !present {
|
||||||
|
unknowns[k] = struct{}{}
|
||||||
|
c.unknownKeys = append(c.unknownKeys, k)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for _, k := range c2.unknownKeys {
|
for _, k := range c2.unknownKeys {
|
||||||
unknowns[k] = struct{}{}
|
_, present := unknowns[k]
|
||||||
}
|
if !present {
|
||||||
for k, _ := range unknowns {
|
unknowns[k] = struct{}{}
|
||||||
c.unknownKeys = append(c.unknownKeys, k)
|
c.unknownKeys = append(c.unknownKeys, k)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(c1.Outputs) > 0 || len(c2.Outputs) > 0 {
|
if len(c1.Outputs) > 0 || len(c2.Outputs) > 0 {
|
||||||
|
|
|
@ -11,13 +11,18 @@ func Merge(c1, c2 *Config) (*Config, error) {
|
||||||
// Merge unknown keys
|
// Merge unknown keys
|
||||||
unknowns := make(map[string]struct{})
|
unknowns := make(map[string]struct{})
|
||||||
for _, k := range c1.unknownKeys {
|
for _, k := range c1.unknownKeys {
|
||||||
unknowns[k] = struct{}{}
|
_, present := unknowns[k]
|
||||||
|
if !present {
|
||||||
|
unknowns[k] = struct{}{}
|
||||||
|
c.unknownKeys = append(c.unknownKeys, k)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for _, k := range c2.unknownKeys {
|
for _, k := range c2.unknownKeys {
|
||||||
unknowns[k] = struct{}{}
|
_, present := unknowns[k]
|
||||||
}
|
if !present {
|
||||||
for k, _ := range unknowns {
|
unknowns[k] = struct{}{}
|
||||||
c.unknownKeys = append(c.unknownKeys, k)
|
c.unknownKeys = append(c.unknownKeys, k)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Everything below is pretty gross. Due to the lack of generics
|
// NOTE: Everything below is pretty gross. Due to the lack of generics
|
||||||
|
|
|
@ -24,7 +24,27 @@ b -> e
|
||||||
|
|
||||||
actual := strings.TrimSpace(string(buf.Bytes()))
|
actual := strings.TrimSpace(string(buf.Bytes()))
|
||||||
expected := strings.TrimSpace(writeDotStr)
|
expected := strings.TrimSpace(writeDotStr)
|
||||||
if actual != expected {
|
|
||||||
|
actualLines := strings.Split(actual, "\n")
|
||||||
|
expectedLines := strings.Split(expected, "\n")
|
||||||
|
|
||||||
|
if actualLines[0] != expectedLines[0] ||
|
||||||
|
actualLines[len(actualLines)-1] != expectedLines[len(expectedLines)-1] ||
|
||||||
|
len(actualLines) != len(expectedLines) {
|
||||||
|
t.Fatalf("bad: %s", actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
count := 0
|
||||||
|
for _, el := range expectedLines[1 : len(expectedLines)-1] {
|
||||||
|
for _, al := range actualLines[1 : len(actualLines)-1] {
|
||||||
|
if el == al {
|
||||||
|
count++
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if count != len(expectedLines)-2 {
|
||||||
t.Fatalf("bad: %s", actual)
|
t.Fatalf("bad: %s", actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue