...

Source file src/sigs.k8s.io/kustomize/kyaml/yaml/merge2/merge2_old_test.go

Documentation: sigs.k8s.io/kustomize/kyaml/yaml/merge2

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package merge2_test
     5  
     6  import (
     7  	"bytes"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"sigs.k8s.io/kustomize/kyaml/kio/filters"
    12  	"sigs.k8s.io/kustomize/kyaml/yaml"
    13  	. "sigs.k8s.io/kustomize/kyaml/yaml/merge2"
    14  )
    15  
    16  const dest = `
    17  apiVersion: apps/v1
    18  kind: Deployment
    19  metadata:
    20    name: app
    21    labels:
    22      app: java
    23    annotations:
    24      a.b.c: d.e.f
    25      g: h1
    26      i: j
    27      m: n2
    28  spec:
    29    template:
    30      spec:
    31        containers:
    32        - name: nginx
    33          image: nginx:1.7.9
    34          args: ['c', 'a', 'b']
    35          env:
    36          - name: DEMO_GREETING
    37            value: "Hello from the environment"
    38          - name: DEMO_FAREWELL
    39            value: "Such a sweet sorrow"
    40  `
    41  
    42  func TestMerge_map(t *testing.T) {
    43  	dest := yaml.MustParse(dest)
    44  	src := yaml.MustParse(`
    45  apiVersion: apps/v1
    46  kind: Deployment
    47  metadata:
    48    name: app
    49    labels:
    50      app: java
    51    annotations:
    52      a.b.c: d.e.f
    53      g: h2
    54      k: l
    55      m: n1
    56  `)
    57  
    58  	result, err := Merge(src, dest, yaml.MergeOptions{
    59  		ListIncreaseDirection: yaml.MergeOptionsListAppend,
    60  	})
    61  	if !assert.NoError(t, err) {
    62  		return
    63  	}
    64  	actual, err := result.String()
    65  	if !assert.NoError(t, err) {
    66  		return
    67  	}
    68  
    69  	expected := `
    70  apiVersion: apps/v1
    71  kind: Deployment
    72  metadata:
    73    name: app
    74    labels:
    75      app: java
    76    annotations:
    77      a.b.c: d.e.f
    78      g: h2
    79      i: j
    80      k: l
    81      m: n1
    82  spec:
    83    template:
    84      spec:
    85        containers:
    86        - name: nginx
    87          image: nginx:1.7.9
    88          args: ['c', 'a', 'b']
    89          env:
    90          - name: DEMO_GREETING
    91            value: "Hello from the environment"
    92          - name: DEMO_FAREWELL
    93            value: "Such a sweet sorrow"
    94  `
    95  	b, err := filters.FormatInput(bytes.NewBufferString(expected))
    96  	if !assert.NoError(t, err) {
    97  		return
    98  	}
    99  	expected = b.String()
   100  
   101  	b, err = filters.FormatInput(bytes.NewBufferString(actual))
   102  	if !assert.NoError(t, err) {
   103  		return
   104  	}
   105  	actual = b.String()
   106  
   107  	assert.Equal(t, expected, actual)
   108  }
   109  
   110  func TestMerge_clear(t *testing.T) {
   111  	dest := yaml.MustParse(dest)
   112  	src := yaml.MustParse(`
   113  apiVersion: apps/v1
   114  kind: Deployment
   115  metadata:
   116    annotations: null
   117  `)
   118  
   119  	result, err := Merge(src, dest, yaml.MergeOptions{
   120  		ListIncreaseDirection: yaml.MergeOptionsListAppend,
   121  	})
   122  	if !assert.NoError(t, err) {
   123  		return
   124  	}
   125  	actual, err := result.String()
   126  	if !assert.NoError(t, err) {
   127  		return
   128  	}
   129  
   130  	expected := `
   131  apiVersion: apps/v1
   132  kind: Deployment
   133  metadata:
   134    name: app
   135    labels:
   136      app: java
   137  spec:
   138    template:
   139      spec:
   140        containers:
   141        - name: nginx
   142          image: nginx:1.7.9
   143          args: ['c', 'a', 'b']
   144          env:
   145          - name: DEMO_GREETING
   146            value: "Hello from the environment"
   147          - name: DEMO_FAREWELL
   148            value: "Such a sweet sorrow"
   149  `
   150  	b, err := filters.FormatInput(bytes.NewBufferString(expected))
   151  	if !assert.NoError(t, err) {
   152  		return
   153  	}
   154  	expected = b.String()
   155  
   156  	b, err = filters.FormatInput(bytes.NewBufferString(actual))
   157  	if !assert.NoError(t, err) {
   158  		return
   159  	}
   160  	actual = b.String()
   161  
   162  	assert.Equal(t, expected, actual)
   163  }
   164  
   165  func TestMerge_mapInverse(t *testing.T) {
   166  	dest := yaml.MustParse(dest)
   167  	src := yaml.MustParse(`
   168  apiVersion: apps/v1
   169  kind: Deployment
   170  metadata:
   171    name: app
   172    labels:
   173      app: java
   174    annotations:
   175      a.b.c: d.e.f
   176      g: h2
   177      k: l
   178      m: n1
   179  `)
   180  
   181  	result, err := Merge(dest, src, yaml.MergeOptions{
   182  		ListIncreaseDirection: yaml.MergeOptionsListAppend,
   183  	})
   184  	if !assert.NoError(t, err) {
   185  		return
   186  	}
   187  	actual, err := result.String()
   188  	if !assert.NoError(t, err) {
   189  		return
   190  	}
   191  
   192  	expected := `
   193  apiVersion: apps/v1
   194  kind: Deployment
   195  metadata:
   196    name: app
   197    labels:
   198      app: java
   199    annotations:
   200      a.b.c: d.e.f
   201      g: h1
   202      i: j
   203      k: l
   204      m: n2
   205  spec:
   206    template:
   207      spec:
   208        containers:
   209        - name: nginx
   210          image: nginx:1.7.9
   211          args: ['c', 'a', 'b']
   212          env:
   213          - name: DEMO_GREETING
   214            value: "Hello from the environment"
   215          - name: DEMO_FAREWELL
   216            value: "Such a sweet sorrow"
   217  `
   218  	b, err := filters.FormatInput(bytes.NewBufferString(expected))
   219  	if !assert.NoError(t, err) {
   220  		return
   221  	}
   222  	expected = b.String()
   223  
   224  	b, err = filters.FormatInput(bytes.NewBufferString(actual))
   225  	if !assert.NoError(t, err) {
   226  		return
   227  	}
   228  	actual = b.String()
   229  
   230  	assert.Equal(t, expected, actual)
   231  }
   232  
   233  func TestMerge_listElem(t *testing.T) {
   234  	dest := yaml.MustParse(dest)
   235  	src := yaml.MustParse(`
   236  apiVersion: apps/v1
   237  kind: Deployment
   238  spec:
   239    template:
   240      spec:
   241        containers:
   242        - name: nginx
   243          env:
   244          - name: DEMO_GREETING
   245            value: "New Demo Greeting"
   246          - name: NEW_DEMO_VALUE
   247            value: "Another Env Not In The Dest"
   248  `)
   249  
   250  	result, err := Merge(src, dest, yaml.MergeOptions{
   251  		ListIncreaseDirection: yaml.MergeOptionsListAppend,
   252  	})
   253  	if !assert.NoError(t, err) {
   254  		return
   255  	}
   256  	actual, err := result.String()
   257  	if !assert.NoError(t, err) {
   258  		return
   259  	}
   260  
   261  	expected := `apiVersion: apps/v1
   262  kind: Deployment
   263  metadata:
   264    name: app
   265    labels:
   266      app: java
   267    annotations:
   268      a.b.c: d.e.f
   269      g: h1
   270      i: j
   271      m: n2
   272  spec:
   273    template:
   274      spec:
   275        containers:
   276        - name: nginx
   277          image: nginx:1.7.9
   278          args: ['c', 'a', 'b']
   279          env:
   280          - name: DEMO_GREETING
   281            value: "New Demo Greeting"
   282          - name: DEMO_FAREWELL
   283            value: "Such a sweet sorrow"
   284          - name: NEW_DEMO_VALUE
   285            value: "Another Env Not In The Dest"
   286  `
   287  
   288  	b, err := filters.FormatInput(bytes.NewBufferString(expected))
   289  	if !assert.NoError(t, err) {
   290  		return
   291  	}
   292  	expected = b.String()
   293  
   294  	b, err = filters.FormatInput(bytes.NewBufferString(actual))
   295  	if !assert.NoError(t, err) {
   296  		return
   297  	}
   298  	actual = b.String()
   299  
   300  	assert.Equal(t, expected, actual)
   301  }
   302  
   303  func TestMerge_list(t *testing.T) {
   304  	dest := yaml.MustParse(dest)
   305  	src := yaml.MustParse(`
   306  apiVersion: apps/v1
   307  kind: Deployment
   308  spec:
   309    template:
   310      spec:
   311        containers:
   312        - name: nginx
   313          args: ['e', 'd', 'f']
   314  `)
   315  
   316  	result, err := Merge(src, dest, yaml.MergeOptions{
   317  		ListIncreaseDirection: yaml.MergeOptionsListAppend,
   318  	})
   319  	if !assert.NoError(t, err) {
   320  		return
   321  	}
   322  	actual, err := result.String()
   323  	if !assert.NoError(t, err) {
   324  		return
   325  	}
   326  
   327  	expected := `apiVersion: apps/v1
   328  kind: Deployment
   329  metadata:
   330    name: app
   331    labels:
   332      app: java
   333    annotations:
   334      a.b.c: d.e.f
   335      g: h1
   336      i: j
   337      m: n2
   338  spec:
   339    template:
   340      spec:
   341        containers:
   342        - name: nginx
   343          image: nginx:1.7.9
   344          args: ['e', 'd', 'f']
   345          env:
   346          - name: DEMO_GREETING
   347            value: "Hello from the environment"
   348          - name: DEMO_FAREWELL
   349            value: "Such a sweet sorrow"
   350  `
   351  
   352  	b, err := filters.FormatInput(bytes.NewBufferString(expected))
   353  	if !assert.NoError(t, err) {
   354  		return
   355  	}
   356  	expected = b.String()
   357  
   358  	b, err = filters.FormatInput(bytes.NewBufferString(actual))
   359  	if !assert.NoError(t, err) {
   360  		return
   361  	}
   362  	actual = b.String()
   363  
   364  	assert.Equal(t, expected, actual)
   365  }
   366  
   367  func TestMerge_commentsKept(t *testing.T) {
   368  	actual, err := MergeStrings(`
   369  a:
   370    b:
   371      c: e
   372  `,
   373  		`
   374  a:
   375    b:
   376      # header comment
   377      c: d
   378  `, true, yaml.MergeOptions{
   379  			ListIncreaseDirection: yaml.MergeOptionsListAppend,
   380  		})
   381  	if !assert.NoError(t, err) {
   382  		return
   383  	}
   384  	assert.Equal(t, `a:
   385    b:
   386      # header comment
   387      c: e
   388  `, actual)
   389  
   390  	actual, err = MergeStrings(`
   391  a:
   392    b:
   393      c: e
   394  `,
   395  		`
   396  a:
   397    b:
   398      c: d
   399      # footer comment
   400  `, true, yaml.MergeOptions{
   401  			ListIncreaseDirection: yaml.MergeOptionsListAppend,
   402  		})
   403  	if !assert.NoError(t, err) {
   404  		return
   405  	}
   406  	assert.Equal(t, `a:
   407    b:
   408      c: e
   409      # footer comment
   410  `, actual)
   411  
   412  	actual, err = MergeStrings(`
   413  a:
   414    b:
   415      c: e
   416  `,
   417  		`
   418  a:
   419    b:
   420      c: d # line comment
   421  `, true, yaml.MergeOptions{
   422  			ListIncreaseDirection: yaml.MergeOptionsListAppend,
   423  		})
   424  	if !assert.NoError(t, err) {
   425  		return
   426  	}
   427  	assert.Equal(t, `a:
   428    b:
   429      c: e
   430  `, actual)
   431  }
   432  
   433  func TestMerge_commentsOverride(t *testing.T) {
   434  	actual, err := MergeStrings(`
   435  a:
   436    b:
   437      # header comment
   438      c: e
   439  `,
   440  		`
   441  a:
   442    b:
   443      # replace comment
   444      c: d
   445  `, true, yaml.MergeOptions{
   446  			ListIncreaseDirection: yaml.MergeOptionsListAppend,
   447  		})
   448  	if !assert.NoError(t, err) {
   449  		return
   450  	}
   451  	assert.Equal(t, `a:
   452    b:
   453      # replace comment
   454      c: e
   455  `, actual)
   456  
   457  	actual, err = MergeStrings(`
   458  a:
   459    b:
   460      c: e
   461      # footer comment
   462  `,
   463  		`
   464  a:
   465    b:
   466      c: d
   467      # replace comment
   468  `, true, yaml.MergeOptions{
   469  			ListIncreaseDirection: yaml.MergeOptionsListAppend,
   470  		})
   471  	if !assert.NoError(t, err) {
   472  		return
   473  	}
   474  	assert.Equal(t, `a:
   475    b:
   476      c: e
   477      # replace comment
   478  `, actual)
   479  
   480  	actual, err = MergeStrings(`
   481  a:
   482    b:
   483      c: e # line comment
   484  `,
   485  		`
   486  a:
   487    b:
   488      c: d # replace comment
   489  `, true, yaml.MergeOptions{
   490  			ListIncreaseDirection: yaml.MergeOptionsListAppend,
   491  		})
   492  	if !assert.NoError(t, err) {
   493  		return
   494  	}
   495  	assert.Equal(t, `a:
   496    b:
   497      c: e # line comment
   498  `, actual)
   499  
   500  	actual, err = MergeStrings(`
   501  a:
   502    b:
   503      c: d # line comment
   504  `,
   505  		`
   506  a:
   507    b:
   508      c: d # replace comment
   509  `, true, yaml.MergeOptions{
   510  			ListIncreaseDirection: yaml.MergeOptionsListAppend,
   511  		})
   512  	if !assert.NoError(t, err) {
   513  		return
   514  	}
   515  	assert.Equal(t, `a:
   516    b:
   517      c: d # line comment
   518  `, actual)
   519  }
   520  

View as plain text