chop-dbhi / data-models-validator

Set of tools for validating data that should conform to a data model.
1 stars 2 forks source link

Data model version defaults/errors #5

Closed gracebrownecodes closed 8 years ago

gracebrownecodes commented 8 years ago

This behavior seems a little strange to me:

[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 2.2
Validating against model 'pedsnet/2.0.0'
[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 2.2.0
Validating against model 'pedsnet/2.0.0'
[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 2
Validating against model 'pedsnet/2.0.0'
[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 2.1
Validating against model 'pedsnet/2.0.0'
[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 0.3
Validating against model 'pedsnet/2.0.0'
[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 1.0.0
Validating against model 'pedsnet/1.0.0'
[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 1.1
error decoding model revisions: invalid character '<' looking for beginning of value
[brownea@reslnpedsndb02 2015-08-25T09:29]$ data-models-validator -model pedsnet -version 1.1.0
error decoding model revisions: invalid character '<' looking for beginning of value

I would expect the version argument to accept 2 instead of 2.0.0, but not to coerce 2.2 (and 0.3) into 2.0.0. Also, the error reported for a 1.1 input is not very informative.

@bruth If you point me to the right place in the code, I would like to give fixing this a shot. Been meaning to give Go a shot for a while now...

gracebrownecodes commented 8 years ago

OK, I think its something wrong with this code. Perhaps it should look like the below?

    if version == "" {
        model = revisions.Latest()
    } else {
        var versions []string
        var found := false

        for _, model = range revisions.List() {
            if strings.HasPrefix(model.Version, version) {
                found = true
                break
            }

            versions = append(versions, model.Version)
        }

        if found == false {
            fmt.Printf("model %s has versions: %s\n", model, strings.Join(versions, ", "))
            os.Exit(1)
        }
    }
bruth commented 8 years ago

Fixed in dfab50f8649b324