Skip to content

Commit 5cba639

Browse files
rust tests
1 parent 9fc0f11 commit 5cba639

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

language/rust/rust.go

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,36 @@ package rust
33
import (
44
"github.com/coderbyte-org/cb-code-runner/cmd"
55
"path/filepath"
6+
"strings"
67
)
78

9+
func contains(s []string, e string) bool {
10+
for _, a := range s {
11+
if strings.Contains(a, e) {
12+
return true
13+
}
14+
}
15+
return false
16+
}
17+
818
func Run(files []string, stdin string) (string, string, error, string) {
919
workDir := filepath.Dir(files[0])
1020
binName := "a.out"
21+
containsToml := contains(files, "Cargo.toml")
1122

12-
stdout, stderr, err, duration := cmd.Run(workDir, "rustc", "-o", binName, files[0])
13-
if err != nil {
14-
return stdout, stderr, err, duration
23+
// if contains toml, we run unit tests
24+
if (containsToml) {
25+
stdout, stderr, err, duration := cmd.Run(workDir, "cargo", "build")
26+
if err != nil {
27+
return stdout, stderr, err, duration
28+
}
29+
return cmd.RunStdin(workDir, stdin, "cargo", "test")
30+
} else {
31+
stdout, stderr, err, duration := cmd.Run(workDir, "rustc", "-o", binName, files[0])
32+
if err != nil {
33+
return stdout, stderr, err, duration
34+
}
35+
binPath := filepath.Join(workDir, binName)
36+
return cmd.RunStdin(workDir, stdin, binPath)
1537
}
16-
17-
binPath := filepath.Join(workDir, binName)
18-
return cmd.RunStdin(workDir, stdin, binPath)
1938
}

0 commit comments

Comments
 (0)