github.com/benchkram/bob@v0.0.0-20240314204020-b7a57f2f9be9/bob/bobfile/bobfile_test.go (about)

     1  package bobfile_test
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/benchkram/bob/bob/bobfile"
     8  	"github.com/benchkram/bob/bobrun"
     9  	"github.com/benchkram/bob/bobtask"
    10  )
    11  
    12  func TestBobfileValidateSelReference(t *testing.T) {
    13  	b := bobfile.NewBobfile()
    14  
    15  	b.BTasks["one"] = bobtask.Task{
    16  		DependsOn: []string{"one"},
    17  	}
    18  
    19  	if err := b.Validate(); err == nil {
    20  		t.Error("Expected error, got nil")
    21  	}
    22  }
    23  
    24  func TestBobfileValidateDuplicateName(t *testing.T) {
    25  	b := bobfile.NewBobfile()
    26  
    27  	b.BTasks["one"] = bobtask.Task{}
    28  
    29  	b.RTasks["one"] = &bobrun.Run{}
    30  
    31  	if err := b.Validate(); err == nil {
    32  		t.Error("Expected error, got nil")
    33  	}
    34  }
    35  
    36  func TestBobfileValidateInvalidVersion(t *testing.T) {
    37  	b := bobfile.NewBobfile()
    38  
    39  	b.Version = "invalid-version"
    40  
    41  	if err := b.Validate(); err == nil {
    42  		t.Error("Expected error, got nil")
    43  	}
    44  }
    45  
    46  func TestBobfileValidateValidVersion(t *testing.T) {
    47  	b := bobfile.NewBobfile()
    48  
    49  	b.Version = "1.2.3"
    50  
    51  	if err := b.Validate(); err != nil {
    52  		t.Error("Expected nil, got error")
    53  	}
    54  }
    55  
    56  func TestBobfileProjectName(t *testing.T) {
    57  	var tests = []struct {
    58  		name     string
    59  		expected error
    60  	}{
    61  		{"simple-project", nil},
    62  		{"project-with-inv@lid-chars", bobfile.ErrInvalidProjectName},
    63  		{"bob.build/user/url-project", nil},
    64  		{"https://bob.build/user/schema-url-project", bobfile.ErrInvalidProjectName},
    65  	}
    66  
    67  	for _, tt := range tests {
    68  		b := bobfile.NewBobfile()
    69  		b.Project = tt.name
    70  
    71  		err := b.Validate()
    72  
    73  		if !errors.Is(err, tt.expected) {
    74  			t.Errorf("ValidateProjectName(%s): expected %q, got %q", tt.name, tt.expected, err)
    75  		}
    76  	}
    77  }