github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/lsp/lsp_test.go (about)

     1  package lsp
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  	"go.lsp.dev/uri"
    11  
    12  	"github.com/tilt-dev/tilt/internal/testutils"
    13  	"github.com/tilt-dev/tilt/internal/testutils/tempdir"
    14  	"github.com/tilt-dev/tilt/internal/tiltfile/tiltextension"
    15  )
    16  
    17  func TestReadDocument(t *testing.T) {
    18  	f := newFixture(t)
    19  	f.MkdirAll("tilt-extensions/hello")
    20  	contents := `hello = "Hi"`
    21  	f.WriteFile("tilt-extensions/hello/Tiltfile", contents)
    22  
    23  	bytes, err := f.finder.readDocument(uri.URI("ext://hello"))
    24  	require.NoError(t, err)
    25  	assert.Equal(t, contents, string(bytes))
    26  
    27  	_, err = f.finder.readDocument(uri.URI("ext://world"))
    28  	require.Error(t, err)
    29  	assert.True(t, os.IsNotExist(err))
    30  
    31  	bytes, err = f.finder.readDocument(uri.File(filepath.Join(f.Path(), "tilt-extensions/hello/Tiltfile")))
    32  	require.NoError(t, err)
    33  	assert.Equal(t, contents, string(bytes))
    34  }
    35  
    36  func TestResolveURI(t *testing.T) {
    37  	f := newFixture(t)
    38  	f.MkdirAll("tilt-extensions/hello")
    39  	contents := `hello = "Hi"`
    40  	tiltfile := f.WriteFile("tilt-extensions/hello/Tiltfile", contents)
    41  
    42  	path, err := f.finder.resolveURI(uri.URI("ext://hello"))
    43  	require.NoError(t, err)
    44  	assert.Equal(t, tiltfile, path)
    45  
    46  	path, err = f.finder.resolveURI(uri.File(tiltfile))
    47  	require.NoError(t, err)
    48  	assert.Equal(t, tiltfile, path)
    49  }
    50  
    51  type fixture struct {
    52  	tempdir.TempDirFixture
    53  	finder *extensionFinder
    54  }
    55  
    56  func newFixture(t *testing.T) *fixture {
    57  	ctx, _, _ := testutils.CtxAndAnalyticsForTest()
    58  	f := &fixture{
    59  		TempDirFixture: *tempdir.NewTempDirFixture(t),
    60  		finder:         &extensionFinder{ctx: ctx},
    61  	}
    62  	extPlugin := tiltextension.NewFakePlugin(
    63  		tiltextension.NewFakeExtRepoReconciler(f.Path()),
    64  		tiltextension.NewFakeExtReconciler(f.Path()))
    65  	f.finder.initializePlugins(extPlugin)
    66  	return f
    67  }