Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions base/util/test.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,3 +134,12 @@ func verifyStruct(t *testing.T, v reflect.Value, p path.ContextPath, fieldName s
// didn't find field
return false
}

func CompressDataURL(t *testing.T, contents []byte) (string, string) {
t.Helper()
uri, compression, err := MakeDataURL(contents, nil, true)
if err != nil {
t.Fatalf("MakeDataURL: %v", err)
}
return uri, *compression
Comment on lines +140 to +144

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

If MakeDataURL returns a nil pointer for compression (for example, if no compression is applied or in certain error/edge cases), dereferencing it directly with *compression will cause a runtime panic. It is safer to check if compression is nil before dereferencing it.

	uri, compression, err := MakeDataURL(contents, nil, true)
	if err != nil {
		t.Fatalf("MakeDataURL: %v", err)
	}
	var comp string
	if compression != nil {
		comp = *compression
	}
	return uri, comp

}
27 changes: 15 additions & 12 deletions base/v0_2/translate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ func init() {
// TestTranslateFile tests translating the ct storage.files.[i] entries to ignition storage.files.[i] entries.
func TestTranslateFile(t *testing.T) {
zzz := "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
zzz_gz := "data:;base64,H4sIAAAAAAAC/6oajAAQAAD//5tA8d+VAAAA"
zzzURI, zzzCompression := baseutil.CompressDataURL(t, []byte(zzz))
random := "\xc0\x9cl\x01\x89i\xa5\xbfW\xe4\x1b\xf4J_\xb79P\xa3#\xa7"
random_b64 := "data:;base64,wJxsAYlppb9X5Bv0Sl+3OVCjI6c="
randomURI, randomCompression := baseutil.CompressDataURL(t, []byte(random))

filesDir := t.TempDir()
fileContents := map[string]string{
Expand Down Expand Up @@ -477,21 +477,21 @@ func TestTranslateFile(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
Append: []types.Resource{
{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr("data:," + zzz),
Expand Down Expand Up @@ -962,6 +962,9 @@ RequiredBy=local-fs.target`),

// TestTranslateTree tests translating the butane storage.trees.[i] entries to ignition storage.files.[i] entries.
func TestTranslateTree(t *testing.T) {
deepPath := "tree/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/file"
deepPathURI, deepPathCompression := baseutil.CompressDataURL(t, []byte(deepPath))

tests := []struct {
options *common.TranslateOptions // defaulted if not specified
dirDirs map[string]os.FileMode // relative path -> mode
Expand Down Expand Up @@ -1109,8 +1112,8 @@ func TestTranslateTree(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr("data:;base64,H4sIAAAAAAAC/yopSk3VLy5NSsksIptKy8xJBQQAAP//gkRzjkgAAAA="),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(deepPathURI),
Compression: util.StrToPtr(deepPathCompression),
},
Mode: util.IntToPtr(0644),
},
Expand Down
27 changes: 15 additions & 12 deletions base/v0_3/translate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ func init() {
// TestTranslateFile tests translating the ct storage.files.[i] entries to ignition storage.files.[i] entries.
func TestTranslateFile(t *testing.T) {
zzz := "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
zzz_gz := "data:;base64,H4sIAAAAAAAC/6oajAAQAAD//5tA8d+VAAAA"
zzzURI, zzzCompression := baseutil.CompressDataURL(t, []byte(zzz))
random := "\xc0\x9cl\x01\x89i\xa5\xbfW\xe4\x1b\xf4J_\xb79P\xa3#\xa7"
random_b64 := "data:;base64,wJxsAYlppb9X5Bv0Sl+3OVCjI6c="
randomURI, randomCompression := baseutil.CompressDataURL(t, []byte(random))

filesDir := t.TempDir()
fileContents := map[string]string{
Expand Down Expand Up @@ -477,21 +477,21 @@ func TestTranslateFile(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
Append: []types.Resource{
{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr("data:," + zzz),
Expand Down Expand Up @@ -1116,6 +1116,9 @@ RequiredBy=remote-fs.target`),

// TestTranslateTree tests translating the butane storage.trees.[i] entries to ignition storage.files.[i] entries.
func TestTranslateTree(t *testing.T) {
deepPath := "tree/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/file"
deepPathURI, deepPathCompression := baseutil.CompressDataURL(t, []byte(deepPath))

tests := []struct {
options *common.TranslateOptions // defaulted if not specified
dirDirs map[string]os.FileMode // relative path -> mode
Expand Down Expand Up @@ -1263,8 +1266,8 @@ func TestTranslateTree(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr("data:;base64,H4sIAAAAAAAC/yopSk3VLy5NSsksIptKy8xJBQQAAP//gkRzjkgAAAA="),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(deepPathURI),
Compression: util.StrToPtr(deepPathCompression),
},
Mode: util.IntToPtr(0644),
},
Expand Down
27 changes: 15 additions & 12 deletions base/v0_4/translate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ func init() {
// TestTranslateFile tests translating the ct storage.files.[i] entries to ignition storage.files.[i] entries.
func TestTranslateFile(t *testing.T) {
zzz := "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
zzz_gz := "data:;base64,H4sIAAAAAAAC/6oajAAQAAD//5tA8d+VAAAA"
zzzURI, zzzCompression := baseutil.CompressDataURL(t, []byte(zzz))
random := "\xc0\x9cl\x01\x89i\xa5\xbfW\xe4\x1b\xf4J_\xb79P\xa3#\xa7"
random_b64 := "data:;base64,wJxsAYlppb9X5Bv0Sl+3OVCjI6c="
randomURI, randomCompression := baseutil.CompressDataURL(t, []byte(random))

filesDir := t.TempDir()
fileContents := map[string]string{
Expand Down Expand Up @@ -477,21 +477,21 @@ func TestTranslateFile(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
Append: []types.Resource{
{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr("data:," + zzz),
Expand Down Expand Up @@ -1201,6 +1201,9 @@ RequiredBy=swap.target`),

// TestTranslateTree tests translating the butane storage.trees.[i] entries to ignition storage.files.[i] entries.
func TestTranslateTree(t *testing.T) {
deepPath := "tree/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/file"
deepPathURI, deepPathCompression := baseutil.CompressDataURL(t, []byte(deepPath))

tests := []struct {
options *common.TranslateOptions // defaulted if not specified
dirDirs map[string]os.FileMode // relative path -> mode
Expand Down Expand Up @@ -1348,8 +1351,8 @@ func TestTranslateTree(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr("data:;base64,H4sIAAAAAAAC/yopSk3VLy5NSsksIptKy8xJBQQAAP//gkRzjkgAAAA="),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(deepPathURI),
Compression: util.StrToPtr(deepPathCompression),
},
Mode: util.IntToPtr(0644),
},
Expand Down
27 changes: 15 additions & 12 deletions base/v0_5/translate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ func init() {
// TestTranslateFile tests translating the ct storage.files.[i] entries to ignition storage.files.[i] entries.
func TestTranslateFile(t *testing.T) {
zzz := "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
zzz_gz := "data:;base64,H4sIAAAAAAAC/6oajAAQAAD//5tA8d+VAAAA"
zzzURI, zzzCompression := baseutil.CompressDataURL(t, []byte(zzz))
random := "\xc0\x9cl\x01\x89i\xa5\xbfW\xe4\x1b\xf4J_\xb79P\xa3#\xa7"
random_b64 := "data:;base64,wJxsAYlppb9X5Bv0Sl+3OVCjI6c="
randomURI, randomCompression := baseutil.CompressDataURL(t, []byte(random))

filesDir := t.TempDir()
fileContents := map[string]string{
Expand Down Expand Up @@ -477,21 +477,21 @@ func TestTranslateFile(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
Append: []types.Resource{
{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr("data:," + zzz),
Expand Down Expand Up @@ -1201,6 +1201,9 @@ RequiredBy=swap.target`),

// TestTranslateTree tests translating the butane storage.trees.[i] entries to ignition storage.files.[i] entries.
func TestTranslateTree(t *testing.T) {
deepPath := "tree/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/file"
deepPathURI, deepPathCompression := baseutil.CompressDataURL(t, []byte(deepPath))

tests := []struct {
options *common.TranslateOptions // defaulted if not specified
dirDirs map[string]os.FileMode // relative path -> mode
Expand Down Expand Up @@ -1348,8 +1351,8 @@ func TestTranslateTree(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr("data:;base64,H4sIAAAAAAAC/yopSk3VLy5NSsksIptKy8xJBQQAAP//gkRzjkgAAAA="),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(deepPathURI),
Compression: util.StrToPtr(deepPathCompression),
},
Mode: util.IntToPtr(0644),
},
Expand Down
27 changes: 15 additions & 12 deletions base/v0_6/translate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ func init() {
// TestTranslateFile tests translating the ct storage.files.[i] entries to ignition storage.files.[i] entries.
func TestTranslateFile(t *testing.T) {
zzz := "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
zzz_gz := "data:;base64,H4sIAAAAAAAC/6oajAAQAAD//5tA8d+VAAAA"
zzzURI, zzzCompression := baseutil.CompressDataURL(t, []byte(zzz))
random := "\xc0\x9cl\x01\x89i\xa5\xbfW\xe4\x1b\xf4J_\xb79P\xa3#\xa7"
random_b64 := "data:;base64,wJxsAYlppb9X5Bv0Sl+3OVCjI6c="
randomURI, randomCompression := baseutil.CompressDataURL(t, []byte(random))

filesDir := t.TempDir()
fileContents := map[string]string{
Expand Down Expand Up @@ -477,21 +477,21 @@ func TestTranslateFile(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
Append: []types.Resource{
{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr("data:," + zzz),
Expand Down Expand Up @@ -1201,6 +1201,9 @@ RequiredBy=swap.target`),

// TestTranslateTree tests translating the butane storage.trees.[i] entries to ignition storage.files.[i] entries.
func TestTranslateTree(t *testing.T) {
deepPath := "tree/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/file"
deepPathURI, deepPathCompression := baseutil.CompressDataURL(t, []byte(deepPath))

tests := []struct {
options *common.TranslateOptions // defaulted if not specified
dirDirs map[string]os.FileMode // relative path -> mode
Expand Down Expand Up @@ -1348,8 +1351,8 @@ func TestTranslateTree(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr("data:;base64,H4sIAAAAAAAC/yopSk3VLy5NSsksIptKy8xJBQQAAP//gkRzjkgAAAA="),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(deepPathURI),
Compression: util.StrToPtr(deepPathCompression),
},
Mode: util.IntToPtr(0644),
},
Expand Down
27 changes: 15 additions & 12 deletions base/v0_7/translate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ func init() {
// TestTranslateFile tests translating the ct storage.files.[i] entries to ignition storage.files.[i] entries.
func TestTranslateFile(t *testing.T) {
zzz := "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
zzz_gz := "data:;base64,H4sIAAAAAAAC/6oajAAQAAD//5tA8d+VAAAA"
zzzURI, zzzCompression := baseutil.CompressDataURL(t, []byte(zzz))
random := "\xc0\x9cl\x01\x89i\xa5\xbfW\xe4\x1b\xf4J_\xb79P\xa3#\xa7"
random_b64 := "data:;base64,wJxsAYlppb9X5Bv0Sl+3OVCjI6c="
randomURI, randomCompression := baseutil.CompressDataURL(t, []byte(random))

filesDir := t.TempDir()
fileContents := map[string]string{
Expand Down Expand Up @@ -477,21 +477,21 @@ func TestTranslateFile(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
Append: []types.Resource{
{
Source: util.StrToPtr(zzz_gz),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(zzzURI),
Compression: util.StrToPtr(zzzCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr(random_b64),
Compression: util.StrToPtr(""),
Source: util.StrToPtr(randomURI),
Compression: util.StrToPtr(randomCompression),
},
{
Source: util.StrToPtr("data:," + zzz),
Expand Down Expand Up @@ -1201,6 +1201,9 @@ RequiredBy=swap.target`),

// TestTranslateTree tests translating the butane storage.trees.[i] entries to ignition storage.files.[i] entries.
func TestTranslateTree(t *testing.T) {
deepPath := "tree/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/subdir/file"
deepPathURI, deepPathCompression := baseutil.CompressDataURL(t, []byte(deepPath))

tests := []struct {
options *common.TranslateOptions // defaulted if not specified
dirDirs map[string]os.FileMode // relative path -> mode
Expand Down Expand Up @@ -1349,8 +1352,8 @@ func TestTranslateTree(t *testing.T) {
},
FileEmbedded1: types.FileEmbedded1{
Contents: types.Resource{
Source: util.StrToPtr("data:;base64,H4sIAAAAAAAC/yopSk3VLy5NSsksIptKy8xJBQQAAP//gkRzjkgAAAA="),
Compression: util.StrToPtr("gzip"),
Source: util.StrToPtr(deepPathURI),
Compression: util.StrToPtr(deepPathCompression),
},
Mode: util.IntToPtr(0644),
},
Expand Down
Loading
Loading