diff --git a/yaml/tag_processor_test.go b/yaml/tag_processor_test.go index 79e9f5f80dc452b099176d922a7c4fc5eda008bf..e54ec041180e1fa31975ea9fdd9e789ebcdc2e2a 100644 --- a/yaml/tag_processor_test.go +++ b/yaml/tag_processor_test.go @@ -31,14 +31,34 @@ func TestTagProcessor(t *testing.T) { }`}, result) }) t.Run("!include", func(t *testing.T) { - file, err := testdata.FS.Open("include/include_simple.yaml") - require.NoError(t, err) - defer file.Close() + t.Run("simple", func(t *testing.T) { + file, err := testdata.FS.Open("include/include_simple.yaml") + require.NoError(t, err) + defer file.Close() - var result any - decoder := yaml.NewDecoder(file) - err = decoder.Decode(WithTagProcessor(testdata.FS)(&result)) - require.NoError(t, err) - assert.Equal(t, map[string]any{"data": map[string]any{"text": "Hello, World!"}}, result) + var result any + decoder := yaml.NewDecoder(file) + err = decoder.Decode(WithTagProcessor(testdata.FS)(&result)) + require.NoError(t, err) + assert.Equal(t, map[string]any{"data": map[string]any{"text": "Hello, World!"}}, result) + }) + t.Run("with merge", func(t *testing.T) { + file, err := testdata.FS.Open("include/include_merge.yaml") + require.NoError(t, err) + defer file.Close() + + var result any + decoder := yaml.NewDecoder(file) + err = decoder.Decode(WithTagProcessor(testdata.FS)(&result)) + require.NoError(t, err) + assert.Equal(t, map[string]any{ + "server": map[string]any{ + "host": "dev.perx.ru", + "port": 3000, + "ssl": true, + "tags": []any{"http", "api"}, + }, + }, result) + }) }) } diff --git a/yaml/testdata/include/default_server_config.yaml b/yaml/testdata/include/default_server_config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..eff5d022e1e6778243499803d37d589a96b813b9 --- /dev/null +++ b/yaml/testdata/include/default_server_config.yaml @@ -0,0 +1,4 @@ +host: localhost +port: 3000 +ssl: true +<<: !include include/default_server_tags.yaml \ No newline at end of file diff --git a/yaml/testdata/include/default_server_tags.yaml b/yaml/testdata/include/default_server_tags.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1f7c1497f5ea652c94b1e21fc48823147d728105 --- /dev/null +++ b/yaml/testdata/include/default_server_tags.yaml @@ -0,0 +1 @@ +tags: [ http, api ] \ No newline at end of file diff --git a/yaml/testdata/include/include_merge.yaml b/yaml/testdata/include/include_merge.yaml new file mode 100644 index 0000000000000000000000000000000000000000..894a9a91c0491a56663bb1e831ae9e0802727498 --- /dev/null +++ b/yaml/testdata/include/include_merge.yaml @@ -0,0 +1,3 @@ +server: + <<: !include include/default_server_config.yaml + host: dev.perx.ru \ No newline at end of file