diff --git a/config/config.go b/config/config.go index c7dbef4..86034b6 100644 --- a/config/config.go +++ b/config/config.go @@ -108,10 +108,18 @@ type PreloadModule struct { TimeoutAfterLoad Duration } +// Extra test files to copy over +type FileTransfer struct { + User string + Local string + Remote string +} + // Artifact is for .out-of-tree.toml type Artifact struct { Name string Type ArtifactType + TestFiles []FileTransfer SourcePath string SupportedKernels []KernelMask diff --git a/debug.go b/debug.go index af25865..c5e6107 100644 --- a/debug.go +++ b/debug.go @@ -201,6 +201,15 @@ func debugHandler(kcfg config.KernelConfig, workPath, kernRegex, gdb string, return } + // Copy all test files to the remote machine + for _,f := range ka.TestFiles { + err = q.CopyFile(f.User,f.Local,f.Remote) + if err != nil { + log.Println("error copy err:", err, f.Local, f.Remote) + return + } + } + coloredRemoteFile := aurora.BgGreen(aurora.Black(remoteFile)) fmt.Printf("[*] build result copied to %s\n", coloredRemoteFile) diff --git a/pew.go b/pew.go index fffbe71..e0ed131 100644 --- a/pew.go +++ b/pew.go @@ -251,6 +251,15 @@ func copyArtifactAndTest(q *qemu.System, ka config.Artifact, } res.Run.Ok = true + // Copy all test files to the remote machine + for _,f := range ka.TestFiles { + err = q.CopyFile(f.User,f.Local,f.Remote) + if err != nil { + log.Println("error copy err:", err, f.Local, f.Remote) + return + } + } + res.Test.Output, err = testKernelModule(q, ka, remoteTest) if err != nil { log.Println(res.Test.Output, err)