github.com/fredbi/git-chglog@v0.0.0-20190706071416-d35c598eac81/tag_selector_test.go (about)

     1  package chglog
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestTagSelector(t *testing.T) {
    10  	assert := assert.New(t)
    11  	assert.True(true)
    12  	selector := newTagSelector()
    13  
    14  	fixtures := []*Tag{
    15  		&Tag{Name: "2.2.12-rc.12"},
    16  		&Tag{Name: "2.1.0"},
    17  		&Tag{Name: "v2.0.0-beta.1"},
    18  		&Tag{Name: "v1.2.9"},
    19  		&Tag{Name: "v1.0.0"},
    20  	}
    21  
    22  	table := map[string][]string{
    23  		// Single
    24  		"2.2.12-rc.12": []string{
    25  			"2.2.12-rc.12",
    26  			"2.1.0",
    27  		},
    28  		"v2.0.0-beta.1": []string{
    29  			"v2.0.0-beta.1",
    30  			"v1.2.9",
    31  		},
    32  		"v1.0.0": []string{
    33  			"v1.0.0",
    34  			"",
    35  		},
    36  		// ~ <tag>
    37  		"..2.1.0": []string{
    38  			"2.1.0",
    39  			"v2.0.0-beta.1",
    40  			"v1.2.9",
    41  			"v1.0.0",
    42  			"",
    43  		},
    44  		"..v1.0.0": []string{
    45  			"v1.0.0",
    46  			"",
    47  		},
    48  		// <tag> ~
    49  		"v2.0.0-beta.1..": []string{
    50  			"2.2.12-rc.12",
    51  			"2.1.0",
    52  			"v2.0.0-beta.1",
    53  			"v1.2.9",
    54  		},
    55  		"2.2.12-rc.12..": []string{
    56  			"2.2.12-rc.12",
    57  			"2.1.0",
    58  		},
    59  		"v1.0.0..": []string{
    60  			"2.2.12-rc.12",
    61  			"2.1.0",
    62  			"v2.0.0-beta.1",
    63  			"v1.2.9",
    64  			"v1.0.0",
    65  			"",
    66  		},
    67  		// <tag> ~ <tag>
    68  		"v1.0.0..2.2.12-rc.12": []string{
    69  			"2.2.12-rc.12",
    70  			"2.1.0",
    71  			"v2.0.0-beta.1",
    72  			"v1.2.9",
    73  			"v1.0.0",
    74  			"",
    75  		},
    76  		"v1.0.0..v2.0.0-beta.1": []string{
    77  			"v2.0.0-beta.1",
    78  			"v1.2.9",
    79  			"v1.0.0",
    80  			"",
    81  		},
    82  		"v1.2.9..2.1.0": []string{
    83  			"2.1.0",
    84  			"v2.0.0-beta.1",
    85  			"v1.2.9",
    86  			"v1.0.0",
    87  		},
    88  	}
    89  
    90  	for query, expected := range table {
    91  		list, from, err := selector.Select(fixtures, query)
    92  		actual := make([]string, len(list))
    93  		for i, tag := range list {
    94  			actual[i] = tag.Name
    95  		}
    96  
    97  		assert.Nil(err)
    98  		assert.Equal(expected[0:len(expected)-1], actual)
    99  		assert.Equal(expected[len(expected)-1], from)
   100  	}
   101  }