]> Cypherpunks.ru repositories - gostls13.git/blob - src/cmd/cgo/internal/testcarchive/testdata/libgo/libgo.go
misc/cgo: move easy tests to cmd/cgo/internal
[gostls13.git] / src / cmd / cgo / internal / testcarchive / testdata / libgo / libgo.go
1 // Copyright 2015 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package main
6
7 import (
8         "fmt"
9         "os"
10         "syscall"
11         "time"
12
13         _ "testcarchive/p"
14 )
15
16 import "C"
17
18 var initCh = make(chan int, 1)
19 var ranMain bool
20
21 func init() {
22         // emulate an exceedingly slow package initialization function
23         time.Sleep(100 * time.Millisecond)
24         initCh <- 42
25 }
26
27 func main() { ranMain = true }
28
29 //export DidInitRun
30 func DidInitRun() bool {
31         select {
32         case x := <-initCh:
33                 if x != 42 {
34                         // Just in case initCh was not correctly made.
35                         println("want init value of 42, got: ", x)
36                         syscall.Exit(2)
37                 }
38                 return true
39         default:
40                 return false
41         }
42 }
43
44 //export DidMainRun
45 func DidMainRun() bool { return ranMain }
46
47 //export CheckArgs
48 func CheckArgs() {
49         if len(os.Args) != 3 || os.Args[1] != "arg1" || os.Args[2] != "arg2" {
50                 fmt.Printf("CheckArgs: want [_, arg1, arg2], got: %v\n", os.Args)
51                 os.Exit(2)
52         }
53 }