unit test + nil check pointers

This commit is contained in:
MatthewHink
2022-04-09 08:56:43 -04:00
parent 86624a6980
commit 086401a07c
3 changed files with 46 additions and 3 deletions

1
go.mod
View File

@@ -15,6 +15,7 @@ require (
github.com/opencontainers/umoci v0.4.6
github.com/pkg/errors v0.9.1
github.com/spf13/cobra v1.1.1
github.com/stretchr/testify v1.7.0
github.com/talos-systems/go-smbios v0.1.1
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1
gopkg.in/yaml.v2 v2.4.0

View File

@@ -61,14 +61,16 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error {
config.Nodes[nodeID].ClusterName = node.ClusterName.GetReal()
config.Nodes[nodeID].Ipxe = node.Ipxe.GetReal()
config.Nodes[nodeID].Init = node.Init.GetReal()
if node.Kernel.Override.GotReal() || node.Kernel.Args.GotReal() {
if node.Kernel != nil && (node.Kernel.Override.GotReal() || node.Kernel.Args.GotReal()) {
config.Nodes[nodeID].Kernel = new(KernelConf)
config.Nodes[nodeID].Kernel.Override = node.Kernel.Override.GetReal()
config.Nodes[nodeID].Kernel.Args = node.Kernel.Args.GetReal()
}
if node.Ipmi.Ipaddr.GotReal() || node.Ipmi.Netmask.GotReal() ||
if node.Ipmi != nil && (node.Ipmi.Ipaddr.GotReal() || node.Ipmi.Netmask.GotReal() ||
node.Ipmi.Port.GotReal() || node.Ipmi.Gateway.GotReal() || node.Ipmi.UserName.GotReal() ||
node.Ipmi.Password.GotReal() || node.Ipmi.Interface.GotReal() || node.Ipmi.Write.GotReal() {
node.Ipmi.Password.GotReal() || node.Ipmi.Interface.GotReal() || node.Ipmi.Write.GotReal()) {
config.Nodes[nodeID].Ipmi = new(IpmiConf)
config.Nodes[nodeID].Ipmi.Ipaddr = node.Ipmi.Ipaddr.GetReal()
config.Nodes[nodeID].Ipmi.Netmask = node.Ipmi.Netmask.GetReal()

View File

@@ -0,0 +1,40 @@
package node
import (
"testing"
"gopkg.in/yaml.v2"
"github.com/stretchr/testify/assert"
)
func TestNodeUpdate(t *testing.T) {
var nodeConfig = `
WW_INTERNAL: 43
nodeprofiles:
default:
comment: This profile is automatically included for each node
nodes:
n0000:
discoverable: true
profiles:
- default
network devices:
default:
onboot: true
device: eth0
hwaddr: 08:00:27:39:46:70
ipaddr: 10.0.8.150
`
var nodeYaml nodeYaml
err := yaml.Unmarshal([]byte(nodeConfig), &nodeYaml)
assert.NoError(t, err)
err = nodeYaml.NodeUpdate(
NodeInfo{
Id: Entry {
value: []string{"n0000"},
},
},
)
assert.NoError(t, err)
}