Improved tests
This commit is contained in:
@ -2,6 +2,7 @@ package compiler
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"git.akyoto.dev/cli/q/src/build/arch/x64"
|
||||
@ -83,24 +84,27 @@ func (r *Result) PrintInstructions() {
|
||||
})
|
||||
}
|
||||
|
||||
// Write writes an executable file to disk.
|
||||
func (r *Result) Write(path string) error {
|
||||
// Write writes the executable to the given writer.
|
||||
func (r *Result) Write(writer io.Writer) error {
|
||||
code, data := r.finalize()
|
||||
return write(path, code, data)
|
||||
return write(writer, code, data)
|
||||
}
|
||||
|
||||
// write writes an executable file to disk.
|
||||
func write(path string, code []byte, data []byte) error {
|
||||
// Write writes an executable file to disk.
|
||||
func (r *Result) WriteFile(path string) error {
|
||||
file, err := os.Create(path)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
buffer := bufio.NewWriter(file)
|
||||
executable := elf.New(code, data)
|
||||
executable.Write(buffer)
|
||||
buffer.Flush()
|
||||
err = r.Write(file)
|
||||
|
||||
if err != nil {
|
||||
file.Close()
|
||||
return err
|
||||
}
|
||||
|
||||
err = file.Close()
|
||||
|
||||
if err != nil {
|
||||
@ -109,3 +113,11 @@ func write(path string, code []byte, data []byte) error {
|
||||
|
||||
return os.Chmod(path, 0755)
|
||||
}
|
||||
|
||||
// write writes an executable file to the given writer.
|
||||
func write(writer io.Writer, code []byte, data []byte) error {
|
||||
buffer := bufio.NewWriter(writer)
|
||||
executable := elf.New(code, data)
|
||||
executable.Write(buffer)
|
||||
return buffer.Flush()
|
||||
}
|
||||
|
@ -74,5 +74,5 @@ func makeExecutable(b *build.Build) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
return result.Write(b.Executable())
|
||||
return result.WriteFile(b.Executable())
|
||||
}
|
||||
|
Reference in New Issue
Block a user