Added some querymods
* Added finishers that are broken * Added some template stuffs * Added a TestTemplates file output line thingy
This commit is contained in:
parent
d89d23e673
commit
4b12c849fc
8 changed files with 100 additions and 53 deletions
|
@ -1,16 +1,22 @@
|
|||
package cmds
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/pobri19/sqlboiler/dbdrivers"
|
||||
)
|
||||
|
||||
var cmdData *CmdData
|
||||
var rgxHasSpaces = regexp.MustCompile(`^\s+`)
|
||||
|
||||
func init() {
|
||||
cmdData = &CmdData{
|
||||
|
@ -94,15 +100,89 @@ func TestTemplates(t *testing.T) {
|
|||
t.Errorf("Unable to run SQLBoilerRun: %s", err)
|
||||
}
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
buf2 := bytes.Buffer{}
|
||||
buf := &bytes.Buffer{}
|
||||
|
||||
cmd := exec.Command("go", "test", "-c")
|
||||
cmd.Dir = cmdData.OutFolder
|
||||
cmd.Stderr = &buf
|
||||
cmd.Stdout = &buf2
|
||||
cmd.Stderr = buf
|
||||
|
||||
if err = cmd.Run(); err != nil {
|
||||
t.Errorf("go test cmd execution failed: %s\n\n%s", err, buf.String())
|
||||
t.Errorf("go test cmd execution failed: %s", err)
|
||||
outputCompileErrors(buf, cmdData.OutFolder)
|
||||
fmt.Println()
|
||||
}
|
||||
}
|
||||
|
||||
func outputCompileErrors(buf *bytes.Buffer, outFolder string) {
|
||||
type errObj struct {
|
||||
errMsg string
|
||||
fileName string
|
||||
lineNumber int
|
||||
}
|
||||
|
||||
var errObjects []errObj
|
||||
lineBuf := &bytes.Buffer{}
|
||||
|
||||
bufLines := bytes.Split(buf.Bytes(), []byte{'\n'})
|
||||
for i := 0; i < len(bufLines); i++ {
|
||||
lineBuf.Reset()
|
||||
if !bytes.HasPrefix(bufLines[i], []byte("./")) {
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Fprintf(lineBuf, "%s\n", bufLines[i])
|
||||
|
||||
splits := bytes.Split(bufLines[i], []byte{':'})
|
||||
lineNum, err := strconv.Atoi(string(splits[1]))
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("Cant convert line number to int: %s", bufLines[i]))
|
||||
}
|
||||
|
||||
eObj := errObj{
|
||||
fileName: string(splits[0]),
|
||||
lineNumber: lineNum,
|
||||
}
|
||||
|
||||
for y := i; y < len(bufLines); y++ {
|
||||
if !rgxHasSpaces.Match(bufLines[y]) {
|
||||
break
|
||||
}
|
||||
fmt.Fprintf(lineBuf, "%s\n", bufLines[y])
|
||||
i++
|
||||
}
|
||||
|
||||
eObj.errMsg = lineBuf.String()
|
||||
|
||||
errObjects = append(errObjects, eObj)
|
||||
}
|
||||
|
||||
for _, eObj := range errObjects {
|
||||
fmt.Printf("-----------------\n")
|
||||
fmt.Println(eObj.errMsg)
|
||||
|
||||
filePath := filepath.Join(outFolder, eObj.fileName)
|
||||
fh, err := os.Open(filePath)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("Cant open the file: %#v", eObj))
|
||||
}
|
||||
|
||||
scanner := bufio.NewScanner(fh)
|
||||
throwaway := eObj.lineNumber - 2
|
||||
for throwaway > 0 && scanner.Scan() {
|
||||
throwaway--
|
||||
}
|
||||
|
||||
for i := 0; i < 3; i++ {
|
||||
if scanner.Scan() {
|
||||
b := scanner.Bytes()
|
||||
if len(b) != 0 {
|
||||
fmt.Printf("%s\n", b)
|
||||
} else {
|
||||
i--
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fh.Close()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue