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 }