go.fuchsia.dev/jiri@v0.0.0-20240502161911-b66513b29486/jiritest/xtest/x.go (about) 1 // Copyright 2015 The Vanadium 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 xtest provides utilities for testing jiri functionality. 6 package xtest 7 8 import ( 9 "os" 10 "path/filepath" 11 "testing" 12 "time" 13 14 "go.fuchsia.dev/jiri" 15 "go.fuchsia.dev/jiri/cmdline" 16 "go.fuchsia.dev/jiri/color" 17 "go.fuchsia.dev/jiri/log" 18 "go.fuchsia.dev/jiri/tool" 19 ) 20 21 // NewX is similar to jiri.NewX, but is meant for usage in a testing environment. 22 func NewX(t *testing.T) (*jiri.X, func()) { 23 ctx := tool.NewContextFromEnv(cmdline.EnvFromOS()) 24 cwd, err := os.Getwd() 25 if err != nil { 26 t.Fatal(err) 27 } 28 color := color.NewColor(color.ColorNever) 29 logger := log.NewLogger(log.InfoLevel, color, false, 0, time.Second*100, nil, nil) 30 root, err := os.MkdirTemp("", "") 31 if err != nil { 32 t.Fatalf("TempDir() failed: %v", err) 33 } 34 if err := os.Chdir(root); err != nil { 35 t.Fatalf("Setting cwd failed: %v", err) 36 } 37 if err := os.Mkdir(filepath.Join(root, jiri.RootMetaDir), 0755); err != nil { 38 t.Fatalf("TempDir() failed: %v", err) 39 } 40 cleanup := func() { 41 if err := os.Chdir(cwd); err != nil { 42 t.Fatalf("Setting cwd failed: %v", err) 43 } 44 if err := os.RemoveAll(root); err != nil { 45 t.Fatalf("RemoveAll(%q) failed: %v", root, err) 46 } 47 } 48 return &jiri.X{Context: ctx, Root: root, Jobs: jiri.DefaultJobs, Color: color, Logger: logger, Attempts: 1, LockfileEnabled: false}, cleanup 49 }