1package update
2
3import (
4 "context"
5 "testing"
6
7 "github.com/charmbracelet/crush/internal/version"
8 "github.com/stretchr/testify/require"
9)
10
11func TestCheckForUpdate_DevelopmentVersion(t *testing.T) {
12 originalVersion := version.Version
13 version.Version = "unknown"
14 t.Cleanup(func() {
15 version.Version = originalVersion
16 })
17
18 info, err := Check(t.Context(), testClient{})
19 require.NoError(t, err)
20 require.NotNil(t, info)
21 require.False(t, info.Available())
22}
23
24func TestCheckForUpdate_Old(t *testing.T) {
25 originalVersion := version.Version
26 version.Version = "0.10.0"
27 t.Cleanup(func() {
28 version.Version = originalVersion
29 })
30 info, err := Check(t.Context(), testClient{})
31 require.NoError(t, err)
32 require.NotNil(t, info)
33 require.True(t, info.Available())
34}
35
36type testClient struct{}
37
38// Latest implements Client.
39func (t testClient) Latest(ctx context.Context) (*Release, error) {
40 return &Release{
41 TagName: "v0.11.0",
42 HTMLURL: "https://example.org",
43 }, nil
44}