From 3019df712a8c7decf64c6db547af9649590f6db2 Mon Sep 17 00:00:00 2001 From: Julien Vehent Date: Fri, 31 Jul 2015 13:31:23 -0400 Subject: [PATCH] Remove `name` and `aliases`, use `identifier` for everything --- src/scribe/document.go | 21 ++++------- src/scribe/modifier.go | 8 ++--- src/scribe/result.go | 8 ++--- src/scribe/scribe_test.go | 2 +- src/scribe/test.go | 54 +++++++++++++---------------- src/scribecmd/main.go | 2 +- test/concat/test-template.json | 31 +++++++---------- test/filecontent/test-template.json | 33 +++++++----------- test/package/test.json | 21 ++++------- 9 files changed, 71 insertions(+), 109 deletions(-) diff --git a/src/scribe/document.go b/src/scribe/document.go index 7d6066a..7220db0 100644 --- a/src/scribe/document.go +++ b/src/scribe/document.go @@ -31,11 +31,11 @@ func (d *Document) Validate() error { return nil } -// Return the names of all tests present in a document. -func (d *Document) GetTestNames() []string { +// Return the identifiers of all tests present in a document. +func (d *Document) GetTestIdentifiers() []string { ret := make([]string, 0) for _, x := range d.Tests { - ret = append(ret, x.Name) + ret = append(ret, x.Identifier) } return ret } @@ -54,19 +54,12 @@ func (d *Document) runTests() error { return nil } -// Return a pointer to a test instance. Will locate the test whos name matches -// name, or has an alias that matches name. -func (d *Document) getTest(name string) (*test, error) { +// Return a pointer to a test instance of the test whose identifier matches +func (d *Document) getTest(identifier string) (*test, error) { for i := range d.Tests { - if d.Tests[i].Name == name { + if d.Tests[i].Identifier == identifier { return &d.Tests[i], nil } - for _, x := range d.Tests[i].Aliases { - if x == name { - return &d.Tests[i], nil - } - } } - - return nil, fmt.Errorf("unknown test \"%v\"", name) + return nil, fmt.Errorf("unknown test \"%v\"", identifier) } diff --git a/src/scribe/modifier.go b/src/scribe/modifier.go index 393c7be..0e4952a 100644 --- a/src/scribe/modifier.go +++ b/src/scribe/modifier.go @@ -26,14 +26,14 @@ func (m *modifier) addMergeTarget(ms *modifierSource) { } type modifierSource struct { - Name string `json:"name"` - Select string `json:"select"` + Identifier string `json:"identifier"` + Select string `json:"select"` criteria modifierData } func (m *modifierSource) selectCriteria(t *test) error { - debugPrint("selectCriteria(): modifier selecting criteria from \"%v\"\n", t.Name) + debugPrint("selectCriteria(): modifier selecting criteria from \"%v\"\n", t.Identifier) // XXX Just support "all" for now, this could change to select specific // elements of the source criteria slice. if m.Select != "all" { @@ -43,7 +43,7 @@ func (m *modifierSource) selectCriteria(t *test) error { if s == nil { return fmt.Errorf("source has no valid interface") } - m.criteria.testName = t.Name + m.criteria.testName = t.Identifier m.criteria.criteria = s.getCriteria() debugPrint("selectCriteria(): copied %v criteria elements\n", len(m.criteria.criteria)) return nil diff --git a/src/scribe/result.go b/src/scribe/result.go index 30af2f2..4b468cf 100644 --- a/src/scribe/result.go +++ b/src/scribe/result.go @@ -44,8 +44,6 @@ func GetResults(d *Document, name string) (TestResult, error) { return TestResult{}, err } ret := TestResult{} - ret.Name = t.Name - ret.Aliases = t.Aliases ret.Identifier = t.Identifier if t.err != nil { ret.Error = fmt.Sprintf("%v", t.err) @@ -77,7 +75,7 @@ func (r *TestResult) SingleLineResults() []string { rs = "[false]" } } - buf := fmt.Sprintf("master %v name:\"%v\" hastrue:%v error:\"%v\"", rs, r.Name, r.HasTrueResults, r.Error) + buf := fmt.Sprintf("master %v name:\"%v\" hastrue:%v error:\"%v\"", rs, r.Identifier, r.HasTrueResults, r.Error) lns = append(lns, buf) for _, x := range r.Results { @@ -86,7 +84,7 @@ func (r *TestResult) SingleLineResults() []string { } else { rs = "[false]" } - buf := fmt.Sprintf("sub %v name:\"%v\" identifier:\"%v\"", rs, r.Name, x.Identifier) + buf := fmt.Sprintf("sub %v name:\"%v\" identifier:\"%v\"", rs, r.Identifier, x.Identifier) lns = append(lns, buf) } @@ -97,7 +95,7 @@ func (r *TestResult) SingleLineResults() []string { // suitable for display. func (r *TestResult) String() string { lns := make([]string, 0) - lns = append(lns, fmt.Sprintf("result for \"%v\"", r.Name)) + lns = append(lns, fmt.Sprintf("result for \"%v\"", r.Identifier)) if r.MasterResult { lns = append(lns, "\tmaster result: true") } else { diff --git a/src/scribe/scribe_test.go b/src/scribe/scribe_test.go index ee7846d..b0bea80 100644 --- a/src/scribe/scribe_test.go +++ b/src/scribe/scribe_test.go @@ -53,7 +53,7 @@ func Example() { return } // Grab the results for the test, most of the time you would loop - // through the results of GetTestNames() rather then call a result + // through the results of GetTestIdentifiers() rather then call a result // directly. result, err := scribe.GetResults(&doc, "example") if err != nil { diff --git a/src/scribe/test.go b/src/scribe/test.go index cdf9c66..e49f641 100644 --- a/src/scribe/test.go +++ b/src/scribe/test.go @@ -12,19 +12,18 @@ import ( ) type test struct { - Name string `json:"name"` Identifier string `json:"identifier"` - Aliases []string `json:"aliases"` - Package pkg `json:"package"` - Raw raw `json:"raw"` - Modifier modifier `json:"modifier"` - FileContent filecontent `json:"filecontent"` - FileName filename `json:"filename"` - EVR evrtest `json:"evr"` - Regexp regex `json:"regexp"` - If []string `json:"if"` + Description string `json:"description,omitempty"` + Package pkg `json:"package,omitempty"` + Raw raw `json:"raw,omitempty"` + Modifier modifier `json:"modifier,omitempty"` + FileContent filecontent `json:"filecontent,omitempty"` + FileName filename `json:"filename,omitempty"` + EVR evrtest `json:"evr,omitempty"` + Regexp regex `json:"regexp,omitempty"` + If []string `json:"if,omitempty"` - Expected bool `json:"expectedresult"` + Expected bool `json:"expectedresult,omitempty"` prepared bool // True if test has been prepared. evaluated bool // True if test has been evaluated at least once. @@ -72,47 +71,42 @@ type genericEvaluator interface { } func (t *test) validate(d *Document) error { - if len(t.Name) == 0 { + if len(t.Identifier) == 0 { return fmt.Errorf("a test in document has no name") } if len(t.Identifier) == 0 { - return fmt.Errorf("%v: no identifier", t.Name) + return fmt.Errorf("%v: no identifier", t.Identifier) } si := t.getSourceInterface() if si == nil { - return fmt.Errorf("%v: no valid source interface", t.Name) + return fmt.Errorf("%v: no valid source interface", t.Identifier) } err := si.validate() if err != nil { - return fmt.Errorf("%v: %v", t.Name, err) + return fmt.Errorf("%v: %v", t.Identifier, err) } // If this is a modifier, ensure the modifier sources are valid. if si.isModifier() { for _, x := range t.Modifier.Sources { - _, err := d.getTest(x.Name) + _, err := d.getTest(x.Identifier) if err != nil { - return fmt.Errorf("%v: %v", t.Name, err) + return fmt.Errorf("%v: %v", t.Identifier, err) } if x.Select != "all" { - return fmt.Errorf("%v: modifier source must include selector", t.Name) + return fmt.Errorf("%v: modifier source must include selector", t.Identifier) } } } if t.getEvaluationInterface() == nil { - return fmt.Errorf("%v: no valid evaluation interface", t.Name) - } - for _, x := range t.Aliases { - if len(x) == 0 { - return fmt.Errorf("%v: bad alias within test", t.Name) - } + return fmt.Errorf("%v: no valid evaluation interface", t.Identifier) } for _, x := range t.If { ptr, err := d.getTest(x) if err != nil { - return fmt.Errorf("%v: %v", t.Name, err) + return fmt.Errorf("%v: %v", t.Identifier, err) } if ptr == t { - return fmt.Errorf("%v: test cannot reference itself", t.Name) + return fmt.Errorf("%v: test cannot reference itself", t.Identifier) } } return nil @@ -153,9 +147,9 @@ func (t *test) prepare(d *Document) error { // If this test is a modifier, prepare all the source tests first. if len(t.Modifier.Sources) != 0 { - debugPrint("prepare(): readying modifier \"%v\"\n", t.Name) + debugPrint("prepare(): readying modifier \"%v\"\n", t.Identifier) for i := range t.Modifier.Sources { - nm := t.Modifier.Sources[i].Name + nm := t.Modifier.Sources[i].Identifier debugPrint("prepare(): preparing modifier source \"%v\"\n", nm) dt, err := d.getTest(nm) if err != nil { @@ -200,7 +194,7 @@ func (t *test) runTest(d *Document) error { return t.err } - debugPrint("runTest(): running \"%v\"\n", t.Name) + debugPrint("runTest(): running \"%v\"\n", t.Identifier) t.evaluated = true // First, see if this test has any dependencies. If so, run those // before we execute this one. @@ -267,7 +261,7 @@ func (t *test) runTest(d *Document) error { // validate it and call the handler if required. if sRuntime.excall != nil { if t.masterResult != t.Expected { - tr, err := GetResults(d, t.Name) + tr, err := GetResults(d, t.Identifier) if err != nil { panic("GetResults() in expected handler") } diff --git a/src/scribecmd/main.go b/src/scribecmd/main.go index 57b4ab7..4482680 100644 --- a/src/scribecmd/main.go +++ b/src/scribecmd/main.go @@ -85,7 +85,7 @@ func main() { os.Exit(1) } - for _, x := range doc.GetTestNames() { + for _, x := range doc.GetTestIdentifiers() { tr, err := scribe.GetResults(&doc, x) if err != nil { fmt.Fprintf(os.Stderr, "error obtaining results for \"%v\": %v\n", x, err) diff --git a/test/concat/test-template.json b/test/concat/test-template.json index b31a094..ae6db7a 100644 --- a/test/concat/test-template.json +++ b/test/concat/test-template.json @@ -5,8 +5,7 @@ "tests": [ { - "name": "filename0", - "identifier": "test0", + "identifier": "filename0", "expectedresult": true, "filecontent": { "path": "${root}", @@ -16,8 +15,7 @@ }, { - "name": "filename1", - "identifier": "test1", + "identifier": "filename1", "expectedresult": true, "filecontent": { "path": "${root}", @@ -27,8 +25,7 @@ }, { - "name": "modifier0", - "identifier": "test2", + "identifier": "modifier0", "expectedresult": false, "modifier": { "concat": { @@ -40,8 +37,7 @@ }, { - "name": "modifier1", - "identifier": "test3", + "identifier": "modifier1", "expectedresult": true, "modifier": { "concat": { @@ -49,7 +45,7 @@ }, "sources": [ { - "name": "filename0", + "identifier": "filename0", "select": "all" } ] @@ -57,8 +53,7 @@ }, { - "name": "modifier2", - "identifier": "test4", + "identifier": "modifier2", "expectedresult": true, "modifier": { "concat": { @@ -66,7 +61,7 @@ }, "sources": [ { - "name": "filename0", + "identifier": "filename0", "select": "all" } ] @@ -78,8 +73,7 @@ }, { - "name": "modifier3", - "identifier": "test5", + "identifier": "modifier3", "expectedresult": true, "modifier": { "concat": { @@ -87,7 +81,7 @@ }, "sources": [ { - "name": "filename0", + "identifier": "filename0", "select": "all" } ] @@ -98,8 +92,7 @@ }, { - "name": "modifier4", - "identifier": "test6", + "identifier": "modifier4", "expectedresult": true, "modifier": { "concat": { @@ -107,11 +100,11 @@ }, "sources": [ { - "name": "filename0", + "identifier": "filename0", "select": "all" }, { - "name": "filename1", + "identifier": "filename1", "select": "all" } ] diff --git a/test/filecontent/test-template.json b/test/filecontent/test-template.json index 7556e83..7231f25 100644 --- a/test/filecontent/test-template.json +++ b/test/filecontent/test-template.json @@ -5,9 +5,8 @@ "tests": [ { - "name": "simplecontent0", - "aliases": [ "no such file test" ], - "identifier": "test0", + "identifier": "simplecontent0", + "description": "no such file test", "expectedresult": false, "filecontent": { "path": "${root}", @@ -17,8 +16,7 @@ }, { - "name": "simplecontent1", - "identifier": "test1", + "identifier": "simplecontent1", "expectedresult": true, "filecontent": { "path": "${root}", @@ -28,8 +26,7 @@ }, { - "name": "simplecontent2", - "identifier": "test2", + "identifier": "simplecontent2", "expectedresult": true, "filecontent": { "path": "${root}", @@ -42,8 +39,7 @@ }, { - "name": "simplecontent3", - "identifier": "test3", + "identifier": "simplecontent3", "expectedresult": true, "filecontent": { "path": "${root}", @@ -56,8 +52,7 @@ }, { - "name": "filecontent0", - "identifier": "test4", + "identifier": "filecontent0", "expectedresult": true, "filecontent": { "path": "${root}", @@ -71,8 +66,7 @@ }, { - "name": "filecontent1", - "identifier": "test5", + "identifier": "filecontent1", "expectedresult": false, "filecontent": { "path": "${root}", @@ -83,12 +77,11 @@ "operation": "<", "value": "0.6" }, - "if": [ "no such file test" ] + "if": [ "simplecontent0" ] }, { - "name": "filecontent2", - "identifier": "test6", + "identifier": "filecontent2", "expectedresult": true, "filecontent": { "path": "${root}", @@ -103,9 +96,8 @@ }, { - "name": "filecontent3", - "aliases": [ "version is ok" ], - "identifier": "test5", + "identifier": "filecontent3", + "description": "version is ok", "expectedresult": false, "filecontent": { "path": "${root}", @@ -119,8 +111,7 @@ }, { - "name": "anyfile0", - "identifier": "test6", + "identifier": "anyfile0", "expectedresult": true, "filecontent": { "path": "${root}/data", diff --git a/test/package/test.json b/test/package/test.json index 87d0783..4f8e4fd 100644 --- a/test/package/test.json +++ b/test/package/test.json @@ -1,8 +1,7 @@ { "tests": [ { - "name": "package0", - "identifier": "test0", + "identifier": "package0", "expectedresult": true, "package": { "name": "openssl" @@ -10,8 +9,7 @@ }, { - "name": "package1", - "identifier": "test1", + "identifier": "package1", "expectedresult": true, "package": { "name": "libbind" @@ -23,8 +21,7 @@ }, { - "name": "package2", - "identifier": "test2", + "identifier": "package2", "expectedresult": false, "package": { "name": "grub-common" @@ -36,8 +33,7 @@ }, { - "name": "package3", - "identifier": "test3", + "identifier": "package3", "expectedresult": false, "package": { "name": "grub-common" @@ -49,8 +45,7 @@ }, { - "name": "package4", - "identifier": "test4", + "identifier": "package4", "expectedresult": false, "package": { "name": "grub-common" @@ -62,8 +57,7 @@ }, { - "name": "package5", - "identifier": "test5", + "identifier": "package5", "expectedresult": false, "package": { "name": "grub-common" @@ -76,8 +70,7 @@ }, { - "name": "package6", - "identifier": "test6", + "identifier": "package6", "expectedresult": false, "package": { "name": "openssl"