From f9bd5f01ac690a2d183ed7cf0c92954cd7d252ab Mon Sep 17 00:00:00 2001 From: Tigran Najaryan Date: Mon, 4 Oct 2021 16:36:47 +0400 Subject: [PATCH] Accept io.Reader in Parse() --- schema/v1.0/parser.go | 19 +++++++++++++++---- schema/v1.0/parser_test.go | 6 +++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/schema/v1.0/parser.go b/schema/v1.0/parser.go index e2ee937ec02..d52d6e8e243 100644 --- a/schema/v1.0/parser.go +++ b/schema/v1.0/parser.go @@ -16,12 +16,14 @@ package schema // import "go.opentelemetry.io/otel/schema/v1.0" import ( "fmt" + "io" "io/ioutil" "net/url" + "os" "strconv" "strings" - semver "github.com/Masterminds/semver/v3" + "github.com/Masterminds/semver/v3" "gopkg.in/yaml.v2" "go.opentelemetry.io/otel/schema/v1.0/ast" @@ -37,10 +39,19 @@ const supportedFormatMinor = 0 var supportedFormatMajorMinor = strconv.Itoa(supportedFormatMajor) + "." + strconv.Itoa(supportedFormatMinor) // 1.0 -// Parse a schema file. schemaFile is the file path. -func Parse(schemaFile string) (*ast.Schema, error) { +// ParseFile a schema file. schemaFilePath is the file path. +func ParseFile(schemaFilePath string) (*ast.Schema, error) { + file, err := os.Open(schemaFilePath) + if err != nil { + return nil, err + } + return Parse(file) +} + +// Parse a schema file. schemaFileContent is the readable content of the schema file. +func Parse(schemaFileContent io.Reader) (*ast.Schema, error) { var ts ast.Schema - schemaContent, err := ioutil.ReadFile(schemaFile) + schemaContent, err := ioutil.ReadAll(schemaFileContent) if err != nil { return nil, err } diff --git a/schema/v1.0/parser_test.go b/schema/v1.0/parser_test.go index a4e4f650424..91628a395bb 100644 --- a/schema/v1.0/parser_test.go +++ b/schema/v1.0/parser_test.go @@ -22,17 +22,17 @@ import ( ) func TestParseSchema(t *testing.T) { - ts, err := Parse("testdata/valid-example.yaml") + ts, err := ParseFile("testdata/valid-example.yaml") require.NoError(t, err) require.NotNil(t, ts) } func TestFailParseSchema(t *testing.T) { - ts, err := Parse("testdata/unsupported-file-format.yaml") + ts, err := ParseFile("testdata/unsupported-file-format.yaml") require.Error(t, err) require.Nil(t, ts) - ts, err = Parse("testdata/invalid-schema-url.yaml") + ts, err = ParseFile("testdata/invalid-schema-url.yaml") require.Error(t, err) require.Nil(t, ts) }