Update linter for golang v1.25 compatibility
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
committed by
Christian Goll
parent
019408d076
commit
081d2ec61e
2
Tools.mk
2
Tools.mk
@@ -5,7 +5,7 @@ GO_TOOLS_BIN := $(addprefix $(TOOLS_BIN)/, $(notdir $(GO_TOOLS)))
|
||||
GO_TOOLS_VENDOR := $(addprefix vendor/, $(GO_TOOLS))
|
||||
|
||||
GOLANGCI_LINT := $(TOOLS_BIN)/golangci-lint
|
||||
GOLANGCI_LINT_VERSION := v1.64.8
|
||||
GOLANGCI_LINT_VERSION := v2.11.3
|
||||
|
||||
GOLANG_DEADCODE := $(TOOLS_BIN)/deadcode
|
||||
|
||||
|
||||
@@ -246,7 +246,7 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
}
|
||||
}
|
||||
}()
|
||||
var finishedInitialSync bool = false
|
||||
finishedInitialSync := false
|
||||
ipaddr := os.Getenv("WW_IPADDR")
|
||||
if ipaddr == "" {
|
||||
if conf.Ipaddr6 != "" {
|
||||
@@ -361,7 +361,11 @@ func updateSystem(target string, ipaddr string, port int, wwid string, tag strin
|
||||
wwlog.Error("failed to create temp directory: %s", err)
|
||||
return nil
|
||||
}
|
||||
defer os.RemoveAll(tempDir)
|
||||
defer func() {
|
||||
if err := os.RemoveAll(tempDir); err != nil {
|
||||
wwlog.Warn("failed to remove temp directory %s: %s", tempDir, err)
|
||||
}
|
||||
}()
|
||||
wwlog.Debug("unpacking runtime overlay to %s", tempDir)
|
||||
command := exec.Command("/bin/sh", "-c", fmt.Sprintf("gzip -dc | cpio -imu --directory=%s", tempDir))
|
||||
command.Stdin = resp.Body
|
||||
@@ -469,7 +473,7 @@ func atomicApplyOverlay(srcDir, destDir string) error {
|
||||
wwlog.Debug("moving symlink %s to %s", tempPath, destPath)
|
||||
err = os.Rename(tempPath, destPath)
|
||||
if err != nil {
|
||||
os.Remove(tempPath)
|
||||
_ = os.Remove(tempPath)
|
||||
return fmt.Errorf("failed to atomically move symlink %s to %s: %w", tempPath, destPath, err)
|
||||
}
|
||||
|
||||
@@ -508,7 +512,7 @@ func atomicApplyOverlay(srcDir, destDir string) error {
|
||||
wwlog.Debug("copying file from %s to temp location %s", srcPath, tempPath)
|
||||
err = copyFile(srcPath, tempPath, info)
|
||||
if err != nil {
|
||||
os.Remove(tempPath)
|
||||
_ = os.Remove(tempPath)
|
||||
return fmt.Errorf("failed to copy %s to temp location: %w", srcPath, err)
|
||||
}
|
||||
|
||||
@@ -523,7 +527,7 @@ func atomicApplyOverlay(srcDir, destDir string) error {
|
||||
wwlog.Debug("moving %s to %s", tempPath, destPath)
|
||||
err = os.Rename(tempPath, destPath)
|
||||
if err != nil {
|
||||
os.Remove(tempPath)
|
||||
_ = os.Remove(tempPath)
|
||||
return fmt.Errorf("failed to atomically move %s to %s: %w", tempPath, destPath, err)
|
||||
}
|
||||
}
|
||||
@@ -532,18 +536,22 @@ func atomicApplyOverlay(srcDir, destDir string) error {
|
||||
})
|
||||
}
|
||||
|
||||
func copyFile(src, dst string, srcInfo os.FileInfo) error {
|
||||
func copyFile(src, dst string, srcInfo os.FileInfo) (err error) {
|
||||
srcFile, err := os.Open(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer srcFile.Close()
|
||||
defer func() { _ = srcFile.Close() }()
|
||||
|
||||
dstFile, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, srcInfo.Mode())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer dstFile.Close()
|
||||
defer func() {
|
||||
if cerr := dstFile.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
|
||||
_, err = io.Copy(dstFile, srcFile)
|
||||
if err != nil {
|
||||
|
||||
@@ -67,7 +67,7 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
if err != nil {
|
||||
wwlog.Warn("couldn't create directory for mounts: %s", err)
|
||||
}
|
||||
defer desc.Close()
|
||||
defer func() { _ = desc.Close() }()
|
||||
}
|
||||
}
|
||||
imagePath := image.RootFsDir(imageName)
|
||||
@@ -170,25 +170,25 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
return fmt.Errorf("failed to mount /run: %w", err)
|
||||
}
|
||||
|
||||
os.Setenv("PATH", "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin")
|
||||
_ = os.Setenv("PATH", "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin")
|
||||
|
||||
var ps1Base string
|
||||
if v, ok := os.LookupEnv("WW_PS1"); ok {
|
||||
ps1Base = v
|
||||
} else {
|
||||
ps1Base = `\w\$ `
|
||||
os.Setenv("WW_PS1", ps1Base)
|
||||
_ = os.Setenv("WW_PS1", ps1Base)
|
||||
}
|
||||
os.Setenv("PS1", fmt.Sprintf("%s %s", ps1Prefix, ps1Base))
|
||||
_ = os.Setenv("PS1", fmt.Sprintf("%s %s", ps1Prefix, ps1Base))
|
||||
|
||||
var histfile string
|
||||
if v, ok := os.LookupEnv("WW_HISTFILE"); ok {
|
||||
histfile = v
|
||||
} else {
|
||||
histfile = "/dev/null"
|
||||
os.Setenv("WW_HISTFILE", histfile)
|
||||
_ = os.Setenv("WW_HISTFILE", histfile)
|
||||
}
|
||||
os.Setenv("HISTFILE", histfile)
|
||||
_ = os.Setenv("HISTFILE", histfile)
|
||||
|
||||
wwlog.Debug("Exec: %s %s", args[1], args[1:])
|
||||
return syscall.Exec(args[1], args[1:], os.Environ())
|
||||
|
||||
@@ -99,8 +99,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
if !image.ValidSource(imageName) {
|
||||
return fmt.Errorf("unknown Warewulf image: %s", imageName)
|
||||
}
|
||||
os.Setenv("WW_CONTAINER_SHELL", imageName)
|
||||
os.Setenv("WW_IMAGE_SHELL", imageName)
|
||||
_ = os.Setenv("WW_CONTAINER_SHELL", imageName)
|
||||
_ = os.Setenv("WW_IMAGE_SHELL", imageName)
|
||||
|
||||
imagePath := image.RootFsDir(imageName)
|
||||
|
||||
@@ -213,7 +213,7 @@ func (cf *copyFile) shouldRemoveFromImage(imageName string) bool {
|
||||
} else if destStat, err := os.Stat(imageDest); err != nil {
|
||||
wwlog.Verbose("file is no longer present: %s (%s)", cf.fileName, err)
|
||||
return false
|
||||
} else if destStat.ModTime() == cf.modTime {
|
||||
} else if destStat.ModTime().Equal(cf.modTime) {
|
||||
wwlog.Verbose("don't remove modified file:", cf.fileName)
|
||||
return false
|
||||
} else {
|
||||
|
||||
@@ -82,8 +82,8 @@ func Test_Exec(t *testing.T) {
|
||||
nodeName = ""
|
||||
Build = true
|
||||
SyncUser = false
|
||||
os.Remove(env.GetPath("/srv/warewulf/images/test.img"))
|
||||
os.Remove(env.GetPath("/srv/warewulf/images/test.img.gz"))
|
||||
_ = os.Remove(env.GetPath("/srv/warewulf/images/test.img"))
|
||||
_ = os.Remove(env.GetPath("/srv/warewulf/images/test.img.gz"))
|
||||
}()
|
||||
cmd := GetCommand()
|
||||
cmd.SetArgs(tt.args)
|
||||
|
||||
@@ -108,7 +108,7 @@ func createDummyDockerArchive(t *testing.T, path string) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer f.Close()
|
||||
defer func() { _ = f.Close() }()
|
||||
|
||||
archiveTw := tar.NewWriter(f)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ func GetCommand() *cobra.Command {
|
||||
}
|
||||
vars.nodeConf.CreateFlags(baseCmd)
|
||||
vars.nodeAdd.CreateAddFlags(baseCmd)
|
||||
flags.AddContainer(baseCmd, &(vars.nodeConf.Profile.ImageName))
|
||||
flags.AddContainer(baseCmd, &(vars.nodeConf.ImageName))
|
||||
flags.AddWwinit(baseCmd, &(vars.nodeConf.SystemOverlay))
|
||||
flags.AddRuntime(baseCmd, &(vars.nodeConf.RuntimeOverlay))
|
||||
// register the command line completions
|
||||
|
||||
@@ -44,7 +44,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
if tempErr != nil {
|
||||
return fmt.Errorf("could not create temp file: %s", tempErr)
|
||||
}
|
||||
defer os.Remove(tempFile.Name())
|
||||
defer func() { _ = os.Remove(tempFile.Name()) }()
|
||||
|
||||
if !NoHeader {
|
||||
yamlTemplate := node.ConfToYaml(node.Node{}, nil)
|
||||
|
||||
@@ -18,7 +18,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not open file: %s", err)
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() { _ = file.Close() }()
|
||||
|
||||
importMap := make(map[string]*node.Node)
|
||||
buffer, err := io.ReadAll(file)
|
||||
|
||||
@@ -34,7 +34,7 @@ func GetCommand() *cobra.Command {
|
||||
vars.nodeConf.CreateFlags(baseCmd)
|
||||
vars.nodeAdd.CreateAddFlags(baseCmd)
|
||||
vars.nodeDel.CreateDelFlags(baseCmd)
|
||||
flags.AddContainer(baseCmd, &(vars.nodeConf.Profile.ImageName))
|
||||
flags.AddContainer(baseCmd, &(vars.nodeConf.ImageName))
|
||||
flags.AddWwinit(baseCmd, &(vars.nodeConf.SystemOverlay))
|
||||
flags.AddRuntime(baseCmd, &(vars.nodeConf.RuntimeOverlay))
|
||||
baseCmd.PersistentFlags().BoolVarP(&vars.setNodeAll, "all", "a", false, "Set all nodes")
|
||||
|
||||
@@ -97,7 +97,7 @@ func Test_OverlayChown(t *testing.T) {
|
||||
filePath := filepath.Join(overlayDir, tt.fileName)
|
||||
f, err := os.Create(filePath)
|
||||
assert.NoError(t, err)
|
||||
f.Close()
|
||||
_ = f.Close()
|
||||
// get initial owner
|
||||
stat, err := os.Stat(filePath)
|
||||
assert.NoError(t, err)
|
||||
|
||||
@@ -43,7 +43,7 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
overlayFile := myOverlay.File(fileName)
|
||||
wwlog.Debug("Will edit overlay file: %s", overlayFile)
|
||||
overlayFileDir := path.Dir(overlayFile)
|
||||
if !(util.IsDir(overlayFileDir) || CreateDirs) {
|
||||
if !util.IsDir(overlayFileDir) && !CreateDirs {
|
||||
return fmt.Errorf("%s does not exist. Use '--parents' option to create automatically", overlayFileDir)
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
if tempFileErr != nil {
|
||||
return fmt.Errorf("unable to create temporary file for editing: %s", tempFileErr)
|
||||
}
|
||||
defer os.Remove(tempFile.Name())
|
||||
defer func() { _ = os.Remove(tempFile.Name()) }()
|
||||
wwlog.Debug("Using temporary file %s", tempFile.Name())
|
||||
|
||||
if util.IsFile(overlayFile) {
|
||||
@@ -62,20 +62,22 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
if _, err := io.Copy(tempFile, originalFile); err != nil {
|
||||
return fmt.Errorf("unable to copy %s to %s for editing: %s", originalFile.Name(), tempFile.Name(), err)
|
||||
}
|
||||
originalFile.Close()
|
||||
_ = originalFile.Close()
|
||||
} else if filepath.Ext(overlayFile) == ".ww" {
|
||||
if _, err := tempFile.Write([]byte(initialTemplate)); err != nil {
|
||||
return fmt.Errorf("unable to write to %s: %s", tempFile.Name(), err)
|
||||
}
|
||||
}
|
||||
tempFile.Close()
|
||||
if err := tempFile.Close(); err != nil {
|
||||
return fmt.Errorf("failed to close temp file %s: %w", tempFile.Name(), err)
|
||||
}
|
||||
|
||||
initialFile, err := os.Open(tempFile.Name())
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to open temp file for hashing: %s", err)
|
||||
}
|
||||
initialHash, err := util.HashFile(initialFile)
|
||||
initialFile.Close()
|
||||
_ = initialFile.Close()
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to calculate initial hash of %s: %s", tempFile.Name(), err)
|
||||
}
|
||||
@@ -93,7 +95,7 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
return fmt.Errorf("unable to open temp file for final hashing: %s", err)
|
||||
}
|
||||
finalHash, err := util.HashFile(finalFile)
|
||||
finalFile.Close()
|
||||
_ = finalFile.Close()
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to calculate final hash of %s: %s", tempFile.Name(), err)
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ func Test_List(t *testing.T) {
|
||||
t.Errorf("Could not create temp folder: %v", err)
|
||||
t.FailNow()
|
||||
}
|
||||
defer os.RemoveAll(tmpdir)
|
||||
defer func() { _ = os.RemoveAll(tmpdir) }()
|
||||
|
||||
overlayDir := fmt.Sprintf("%s/overlay", tmpdir)
|
||||
err = os.MkdirAll(overlayDir, 0o755)
|
||||
@@ -40,7 +40,7 @@ func Test_List(t *testing.T) {
|
||||
t.Errorf("Could not create tempfile")
|
||||
t.FailNow()
|
||||
}
|
||||
file.Close()
|
||||
_ = file.Close()
|
||||
err = os.Chmod(file.Name(), 0o755)
|
||||
if err != nil {
|
||||
t.Errorf("Could not change the file %s mode: %v", file.Name(), err)
|
||||
|
||||
@@ -42,7 +42,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
|
||||
// Add newline after wwdoc lines if they exist
|
||||
if hasWwdoc {
|
||||
fmt.Fprintln(cmd.OutOrStdout())
|
||||
_, _ = fmt.Fprintln(cmd.OutOrStdout())
|
||||
}
|
||||
|
||||
// Sort variables by name for consistent output
|
||||
|
||||
@@ -41,7 +41,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
if tempErr != nil {
|
||||
return fmt.Errorf("could not create temp file: %s", tempErr)
|
||||
}
|
||||
defer os.Remove(tempFile.Name())
|
||||
defer func() { _ = os.Remove(tempFile.Name()) }()
|
||||
|
||||
if !NoHeader {
|
||||
yamlTemplate := node.ConfToYaml(node.Profile{}, nil)
|
||||
|
||||
@@ -119,7 +119,7 @@ nodes:
|
||||
_, _ = io.Copy(&buf, stdoutR)
|
||||
stdoutC <- buf.String()
|
||||
}()
|
||||
stdoutW.Close()
|
||||
_ = stdoutW.Close()
|
||||
os.Stdout = oriout
|
||||
|
||||
stdout := <-stdoutC
|
||||
|
||||
@@ -4,7 +4,6 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/warewulf/warewulf/internal/pkg/api/routes/wwapiv1"
|
||||
"github.com/warewulf/warewulf/internal/pkg/version"
|
||||
)
|
||||
|
||||
@@ -12,7 +11,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
|
||||
fmt.Println("wwctl version:\t", version.GetVersion())
|
||||
|
||||
var wwVersionResponse *wwapiv1.VersionResponse = version.Version()
|
||||
wwVersionResponse := version.Version()
|
||||
fmt.Println("rpc version:", wwVersionResponse.String())
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ func NodeStatus(nodeNames []string) (nodeStatusResponse *wwapiv1.NodeStatusRespo
|
||||
wwlog.Error("Could not connect to Warewulf server: %s", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
defer func() { _ = resp.Body.Close() }()
|
||||
|
||||
decoder := json.NewDecoder(resp.Body)
|
||||
var wwNodeStatus allStatus
|
||||
|
||||
@@ -234,7 +234,7 @@ func (config *WarewulfYaml) Dump() ([]byte, error) {
|
||||
return buf.Bytes(), err
|
||||
}
|
||||
|
||||
func (config *WarewulfYaml) PersistToFile(configFile string) error {
|
||||
func (config *WarewulfYaml) PersistToFile(configFile string) (err error) {
|
||||
out, dumpErr := config.Dump()
|
||||
if dumpErr != nil {
|
||||
wwlog.Error("%s", dumpErr)
|
||||
@@ -245,7 +245,11 @@ func (config *WarewulfYaml) PersistToFile(configFile string) error {
|
||||
wwlog.Error("%s", err)
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() {
|
||||
if cerr := file.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
_, err = file.WriteString(string(out))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -305,7 +305,7 @@ func TestInitializedFromFile(t *testing.T) {
|
||||
example_warewulf_conf := ""
|
||||
tempWarewulfConf, warewulfConfErr := os.CreateTemp("", "warewulf.conf-")
|
||||
assert.NoError(t, warewulfConfErr)
|
||||
defer os.Remove(tempWarewulfConf.Name())
|
||||
defer func() { _ = os.Remove(tempWarewulfConf.Name()) }()
|
||||
_, warewulfConfErr = tempWarewulfConf.Write([]byte(example_warewulf_conf))
|
||||
assert.NoError(t, warewulfConfErr)
|
||||
assert.NoError(t, tempWarewulfConf.Sync())
|
||||
|
||||
@@ -10,7 +10,7 @@ func GetOutboundIP() net.IP {
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
defer conn.Close()
|
||||
defer func() { _ = conn.Close() }()
|
||||
localAddr := conn.LocalAddr().(*net.UDPAddr)
|
||||
return localAddr.IP
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ func TFTP() (err error) {
|
||||
}
|
||||
|
||||
// Create tftpdir if needed
|
||||
var tftpdir string = path.Join(controller.TFTP.TftpRoot, "warewulf")
|
||||
tftpdir := path.Join(controller.TFTP.TftpRoot, "warewulf")
|
||||
err = os.MkdirAll(tftpdir, 0755)
|
||||
if err != nil {
|
||||
return
|
||||
|
||||
@@ -14,7 +14,7 @@ func TestFindInitramfs(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
temp, err := os.MkdirTemp(os.TempDir(), "ww-conf-*")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(temp)
|
||||
defer func() { _ = os.RemoveAll(temp) }()
|
||||
conf.Paths.WWChrootdir = temp
|
||||
|
||||
assert.NoError(t, os.MkdirAll(filepath.Join(RootFsDir("image"), "boot"), 0700))
|
||||
|
||||
@@ -23,9 +23,10 @@ func InitMountPnts(binds []string) (mounts []*warewulfconf.MountEntry) {
|
||||
readonly := false
|
||||
copy_ := false
|
||||
if len(bind) >= 3 {
|
||||
if bind[2] == "ro" {
|
||||
switch bind[2] {
|
||||
case "ro":
|
||||
readonly = true
|
||||
} else if bind[2] == "copy" {
|
||||
case "copy":
|
||||
copy_ = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@ func writeTempFile(t *testing.T, input string) string {
|
||||
|
||||
func makeSyncDB(t *testing.T, hostInput string, imageInput string) syncDB {
|
||||
hostFileName := writeTempFile(t, hostInput)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
imageFileName := writeTempFile(t, imageInput)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
db := make(syncDB)
|
||||
var err error
|
||||
err = db.readFromHost(hostFileName)
|
||||
@@ -34,7 +34,7 @@ func makeSyncDB(t *testing.T, hostInput string, imageInput string) syncDB {
|
||||
|
||||
func Test_readFromHost_single(t *testing.T) {
|
||||
hostFileName := writeTempFile(t, `testuser:x:1001:1001::/home/testuser:/bin/bash`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
@@ -50,7 +50,7 @@ func Test_readFromHost_multiple(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
@@ -65,7 +65,7 @@ testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
|
||||
func Test_readFromimage_single(t *testing.T) {
|
||||
imageFileName := writeTempFile(t, `testuser:x:1001:1001::/home/testuser:/bin/bash`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromimage(imageFileName)
|
||||
@@ -81,7 +81,7 @@ func Test_readFromimage_multiple(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromimage(imageFileName)
|
||||
@@ -98,13 +98,13 @@ func Test_readFromBoth_multiple(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
hostFileName := writeTempFile(t, `
|
||||
testuser1:x:2001:2001::/home/testuser:/bin/bash
|
||||
testuser3:x:2003:2003::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
var err error
|
||||
@@ -150,13 +150,13 @@ func Test_getOnlyimageLines(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
hostFileName := writeTempFile(t, `
|
||||
testuser1:x:2001:2001::/home/testuser:/bin/bash
|
||||
testuser3:x:2003:2003::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
var err error
|
||||
@@ -265,7 +265,7 @@ func Test_malformed_passwd(t *testing.T) {
|
||||
hostInput := `"testuser1:x:1001:1001::/home/testuser:/bin/bash"
|
||||
asdf`
|
||||
hostFileName := writeTempFile(t, hostInput)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
assert.NoError(t, err)
|
||||
@@ -278,7 +278,7 @@ func Test_network_passwd(t *testing.T) {
|
||||
+::::::
|
||||
-::::::`
|
||||
hostFileName := writeTempFile(t, hostInput)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
assert.NotContains(t, buf.String(), "parse error")
|
||||
|
||||
@@ -160,7 +160,7 @@ func (db syncDB) read(fileName string, fromimage bool) error {
|
||||
if file, err := os.Open(fileName); err != nil {
|
||||
return err
|
||||
} else {
|
||||
defer file.Close()
|
||||
defer func() { _ = file.Close() }()
|
||||
fileScanner := bufio.NewScanner(file)
|
||||
for fileScanner.Scan() {
|
||||
line := fileScanner.Text()
|
||||
@@ -293,7 +293,7 @@ func (db syncDB) getOnlyimageLines(fileName string) ([]string, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() { _ = file.Close() }()
|
||||
fileScanner := bufio.NewScanner(file)
|
||||
|
||||
var lines []string
|
||||
|
||||
@@ -48,7 +48,7 @@ func (k collection) Default() *Kernel {
|
||||
nk := append(collection{}, k...)
|
||||
sort.Sort(sort.Reverse(nk))
|
||||
for _, kernel := range nk {
|
||||
if !(kernel.IsDebug() || kernel.IsRescue()) {
|
||||
if !kernel.IsDebug() && !kernel.IsRescue() {
|
||||
return kernel
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ func (config *NodesYaml) MergeNode(id string) (node Node, fields fieldMap, err e
|
||||
node.setIds(id)
|
||||
node.valid = true
|
||||
node.updatePrimaryNetDev()
|
||||
node.Profile.cleanLists()
|
||||
node.cleanLists()
|
||||
return node, fields, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ func (config *NodesYaml) Persist() error {
|
||||
return config.PersistToFile(warewulfconf.Get().Paths.NodesConf())
|
||||
}
|
||||
|
||||
func (config *NodesYaml) PersistToFile(configFile string) error {
|
||||
func (config *NodesYaml) PersistToFile(configFile string) (err error) {
|
||||
if configFile == "" {
|
||||
configFile = warewulfconf.Get().Paths.NodesConf()
|
||||
}
|
||||
@@ -127,7 +127,11 @@ func (config *NodesYaml) PersistToFile(configFile string) error {
|
||||
wwlog.Error("%s", err)
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() {
|
||||
if cerr := file.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
_, err = file.WriteString(string(out))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -83,7 +83,7 @@ func Test_nodeYaml_FindByHwaddr(t *testing.T) {
|
||||
t.Errorf("FindByHwaddr() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !(got.id == tt.want) {
|
||||
if got.id != tt.want {
|
||||
t.Errorf("FindByHwaddr() got = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
@@ -121,7 +121,7 @@ func Test_nodeYaml_FindByIpaddr(t *testing.T) {
|
||||
t.Errorf("FindByIpaddr() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !(got.id == tt.want) {
|
||||
if got.id != tt.want {
|
||||
t.Errorf("FindByHwaddr() got = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
"github.com/opencontainers/umoci"
|
||||
"github.com/opencontainers/umoci/oci/layer"
|
||||
"github.com/warewulf/warewulf/internal/pkg/util"
|
||||
"github.com/warewulf/warewulf/internal/pkg/wwlog"
|
||||
)
|
||||
|
||||
type pullerOpt func(*puller) error
|
||||
@@ -140,7 +141,11 @@ func (p *puller) Pull(ctx context.Context, uri, dst string) (err error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
defer func() {
|
||||
if err := os.RemoveAll(tmpDir); err != nil {
|
||||
wwlog.Warn("failed to remove temporary directory %s: %s", tmpDir, err)
|
||||
}
|
||||
}()
|
||||
|
||||
// create an oci bundle our tmpdir to avoid issues with umoci.UnpackRootfs()
|
||||
tmpRef, err := layout.ParseReference(tmpDir + ":" + "tmp")
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
func TestGetReference(t *testing.T) {
|
||||
temp, err := os.MkdirTemp(os.TempDir(), "ww-archive-*")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(temp)
|
||||
defer func() { _ = os.RemoveAll(temp) }()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
|
||||
@@ -45,7 +45,7 @@ func templateFileBlock(inc string, abortStr string) (string, error) {
|
||||
wwlog.Info("couldn't read block %s: %s", inc, err)
|
||||
return abortStr, nil
|
||||
}
|
||||
defer readFile.Close()
|
||||
defer func() { _ = readFile.Close() }()
|
||||
var cont string
|
||||
fileScanner := bufio.NewScanner(readFile)
|
||||
fileScanner.Split(bufio.ScanLines)
|
||||
|
||||
@@ -238,7 +238,7 @@ func (overlay Overlay) Chmod(path string, mode uint64) (err error) {
|
||||
}
|
||||
}
|
||||
fullPath := overlay.File(path)
|
||||
if !(util.IsFile(fullPath) || util.IsDir(fullPath)) {
|
||||
if !util.IsFile(fullPath) && !util.IsDir(fullPath) {
|
||||
return fmt.Errorf("file does not exist within overlay: %s:%s", overlay.Name(), fullPath)
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ func (overlay Overlay) Chown(path string, uid, gid int) (err error) {
|
||||
}
|
||||
}
|
||||
fullPath := overlay.File(path)
|
||||
if !(util.IsFile(fullPath) || util.IsDir(fullPath)) {
|
||||
if !util.IsFile(fullPath) && !util.IsDir(fullPath) {
|
||||
return fmt.Errorf("file does not exist within overlay: %s:%s", overlay.Name(), fullPath)
|
||||
}
|
||||
return os.Chown(fullPath, uid, gid)
|
||||
@@ -309,8 +309,8 @@ func (overlay Overlay) ParseVarFields(file string) map[string]FieldInfo {
|
||||
// Initialize $ to refer to the root template context
|
||||
rangeVars["$"] = rootType
|
||||
|
||||
if tmpl.Tree != nil && tmpl.Tree.Root != nil {
|
||||
walkParseTree(tmpl.Tree.Root, rootType, "", rangeVars, result)
|
||||
if tmpl.Tree != nil && tmpl.Root != nil {
|
||||
walkParseTree(tmpl.Root, rootType, "", rangeVars, result)
|
||||
}
|
||||
|
||||
return result
|
||||
@@ -846,7 +846,7 @@ func BuildHostOverlay() error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not build host overlay: %w ", err)
|
||||
}
|
||||
if !(stats.Mode() == os.FileMode(0o750|os.ModeDir) || stats.Mode() == os.FileMode(0o700|os.ModeDir)) {
|
||||
if stats.Mode() != os.FileMode(0o750|os.ModeDir) && stats.Mode() != os.FileMode(0o700|os.ModeDir) {
|
||||
wwlog.SecWarn("Permissions of host overlay dir %s are %s (750 is considered as secure)", hostdir.Rootfs(), stats.Mode())
|
||||
}
|
||||
registry, err := node.New()
|
||||
@@ -918,7 +918,11 @@ func BuildOverlay(nodeConf node.Node, allNodes []node.Node, context string, over
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create temporary directory for %s: %w", name, err)
|
||||
}
|
||||
defer os.RemoveAll(buildDir)
|
||||
defer func() {
|
||||
if err := os.RemoveAll(buildDir); err != nil {
|
||||
wwlog.Warn("failed to remove temporary build directory %s: %s", buildDir, err)
|
||||
}
|
||||
}()
|
||||
|
||||
wwlog.Debug("Created temporary directory for %s: %s", name, buildDir)
|
||||
|
||||
@@ -1126,7 +1130,7 @@ func BuildOverlayIndir(nodeData node.Node, allNodes []node.Node, overlayNames []
|
||||
/*
|
||||
Writes buffer to the destination file. If wwbackup is set a wwbackup will be created.
|
||||
*/
|
||||
func CarefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, perm fs.FileMode) error {
|
||||
func CarefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, perm fs.FileMode) (err error) {
|
||||
wwlog.Debug("Trying to careful write file (%d bytes): %s", buffer.Len(), destFile)
|
||||
if backupFile {
|
||||
if !util.IsFile(destFile+".wwbackup") && util.IsFile(destFile) {
|
||||
@@ -1140,7 +1144,11 @@ func CarefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, p
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not open new file for template %w", err)
|
||||
}
|
||||
defer w.Close()
|
||||
defer func() {
|
||||
if cerr := w.Close(); cerr != nil && err == nil {
|
||||
err = fmt.Errorf("failed to close file %s: %w", destFile, cerr)
|
||||
}
|
||||
}()
|
||||
_, err = buffer.WriteTo(w)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -586,7 +586,7 @@ func Test_BuildAllOverlays(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
overlayDir, overlayDirErr := os.MkdirTemp(os.TempDir(), "ww-test-overlay-*")
|
||||
assert.NoError(t, overlayDirErr)
|
||||
defer os.RemoveAll(overlayDir)
|
||||
defer func() { _ = os.RemoveAll(overlayDir) }()
|
||||
conf.Paths.WWOverlaydir = overlayDir
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o1"), 0o700))
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o2"), 0o700))
|
||||
@@ -595,7 +595,7 @@ func Test_BuildAllOverlays(t *testing.T) {
|
||||
t.Run(tt.description, func(t *testing.T) {
|
||||
provisionDir, provisionDirErr := os.MkdirTemp(os.TempDir(), "ww-test-provision-*")
|
||||
assert.NoError(t, provisionDirErr)
|
||||
defer os.RemoveAll(provisionDir)
|
||||
defer func() { _ = os.RemoveAll(provisionDir) }()
|
||||
conf.Paths.WWProvisiondir = provisionDir
|
||||
|
||||
var nodes []node.Node
|
||||
@@ -684,7 +684,7 @@ func Test_BuildSpecificOverlays(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
overlayDir, overlayDirErr := os.MkdirTemp(os.TempDir(), "ww-test-overlay-*")
|
||||
assert.NoError(t, overlayDirErr)
|
||||
defer os.RemoveAll(overlayDir)
|
||||
defer func() { _ = os.RemoveAll(overlayDir) }()
|
||||
conf.Paths.WWOverlaydir = overlayDir
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o1"), 0o700))
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o2"), 0o700))
|
||||
@@ -693,7 +693,7 @@ func Test_BuildSpecificOverlays(t *testing.T) {
|
||||
t.Run(tt.description, func(t *testing.T) {
|
||||
provisionDir, provisionDirErr := os.MkdirTemp(os.TempDir(), "ww-test-provision-*")
|
||||
assert.NoError(t, provisionDirErr)
|
||||
defer os.RemoveAll(provisionDir)
|
||||
defer func() { _ = os.RemoveAll(provisionDir) }()
|
||||
conf.Paths.WWProvisiondir = provisionDir
|
||||
|
||||
var nodes []node.Node
|
||||
@@ -729,7 +729,7 @@ func Test_CreateOverlayFile(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
overlayDir, overlayDirErr := os.MkdirTemp(os.TempDir(), "ww-test-overlay-*")
|
||||
assert.NoError(t, overlayDirErr)
|
||||
defer os.RemoveAll(overlayDir)
|
||||
defer func() { _ = os.RemoveAll(overlayDir) }()
|
||||
conf.Paths.WWOverlaydir = overlayDir
|
||||
conf.Paths.Datadir = "/dev/null"
|
||||
for _, tt := range tests {
|
||||
@@ -757,7 +757,7 @@ func dirIsEmpty(t *testing.T, name string) bool {
|
||||
t.Log(err)
|
||||
return true
|
||||
}
|
||||
defer f.Close()
|
||||
defer func() { _ = f.Close() }()
|
||||
|
||||
dirnames, err2 := f.Readdirnames(1)
|
||||
if err2 == io.EOF {
|
||||
@@ -773,7 +773,7 @@ func readCpio(name string) (headers map[string]*cpio.Header, err error) {
|
||||
if err != nil {
|
||||
return headers, err
|
||||
}
|
||||
defer f.Close()
|
||||
defer func() { _ = f.Close() }()
|
||||
|
||||
reader := cpio.NewReader(f)
|
||||
headers = make(map[string]*cpio.Header)
|
||||
|
||||
@@ -175,7 +175,7 @@ func (env *TestEnv) WriteFile(fileName string, content string) {
|
||||
|
||||
f, err := os.Create(env.GetPath(fileName))
|
||||
env.assertNoError(err)
|
||||
defer f.Close()
|
||||
defer func() { _ = f.Close() }()
|
||||
_, err = f.WriteString(content)
|
||||
env.assertNoError(err)
|
||||
err = os.Chtimes(env.GetPath(fileName),
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"github.com/warewulf/warewulf/internal/pkg/wwlog"
|
||||
)
|
||||
|
||||
func CopyFile(src string, dst string) error {
|
||||
func CopyFile(src string, dst string) (err error) {
|
||||
|
||||
wwlog.Debug("Copying '%s' to '%s'", src, dst)
|
||||
|
||||
@@ -17,7 +17,7 @@ func CopyFile(src string, dst string) error {
|
||||
wwlog.Debug("Could not open source file %s: %s", src, err)
|
||||
return err
|
||||
}
|
||||
defer srcFD.Close()
|
||||
defer func() { _ = srcFD.Close() }()
|
||||
|
||||
srcInfo, err := srcFD.Stat()
|
||||
if err != nil {
|
||||
@@ -30,7 +30,11 @@ func CopyFile(src string, dst string) error {
|
||||
wwlog.Debug("Could not create destination file %s: %s", dst, err)
|
||||
return err
|
||||
}
|
||||
defer dstFD.Close()
|
||||
defer func() {
|
||||
if cerr := dstFD.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
|
||||
bytes, err := io.Copy(dstFD, srcFD)
|
||||
if err != nil {
|
||||
|
||||
@@ -125,7 +125,7 @@ func ReadFile(path string) ([]string, error) {
|
||||
for scanner.Scan() {
|
||||
lines = append(lines, scanner.Text())
|
||||
}
|
||||
f.Close()
|
||||
_ = f.Close()
|
||||
return lines, nil
|
||||
}
|
||||
|
||||
@@ -319,8 +319,8 @@ func CopyUIDGID(source string, dest string) error {
|
||||
}
|
||||
|
||||
// root is always good, if we failt to get UID/GID of a file
|
||||
var UID int = 0
|
||||
var GID int = 0
|
||||
var UID = 0
|
||||
var GID = 0
|
||||
if stat, ok := info.Sys().(*syscall.Stat_t); ok {
|
||||
UID = int(stat.Uid)
|
||||
GID = int(stat.Gid)
|
||||
@@ -345,16 +345,20 @@ func IncrementIPv4(start net.IP, inc uint) net.IP {
|
||||
/*
|
||||
Appending the lines to the given file
|
||||
*/
|
||||
func AppendLines(fileName string, lines []string) error {
|
||||
func AppendLines(fileName string, lines []string) (err error) {
|
||||
wwlog.Verbose("appending %v lines to %s", len(lines), fileName)
|
||||
file, err := os.OpenFile(fileName, os.O_APPEND|os.O_WRONLY, 0o644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("can't open file: %s: %w", fileName, err)
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() {
|
||||
if cerr := file.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
for _, line := range lines {
|
||||
wwlog.Debug("Appending '%s' to %s", line, fileName)
|
||||
if _, err := file.WriteString(fmt.Sprintf("%s\n", line)); err != nil {
|
||||
if _, err := fmt.Fprintf(file, "%s\n", line); err != nil {
|
||||
return fmt.Errorf("can't write to file: %s: %w", fileName, err)
|
||||
}
|
||||
|
||||
@@ -393,7 +397,7 @@ func CpioCreate(
|
||||
|
||||
err_in := make(chan error, 1)
|
||||
go func() {
|
||||
defer stdin.Close()
|
||||
defer func() { _ = stdin.Close() }()
|
||||
_, err := io.WriteString(stdin, strings.Join(ifiles, "\n"))
|
||||
err_in <- err
|
||||
}()
|
||||
@@ -475,14 +479,16 @@ func FileGz(
|
||||
err = proc.Start()
|
||||
if err != nil {
|
||||
_ = proc.Wait()
|
||||
gzippedFile.Close()
|
||||
os.Remove(file_gz)
|
||||
_ = gzippedFile.Close()
|
||||
_ = os.Remove(file_gz)
|
||||
err = fmt.Errorf("unable to successfully execute compression program: %s: %w", compressor, err)
|
||||
} else {
|
||||
err = proc.Wait()
|
||||
gzippedFile.Close()
|
||||
if cerr := gzippedFile.Close(); cerr != nil {
|
||||
wwlog.Warn("failed to close compressed image file %s: %s", file_gz, cerr)
|
||||
}
|
||||
if err != nil {
|
||||
os.Remove(file_gz)
|
||||
_ = os.Remove(file_gz)
|
||||
err = fmt.Errorf("unable to successfully create compressed image file: %s: %w", file_gz, err)
|
||||
} else {
|
||||
wwlog.Verbose("Successfully compressed image file: %s", file_gz)
|
||||
|
||||
@@ -119,7 +119,7 @@ func (of *OverlayFile) readContents() (string, error) {
|
||||
}
|
||||
|
||||
func (of *OverlayFile) renderContents(nodeName string) (string, error) {
|
||||
if !(path.Ext(of.Path) == ".ww") {
|
||||
if path.Ext(of.Path) != ".ww" {
|
||||
return "", fmt.Errorf("'%s' does not end with '.ww'", of.Path)
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ func addOverlayFile() usecase.Interactor {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := overlay_.AddFile(relPath, []byte(input.Content), true, !(input.IfNoneMatch == "*")); err != nil {
|
||||
if err := overlay_.AddFile(relPath, []byte(input.Content), true, input.IfNoneMatch != "*"); err != nil {
|
||||
return fmt.Errorf("unable to add overlay file %v: %v: %w", input.Name, relPath, err)
|
||||
}
|
||||
*output = *NewOverlayResponse(input.Name)
|
||||
|
||||
@@ -186,7 +186,7 @@ nodes:
|
||||
w := httptest.NewRecorder()
|
||||
HandleRuntimeOverlay(w, req)
|
||||
res := w.Result()
|
||||
defer res.Body.Close()
|
||||
defer func() { _ = res.Body.Close() }()
|
||||
|
||||
data, readErr := io.ReadAll(res.Body)
|
||||
assert.NoError(t, readErr)
|
||||
|
||||
@@ -99,7 +99,7 @@ nodes:
|
||||
w := httptest.NewRecorder()
|
||||
HandleProvision(w, req)
|
||||
res := w.Result()
|
||||
defer res.Body.Close()
|
||||
defer func() { _ = res.Body.Close() }()
|
||||
|
||||
data, readErr := io.ReadAll(res.Body)
|
||||
assert.NoError(t, readErr)
|
||||
|
||||
@@ -37,7 +37,7 @@ type slashFix struct {
|
||||
Filter out the '//'
|
||||
*/
|
||||
func (h *slashFix) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
r.URL.Path = strings.Replace(r.URL.Path, "//", "/", -1)
|
||||
r.URL.Path = strings.ReplaceAll(r.URL.Path, "//", "/")
|
||||
h.mux.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ func sendFile(
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return err
|
||||
}
|
||||
defer fd.Close()
|
||||
defer func() { _ = fd.Close() }()
|
||||
|
||||
stat, err := fd.Stat()
|
||||
if err != nil {
|
||||
@@ -40,7 +40,7 @@ func sendFile(
|
||||
fd)
|
||||
|
||||
wwlog.Info("send %s -> %s", filename, sendto)
|
||||
req.Body.Close()
|
||||
_ = req.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ func ArpFind(ip string) (mac string) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer arpCache.Close()
|
||||
defer func() { _ = arpCache.Close() }()
|
||||
|
||||
scanner := bufio.NewScanner(arpCache)
|
||||
scanner.Scan()
|
||||
|
||||
@@ -205,9 +205,9 @@ func LogCaller(level int, skip int, err error, message string, a ...interface{})
|
||||
|
||||
message = logFormatter(logLevel, &rec)
|
||||
if level == INFO || level == OUT {
|
||||
fmt.Fprint(logOut, message)
|
||||
_, _ = fmt.Fprint(logOut, message)
|
||||
} else {
|
||||
fmt.Fprint(logErr, message)
|
||||
_, _ = fmt.Fprint(logErr, message)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ func Test_Log(t *testing.T) {
|
||||
outCh <- string(out)
|
||||
}()
|
||||
|
||||
w.Close()
|
||||
_ = w.Close()
|
||||
os.Stderr = oldErr
|
||||
out := <-outCh
|
||||
if tt.exactMatch {
|
||||
|
||||
@@ -50,7 +50,7 @@ func Test_debugOverlay(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, stdout.String())
|
||||
assert.Empty(t, stderr.String())
|
||||
assert.Equal(t, strings.Replace(tt.log, "%HOSTNAME%", hostname, -1), variableData.ReplaceAllString(logbuf.String(), "${1}: REMOVED_BY_TEST"))
|
||||
assert.Equal(t, strings.ReplaceAll(tt.log, "%HOSTNAME%", hostname), variableData.ReplaceAllString(logbuf.String(), "${1}: REMOVED_BY_TEST"))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ func Test_hostOverlay(t *testing.T) {
|
||||
} else {
|
||||
log = logbuf.String()
|
||||
}
|
||||
assert.Equal(t, strings.Replace(tt.log, "%HOSTNAME%", hostname, -1), log)
|
||||
assert.Equal(t, strings.ReplaceAll(tt.log, "%HOSTNAME%", hostname), log)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ func Test_hostsOverlay(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, stdout.String())
|
||||
assert.Empty(t, stderr.String())
|
||||
assert.Equal(t, strings.Replace(tt.log, "%HOSTNAME%", hostname, -1), logbuf.String())
|
||||
assert.Equal(t, strings.ReplaceAll(tt.log, "%HOSTNAME%", hostname), logbuf.String())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user