Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5384b36

Browse files
committed
newt: Add possibility to run newt tests under Valgrind
This adds flag --valgrind to newt test command. When used the tests are executed in Valgrind.
1 parent cbaa907 commit 5384b36

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

newt/builder/selftest.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func (t *TargetBuilder) SelfTestCreateExe() error {
7777
return nil
7878
}
7979

80-
func (t *TargetBuilder) SelfTestExecute() error {
80+
func (t *TargetBuilder) SelfTestExecute(valgrind bool) error {
8181
if err := t.SelfTestCreateExe(); err != nil {
8282
return err
8383
}
@@ -87,7 +87,7 @@ func (t *TargetBuilder) SelfTestExecute() error {
8787
return err
8888
}
8989

90-
if err := t.AppBuilder.SelfTestExecute(testRpkg); err != nil {
90+
if err := t.AppBuilder.SelfTestExecute(testRpkg, valgrind); err != nil {
9191
return err
9292
}
9393

@@ -140,7 +140,7 @@ func (b *Builder) testOwner(bpkg *BuildPackage) *BuildPackage {
140140
}
141141
}
142142

143-
func (b *Builder) SelfTestExecute(testRpkg *resolve.ResolvePackage) error {
143+
func (b *Builder) SelfTestExecute(testRpkg *resolve.ResolvePackage, valgrind bool) error {
144144
testPath := b.TestExePath()
145145
if err := os.Chdir(filepath.Dir(testPath)); err != nil {
146146
return err
@@ -149,6 +149,9 @@ func (b *Builder) SelfTestExecute(testRpkg *resolve.ResolvePackage) error {
149149
util.StatusMessage(util.VERBOSITY_DEFAULT, "Executing test: %s\n",
150150
testPath)
151151
cmd := []string{testPath}
152+
if valgrind {
153+
cmd = append([]string{"valgrind", "--error-exitcode=1"}, cmd...)
154+
}
152155
if _, err := util.ShellCommand(cmd, nil); err != nil {
153156
newtError := err.(*util.NewtError)
154157
newtError.Text = fmt.Sprintf("Test failure (%s):\n%s",

newt/cli/build_cmds.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ func pkgnames(pkgs []*pkg.LocalPackage) string {
235235
return s
236236
}
237237

238-
func testRunCmd(cmd *cobra.Command, args []string, exclude string, executeShell bool) {
238+
func testRunCmd(cmd *cobra.Command, args []string, exclude string, executeShell bool, valgrind bool) {
239239
if len(args) < 1 {
240240
NewtUsage(cmd, nil)
241241
}
@@ -320,7 +320,7 @@ func testRunCmd(cmd *cobra.Command, args []string, exclude string, executeShell
320320
util.StatusMessage(util.VERBOSITY_DEFAULT, "Testing package %s\n",
321321
pack.FullName())
322322

323-
err = b.SelfTestExecute()
323+
err = b.SelfTestExecute(valgrind)
324324
if err == nil {
325325
passedPkgs = append(passedPkgs, pack)
326326
} else {
@@ -435,6 +435,7 @@ func sizeRunCmd(cmd *cobra.Command, args []string, ram bool, flash bool, section
435435
func AddBuildCommands(cmd *cobra.Command) {
436436
var printShellCmds bool
437437
var executeShell bool
438+
var valgrind bool
438439

439440
buildCmd := &cobra.Command{
440441
Use: "build <target-name> [target-names...]",
@@ -474,12 +475,14 @@ func AddBuildCommands(cmd *cobra.Command) {
474475
Use: "test <package-name> [package-names...] | all",
475476
Short: "Executes unit tests for one or more packages",
476477
Run: func(cmd *cobra.Command, args []string) {
477-
testRunCmd(cmd, args, exclude, executeShell)
478+
testRunCmd(cmd, args, exclude, executeShell, valgrind)
478479
},
479480
}
480481
testCmd.Flags().StringVarP(&exclude, "exclude", "e", "", "Comma separated list of packages to exclude")
481482
testCmd.Flags().BoolVar(&executeShell, "executeShell", false,
482483
"Execute build command using /bin/sh (Linux and MacOS only)")
484+
testCmd.Flags().BoolVar(&valgrind, "valgrind", false,
485+
"Run test executables under Valgrind")
483486
cmd.AddCommand(testCmd)
484487
AddTabCompleteFn(testCmd, func() []string {
485488
return append(testablePkgList(), "all", "allexcept")

0 commit comments

Comments
 (0)