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
|
package kbchat
import (
"crypto/rand"
"encoding/hex"
"io/ioutil"
"os"
"os/exec"
"path"
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func randomString(t *testing.T) string {
bytes := make([]byte, 16)
_, err := rand.Read(bytes)
require.NoError(t, err)
return hex.EncodeToString(bytes)
}
func randomTempDir(t *testing.T) string {
return path.Join(os.TempDir(), "keybase_bot_"+randomString(t))
}
func whichKeybase(t *testing.T) string {
cmd := exec.Command("which", "keybase")
out, err := cmd.Output()
require.NoError(t, err)
location := strings.TrimSpace(string(out))
return location
}
func copyFile(t *testing.T, source, dest string) {
sourceData, err := ioutil.ReadFile(source)
require.NoError(t, err)
err = ioutil.WriteFile(dest, sourceData, 0777)
require.NoError(t, err)
}
// Creates the working directory and copies over the keybase binary in PATH.
// We do this to avoid any version mismatch issues.
func prepWorkingDir(t *testing.T, workingDir string) string {
kbLocation := whichKeybase(t)
err := os.Mkdir(workingDir, 0777)
require.NoError(t, err)
kbDestination := path.Join(workingDir, "keybase")
copyFile(t, kbLocation, kbDestination)
return kbDestination
}
|