M Makefile => Makefile +4 -0
@@ 58,6 58,10 @@ checkfmt:
exit 1; \
fi
+.PHONY: tests
+tests:
+ $(GO) test $(GOFLAGS) -v ./...
+
.PHONY: debug
debug: aerc.debug
@echo 'Run `./aerc.debug` and use this command in another terminal to attach a debugger:'
M lib/crypto/gpg/gpg_test.go => lib/crypto/gpg/gpg_test.go +13 -16
@@ 2,9 2,8 @@ package gpg
import (
"bytes"
- "fmt"
"io"
- "log"
+ "os"
"os/exec"
"strings"
"testing"
@@ 12,22 11,20 @@ import (
"git.sr.ht/~rjarry/aerc/models"
)
-func TestHasGpg(t *testing.T) {
- gpgmail := new(Mail)
- hasGpg := gpgmail.Init(new(log.Logger))
-
- if hasGpg != nil {
- t.Errorf("System does not have GPG")
+func initGPGtest(t *testing.T) {
+ if _, err := exec.LookPath("gpg"); err != nil {
+ t.Skipf("%s", err)
}
-}
-
-func CleanUp() {
- cmd := exec.Command("gpg", "--batch", "--yes", "--delete-secret-and-public-keys", testKeyId)
- err := cmd.Run()
- if err != nil {
- fmt.Println("Test cleanup failed: you may need to delete the test keys from your GPG keyring")
- return
+ // temp dir is automatically deleted by the test runtime
+ dir := t.TempDir()
+ // t.Setenv is only available since go 1.17
+ if err := os.Setenv("GNUPGHOME", dir); err != nil {
+ t.Fatalf("failed to set GNUPGHOME: %s", err)
}
+ t.Cleanup(func() {
+ os.Unsetenv("GNUPGHOME")
+ })
+ t.Logf("using GNUPGHOME = %s", dir)
}
func toCRLF(s string) string {
M lib/crypto/gpg/reader_test.go => lib/crypto/gpg/reader_test.go +10 -6
@@ 21,6 21,8 @@ func importPublicKey() {
}
func TestReader_encryptedSignedPGPMIME(t *testing.T) {
+ initGPGtest(t)
+
var expect = models.MessageDetails{
IsEncrypted: true,
IsSigned: true,
@@ 41,11 43,11 @@ func TestReader_encryptedSignedPGPMIME(t *testing.T) {
}
deepEqual(t, r.MessageDetails, &expect)
-
- t.Cleanup(CleanUp)
}
func TestReader_signedPGPMIME(t *testing.T) {
+ initGPGtest(t)
+
var expect = models.MessageDetails{
IsEncrypted: false,
IsSigned: true,
@@ 67,11 69,11 @@ func TestReader_signedPGPMIME(t *testing.T) {
}
deepEqual(t, r.MessageDetails, &expect)
-
- t.Cleanup(CleanUp)
}
func TestReader_encryptedSignedEncapsulatedPGPMIME(t *testing.T) {
+ initGPGtest(t)
+
var expect = models.MessageDetails{
IsEncrypted: true,
IsSigned: true,
@@ 100,6 102,8 @@ func TestReader_encryptedSignedEncapsulatedPGPMIME(t *testing.T) {
}
}
func TestReader_signedPGPMIMEInvalid(t *testing.T) {
+ initGPGtest(t)
+
var expect = models.MessageDetails{
IsEncrypted: false,
IsSigned: true,
@@ 120,11 124,11 @@ func TestReader_signedPGPMIMEInvalid(t *testing.T) {
t.Fatalf("pgpmail.Read() = %v", err)
}
deepEqual(t, r.MessageDetails, &expect)
-
- t.Cleanup(CleanUp)
}
func TestReader_plaintext(t *testing.T) {
+ initGPGtest(t)
+
sr := strings.NewReader(testPlaintext)
r, err := Read(sr)
if err != nil {
M lib/crypto/gpg/writer_test.go => lib/crypto/gpg/writer_test.go +4 -2
@@ 16,6 16,8 @@ func init() {
}
func TestEncrypt(t *testing.T) {
+ initGPGtest(t)
+
importPublicKey()
importSecretKey()
var h textproto.Header
@@ 55,11 57,11 @@ func TestEncrypt(t *testing.T) {
if s := body.String(); s != wantEncrypted {
t.Errorf("Encrypt() = \n%v\n but want \n%v", s, wantEncrypted)
}
-
- t.Cleanup(CleanUp)
}
func TestSign(t *testing.T) {
+ initGPGtest(t)
+
importPublicKey()
importSecretKey()
var h textproto.Header