// Copyright 2014 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 testing_test import ( "io/ioutil" "os" "testing" ) // This is exactly what a test would do without a TestMain. // It's here only so that there is at least one package in the // standard library with a TestMain, so that code is executed. func TestMain(m *testing.M) { os.Exit(m.Run()) } func TestTempDir(t *testing.T) { dirCh := make(chan string, 1) t.Cleanup(func() { // Verify directory has been removed. select { case dir := <-dirCh: fi, err := os.Stat(dir) if os.IsNotExist(err) { // All good return } if err != nil { t.Fatal(err) } t.Errorf("directory %q stil exists: %v, isDir=%v", dir, fi, fi.IsDir()) default: if !t.Failed() { t.Fatal("never received dir channel") } } }) dir := t.TempDir() if dir == "" { t.Fatal("expected dir") } dir2 := t.TempDir() if dir != dir2 { t.Fatal("directory changed between calls") } dirCh <- dir fi, err := os.Stat(dir) if err != nil { t.Fatal(err) } if !fi.IsDir() { t.Errorf("dir %q is not a dir", dir) } fis, err := ioutil.ReadDir(dir) if err != nil { t.Fatal(err) } if len(fis) > 0 { t.Errorf("unexpected %d files in TempDir: %v", len(fis), fis) } }