mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-04 20:17:09 +00:00
test(ios): add unit tests for pickSimulator and iOS flag parsing
Tests for all pickSimulator branches (by name, by UDID, unknown, empty list, iPhone preference, fallback to first). Also tests BootedUDID on a canceled context and verifies --platform ios and --ios-device flags are accepted by parseTestArgs.
This commit is contained in:
1 parent
bf7ac5c3e5
commit
55ad503856
2 files changed
+118
No files matched your search
@@ -146,6 +146,35 @@ func TestRun_Doctor(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseTestArgs_AcceptsIosPlatform(t *testing.T) {
|
||||||
|
options, err := parseTestArgs([]string{
|
||||||
|
"--spec", "s.ts",
|
||||||
|
"--bundle-id", "com.example.app",
|
||||||
|
"--platform", "ios",
|
||||||
|
}, io.Discard)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error for ios platform: %v", err)
|
||||||
|
}
|
||||||
|
if options.platform != "ios" {
|
||||||
|
t.Errorf("expected platform=ios, got %q", options.platform)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseTestArgs_IosDeviceFlag(t *testing.T) {
|
||||||
|
options, err := parseTestArgs([]string{
|
||||||
|
"--spec", "s.ts",
|
||||||
|
"--bundle-id", "com.example.app",
|
||||||
|
"--platform", "ios",
|
||||||
|
"--ios-device", "iPhone 15 Pro",
|
||||||
|
}, io.Discard)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
if options.iosDevice != "iPhone 15 Pro" {
|
||||||
|
t.Errorf("expected iosDevice=iPhone 15 Pro, got %q", options.iosDevice)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRun_TestSubcommand_PipelineErrors(t *testing.T) {
|
func TestRun_TestSubcommand_PipelineErrors(t *testing.T) {
|
||||||
// Without a real spec, a real device, or a bootable AVD the pipeline
|
// Without a real spec, a real device, or a bootable AVD the pipeline
|
||||||
// must surface a specific error rather than panicking — proves the flag
|
// must surface a specific error rather than panicking — proves the flag
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
package ios
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPickSimulator_ByName(t *testing.T) {
|
||||||
|
available := []simDevice{
|
||||||
|
{UDID: "aaa", Name: "iPad Pro", IsAvailable: true},
|
||||||
|
{UDID: "bbb", Name: "iPhone 15", IsAvailable: true},
|
||||||
|
}
|
||||||
|
got, err := pickSimulator("iPhone 15", available)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if got.UDID != "bbb" {
|
||||||
|
t.Errorf("got %q, want bbb", got.UDID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPickSimulator_ByUDID(t *testing.T) {
|
||||||
|
available := []simDevice{
|
||||||
|
{UDID: "aaa", Name: "iPad Pro", IsAvailable: true},
|
||||||
|
{UDID: "bbb", Name: "iPhone 14", IsAvailable: true},
|
||||||
|
}
|
||||||
|
got, err := pickSimulator("aaa", available)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if got.Name != "iPad Pro" {
|
||||||
|
t.Errorf("got %q, want iPad Pro", got.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPickSimulator_UnknownName(t *testing.T) {
|
||||||
|
available := []simDevice{
|
||||||
|
{UDID: "aaa", Name: "iPad Pro", IsAvailable: true},
|
||||||
|
}
|
||||||
|
_, err := pickSimulator("Pixel 7", available)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error for unknown simulator name")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPickSimulator_EmptyName_PrefersIPhone(t *testing.T) {
|
||||||
|
available := []simDevice{
|
||||||
|
{UDID: "aaa", Name: "iPad mini", IsAvailable: true},
|
||||||
|
{UDID: "bbb", Name: "iPhone 16", IsAvailable: true},
|
||||||
|
{UDID: "ccc", Name: "Apple Watch", IsAvailable: true},
|
||||||
|
}
|
||||||
|
got, err := pickSimulator("", available)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if got.UDID != "bbb" {
|
||||||
|
t.Errorf("got %q, want bbb (iPhone)", got.UDID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPickSimulator_EmptyName_FallsBackToFirst(t *testing.T) {
|
||||||
|
available := []simDevice{
|
||||||
|
{UDID: "aaa", Name: "iPad Air", IsAvailable: true},
|
||||||
|
{UDID: "bbb", Name: "Apple TV", IsAvailable: true},
|
||||||
|
}
|
||||||
|
got, err := pickSimulator("", available)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if got.UDID != "aaa" {
|
||||||
|
t.Errorf("got %q, want aaa (first available)", got.UDID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPickSimulator_EmptyList(t *testing.T) {
|
||||||
|
_, err := pickSimulator("", nil)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error for empty simulator list")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBootedUDID_CanceledContext(t *testing.T) {
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
cancel()
|
||||||
|
udid := BootedUDID(ctx)
|
||||||
|
if udid != "" {
|
||||||
|
t.Errorf("expected empty UDID on canceled context, got %q", udid)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user