github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/extractor/dir/dir_test.go (about)

     1  /*
     2   * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved.
     3   * This software is released under GPL3.
     4   * The full license information can be found under:
     5   * https://www.gnu.org/licenses/gpl-3.0.en.html
     6   *
     7   */
     8  
     9  package dir
    10  
    11  import (
    12  	"io/ioutil"
    13  	"path/filepath"
    14  	"testing"
    15  
    16  	"github.com/stretchr/testify/assert"
    17  	"github.com/vchain-us/vcn/pkg/uri"
    18  )
    19  
    20  func TestArtifact(t *testing.T) {
    21  
    22  	tmpDir, err := ioutil.TempDir("", "TempDir")
    23  	if err != nil {
    24  		t.Fatal(err)
    25  	}
    26  
    27  	tmpFile := filepath.Join(tmpDir, "file")
    28  	err = ioutil.WriteFile(tmpFile, nil, 0644)
    29  	if err != nil {
    30  		t.Fatal(err)
    31  	}
    32  	// dir - OK
    33  	u, _ := uri.Parse("dir://" + tmpDir)
    34  	artifacts, err := Artifact(u)
    35  	assert.NoError(t, err)
    36  	assert.NotNil(t, artifacts)
    37  	assert.Equal(t, "dir", artifacts[0].Kind)
    38  	assert.Equal(t, filepath.Base(tmpDir), artifacts[0].Name)
    39  	assert.NotEmpty(t, artifacts[0].Hash)
    40  
    41  	// dir (no schema) - Suppressed this behaviour. With wildcard it's possible to specify a dir so this is replaced
    42  	/*u, _ = uri.Parse(tmpDir)
    43  	artifacts, err = Artifact(u)
    44  	assert.NoError(t, err)
    45  	assert.NotNil(t, artifacts[0])
    46  	assert.Equal(t, "dir", artifacts[0].Kind)
    47  	assert.Equal(t, filepath.Base(tmpDir), artifacts[0].Name)
    48  	assert.NotEmpty(t, artifacts[0].Hash)*/
    49  
    50  	// wrong schema - SKIP (no error)
    51  	u, _ = uri.Parse("file://" + tmpDir)
    52  	artifacts, err = Artifact(u)
    53  	assert.NoError(t, err)
    54  	assert.Nil(t, artifacts)
    55  
    56  	// not artifacts dir - ERROR
    57  	u, _ = uri.Parse("dir://" + tmpFile)
    58  	artifacts, err = Artifact(u)
    59  	assert.Error(t, err)
    60  	assert.Nil(t, artifacts)
    61  
    62  	// not existing dir - ERROR
    63  	u, _ = uri.Parse("dir://" + tmpDir + "/not-existing")
    64  	artifacts, err = Artifact(u)
    65  	assert.Error(t, err)
    66  	assert.Nil(t, artifacts)
    67  }