package plugin import ( "testing" ) func TestParseModFull_BasicFields(t *testing.T) { src := []byte(` [plugin] name = "smartblock" scope = "blockninja" version = "1.4.2" `) m, err := ParseModFull(src) if err != nil { t.Fatalf("ParseModFull err: %v", err) } if m.Plugin.Name != "smartblock" { t.Errorf("Name = %q, want smartblock", m.Plugin.Name) } if m.Plugin.Scope != "blockninja" { t.Errorf("Scope = %q, want blockninja", m.Plugin.Scope) } if m.Plugin.Version != "1.4.2" { t.Errorf("Version = %q, want 1.4.2", m.Plugin.Version) } if got := m.Coords(); got != "@blockninja/smartblock@1.4.2" { t.Errorf("Coords() = %q", got) } } func TestParseModFull_BackCompatNoScope(t *testing.T) { src := []byte(` [plugin] name = "legacy" version = "0.1.0" `) m, err := ParseModFull(src) if err != nil { t.Fatalf("ParseModFull err: %v", err) } if m.Plugin.Scope != "" { t.Errorf("Scope should be empty, got %q", m.Plugin.Scope) } if got := m.Coords(); got != "legacy@0.1.0" { t.Errorf("Coords() = %q, want legacy@0.1.0", got) } } func TestParseModFull_InvalidTOML(t *testing.T) { _, err := ParseModFull([]byte("not valid toml = =")) if err == nil { t.Fatal("expected parse error") } } func TestParseModFull_EmptyInput(t *testing.T) { m, err := ParseModFull(nil) if err != nil { t.Fatalf("nil input err: %v", err) } if m.Plugin.Name != "" { t.Errorf("Name should be empty") } } func TestParseModFull_RequiresAndCompat(t *testing.T) { src := []byte(` [plugin] name = "symposium" scope = "blockninja" version = "0.2.0" [compatibility] block_core = ">=1.5 <2.0" [[requires]] name = "@blockninja/smartblock" version = ">=1.0 <2.0" [[requires]] name = "@blockninja/gotham" version = ">=1.2" `) m, err := ParseModFull(src) if err != nil { t.Fatalf("ParseModFull err: %v", err) } if m.Compatibility == nil || m.Compatibility.BlockCore != ">=1.5 <2.0" { t.Errorf("Compat = %+v", m.Compatibility) } if len(m.Requires) != 2 { t.Fatalf("Requires len = %d, want 2", len(m.Requires)) } if m.Requires[0].Name != "@blockninja/smartblock" { t.Errorf("Requires[0].Name = %q", m.Requires[0].Name) } if m.Requires[1].Version != ">=1.2" { t.Errorf("Requires[1].Version = %q", m.Requires[1].Version) } }