aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/mbf/main.go12
-rw-r--r--cmd/mbf/main_test.go47
2 files changed, 58 insertions, 1 deletions
diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go
index 68d418b5..0d44bdbc 100644
--- a/cmd/mbf/main.go
+++ b/cmd/mbf/main.go
@@ -136,7 +136,17 @@ func main() {
c.NewCommand(
"checksum", "Compute checksum of data read from standard input",
func([]string) error {
- go func() { <-ctx.Done(); os.Exit(1) }()
+ done := make(chan struct{})
+ defer close(done)
+ go func() {
+ select {
+ case <-ctx.Done():
+ os.Exit(1)
+ case <-done:
+ return
+ }
+ }()
+
h := sha512.New384()
if _, err := io.Copy(h, os.Stdin); err != nil {
return err
diff --git a/cmd/mbf/main_test.go b/cmd/mbf/main_test.go
new file mode 100644
index 00000000..8f0d0894
--- /dev/null
+++ b/cmd/mbf/main_test.go
@@ -0,0 +1,47 @@
+package main
+
+import (
+ "net"
+ "os"
+ "testing"
+
+ "hakurei.app/internal/rosa"
+)
+
+func TestMain(m *testing.M) {
+ rosa.DropCaches(rosa.OptLLVMNoLTO)
+ os.Exit(m.Run())
+}
+
+func TestCureAll(t *testing.T) {
+ t.Parallel()
+ const env = "ROSA_TEST_DAEMON"
+
+ if !testing.Verbose() {
+ t.Skip("verbose flag not set")
+ }
+
+ pathname, ok := os.LookupEnv(env)
+ if !ok {
+ t.Skip(env + " not set")
+ }
+
+ addr := net.UnixAddr{Net: "unix", Name: pathname}
+ t.Cleanup(func() {
+ if t.Failed() {
+ if err := abortRemote(t.Context(), &addr, false); err != nil {
+ t.Fatal(err)
+ }
+ }
+ })
+
+ for i := range rosa.PresetEnd {
+ p := rosa.PArtifact(i)
+ t.Run(rosa.GetMetadata(p).Name, func(t *testing.T) {
+ _, err := cureRemote(t.Context(), &addr, rosa.Std.Load(p), 0)
+ if err != nil {
+ t.Error(err)
+ }
+ })
+ }
+}