File: testlib_test.go

package info (click to toggle)
chasquid 1.15.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,636 kB
  • sloc: sh: 1,262; python: 325; makefile: 78
file content (119 lines) | stat: -rw-r--r-- 2,524 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package testlib

import (
	"os"
	"testing"
	"time"
)

func TestBasic(t *testing.T) {
	dir := MustTempDir(t)
	if err := os.WriteFile(dir+"/file", nil, 0660); err != nil {
		t.Fatalf("could not create file in %s: %v", dir, err)
	}

	wd, err := os.Getwd()
	if err != nil {
		t.Fatalf("could not get working directory: %v", err)
	}
	if wd != dir {
		t.Errorf("MustTempDir did not change directory")
		t.Errorf("  expected %q, got %q", dir, wd)
	}

	RemoveIfOk(t, dir)
	if _, err := os.Stat(dir); !os.IsNotExist(err) {
		t.Fatalf("%s existed, should have been deleted: %v", dir, err)
	}
}

func TestRemoveCheck(t *testing.T) {
	defer func() {
		if r := recover(); r != nil {
			t.Logf("recovered: %v", r)
		} else {
			t.Fatalf("check did not panic as expected")
		}
	}()

	RemoveIfOk(t, "/tmp/something")
}

func TestLeaveDirOnError(t *testing.T) {
	myt := &testing.T{}
	dir := MustTempDir(myt)
	myt.Errorf("something bad happened")

	RemoveIfOk(myt, dir)
	if _, err := os.Stat(dir); os.IsNotExist(err) {
		t.Fatalf("%s was removed, should have been kept", dir)
	}

	// Remove the directory for real this time.
	RemoveIfOk(t, dir)
}

func TestRewriteSafeguard(t *testing.T) {
	myt := &testing.T{}
	defer func() {
		if r := recover(); r != nil {
			t.Logf("recovered: %v", r)
		} else {
			t.Fatalf("check did not panic as expected")
		}
	}()

	Rewrite(myt, "/something", "test")
}

func TestRewrite(t *testing.T) {
	dir := MustTempDir(t)
	defer RemoveIfOk(t, dir)

	myt := &testing.T{}
	Rewrite(myt, dir+"/file", "hola")
	if myt.Failed() {
		t.Errorf("basic rewrite failed")
	}
}

func TestGetFreePort(t *testing.T) {
	p := GetFreePort()
	if p == "" {
		t.Errorf("failed to get free port")
	}
}

func TestWaitFor(t *testing.T) {
	ok := WaitFor(func() bool { return true }, 20*time.Millisecond)
	if !ok {
		t.Errorf("WaitFor(true) timed out")
	}

	ok = WaitFor(func() bool { return false }, 20*time.Millisecond)
	if ok {
		t.Errorf("WaitFor(false) worked")
	}
}

func TestGenerateCert(t *testing.T) {
	dir := MustTempDir(t)
	defer os.RemoveAll(dir)
	conf, err := GenerateCert(dir)
	if err != nil {
		t.Errorf("GenerateCert returned error: %v", err)
	}
	if conf.ServerName != "localhost" {
		t.Errorf("Config server name %q != localhost", conf.ServerName)
	}
	if conf.RootCAs == nil {
		t.Errorf("Config had an empty RootCAs pool")
	}
}

func TestGenerateCertBadDir(t *testing.T) {
	conf, err := GenerateCert("/doesnotexist/")
	if err == nil || conf != nil {
		t.Fatalf("GenerateCert returned non-error: %v / %v", conf, err)
	}
}