github.com/bilus/oya@v0.0.3-0.20190301162104-da4acbd394c6/pkg/raw/imports_test.go (about)

     1  package raw_test
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/bilus/oya/pkg/raw"
    10  	tu "github.com/bilus/oya/testutil"
    11  )
    12  
    13  func TestOyafile_AddImport_NoImport(t *testing.T) {
    14  	outputDir, err := ioutil.TempDir("", "oya")
    15  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
    16  	defer os.RemoveAll(outputDir)
    17  
    18  	oyafilePath := filepath.Join(outputDir, "Oyafile")
    19  	tu.MustCopyFile(t, "./fixtures/AddImport/Oyafile", oyafilePath)
    20  
    21  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
    22  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
    23  	tu.AssertTrue(t, found, "No Oyafile found")
    24  
    25  	err = raw.AddImport("foo", "github.com/tooploox/foo")
    26  	tu.AssertNoErr(t, err, "Error adding import")
    27  
    28  	expectedContent := `Project: AddImport
    29  Import:
    30    foo: github.com/tooploox/foo
    31  `
    32  	tu.AssertFileContains(t, oyafilePath, expectedContent)
    33  }
    34  
    35  func TestOyafile_AddImport_ToExisting(t *testing.T) {
    36  	outputDir, err := ioutil.TempDir("", "oya")
    37  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
    38  	defer os.RemoveAll(outputDir)
    39  
    40  	oyafilePath := filepath.Join(outputDir, "Oyafile")
    41  	tu.MustCopyFile(t, "./fixtures/AddImport_ToExisting/Oyafile", oyafilePath)
    42  
    43  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
    44  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
    45  	tu.AssertTrue(t, found, "No Oyafile found")
    46  
    47  	err = raw.AddImport("bar", "github.com/tooploox/bar")
    48  	tu.AssertNoErr(t, err, "Error adding import")
    49  
    50  	expectedContent := `Project: AddImport_ToExisting
    51  
    52  Import:
    53    bar: github.com/tooploox/bar
    54    foo: github.com/tooploox/foo
    55  `
    56  	tu.AssertFileContains(t, oyafilePath, expectedContent)
    57  }
    58  
    59  func TestOyafile_AddImport_MoreKeys(t *testing.T) {
    60  	outputDir, err := ioutil.TempDir("", "oya")
    61  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
    62  	defer os.RemoveAll(outputDir)
    63  
    64  	oyafilePath := filepath.Join(outputDir, "Oyafile")
    65  	tu.MustCopyFile(t, "./fixtures/AddImport_MoreKeys/Oyafile", oyafilePath)
    66  
    67  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
    68  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
    69  	tu.AssertTrue(t, found, "No Oyafile found")
    70  
    71  	err = raw.AddImport("bar", "github.com/tooploox/bar")
    72  	tu.AssertNoErr(t, err, "Error adding import")
    73  
    74  	expectedContent := `Project: AddImport_MoreKeys
    75  Import:
    76    bar: github.com/tooploox/bar
    77  
    78  Values:
    79    baz: qux
    80  `
    81  	tu.AssertFileContains(t, oyafilePath, expectedContent)
    82  }
    83  
    84  func TestOyafile_AddImport_TwoPacks(t *testing.T) {
    85  	outputDir, err := ioutil.TempDir("", "oya")
    86  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
    87  	defer os.RemoveAll(outputDir)
    88  
    89  	oyafilePath := filepath.Join(outputDir, "Oyafile")
    90  	tu.MustCopyFile(t, "./fixtures/AddImport/Oyafile", oyafilePath)
    91  
    92  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
    93  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
    94  	tu.AssertTrue(t, found, "No Oyafile found")
    95  
    96  	err = raw.AddImport("foo", "github.com/tooploox/foo")
    97  	tu.AssertNoErr(t, err, "Error adding import")
    98  	err = raw.AddImport("bar", "github.com/tooploox/bar")
    99  	tu.AssertNoErr(t, err, "Error adding import")
   100  
   101  	expectedContent := `Project: AddImport
   102  Import:
   103    bar: github.com/tooploox/bar
   104    foo: github.com/tooploox/foo
   105  `
   106  	tu.AssertFileContains(t, oyafilePath, expectedContent)
   107  }
   108  
   109  func TestOyafile_AddImport_AlreadyImported(t *testing.T) {
   110  	outputDir, err := ioutil.TempDir("", "oya")
   111  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
   112  	defer os.RemoveAll(outputDir)
   113  
   114  	oyafilePath := filepath.Join(outputDir, "Oyafile")
   115  	tu.MustCopyFile(t, "./fixtures/AddImport_ToExisting/Oyafile", oyafilePath)
   116  
   117  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
   118  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
   119  	tu.AssertTrue(t, found, "No Oyafile found")
   120  
   121  	err = raw.AddImport("foo", "github.com/tooploox/foo")
   122  	tu.AssertErr(t, err, "Expected an error trying to import the same pack twice")
   123  
   124  	expectedContent := `Project: AddImport_ToExisting
   125  
   126  Import:
   127    foo: github.com/tooploox/foo
   128  `
   129  	tu.AssertFileContains(t, oyafilePath, expectedContent)
   130  }