Mercurial > hg > CbC > CbC_gcc
view libgo/misc/cgo/test/env.go @ 133:420680fc7707
do normal call in goto codesegment in normal function
author | anatofuz |
---|---|
date | Sat, 03 Nov 2018 19:49:09 +0900 (2018-11-03) |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package cgotest /* #include <stdlib.h> */ import "C" import ( "os" "runtime" "testing" "unsafe" ) // This is really an os package test but here for convenience. func testSetEnv(t *testing.T) { if runtime.GOOS == "windows" { // Go uses SetEnvironmentVariable on windows. Howerver, // C runtime takes a *copy* at process startup of thei // OS environment, and stores it in environ/envp. // It is this copy that getenv/putenv manipulate. t.Logf("skipping test") return } const key = "CGO_OS_TEST_KEY" const val = "CGO_OS_TEST_VALUE" os.Setenv(key, val) keyc := C.CString(key) defer C.free(unsafe.Pointer(keyc)) v := C.getenv(keyc) if uintptr(unsafe.Pointer(v)) == 0 { t.Fatal("getenv returned NULL") } vs := C.GoString(v) if vs != val { t.Fatalf("getenv() = %q; want %q", vs, val) } }