blob: 55197b518577083284cc0cd776b06152bdfa6a9f [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package ffx
import (
"context"
"encoding/json"
"os"
"path/filepath"
"testing"
"github.com/google/go-cmp/cmp"
)
// createScript returns the path to a bash script that output the given content.
func createScript(t *testing.T, contents string) string {
name := filepath.Join(t.TempDir(), "ffxtool.sh")
contents = `#!/bin/bash
echo '` + contents + `'`
if err := os.WriteFile(name, []byte(contents), 0o700); err != nil {
t.Fatal(err)
}
return name
}
func TestTargetListEmpty(t *testing.T) {
data, err := json.Marshal([]TargetEntry{})
if err != nil {
t.Fatalf("Failed to marshal: %s", err)
}
ffxtoolScript := createScript(t, string(data))
isolateDir := NewIsolateDir(filepath.Join(t.TempDir(), "ffx-isolate-dir"))
ffx, err := NewFFXTool(ffxtoolScript, isolateDir)
if err != nil {
t.Fatalf("Failed to create ffx tool: %s", err)
}
entries, err := ffx.TargetList(context.Background())
if err != nil {
t.Fatalf("Failed to run target list: %s", err)
}
if len(entries) != 0 {
t.Fatalf("entries not empty: %v", entries)
}
}
func TestTargetList(t *testing.T) {
expected_entries := []TargetEntry{
{NodeName: "1", Addresses: []string{"127.0.0.1"}, TargetState: "Product"},
{NodeName: "2", Addresses: []string{"127.0.0.1"}, TargetState: "Product"},
}
data, err := json.Marshal(expected_entries)
if err != nil {
t.Fatalf("Failed to marshal: %s", err)
}
ffxtoolScript := createScript(t, string(data))
isolateDir := NewIsolateDir(filepath.Join(t.TempDir(), "ffx-isolate-dir"))
ffx, err := NewFFXTool(ffxtoolScript, isolateDir)
if err != nil {
t.Fatalf("Failed to create ffx tool: %s", err)
}
entries, err := ffx.TargetList(context.Background())
if err != nil {
t.Fatalf("Failed to run target list: %s", err)
}
if diff := cmp.Diff(entries, expected_entries); diff != "" {
t.Fatalf("unexpected entries, diff:\n%s", diff)
}
entries, err = ffx.TargetListForNode(context.Background(), "1")
if err != nil {
t.Fatalf("Failed to run target list: %s", err)
}
if diff := cmp.Diff(entries, expected_entries[:1]); diff != "" {
t.Fatalf("unexpected entries, diff:\n%s", diff)
}
}