github.com/ivotron/vio@v0.1.1-0.20160328072646-778e014d4dee/vcs_test.go (about)

     1  package vio
     2  
     3  import (
     4  	"io/ioutil"
     5  	"regexp"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestVCSHasUncommittedChanges(t *testing.T) {
    12  	path, err := ioutil.TempDir("", "testing")
    13  	assert.Nil(t, err)
    14  
    15  	err = ioutil.WriteFile(path+"/bar", []byte(""), 0644)
    16  	assert.Nil(t, err)
    17  
    18  	createAndSeedTestRepo(t, path, []string{"bar"})
    19  
    20  	has, err := HasUncommittedChanges(path)
    21  	assert.Nil(t, err)
    22  	assert.False(t, has)
    23  
    24  	// unversioned files shouldn't be considered
    25  	err = ioutil.WriteFile(path+"/untracked", []byte("changed"), 0644)
    26  	assert.Nil(t, err)
    27  
    28  	has, err = HasUncommittedChanges(path)
    29  	assert.Nil(t, err)
    30  	assert.False(t, has)
    31  
    32  	// only changes to committed files should be considered
    33  	err = ioutil.WriteFile(path+"/bar", []byte("changed"), 0644)
    34  	assert.Nil(t, err)
    35  
    36  	has, err = HasUncommittedChanges(path)
    37  	assert.Nil(t, err)
    38  	assert.True(t, has)
    39  }
    40  
    41  func TestGetCurrentCommitId(t *testing.T) {
    42  	path, err := ioutil.TempDir("", "testing")
    43  	assert.Nil(t, err)
    44  
    45  	createAndSeedTestRepo(t, path, []string{})
    46  
    47  	id, err := GetCurrentCommitId(path)
    48  	assert.Nil(t, err)
    49  	assert.Equal(t, len(id), 7)
    50  	r, err := regexp.Compile(`[0123456789abcdef]+`)
    51  	assert.Nil(t, err)
    52  	assert.True(t, r.MatchString(id))
    53  }
    54  
    55  func TestGetVersionedFiles(t *testing.T) {
    56  	path, err := ioutil.TempDir("", "testing")
    57  	assert.Nil(t, err)
    58  
    59  	createAndSeedTestRepo(t, path, []string{})
    60  
    61  	files, err := GetVersionedFiles(path)
    62  	assert.Nil(t, err)
    63  	assert.Equal(t, len(files), 2)
    64  }