From e253cbc79fc20b65ce9dd965c6fe3adddac817ca Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 23 Dec 2015 13:38:31 +0100 Subject: csource: new package Move C source generation into a separate package. Prog is too bloated already. --- csource/csource_test.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 csource/csource_test.go (limited to 'csource/csource_test.go') diff --git a/csource/csource_test.go b/csource/csource_test.go new file mode 100644 index 000000000..b2fbda6dc --- /dev/null +++ b/csource/csource_test.go @@ -0,0 +1,53 @@ +// Copyright 2015 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +package csource + +import ( + "math/rand" + "os" + "testing" + "time" + + "github.com/google/syzkaller/prog" +) + +func initTest(t *testing.T) (rand.Source, int) { + iters := 1000 + if testing.Short() { + iters = 10 + } + seed := int64(time.Now().UnixNano()) + rs := rand.NewSource(seed) + t.Logf("seed=%v", seed) + return rs, iters +} + +func Test(t *testing.T) { + rs, iters := initTest(t) + options := []Options{ + Options{}, + Options{Threaded: true}, + Options{Threaded: true, Collide: true}, + } + for i := 0; i < iters; i++ { + p := prog.Generate(rs, 10, nil) + for _, opts := range options { + testOne(t, p, opts) + } + } +} + +func testOne(t *testing.T, p *prog.Prog, opts Options) { + src := Write(p, opts) + srcf, err := WriteTempFile(src) + if err != nil { + t.Fatalf("%v", err) + } + defer os.Remove(srcf) + bin, err := Build(srcf) + if err != nil { + t.Fatalf("%v", err) + } + defer os.Remove(bin) +} -- cgit mrf-deployment