File: testing_test.go

package info (click to toggle)
golang-k8s-sigs-kustomize-kyaml 0.20.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,180 kB
  • sloc: makefile: 220; sh: 68
file content (46 lines) | stat: -rw-r--r-- 1,065 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0

package kio

import (
	"os"
	"path/filepath"
	"testing"

	"github.com/stretchr/testify/require"
)

// Setup creates directories and files for testing
type Setup struct {
	// root is the tmp directory
	Root string
}

// SetupDirectories creates directories for reading test configuration from
func SetupDirectories(t *testing.T, dirs ...string) Setup {
	t.Helper()
	d, err := os.MkdirTemp("", "kyaml-test")
	require.NoError(t, err)
	err = os.Chdir(d)
	require.NoError(t, err)
	for _, s := range dirs {
		err = os.MkdirAll(s, 0700)
		require.NoError(t, err)
	}
	return Setup{Root: d}
}

// WriteFile writes a file under the test directory
func (s Setup) WriteFile(t *testing.T, path string, value []byte) {
	t.Helper()
	err := os.MkdirAll(filepath.Dir(filepath.Join(s.Root, path)), 0700)
	require.NoError(t, err)
	err = os.WriteFile(filepath.Join(s.Root, path), value, 0600)
	require.NoError(t, err)
}

// Clean deletes the test config
func (s Setup) Clean() {
	os.RemoveAll(s.Root)
}