github.hscsec.cn/amacneil/dbmate@v1.4.1/main_test.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"net/url"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  	"github.com/urfave/cli"
    11  )
    12  
    13  func testContext(t *testing.T, u *url.URL) *cli.Context {
    14  	err := os.Setenv("DATABASE_URL", u.String())
    15  	require.NoError(t, err)
    16  
    17  	app := NewApp()
    18  	flagset := flag.NewFlagSet(app.Name, flag.ContinueOnError)
    19  	for _, f := range app.Flags {
    20  		f.Apply(flagset)
    21  	}
    22  
    23  	return cli.NewContext(app, flagset, nil)
    24  }
    25  
    26  func TestGetDatabaseUrl(t *testing.T) {
    27  	envURL, err := url.Parse("foo://example.org/db")
    28  	require.NoError(t, err)
    29  	ctx := testContext(t, envURL)
    30  
    31  	u, err := getDatabaseURL(ctx)
    32  	require.NoError(t, err)
    33  
    34  	require.Equal(t, "foo", u.Scheme)
    35  	require.Equal(t, "example.org", u.Host)
    36  	require.Equal(t, "/db", u.Path)
    37  }