github.com/bilus/oya@v0.0.3-0.20190301162104-da4acbd394c6/pkg/raw/requires_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_AddRequire_NoRequire(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/AddRequire/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  	pack := tu.MustMakeMockPack("github.com/tooploox/foo", "v1.0.0")
    26  	err = raw.AddRequire(pack)
    27  	tu.AssertNoErr(t, err, "Error adding require")
    28  
    29  	expectedContent := `Project: AddRequire
    30  Require:
    31    github.com/tooploox/foo: v1.0.0
    32  `
    33  	tu.AssertFileContains(t, oyafilePath, expectedContent)
    34  }
    35  
    36  func TestOyafile_AddRequire_EmptyRequire(t *testing.T) {
    37  	outputDir, err := ioutil.TempDir("", "oya")
    38  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
    39  	defer os.RemoveAll(outputDir)
    40  
    41  	oyafilePath := filepath.Join(outputDir, "Oyafile")
    42  	tu.MustCopyFile(t, "./fixtures/AddRequire_EmptyRequire/Oyafile", oyafilePath)
    43  
    44  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
    45  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
    46  	tu.AssertTrue(t, found, "No Oyafile found")
    47  
    48  	pack := tu.MustMakeMockPack("github.com/tooploox/foo", "v1.0.0")
    49  	err = raw.AddRequire(pack)
    50  	tu.AssertNoErr(t, err, "Error adding require")
    51  
    52  	expectedContent := `Project: AddRequire_EmptyRequire
    53  
    54  Require:
    55    github.com/tooploox/foo: v1.0.0
    56  `
    57  	tu.AssertFileContains(t, oyafilePath, expectedContent)
    58  }
    59  
    60  func TestOyafile_AddRequire_ExistingRequire(t *testing.T) {
    61  	outputDir, err := ioutil.TempDir("", "oya")
    62  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
    63  	defer os.RemoveAll(outputDir)
    64  
    65  	oyafilePath := filepath.Join(outputDir, "Oyafile")
    66  	tu.MustCopyFile(t, "./fixtures/AddRequire_ExistingRequire/Oyafile", oyafilePath)
    67  
    68  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
    69  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
    70  	tu.AssertTrue(t, found, "No Oyafile found")
    71  
    72  	pack := tu.MustMakeMockPack("github.com/tooploox/bar", "v1.1.0")
    73  	err = raw.AddRequire(pack)
    74  	tu.AssertNoErr(t, err, "Error adding require")
    75  
    76  	expectedContent := `Project: AddRequire_ExistingRequire
    77  
    78  Require:
    79    github.com/tooploox/bar: v1.1.0
    80    github.com/tooploox/foo: v1.0.0
    81  `
    82  	tu.AssertFileContains(t, oyafilePath, expectedContent)
    83  }
    84  
    85  func TestOyafile_AddRequire_SameVersion(t *testing.T) {
    86  	outputDir, err := ioutil.TempDir("", "oya")
    87  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
    88  	defer os.RemoveAll(outputDir)
    89  
    90  	oyafilePath := filepath.Join(outputDir, "Oyafile")
    91  	tu.MustCopyFile(t, "./fixtures/AddRequire_ExistingRequire/Oyafile", oyafilePath)
    92  
    93  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
    94  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
    95  	tu.AssertTrue(t, found, "No Oyafile found")
    96  
    97  	pack := tu.MustMakeMockPack("github.com/tooploox/foo", "v1.0.0")
    98  	err = raw.AddRequire(pack)
    99  	tu.AssertNoErr(t, err, "Error adding require")
   100  
   101  	expectedContent := `Project: AddRequire_ExistingRequire
   102  
   103  Require:
   104    github.com/tooploox/foo: v1.0.0
   105  `
   106  	tu.AssertFileContains(t, oyafilePath, expectedContent)
   107  }
   108  
   109  func TestOyafile_AddRequire_DifferentVersion(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/AddRequire_ExistingRequire/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  	pack := tu.MustMakeMockPack("github.com/tooploox/foo", "v1.1.0")
   122  	err = raw.AddRequire(pack)
   123  	tu.AssertNoErr(t, err, "Error adding require")
   124  
   125  	expectedContent := `Project: AddRequire_ExistingRequire
   126  
   127  Require:
   128    github.com/tooploox/foo: v1.1.0
   129  `
   130  	tu.AssertFileContains(t, oyafilePath, expectedContent)
   131  }
   132  
   133  func TestOyafile_AddRequire_MoreKeys(t *testing.T) {
   134  	outputDir, err := ioutil.TempDir("", "oya")
   135  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
   136  	defer os.RemoveAll(outputDir)
   137  
   138  	oyafilePath := filepath.Join(outputDir, "Oyafile")
   139  	tu.MustCopyFile(t, "./fixtures/AddRequire_MoreKeys/Oyafile", oyafilePath)
   140  
   141  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
   142  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
   143  	tu.AssertTrue(t, found, "No Oyafile found")
   144  
   145  	pack := tu.MustMakeMockPack("github.com/tooploox/bar", "v1.1.0")
   146  	err = raw.AddRequire(pack)
   147  	tu.AssertNoErr(t, err, "Error adding require")
   148  
   149  	expectedContent := `Project: AddRequire_MoreKeys
   150  Require:
   151    github.com/tooploox/bar: v1.1.0
   152  
   153  Values:
   154    foo: bar
   155  `
   156  	tu.AssertFileContains(t, oyafilePath, expectedContent)
   157  }
   158  
   159  func TestOyafile_AddRequire_DifferentVersionMoreKeys(t *testing.T) {
   160  	outputDir, err := ioutil.TempDir("", "oya")
   161  	tu.AssertNoErr(t, err, "Error creating temporary output dir")
   162  	defer os.RemoveAll(outputDir)
   163  
   164  	oyafilePath := filepath.Join(outputDir, "Oyafile")
   165  	tu.MustCopyFile(t, "./fixtures/AddRequire_ExistingMoreKeys/Oyafile", oyafilePath)
   166  
   167  	raw, found, err := raw.Load(oyafilePath, oyafilePath)
   168  	tu.AssertNoErr(t, err, "Error loading raw Oyafile")
   169  	tu.AssertTrue(t, found, "No Oyafile found")
   170  
   171  	pack := tu.MustMakeMockPack("github.com/tooploox/bar", "v1.5.0")
   172  	err = raw.AddRequire(pack)
   173  	tu.AssertNoErr(t, err, "Error adding require")
   174  
   175  	expectedContent := `Project: AddRequire_ExistingMoreKeys
   176  
   177  # It's before Require on purpose; we want to test whether matching
   178  # for require entries is effective only under the Require: key.
   179  Values:
   180    foo: bar
   181  
   182  Require:
   183    github.com/tooploox/bar: v1.5.0
   184  `
   185  	tu.AssertFileContains(t, oyafilePath, expectedContent)
   186  }