github.com/drone/runner-go@v1.12.0/pipeline/reporter/history/entry_test.go (about)

     1  // Copyright 2019 Drone.IO Inc. All rights reserved.
     2  // Use of this source code is governed by the Polyform License
     3  // that can be found in the LICENSE file.
     4  
     5  package history
     6  
     7  import (
     8  	"sort"
     9  	"testing"
    10  
    11  	"github.com/drone/drone-go/drone"
    12  
    13  	"github.com/google/go-cmp/cmp"
    14  )
    15  
    16  func TestSort(t *testing.T) {
    17  	before := []*Entry{
    18  		{Stage: &drone.Stage{ID: 1, Status: drone.StatusPassing}},
    19  		{Stage: &drone.Stage{ID: 2, Status: drone.StatusPassing}},
    20  		{Stage: &drone.Stage{ID: 3, Status: drone.StatusPending}},
    21  		{Stage: &drone.Stage{ID: 4, Status: drone.StatusRunning}},
    22  		{Stage: &drone.Stage{ID: 5, Status: drone.StatusPassing}},
    23  	}
    24  
    25  	after := []*Entry{
    26  		{Stage: &drone.Stage{ID: 3, Status: drone.StatusPending}},
    27  		{Stage: &drone.Stage{ID: 4, Status: drone.StatusRunning}},
    28  		{Stage: &drone.Stage{ID: 5, Status: drone.StatusPassing}},
    29  		{Stage: &drone.Stage{ID: 2, Status: drone.StatusPassing}},
    30  		{Stage: &drone.Stage{ID: 1, Status: drone.StatusPassing}},
    31  	}
    32  
    33  	s1 := ByTimestamp(before)
    34  	s2 := ByStatus(before)
    35  	sort.Sort(s1)
    36  	sort.Sort(s2)
    37  
    38  	if diff := cmp.Diff(before, after); diff != "" {
    39  		t.Errorf("Expect entries sorted by status")
    40  		t.Log(diff)
    41  	}
    42  }