Code Monkey home page Code Monkey logo

Comments (8)

kingsleyh avatar kingsleyh commented on June 30, 2024

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"there are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field","alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"line":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name":"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-data-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ","name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{"cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d","description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows with the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]","-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line":75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ","rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"line":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-validation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line":114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invalid value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells":["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword":"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place decimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 place decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":179},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line":194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0"],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given ","rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique"],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword":"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status":"passed","duration":21000}}],"keyword":"Scenario","type":"scenario","name":"Maximum lengths","id":"number-of-characters-validation;maximum-lengths","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":28,"steps":[{"line":30,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type","number of charaters"],"line":31},{"cells":["No Requirement","",""],"line":32},{"cells":["5 exactly","exactly","5"],"line":33}],"name":"the following attribute definitions"},{"line":35,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":36},{"cells":["","Test12"],"line":37}],"name":"I validate a field with more characters than allowed"},{"line":38,"keyw ord":"Then ","rows":[{"cells":["lineNumber","(1)5 exactlyErrors","5 exactly"],"line":39},{"cells":["2","[5 CHARs REQUIRED]","Test12"],"line":40}],"name":"there is 1 error"},{"line":42,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":43},{"cells":["","Test"],"line":44}],"name":"I validate a field with fewer characters than allowed"},{"line":45,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)5 exactlyErrors","5 exactly"],"line":46},{"cells":["2","[5 CHARs REQUIRED]","Test"],"line":47}],"name":"there is 1 error"},{"line":49,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":50},{"cells":["","Test1"],"line":51}],"name":"I validate a field with exactly the number of characters allowed"},{"line":52,"keyword":"Then ","name":"there are no errors"},{"line":54,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":55},{"cells":["",""],"line":56}],"name":"I validate a field with no characters at all (empty)"},{"line": 57,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status":"passed","duration":36000}}],"keyword":"Scenario","type":"scenario","name":"Exact length","id":"number-of-characters-validation;exact-length","description":""}],"keyword":"Feature","name":"Number of characters validation","id":"number-of-characters-validation","uri":"com/scholastic/util/scrubber/numchars.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":5,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":8},{"cells":["Field","Required"],"line":9},{"cells":["Other Field",""],"line":10}],"name":"the following attribute definitions"},{"line":12,"keyword":"When ","rows":[{"cells":["Field","Other Field"],"line":13},{"cells":["Test1","Foo"],"l ine":14}],"name":"I validate a row with all fields present"},{"line":15,"keyword":"Then ","name":"there are no errors"},{"line":17,"keyword":"When ","rows":[{"cells":["Field","Other Field"],"line":18},{"cells":["","Foo"],"line":19}],"name":"I validate a row with required field missing"},{"line":20,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":21},{"cells":["2","[INVALID NULL, required ]",""],"line":22}],"name":"there is 1 error","result":{"status":"passed","duration":629000}}],"keyword":"Scenario","type":"scenario","name":"Required field","id":"required-validation;required-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":24,"steps":[{"line":26,"keyword":"Given ","rows":[{"cells":["TSO Attribu te","Required Field"],"line":27},{"cells":["Field","Required blah"],"line":28}],"name":"the following attribute definitions"},{"line":30,"keyword":"When ","rows":[{"cells":["Field","Other Field"],"line":31},{"cells":["","Foo"],"line":32}],"name":"I validate a row with required field missing"},{"line":33,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors because the Required rule was not processed","result":{"status":"passed","duration":18000}}],"keyword":"Scenario","type":"scenario","name":"Required field with extra characters","id":"required-validation;required-field-with-extra-characters","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":77,"steps":[{"line":79,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":80},{"cells":["Conditional","required if "Optio nal" exists"],"line":81},{"cells":["Optional",""],"line":82}],"name":"the following attribute definitions"},{"line":84,"keyword":"When ","rows":[{"cells":["Conditional","Optional"],"line":85},{"cells":["",""],"line":86}],"name":"I validate a row with a conditional field missing and its condition is false"},{"line":87,"keyword":"Then ","name":"there are no errors"},{"line":89,"keyword":"When ","rows":[{"cells":["Conditional","Optional"],"line":90},{"cells":["","Test3"],"line":91}],"name":"I validate a row with a conditional field missing and its condition is true"},{"line":93,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":94},{"cells":["2","[INVALID NULL, required ]",""],"line":95}],"name":"there is 1 error","result":{"status":"passed","duration":266000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally requi red field","id":"required-validation;conditionally-required-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":97,"steps":[{"line":99,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":100},{"cells":["Field","Required if"],"line":101}],"name":"the following attribute definitions"},{"line":103,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":"passed","duration":202000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required field missing conditional field name","id":"required-validation;conditionally-required-field-missing-conditional-field-name","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are abs ent","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":108},{"cells":["Conditional","required if "Optional" exists"],"line":109}],"name":"the following attribute definitions"},{"line":111,"match":{"location":"ScrubberStepDefs.the_attributes_are_parsed()"},"keyword":"Then ","name":"the attributes are parsed","result":{"status":"passed","duration":324000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required field missing conditional field","id":"required-validation;conditionally-required-field-missing-conditional-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":114,"steps":[{"line":116,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":117},{"cells":["Conditional","required if "Value" not in\t["foo"]"],"line ":118},{"cells":["Value",""],"line":119}],"name":"the following attribute definitions"},{"line":121,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":122},{"cells":["Test2","Test3"],"line":123}],"name":"I validate a row with all fields present"},{"line":124,"keyword":"Then ","name":"there are no errors"},{"line":126,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":127},{"cells":["Test2","foo"],"line":128}],"name":"I validate a row with all fields present and value member of list"},{"line":129,"keyword":"Then ","name":"there are no errors"},{"line":131,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":132},{"cells":["","foo"],"line":133}],"name":"I validate a row with conditional field missing and value is member of list"},{"line":134,"keyword":"Then ","name":"there are no errors"},{"line":136,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":137},{"cells":["","Test"],"line":138}],"name":"I validate a row with c onditional field missing and value not member of list"},{"line":139,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":140},{"cells":["2","[INVALID NULL, required ]",""],"line":141}],"name":"there is 1 error","result":{"status":"passed","duration":208000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required if not member of list","id":"required-validation;conditionally-required-if-not-member-of-list","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":143,"steps":[{"line":145,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":146},{"cells":["Conditional","required if "Value" in\t["foo", "bar"]"],"line":147},{"cells":["Value",""],"line":148}],"n ame":"the following attribute definitions"},{"line":150,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":151},{"cells":["Test2","Test3"],"line":152}],"name":"I validate a row with all fields present"},{"line":153,"keyword":"Then ","name":"there are no errors"},{"line":155,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":156},{"cells":["Test2","foo"],"line":157}],"name":"I validate a row with all fields present and value member of list"},{"line":158,"keyword":"Then ","name":"there are no errors"},{"line":160,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":161},{"cells":["","foo"],"line":162}],"name":"I validate a row with conditional field missing and value is member of list"},{"line":163,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":164},{"cells":["2","[INVALID NULL, required ]",""],"line":165}],"name":"there is 1 error"},{"line":167,"keyword":"When ","rows":[{"cells":["Condit ional","Value"],"line":168},{"cells":["","Test"],"line":169}],"name":"I validate a row with conditional field missing and value not member of list"},{"line":170,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status":"passed","duration":23000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required if member of list","id":"required-validation;conditionally-required-if-member-of-list","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":173,"steps":[{"line":175,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":176},{"cells":["Conditional","required if "Value" in"],"line":177},{"cells":["Value",""],"line":178}],"name":"the following attribute definitions"},{"line":180,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_par sed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":"passed","duration":351000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required if member but no list specified","id":"required-validation;conditionally-required-if-member-but-no-list-specified","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":182,"steps":[{"line":184,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":185},{"cells":["Conditional","required if "Value""],"line":186},{"cells":["Value",""],"line":187}],"name":"the following attribute definitions"},{"line":189,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":"passed","duration":299000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally requ ired if member but missing in keyword","id":"required-validation;conditionally-required-if-member-but-missing-in-keyword","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":191,"steps":[{"line":193,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":194},{"cells":["Conditional","required if "Field1" exists AND "Field2" exists"],"line":195},{"cells":["Field1",""],"line":196},{"cells":["Field2",""],"line":197}],"name":"the following attribute definitions"},{"line":199,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":200},{"cells":["","",""],"line":201}],"name":"I validate a row with a conditional field missing and both its conditions are false"},{"line":202,"keyword":"Then ","name":"there are no errors"},{"line":204,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line ":205},{"cells":["","Hello",""],"line":206}],"name":"I validate a row with a conditional field missing and one of its conditions are false"},{"line":207,"keyword":"Then ","name":"there are no errors"},{"line":209,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":210},{"cells":["","","Kitty"],"line":211}],"name":"I validate a row with a conditional field missing and its other condition is false"},{"line":212,"keyword":"Then ","name":"there are no errors"},{"line":214,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":215},{"cells":["","Hello","Kitty"],"line":216}],"name":"I validate a row with a conditional field missing and both its conditions are true"},{"line":218,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":219},{"cells":["2","[INVALID NULL, required ]",""],"line":22 0}],"name":"there is 1 error","result":{"status":"passed","duration":258000}}],"keyword":"Scenario","type":"scenario","name":"Conditional required field AND field","id":"required-validation;conditional-required-field-and-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":222,"steps":[{"line":224,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":225},{"cells":["Conditional","required if "Field1" exists AND "Field2" in ["foo"]"],"line":226},{"cells":["Field1",""],"line":227},{"cells":["Field2",""],"line":228}],"name":"the following attribute definitions"},{"line":230,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":231},{"cells":["","",""],"line":232}],"name":"I validate a row with a conditional field missing and both its conditions are false"},{"line":233,"keyword":"Then ","nam e":"there are no errors"},{"line":235,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":236},{"cells":["","Hello",""],"line":237}],"name":"I validate a row with a conditional field missing and one of its conditions are false"},{"line":238,"keyword":"Then ","name":"there are no errors"},{"line":240,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":241},{"cells":["","","foo"],"line":242}],"name":"I validate a row with a conditional field missing and its other condition is false"},{"line":243,"keyword":"Then ","name":"there are no errors"},{"line":245,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":246},{"cells":["","Hello","foo"],"line":247}],"name":"I validate a row with a conditional field missing and both its conditions are true"},{"line":249,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumbe r","(1)ConditionalErrors","Conditional"],"line":250},{"cells":["2","[INVALID NULL, required ]",""],"line":251}],"name":"there is 1 error","result":{"status":"passed","duration":218000}}],"keyword":"Scenario","type":"scenario","name":"Conditional required field AND field in list","id":"required-validation;conditional-required-field-and-field-in-list","description":""}],"keyword":"Feature","name":"Required Validation","id":"required-validation","uri":"com/scholastic/util/scrubber/required.feature","description":""}]


Reply to this email directly or view it on GitHub.

from cucumber-reporting-jenkins.

dchersey avatar dchersey commented on June 30, 2024

It's cucumber-jvm 1.1.1, code is java.

On Dec 19, 2012, at 1:21 PM, Kingsley Hendrickse [email protected] wrote:

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"there are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field","alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"line":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name":"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-data-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ","name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{"cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d","description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows with the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]","-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line":75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ","rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"line":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-validation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line":114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invalid value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells":["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword":"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place decimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 place decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":179},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line":194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0"],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given ","rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique"],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword":"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status":"passed","duration":21000}}],"keyword":"Scenario","type":"scenario","name":"Maximum lengths","id":"number-of-characters-validation;maximum-lengths","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":28,"steps":[{"line":30,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type","number of charaters"],"line":31},{"cells":["No Requirement","",""],"line":32},{"cells":["5 exactly","exactly","5"],"line":33}],"name":"the following attribute definitions"},{"line":35,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":36},{"cells":["","Test12"],"line":37}],"name":"I validate a field with more characters than allowed"},{"line":38,"keyw ord":"Then ","rows":[{"cells":["lineNumber","(1)5 exactlyErrors","5 exactly"],"line":39},{"cells":["2","[5 CHARs REQUIRED]","Test12"],"line":40}],"name":"there is 1 error"},{"line":42,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":43},{"cells":["","Test"],"line":44}],"name":"I validate a field with fewer characters than allowed"},{"line":45,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)5 exactlyErrors","5 exactly"],"line":46},{"cells":["2","[5 CHARs REQUIRED]","Test"],"line":47}],"name":"there is 1 error"},{"line":49,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":50},{"cells":["","Test1"],"line":51}],"name":"I validate a field with exactly the number of characters allowed"},{"line":52,"keyword":"Then ","name":"there are no errors"},{"line":54,"keyword":"When ","rows":[{"cells":["No Requirement","5 exactly"],"line":55},{"cells":["",""],"line":56}],"name":"I validate a field with no characters at all (empty)"},{"line": 57,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status":"passed","duration":36000}}],"keyword":"Scenario","type":"scenario","name":"Exact length","id":"number-of-characters-validation;exact-length","description":""}],"keyword":"Feature","name":"Number of characters validation","id":"number-of-characters-validation","uri":"com/scholastic/util/scrubber/numchars.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":5,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":8},{"cells":["Field","Required"],"line":9},{"cells":["Other Field",""],"line":10}],"name":"the following attribute definitions"},{"line":12,"keyword":"When ","rows":[{"cells":["Field","Other Field"],"line":13},{"cells":["Test1","Foo"],"l ine":14}],"name":"I validate a row with all fields present"},{"line":15,"keyword":"Then ","name":"there are no errors"},{"line":17,"keyword":"When ","rows":[{"cells":["Field","Other Field"],"line":18},{"cells":["","Foo"],"line":19}],"name":"I validate a row with required field missing"},{"line":20,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":21},{"cells":["2","[INVALID NULL, required ]",""],"line":22}],"name":"there is 1 error","result":{"status":"passed","duration":629000}}],"keyword":"Scenario","type":"scenario","name":"Required field","id":"required-validation;required-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":24,"steps":[{"line":26,"keyword":"Given ","rows":[{"cells":["TSO Attribu te","Required Field"],"line":27},{"cells":["Field","Required blah"],"line":28}],"name":"the following attribute definitions"},{"line":30,"keyword":"When ","rows":[{"cells":["Field","Other Field"],"line":31},{"cells":["","Foo"],"line":32}],"name":"I validate a row with required field missing"},{"line":33,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors because the Required rule was not processed","result":{"status":"passed","duration":18000}}],"keyword":"Scenario","type":"scenario","name":"Required field with extra characters","id":"required-validation;required-field-with-extra-characters","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":77,"steps":[{"line":79,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":80},{"cells":["Conditional","required if "Optio nal" exists"],"line":81},{"cells":["Optional",""],"line":82}],"name":"the following attribute definitions"},{"line":84,"keyword":"When ","rows":[{"cells":["Conditional","Optional"],"line":85},{"cells":["",""],"line":86}],"name":"I validate a row with a conditional field missing and its condition is false"},{"line":87,"keyword":"Then ","name":"there are no errors"},{"line":89,"keyword":"When ","rows":[{"cells":["Conditional","Optional"],"line":90},{"cells":["","Test3"],"line":91}],"name":"I validate a row with a conditional field missing and its condition is true"},{"line":93,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":94},{"cells":["2","[INVALID NULL, required ]",""],"line":95}],"name":"there is 1 error","result":{"status":"passed","duration":266000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally requi red field","id":"required-validation;conditionally-required-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":97,"steps":[{"line":99,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":100},{"cells":["Field","Required if"],"line":101}],"name":"the following attribute definitions"},{"line":103,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":"passed","duration":202000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required field missing conditional field name","id":"required-validation;conditionally-required-field-missing-conditional-field-name","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are abs ent","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":108},{"cells":["Conditional","required if "Optional" exists"],"line":109}],"name":"the following attribute definitions"},{"line":111,"match":{"location":"ScrubberStepDefs.the_attributes_are_parsed()"},"keyword":"Then ","name":"the attributes are parsed","result":{"status":"passed","duration":324000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required field missing conditional field","id":"required-validation;conditionally-required-field-missing-conditional-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":114,"steps":[{"line":116,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":117},{"cells":["Conditional","required if "Value" not in\t["foo"]"],"line ":118},{"cells":["Value",""],"line":119}],"name":"the following attribute definitions"},{"line":121,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":122},{"cells":["Test2","Test3"],"line":123}],"name":"I validate a row with all fields present"},{"line":124,"keyword":"Then ","name":"there are no errors"},{"line":126,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":127},{"cells":["Test2","foo"],"line":128}],"name":"I validate a row with all fields present and value member of list"},{"line":129,"keyword":"Then ","name":"there are no errors"},{"line":131,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":132},{"cells":["","foo"],"line":133}],"name":"I validate a row with conditional field missing and value is member of list"},{"line":134,"keyword":"Then ","name":"there are no errors"},{"line":136,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":137},{"cells":["","Test"],"line":138}],"name":"I validate a row with c onditional field missing and value not member of list"},{"line":139,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":140},{"cells":["2","[INVALID NULL, required ]",""],"line":141}],"name":"there is 1 error","result":{"status":"passed","duration":208000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required if not member of list","id":"required-validation;conditionally-required-if-not-member-of-list","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":143,"steps":[{"line":145,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":146},{"cells":["Conditional","required if "Value" in\t["foo", "bar"]"],"line":147},{"cells":["Value",""],"line":148}],"n ame":"the following attribute definitions"},{"line":150,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":151},{"cells":["Test2","Test3"],"line":152}],"name":"I validate a row with all fields present"},{"line":153,"keyword":"Then ","name":"there are no errors"},{"line":155,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":156},{"cells":["Test2","foo"],"line":157}],"name":"I validate a row with all fields present and value member of list"},{"line":158,"keyword":"Then ","name":"there are no errors"},{"line":160,"keyword":"When ","rows":[{"cells":["Conditional","Value"],"line":161},{"cells":["","foo"],"line":162}],"name":"I validate a row with conditional field missing and value is member of list"},{"line":163,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":164},{"cells":["2","[INVALID NULL, required ]",""],"line":165}],"name":"there is 1 error"},{"line":167,"keyword":"When ","rows":[{"cells":["Condit ional","Value"],"line":168},{"cells":["","Test"],"line":169}],"name":"I validate a row with conditional field missing and value not member of list"},{"line":170,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status":"passed","duration":23000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required if member of list","id":"required-validation;conditionally-required-if-member-of-list","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":173,"steps":[{"line":175,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":176},{"cells":["Conditional","required if "Value" in"],"line":177},{"cells":["Value",""],"line":178}],"name":"the following attribute definitions"},{"line":180,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_par sed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":"passed","duration":351000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally required if member but no list specified","id":"required-validation;conditionally-required-if-member-but-no-list-specified","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":182,"steps":[{"line":184,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":185},{"cells":["Conditional","required if "Value""],"line":186},{"cells":["Value",""],"line":187}],"name":"the following attribute definitions"},{"line":189,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":"passed","duration":299000}}],"keyword":"Scenario","type":"scenario","name":"Conditionally requ ired if member but missing in keyword","id":"required-validation;conditionally-required-if-member-but-missing-in-keyword","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":191,"steps":[{"line":193,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":194},{"cells":["Conditional","required if "Field1" exists AND "Field2" exists"],"line":195},{"cells":["Field1",""],"line":196},{"cells":["Field2",""],"line":197}],"name":"the following attribute definitions"},{"line":199,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":200},{"cells":["","",""],"line":201}],"name":"I validate a row with a conditional field missing and both its conditions are false"},{"line":202,"keyword":"Then ","name":"there are no errors"},{"line":204,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line ":205},{"cells":["","Hello",""],"line":206}],"name":"I validate a row with a conditional field missing and one of its conditions are false"},{"line":207,"keyword":"Then ","name":"there are no errors"},{"line":209,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":210},{"cells":["","","Kitty"],"line":211}],"name":"I validate a row with a conditional field missing and its other condition is false"},{"line":212,"keyword":"Then ","name":"there are no errors"},{"line":214,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":215},{"cells":["","Hello","Kitty"],"line":216}],"name":"I validate a row with a conditional field missing and both its conditions are true"},{"line":218,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)ConditionalErrors","Conditional"],"line":219},{"cells":["2","[INVALID NULL, required ]",""],"line":22 0}],"name":"there is 1 error","result":{"status":"passed","duration":258000}}],"keyword":"Scenario","type":"scenario","name":"Conditional required field AND field","id":"required-validation;conditional-required-field-and-field","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields are required, the validation generates errors when they are absent","description":""},{"line":222,"steps":[{"line":224,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Required Field"],"line":225},{"cells":["Conditional","required if "Field1" exists AND "Field2" in ["foo"]"],"line":226},{"cells":["Field1",""],"line":227},{"cells":["Field2",""],"line":228}],"name":"the following attribute definitions"},{"line":230,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":231},{"cells":["","",""],"line":232}],"name":"I validate a row with a conditional field missing and both its conditions are false"},{"line":233,"keyword":"Then ","nam e":"there are no errors"},{"line":235,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":236},{"cells":["","Hello",""],"line":237}],"name":"I validate a row with a conditional field missing and one of its conditions are false"},{"line":238,"keyword":"Then ","name":"there are no errors"},{"line":240,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":241},{"cells":["","","foo"],"line":242}],"name":"I validate a row with a conditional field missing and its other condition is false"},{"line":243,"keyword":"Then ","name":"there are no errors"},{"line":245,"keyword":"When ","rows":[{"cells":["Conditional","Field1","Field2"],"line":246},{"cells":["","Hello","foo"],"line":247}],"name":"I validate a row with a conditional field missing and both its conditions are true"},{"line":249,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumbe r","(1)ConditionalErrors","Conditional"],"line":250},{"cells":["2","[INVALID NULL, required ]",""],"line":251}],"name":"there is 1 error","result":{"status":"passed","duration":218000}}],"keyword":"Scenario","type":"scenario","name":"Conditional required field AND field in list","id":"required-validation;conditional-required-field-and-field-in-list","description":""}],"keyword":"Feature","name":"Required Validation","id":"required-validation","uri":"com/scholastic/util/scrubber/required.feature","description":""}]


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.

from cucumber-reporting-jenkins.

kingsleyh avatar kingsleyh commented on June 30, 2024

Can you try cucumber-jvm version 1.0.8 as that's the version the plugin is coded against

Sent from my iPhone

On 19 Dec 2012, at 18:22, dchersey [email protected] wrote:

It's cucumber-jvm 1.1.1, code is java.

On Dec 19, 2012, at 1:21 PM, Kingsley Hendrickse [email protected] wrote:

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"there are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field","alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"line":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name":"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-data-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ","name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{"cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d","description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows with the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]","-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line":75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ","rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"line":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-validation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line":114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invalid value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells":["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword":"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place decimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 place decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":179},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line":194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0"],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given ","rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique"],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword":"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status&quo

from cucumber-reporting-jenkins.

dchersey avatar dchersey commented on June 30, 2024

I tried it … same stack trace. I also downgraded gherkin to 2.10.0 to match the deps of cucumber-jvm 1.0.8

It's finding the json file ok … just choking on it .

Here's another ison file generated by the example test suite that also has the same problem:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":8175000}},{"line":6,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I get 1 plus 1","result":{"status":"passed","duration":13346000}},{"line":7,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the output is 2","result":{"status":"passed","duration":105000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":49000}},{"line":11,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I get 2 plus 2","result":{"status":"passed","duration":589000}},{"line":12,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the output is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 1 plus 2","result":{"status":"passed","duration":598000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 3","result":{"status":"passed","duration":49000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 2 plus 3","result":{"status":"passed","duration":541000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 5","result":{"status":"passed","duration":54000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 10 plus 20","result":{"status":"passed","duration":593000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 30","result":{"status":"passed","duration":51000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":48000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 20 plus 30","result":{"status":"passed","duration":587000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"Basic Arithmetic","id":"basic-arithmetic","uri":"tdd/scholastic/demo/calculator server.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":193000}},{"line":6,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I add 1 plus 1","result":{"status":"passed","duration":257000}},{"line":7,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the result is 2","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"us110.1-basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":54000}},{"line":11,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I add 2 plus 2","result":{"status":"passed","duration":133000}},{"line":12,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the result is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"us110.1-basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 1 plus 2","result":{"status":"passed","duration":134000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 3","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":49000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 2 plus 3","result":{"status":"passed","duration":131000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 5","result":{"status":"passed","duration":50000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 10 plus 20","result":{"status":"passed","duration":132000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 30","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 20 plus 30","result":{"status":"passed","duration":166000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"US110.1 Basic Arithmetic","id":"us110.1-basic-arithmetic","uri":"tdd/scholastic/demo/calculator.feature","description":""}]

On Dec 19, 2012, at 2:09 PM, Kingsley Hendrickse [email protected] wrote:

Can you try cucumber-jvm version 1.0.8 as that's the version the plugin is coded against

Sent from my iPhone

On 19 Dec 2012, at 18:22, dchersey [email protected] wrote:

It's cucumber-jvm 1.1.1, code is java.

On Dec 19, 2012, at 1:21 PM, Kingsley Hendrickse [email protected] wrote:

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"ther e are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","F ield"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field&qu ot;,"alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"lin e":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9} ]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword" ;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name&qu ot;:"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match&q uot;:{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-d ata-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword&quo t;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the typ e of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ",&q uot;name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{&qu ot;cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d",& quot;description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows wit h the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]"," ;-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line&quo t;:75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ",&quo t;rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"li ne":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-val idation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line& quot;:114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors (int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invali d value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells" :["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword&quo t;:"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place de cimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 pl ace decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":17 9},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line" :194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0" ],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Backg round","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strin gs","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given "," rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings&qu ot;,"Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique&q uot;],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario&q uot;,"name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following _attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"T o support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allow able strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,&q uot;keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings"," ;restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword&quo t;:"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":[" ;lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status&quo

Reply to this email directly or view it on GitHub.

from cucumber-reporting-jenkins.

kingsleyh avatar kingsleyh commented on June 30, 2024

Hi

I found the issue - The problem is that you are supplying a Background but it has no steps. The plugin didn't cope with a Background that had no steps and threw a null pointer while it was trying to iterate over the steps to find the status of the steps in the background. The simple quick fix is for you to remove the Background or add at least one step to it. I will make a fix to cope with results that have Backgrounds with no steps - but it will take a few days to get some time to do it.

Thanks

--Kingsley

On 19 Dec 2012, at 21:13, dchersey [email protected] wrote:

I tried it … same stack trace. I also downgraded gherkin to 2.10.0 to match the deps of cucumber-jvm 1.0.8

It's finding the json file ok … just choking on it .

Here's another ison file generated by the example test suite that also has the same problem:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":8175000}},{"line":6,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I get 1 plus 1","result":{"status":"passed","duration":13346000}},{"line":7,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the output is 2","result":{"status":"passed","duration":105000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":49000}},{"line":11,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I get 2 plus 2","result":{"status":"passed","duration":589000}},{"line":12,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the output is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 1 plus 2","result":{"status":"passed","duration":598000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 3","result":{"status":"passed","duration":49000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 2 plus 3","result":{"status":"passed","duration":541000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 5","result":{"status":"passed","duration":54000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 10 plus 20","result":{"status":"passed","duration":593000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 30","result":{"status":"passed","duration":51000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":48000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 20 plus 30","result":{"status":"passed","duration":587000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"Basic Arithmetic","id":"basic-arithmetic","uri":"tdd/scholastic/demo/calculator server.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":193000}},{"line":6,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I add 1 plus 1","result":{"status":"passed","duration":257000}},{"line":7,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the result is 2","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"us110.1-basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":54000}},{"line":11,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I add 2 plus 2","result":{"status":"passed","duration":133000}},{"line":12,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the result is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"us110.1-basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 1 plus 2","result":{"status":"passed","duration":134000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 3","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":49000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 2 plus 3","result":{"status":"passed","duration":131000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 5","result":{"status":"passed","duration":50000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 10 plus 20","result":{"status":"passed","duration":132000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 30","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 20 plus 30","result":{"status":"passed","duration":166000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"US110.1 Basic Arithmetic","id":"us110.1-basic-arithmetic","uri":"tdd/scholastic/demo/calculator.feature","description":""}]

On Dec 19, 2012, at 2:09 PM, Kingsley Hendrickse [email protected] wrote:

Can you try cucumber-jvm version 1.0.8 as that's the version the plugin is coded against

Sent from my iPhone

On 19 Dec 2012, at 18:22, dchersey [email protected] wrote:

It's cucumber-jvm 1.1.1, code is java.

On Dec 19, 2012, at 1:21 PM, Kingsley Hendrickse [email protected] wrote:

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"ther e are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","F ield"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field&qu ot;,"alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"lin e":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9} ]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword" ;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name&qu ot;:"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match&q uot;:{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-d ata-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword&quo t;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the typ e of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ",&q uot;name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{&qu ot;cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d",& quot;description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows wit h the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]"," ;-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line&quo t;:75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ",&quo t;rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"li ne":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-val idation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line& quot;:114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors (int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invali d value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells" :["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword&quo t;:"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place de cimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 pl ace decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":17 9},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line" :194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0" ],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Backg round","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strin gs","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given "," rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings&qu ot;,"Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique&q uot;],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario&q uot;,"name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following _attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"T o support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allow able strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,&q uot;keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings"," ;restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword&quo t;:"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":[" ;lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status&quo

Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.

from cucumber-reporting-jenkins.

dchersey avatar dchersey commented on June 30, 2024

Thanks, that did the trick!

I'm a little mystified though … My understanding is that a typical Gherkin looks like:

Feature:
Background: <basic requirement doc
Scenario:

etc

So in this case a background would not have any steps. Is there another convention we should be following?

Also (separately), now that it is working I am getting a lot of "Step is missing Result" messages for all but the final step in each scenario. The report also shows the same.

Is there something I should d be passing the cucumber runner to tell it to generate results for each step?

I am running cucumber via JUnit with:
@RunWith(Cucumber.class)
@Cucumber.Options(format="json:cucumber.json", tags="~@bug")

Thanks so much for your help!

David

On Dec 19, 2012, at 9:01 PM, Kingsley Hendrickse [email protected] wrote:

Hi

I found the issue - The problem is that you are supplying a Background but it has no steps. The plugin didn't cope with a Background that had no steps and threw a null pointer while it was trying to iterate over the steps to find the status of the steps in the background. The simple quick fix is for you to remove the Background or add at least one step to it. I will make a fix to cope with results that have Backgrounds with no steps - but it will take a few days to get some time to do it.

Thanks

--Kingsley

On 19 Dec 2012, at 21:13, dchersey [email protected] wrote:

I tried it … same stack trace. I also downgraded gherkin to 2.10.0 to match the deps of cucumber-jvm 1.0.8

It's finding the json file ok … just choking on it .

Here's another ison file generated by the example test suite that also has the same problem:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":8175000}},{"line":6,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I get 1 plus 1","result":{"status":"passed","duration":13346000}},{"line":7,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the output is 2","result":{"status":"passed","duration":105000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":49000}},{"line":11,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I get 2 plus 2","result":{"status":"passed","duration":589000}},{"line":12,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the output is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 1 plus 2","result":{"status":"passed","duration":598000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 3","result":{"status":"passed","duration":49000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 2 plus 3","result":{"status":"passed","duration":541000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 5","result":{"status":"passed","duration":54000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 10 plus 20","result":{"status":"passed","duration":593000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 30","result":{"status":"passed","duration":51000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":48000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 20 plus 30","result":{"status":"passed","duration":587000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"Basic Arithmetic","id":"basic-arithmetic","uri":"tdd/scholastic/demo/calculator server.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":193000}},{"line":6,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I add 1 plus 1","result":{"status":"passed","duration":257000}},{"line":7,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the result is 2","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"us110.1-basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":54000}},{"line":11,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I add 2 plus 2","result":{"status":"passed","duration":133000}},{"line":12,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the result is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"us110.1-basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 1 plus 2","result":{"status":"passed","duration":134000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 3","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":49000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 2 plus 3","result":{"status":"passed","duration":131000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 5","result":{"status":"passed","duration":50000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 10 plus 20","result":{"status":"passed","duration":132000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 30","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 20 plus 30","result":{"status":"passed","duration":166000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"US110.1 Basic Arithmetic","id":"us110.1-basic-arithmetic","uri":"tdd/scholastic/demo/calculator.feature","description":""}]

On Dec 19, 2012, at 2:09 PM, Kingsley Hendrickse [email protected] wrote:

Can you try cucumber-jvm version 1.0.8 as that's the version the plugin is coded against

Sent from my iPhone

On 19 Dec 2012, at 18:22, dchersey [email protected] wrote:

It's cucumber-jvm 1.1.1, code is java.

On Dec 19, 2012, at 1:21 PM, Kingsley Hendrickse [email protected] wrote:

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"ther e are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","F ield"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field&qu ot;,"alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"lin e":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9} ]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword" ;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name&qu ot;:"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match&q uot;:{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-d ata-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword&quo t;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the typ e of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ",&q uot;name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{&qu ot;cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d",& quot;description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows wit h the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]"," ;-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line&quo t;:75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ",&quo t;rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"li ne":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-val idation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line& quot;:114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors (int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invali d value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells" :["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword&quo t;:"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place de cimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 pl ace decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":17 9},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line" :194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0" ],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Backg round","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strin gs","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given "," rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings&qu ot;,"Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique&q uot;],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario&q uot;,"name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following _attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"T o support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allow able strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,&q uot;keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings"," ;restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword&quo t;:"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":[" ;lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status&quo

Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.

from cucumber-reporting-jenkins.

kingsleyh avatar kingsleyh commented on June 30, 2024

Hi

If you use cucumber-jvm 1.0.8 everything should work fine. In later versions they messed up the json report and it doesn't seem to produce a result section properly - so when a step says it's missing a result - it's because the json doesn't have a result for that step due to the issue in the json report from all versions of cucumber jvm after 1.0.8.

The background is designed to allow you put steps which execute before each scenario - so if you had some common first steps in every scenario you could move them to a background. That's why the plugin doesn't handle having a background with no steps as I haven't come across it before! however I'll fix it in the next release - but there is no point in having a background if you don't put some steps in it :)

let me know if moving to 1.0.8 fixes the Step is missing Result

--K

On 20 Dec 2012, at 15:59, dchersey [email protected] wrote:

Thanks, that did the trick!

I'm a little mystified though … My understanding is that a typical Gherkin looks like:

Feature:
Background: <basic requirement doc
Scenario:

etc

So in this case a background would not have any steps. Is there another convention we should be following?

Also (separately), now that it is working I am getting a lot of "Step is missing Result" messages for all but the final step in each scenario. The report also shows the same.

Is there something I should d be passing the cucumber runner to tell it to generate results for each step?

I am running cucumber via JUnit with:
@RunWith(Cucumber.class)
@Cucumber.Options(format="json:cucumber.json", tags="~@bug")

Thanks so much for your help!

David

On Dec 19, 2012, at 9:01 PM, Kingsley Hendrickse [email protected] wrote:

Hi

I found the issue - The problem is that you are supplying a Background but it has no steps. The plugin didn't cope with a Background that had no steps and threw a null pointer while it was trying to iterate over the steps to find the status of the steps in the background. The simple quick fix is for you to remove the Background or add at least one step to it. I will make a fix to cope with results that have Backgrounds with no steps - but it will take a few days to get some time to do it.

Thanks

--Kingsley

On 19 Dec 2012, at 21:13, dchersey [email protected] wrote:

I tried it … same stack trace. I also downgraded gherkin to 2.10.0 to match the deps of cucumber-jvm 1.0.8

It's finding the json file ok … just choking on it .

Here's another ison file generated by the example test suite that also has the same problem:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":8175000}},{"line":6,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I get 1 plus 1","result":{"status":"passed","duration":13346000}},{"line":7,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the output is 2","result":{"status":"passed","duration":105000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":49000}},{"line":11,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I get 2 plus 2","result":{"status":"passed","duration":589000}},{"line":12,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the output is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 1 plus 2","result":{"status":"passed","duration":598000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 3","result":{"status":"passed","duration":49000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 2 plus 3","result":{"status":"passed","duration":541000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 5","result":{"status":"passed","duration":54000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 10 plus 20","result":{"status":"passed","duration":593000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 30","result":{"status":"passed","duration":51000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":48000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 20 plus 30","result":{"status":"passed","duration":587000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"Basic Arithmetic","id":"basic-arithmetic","uri":"tdd/scholastic/demo/calculator server.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":193000}},{"line":6,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I add 1 plus 1","result":{"status":"passed","duration":257000}},{"line":7,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the result is 2","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"us110.1-basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":54000}},{"line":11,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I add 2 plus 2","result":{"status":"passed","duration":133000}},{"line":12,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the result is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"us110.1-basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 1 plus 2","result":{"status":"passed","duration":134000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 3","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":49000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 2 plus 3","result":{"status":"passed","duration":131000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 5","result":{"status":"passed","duration":50000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 10 plus 20","result":{"status":"passed","duration":132000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 30","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 20 plus 30","result":{"status":"passed","duration":166000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"US110.1 Basic Arithmetic","id":"us110.1-basic-arithmetic","uri":"tdd/scholastic/demo/calculator.feature","description":""}]

On Dec 19, 2012, at 2:09 PM, Kingsley Hendrickse [email protected] wrote:

Can you try cucumber-jvm version 1.0.8 as that's the version the plugin is coded against

Sent from my iPhone

On 19 Dec 2012, at 18:22, dchersey [email protected] wrote:

It's cucumber-jvm 1.1.1, code is java.

On Dec 19, 2012, at 1:21 PM, Kingsley Hendrickse [email protected] wrote:

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"ther e are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","F ield"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field&qu ot;,"alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"lin e":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9} ]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword" ;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name&qu ot;:"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match&q uot;:{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-d ata-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword&quo t;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the typ e of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ",&q uot;name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{&qu ot;cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d",& quot;description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows wit h the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]"," ;-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line&quo t;:75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ",&quo t;rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"li ne":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-val idation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line& quot;:114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors (int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invali d value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells" :["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword&quo t;:"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place de cimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 pl ace decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":17 9},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line" :194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0" ],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Backg round","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strin gs","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given "," rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings&qu ot;,"Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique&q uot;],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario&q uot;,"name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following _attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"T o support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allow able strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,&q uot;keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings"," ;restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword&quo t;:"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":[" ;lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status&quo

Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.

from cucumber-reporting-jenkins.

dchersey avatar dchersey commented on June 30, 2024

Great, thanks for the clarification … and glad as always to help find corner-cases to make our tools better.

Kudos on the reports plug-in by the way … definitely one of the slickest Jenkins plugins I've seen. The output very much reminds me of Fitnesse a few years back.

I found the following pull request out there pending for the results JSON issue .. should be merged into base fairly soon.
cucumber/cucumber-jvm#426

Given that, I think I'll stick with 1.1.1 then upgrade when it's merged, assuming it works. The JUnit integration within eclipse (ugh) is better in 1.1 … stack traces show assertion failures as primary exception, not underlying cause of a cucumber exception.

Thanks for all your help!

On Dec 20, 2012, at 12:16 PM, Kingsley Hendrickse [email protected] wrote:

Hi

If you use cucumber-jvm 1.0.8 everything should work fine. In later versions they messed up the json report and it doesn't seem to produce a result section properly - so when a step says it's missing a result - it's because the json doesn't have a result for that step due to the issue in the json report from all versions of cucumber jvm after 1.0.8.

The background is designed to allow you put steps which execute before each scenario - so if you had some common first steps in every scenario you could move them to a background. That's why the plugin doesn't handle having a background with no steps as I haven't come across it before! however I'll fix it in the next release - but there is no point in having a background if you don't put some steps in it :)

let me know if moving to 1.0.8 fixes the Step is missing Result

--K

On 20 Dec 2012, at 15:59, dchersey [email protected] wrote:

Thanks, that did the trick!

I'm a little mystified though … My understanding is that a typical Gherkin looks like:

Feature:
Background: <basic requirement doc
Scenario:

etc

So in this case a background would not have any steps. Is there another convention we should be following?

Also (separately), now that it is working I am getting a lot of "Step is missing Result" messages for all but the final step in each scenario. The report also shows the same.

Is there something I should d be passing the cucumber runner to tell it to generate results for each step?

I am running cucumber via JUnit with:
@RunWith(Cucumber.class)
@Cucumber.Options(format="json:cucumber.json", tags="~@bug")

Thanks so much for your help!

David

On Dec 19, 2012, at 9:01 PM, Kingsley Hendrickse [email protected] wrote:

Hi

I found the issue - The problem is that you are supplying a Background but it has no steps. The plugin didn't cope with a Background that had no steps and threw a null pointer while it was trying to iterate over the steps to find the status of the steps in the background. The simple quick fix is for you to remove the Background or add at least one step to it. I will make a fix to cope with results that have Backgrounds with no steps - but it will take a few days to get some time to do it.

Thanks

--Kingsley

On 19 Dec 2012, at 21:13, dchersey [email protected] wrote:

I tried it … same stack trace. I also downgraded gherkin to 2.10.0 to match the deps of cucumber-jvm 1.0.8

It's finding the json file ok … just choking on it .

Here's another ison file generated by the example test suite that also has the same problem:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":8175000}},{"line":6,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I get 1 plus 1","result":{"status":"passed","duration":13346000}},{"line":7,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the output is 2","result":{"status":"passed","duration":105000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":49000}},{"line":11,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I get 2 plus 2","result":{"status":"passed","duration":589000}},{"line":12,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the output is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 1 plus 2","result":{"status":"passed","duration":598000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 3","result":{"status":"passed","duration":49000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 2 plus 3","result":{"status":"passed","duration":541000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 5","result":{"status":"passed","duration":54000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":46000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 10 plus 20","result":{"status":"passed","duration":593000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 30","result":{"status":"passed","duration":51000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorServerStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator server I just turned on","result":{"status":"passed","duration":48000}},{"line":16,"match":{"location":"CalculatorServerStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I get 20 plus 30","result":{"status":"passed","duration":587000}},{"line":17,"match":{"location":"CalculatorServerStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the output is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"Basic Arithmetic","id":"basic-arithmetic","uri":"tdd/scholastic/demo/calculator server.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":4,"steps":[{"line":5,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":193000}},{"line":6,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"1","offset":13}]},"keyword":"When ","name":"I add 1 plus 1","result":{"status":"passed","duration":257000}},{"line":7,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"2","offset":14}]},"keyword":"Then ","name":"the result is 2","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario","name":"Addition","id":"us110.1-basic-arithmetic;addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":9,"steps":[{"line":10,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":54000}},{"line":11,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"2","offset":13}]},"keyword":"When ","name":"I add 2 plus 2","result":{"status":"passed","duration":133000}},{"line":12,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"4","offset":14}]},"keyword":"Then ","name":"the result is 4","result":{"status":"passed","duration":54000}}],"keyword":"Scenario","type":"scenario","name":"Another Addition","id":"us110.1-basic-arithmetic;another-addition","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":21,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"1","offset":6},{"val":"2","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 1 plus 2","result":{"status":"passed","duration":134000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"3","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 3","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":22,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":49000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"2","offset":6},{"val":"3","offset":13}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 2 plus 3","result":{"status":"passed","duration":131000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"5","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 5","result":{"status":"passed","duration":50000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;single-digits;3","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":26,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":56000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"10","offset":6},{"val":"20","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 10 plus 20","result":{"status":"passed","duration":132000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"30","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 30","result":{"status":"passed","duration":52000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;2","description":""},{"line":2,"keyword":"Background","type":"background","name":"A Calculator","description":""},{"line":27,"steps":[{"line":15,"match":{"location":"CalculatorStepdefs.a_calculator_I_just_turned_on()"},"keyword":"Given ","name":"a calculator I just turned on","result":{"status":"passed","duration":51000}},{"line":16,"match":{"location":"CalculatorStepdefs.I_add_plus(int,int)","arguments":[{"val":"20","offset":6},{"val":"30","offset":14}]},"keyword":"When ","matchedColumns":[0,1],"name":"I add 20 plus 30","result":{"status":"passed","duration":166000}},{"line":17,"match":{"location":"CalculatorStepdefs.the_result_is(int)","arguments":[{"val":"50","offset":14}]},"keyword":"Then ","matchedColumns":[2],"name":"the result is 50","result":{"status":"passed","duration":53000}}],"keyword":"Scenario Outline","type":"scenario","name":"Lots of Additions","id":"us110.1-basic-arithmetic;lots-of-additions;double-digits;3","description":""}],"keyword":"Feature","name":"US110.1 Basic Arithmetic","id":"us110.1-basic-arithmetic","uri":"tdd/scholastic/demo/calculator.feature","description":""}]

On Dec 19, 2012, at 2:09 PM, Kingsley Hendrickse [email protected] wrote:

Can you try cucumber-jvm version 1.0.8 as that's the version the plugin is coded against

Sent from my iPhone

On 19 Dec 2012, at 18:22, dchersey [email protected] wrote:

It's cucumber-jvm 1.1.1, code is java.

On Dec 19, 2012, at 1:21 PM, Kingsley Hendrickse [email protected] wrote:

Hi

Which version of cucumber are you using? And is it jvm, ruby or js?

Sent from my iPad

On 19 Dec 2012, at 15:30, dchersey [email protected] wrote:

Hi, I've been fiddling with this for a few days and can't seem to get the reports plugin to publish the cucumber report.

I can get it to publish an EMPTY report, when I don't correctly specify the location of the .json file. But when I do specify this file, I get a 404. Looking in the build directory, I see a folder called cucumber-html-reports and all it contains is my .json file.

Looking at the tomcat logs, I see the following exception:

Dec 18, 2012 5:57:08 PM hudson.model.Run execute
INFO: SSO #772 main build action completed: SUCCESS
java.lang.NullPointerException
at net.masterthought.cucumber.util.Util.collectSteps(Util.java:104)
at net.masterthought.cucumber.json.Element.getStatus(Element.java:31)
at net.masterthought.cucumber.ReportInformation.processFeatures(ReportInformation.java:187)
at net.masterthought.cucumber.ReportInformation.(ReportInformation.java:39)
at net.masterthought.cucumber.ReportBuilder.(ReportBuilder.java:37)
at net.masterthought.jenkins.CucumberReportPublisher.perform(CucumberReportPublisher.java:100)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:779)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:726)
at hudson.model.Run.execute(Run.java:1568)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)

Any thoughts on how I can debug this further?

My .json file is called scrubber.json instead of cucumber.json -- does that matter?

Here are its' contents:

[{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","alphaNumeric"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"When ","rows":[{"cells":["Field"],"line":11},{"cells":["Test1"],"line":12}],"name":"I validate a field that matches the type"},{"line":13,"keyword":"Then ","name":"ther e are no errors"},{"line":15,"keyword":"When ","rows":[{"cells":["Field"],"line":16},{"cells":[""],"line":17}],"name":"I validate an empty field"},{"line":18,"keyword":"Then ","name":"there are no errors"},{"line":20,"keyword":"When ","rows":[{"cells":["Field"],"line":21},{"cells":["Test!"],"line":22}],"name":"I validate an field with non-alpha characters"},{"line":23,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","argu ments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","F ield"],"line":24},{"cells":["2","[Invalid value, must be alphaNumeric ]","Test!"],"line":25}],"name":"there is 1 error","result":{"status":"passed","duration":1114000}}],"keyword":"Scenario","type":"scenario","name":"alphanumeric","id":"alphanumeric-data-type-matching;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":27,"steps":[{"line":29,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":30},{"cells":["Field&qu ot;,"alphaNumericUppercase"],"line":31}],"name":"the following attribute definitions"},{"line":33,"keyword":"When ","rows":[{"cells":["Field"],"line":34},{"cells":["TEST1"],"line":35}],"name":"I validate a field that matches the type"},{"line":36,"keyword":"Then ","name":"there are no errors"},{"line":38,"keyword":"When ","rows":[{" cells":["Field"],"line":39},{"cells":[""],"line":40}],"name":"I validate an empty field"},{"line":41,"keyword":"Then ","name":"there are no errors"},{"line":43,"keyword":"When ","rows":[{"cells":["Field"],"lin e":44},{"cells":["TEST!"],"line":45}],"name":"I validate an field with non-alpha characters"},{"line":46,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":47},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","TEST!"],"line":48}],"name":"there is 1 error"},{"line":50,"keyword":"When ","rows":[{"cells":["Field"],"line":51},{"cells":["Test"],"line":52}],"name":"I validate an field with lowercase characters"},{"line":53,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9} ]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":54},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","Test"],"line":55}],"name":"there is 1 error","resul t":{"status":"passed","duration":182000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericUppercase","id":"alphanumeric-data-type-matching;alphanumericuppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"Columns can be validated by data type alphanumeric","description":""},{"line":57,"steps":[{"line":59,"keyword" ;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":60},{"cells":["Field","alphaNumericLowercase"],"line":61}],"name":"the following attribute definitions"},{"line":63,"keyword":"When ","rows":[{"cells":["Field"],"line":64},{"cells":["test1"],"line":65}],"name":"I validate a field that matches the type"},{"line":66,"keyword":"Then ","name":"there are no errors"},{"line":68,"keyword":"When ","rows":[{"cells":["Field"],"line":69},{"cells":[""],"line":70}],"name":"I validate an empty field"},{"line":71,"keyword":"Then ","name&qu ot;:"there are no errors"},{"line":73,"keyword":"When ","rows":[{"cells":["Field"],"line ":74},{"cells":["test!"],"line":75}],"name":"I validate an field with non-alpha characters"},{"line":76,"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":77},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","test!"],"line":78}],"name":"there is 1 error"},{"line":80,"keyword":"When ","rows":[{"cells":["Field"],"line":81},{"cells":["Test"],"line":82}],"name":"I validate an field with uppercase characters"},{"line":83,"match&q uot;:{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"1","offset":9}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(1)FieldErrors","Field"],"line":84},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","Test"],"line":85}],"name":"there is 1 error","result":{"status":"passed","duration":178000}}],"keyword":"Scenario","type":"scenario","name":"alphanumericLowercase","id":"alphanumeric-data-type-matching;alphanumericlowercase","description":""}],"keyword":"Featur e","name":"Alphanumeric data type matching","id":"alphanumeric-d ata-type-matching","uri":"com/scholastic/util/scrubber/alphanumeric.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":7},{"cells":["Field","invalidType"],"line":8}],"name":"the following attribute definitions"},{"line":10,"keyword":"Then ","name":"the attributes are not parsed"},{"line":12,"keyword&quo t;:"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":13},{"cells":["Field","positiveint"],"line":14}],"name":"the following attribute definitions"},{"line":16,"match":{"location":"ScrubberStepDefs.the_attributes_are_not_parsed()"},"keyword":"Then ","name":"the attributes are not parsed","result":{"status":" passed","duration":126000}}],"keyword":"Scenario","type":"scenario","name":"Invalid data type","id":"datatype-validation;invalid-data-type","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the typ e of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":18,"steps":[{"line":20,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":21},{"cells":["Field","positiveInt"],"line":22}],"name":"the following attribute definitions"},{"line":24,"keyword":"When ","rows":[{"cells":["Field"],"line":25},{"cells":["1"],"line":26},{"cells":["0"],"line":27},{"cells":[""],"line":28},{"cells":["9516283819"],"line":29}],"name":"I validate rows with the correct data type"},{"line":30,"keyword":"Then ",&q uot;name":"there are no errors"},{"line":32,"keyword":"When ","rows":[{"cells":["Field"],"line":33},{"cells":["-1"],"line":34},{"cells":["-0"],"line":35},{"cells":["a"] ,"line":36},{"cells":["\u0026123"],"line":37}],"name":"I validate rows with the incorrect data types"},{"line":38,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"4","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(4)FieldErrors","Field"],"line":39},{"cells":["2","[Invalid value, must be positive int]","-1"],"line":40},{&qu ot;cells":["3","[Invalid value, must be positive int]","-0"],"line":41},{"cells":["4","[Invalid value, must be positive int]","a"],"line":42},{"cells":["5","[Invalid value, must be positive int]","\u0026123"],"line":43}],"name":"there are 4 errors","result":{"status":"passed","duration":357000}}],"keyword":"Scenario","type":"scenario","name":"Positive integer","id":"datatype-validation;positive-integer","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violate d",& quot;description":""},{"line":45,"steps":[{"line":47,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":48},{"cells":["Field","alphaNumeric"],"line":49}],"name":"the following attribute definitions"},{"line":51,"keyword":"When ","rows":[{"cells":["Field"],"line":52},{"cells":["abc"],"line":53},{"cells":["ABC"],"line":54},{"cells":["123"],"line":55},{"cells":[""],"line":56},{"cells":["abc123"],"line":57},{"cells":["aBC123"],"line":58},{"cells":["ABC123"],"line":59}],"name":"I validate rows wit h the correct data type"},{"line":60,"keyword":"Then ","name":"there are no errors"},{"line":62,"keyword":"When ","rows":[{"cells":["Field"],"line":63},{"cells":["-1"],"line":64},{"cells":["\u0026123"],"line":65},{"cells":[""],"line":66}],"name":"I validate rows with the incorrect data types"},{"line":67,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"3","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(3)F ieldErrors","Field"],"line":68},{"cells":["2","[Invalid value, must be alphaNumeric ]"," ;-1"],"line":69},{"cells":["3","[Invalid value, must be alphaNumeric ]","\u0026123"],"line":70},{"cells":["4","[Invalid value, must be alphaNumeric ]",""],"line":71}],"name":"there are 3 errors","result":{"status":"passed","duration":269000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric","id":"datatype-validation;alphanumeric","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":73,"steps":[{"line&quo t;:75,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":76},{"cells":["Field","alphaNumericLowercase"],"line":77}],"name":"the following attribute definitions"},{"line":79,"keyword":"When ","rows":[{"cells":["Field"],"line":80},{"cells":["abc"],"line":81},{"cells":["ab c"],"line":82}, {"cells":["123"],"line":83},{"cells":[""],"line":84},{"cells":["abc123"],"line":85}],"name":"I validate rows with the correct data type"},{"line":86,"keyword":"Then ","name":"there are no errors"},{"line":88,"keyword":"When ",&quo t;rows":[{"cells":["Field"],"line":89},{"cells":["-1"],"line":90},{"cells":["\u0026123"],"line":91},{"cells":[""],"line":92},{"cells":["aBc"],"line":93},{"cells":["ABC"],"line":94},{"cells":["a,bc"],"line":95}],"name":"I validate rows with the incorrect data types"},{"line":96,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":97},{"cells":["2","[Invalid value, must be alphaNumeric Lowercase ]","-1"],"li ne":98},{"cells":["3","[Invalid value, must be alphaNumeric Lowercase ]","\u0026123"],"line":99},{"cells":["4","[Invalid value, must be alphaNumeric Lowercase ]",""],"line":100},{"cells":["5","[Invalid value, must be alphaNumeric Lowercase ]","aBc"],"line":101},{"cells":["6","[Invalid value, must be alphaNumeric Lowercase ]","ABC"],"line":102},{"cells":["7","[Invalid value, must be alphaNumeric Lowercase ]","a,bc"],"line":103}],"name":"there are 6 errors","result":{"status":"passed","duration":430000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Lowercase","id":"datatype-val idation;alphanumeric-lowercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":105,"steps":[{"line":107,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":108},{"cells":["Field","alphaNumericUppercase"],"line":109}],"name":"the following attribute definitions"},{"line":111,"keyword":"When ","rows":[{"cells":["Field"],"line":112},{"cells":["ABC"],"line":113},{"cells":["123"],"line& quot;:114},{"cells":[ ""],"line":115},{"cells":["ABC123"],"line":116}],"name":"I validate rows with the correct data type"},{"line":117,"keyword":"Then ","name":"there are no errors"},{"line":119,"keyword":"When ","rows":[{"cells":["Field"],"line":120},{"cells":["-1"],"line":121},{"cells":["\u0026123"],"line":122},{"cells":[""],"line":123},{"cells":["abc"],"line":124},{"cells":["aBc"],"line":125},{"cells":["A,BC"],"line":126}],"name":"I validate rows with the incorrect data types"},{"line":127,"match":{"location":"ScrubberStepDefs.there_are_errors (int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":128},{"cells":["2","[Invalid value, must be alphaNumeric Uppercase ]","-1"],"line":129},{"cells":["3","[Invalid value, must be alphaNumeric Uppercase ]","\u0026123"],"line":130},{"cells":["4","[Invalid value, must be alphaNumeric Uppercase ]",""],"line":131},{"cells":["5","[Invalid value, must be alphaNumeric Upperca se ]","abc"],"line":132},{"cells":["6","[Invalid value, must be alphaNumeric Uppercase ]","aBc"],"line":133},{"cells":["7","[Invali d value, must be alphaNumeric Uppercase ]","A,BC"],"line":134}],"name":"there are 6 errors","result":{"status":"passed","duration":446000}}],"keyword":"Scenario","type":"scenario","name":"Alphanumeric Uppercase","id":"datatype-validation;alphanumeric-uppercase","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":136,"steps":[{"line":138,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":139},{"cells" :["Field","positive2PlaceDecimal"],"line":140}],"name":"the following attribute definitions"},{"line":142,"keyword":"When ","rows":[{"cells":["Field"],"line":143},{"cells":["123.45"],"line":144},{"cells":["0.12"],"line":145},{"cells":[".12"],"line":146}, {"cells":["0"],"line":147},{"cells":["123"],"line":148},{"cells":["123.1"],"line":149},{"cells":[""],"line":150},{"cells":["100023421.78"],"line":151}],"name":"I validate rows with the correct data type"},{"line":152,"keyword":"Then ","name":"there are no errors"},{"line":154,"keyword&quo t;:"When ","rows":[{"cells":["Field"],"line":155},{"cells":["-0.12"],"line":156},{"cells":["-1"],"line":157},{"cells":["-0"],"line":158},{"cells":["123,1"],"line":159},{"cells":["123.123"],"line":160},{"cells":["a,BC"],"line":161}],"name":"I validate rows with the incorrect data types"},{"line":162,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"6","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(6)FieldErrors","Field"],"line":163},{"cells":["2","[Invalid value, must be positive 2place de cimal ]","-0.12"],"line":164},{"cells":["3","[Invalid value, must be positive 2place decimal ]","-1"],"line":165},{"cells":["4","[Invalid value, must b e positive 2place decimal ]","-0"],"line":166},{"cells":["5","[Invalid value, must be positive 2place decimal ]","123,1"],"line":167},{"cells":["6","[Invalid value, must be positive 2place decimal ]","123.123"],"line":168},{"cells":["7","[Invalid value, must be positive 2place decimal ]","a,BC"],"line":169}],"name":"there are 6 errors","result":{"status":"passed","duration":448000}}],"keyword":"Scenario","type":"scenario","name":"Positive 2 pl ace decimal","id":"datatype-validation;positive-2-place-decimal","description":""},{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the type of data in a field, the scrubber generates errors when those rules are violated","description":""},{"line":171,"steps":[{"line":173,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Data Type"],"line":174},{"cells":["Field","positiveDecimal"],"line":175}],"name":"the following attribute definitions"},{"line":177,"keyword":"When ","rows":[{"cells": ["Field"],"line":178},{"cells":["123.45"],"line":17 9},{"cells":["0.12"],"line":180},{"cells":["0"],"line":181},{"cells":["123"],"line":182},{"cells":["123.1"],"line":183},{"cells":[""],"line":184},{"cells":["123.123"],"line":185},{"cells":["123.1234567"],"line":186},{"cells":[".12"],"line":187},{"cells":["100023421.78"],"line":188}],"name":"I validate rows with the correct data type"},{"line":189,"keyword":"Then ","name":"there are no errors"},{"line":191,"keyword":"When ","rows":[{"cells":["Field"],"line":192},{"cells":["-0.12"],"line":193},{"cells":["-1"],"line" :194},{"cells":["-0"],"line":195},{"cells":["123,1"],"line":196},{"cells":["a,BC"],"line":197}],"name":"I validate rows with the incorrect data types"},{"line":198,"match":{"location":"ScrubberStepDefs.there_are_errors(int,DataTable)","arguments":[{"val":"5","offset":10}]},"keyword":"Then ","rows":[{"cells":["lineNumber","(5)FieldErrors","Field"],"line":199},{"cells":["2","[Invalid value, must be Positive Decimal]", "-0.12"],"line":200},{"cells":["3","[Invalid value, must be Positive Decimal]","-1"],"line":201},{"cells":["4","[Invalid value, must be Positive Decimal]","-0" ],"line":202},{"cells":["5","[Invalid value, must be Positive Decimal]","123,1"],"line":203},{"cells":["6","[Invalid value, must be Positive Decimal]","a,BC"],"line":204}],"name":"there are 5 errors","result":{"status":"passed","duration":366000}}],"keyword":"Scenario","type":"scenario","name":"Positive decimal","id":"datatype-validation;positive-decimal","description":""}],"keyword":"Feature","name":"Datatype validation","id":"datatype-validation","uri":"com/scholastic/util/scrubber/datatypes.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Backg round","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":6,"steps":[{"line":7,"keyword":"Given ","rows":[{"cells":[ ""],"line":8}],"name":"these attribute definitions"},{"line":9,"keyword":"When ","name":"I complete them"},{"line":10,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strin gs","restricted chars","restricted Strings","Data Type","Data Type Details","Validate",""],"line":11}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":116000}}],"keyword":"Scenario","type":"scenario","name":"Empty header row","id":"attribute-definition-completion;empty-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":13,"steps":[{"line":14,"keyword":"Given "," rows":[{ "cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":15}],"name":"these attribute definitions"},{"line":16,"keyword":"When ","name":"I complete them"},{"line":17,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings&qu ot;,"Data Type","Data Type Details","Validate"],"line":18}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Complete header row","id":"attribute-definition-completion;complete-header-row","description":""},{"line":2,"keyword":"Background","type":"background","name":"To suppor t more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":20,"steps":[{"line":21,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique&q uot;],"line":22}],"name":"these attribute definitions"},{"line":23,"keyword":"When ","name":"I complete them"},{"line":24,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":25}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":68000}}],"keyword":"Scenario","type":"scenario&q uot;,"name":"Partial header row at start","id":"attribute-definition-completion;partial-header-row-at-start","description":""},{"line":2,"keyword" :"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":27,"steps":[{"line":28,"keyword":"Given ","rows":[{"cells":["Data Type Details","Validate"],"line":29}],"name":"these attribute definitions"},{"line":30,"keyword":"When ","name":"I complete them"},{"line":31,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following _attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":32}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":63000}}],"keyword":"Scenario","type":"scenario","name":"Partial header row at end","id":"attribute-definition-completion;partial-hea der-row-at-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"T o support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":34,"steps":[{"line":35,"keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":36}],"name":"these attribute definitions"},{"line":37,"keyword":"When ","name":"I complete them"},{"line":38,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allow able strings","restricted chars","restricted Strings","Data Type","Data Type Details","Validate"],"line":39}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":62000}}],"keyword":"Scenario","type":"scenario","name" :"Partial header row at beginning and end","id":"attribute-definition-completion;partial-header-row-at-beginning-and-end","description":""},{"line":2,"keyword":"Background","type":"background","name":"To support more succinct tests and eliminate repeated updates when the attribute changes, we have a helper to","description":"fill in missing attributes"},{"line":41,"steps":[{"line":42,&q uot;keyword":"Given ","rows":[{"cells":["TSO Attribute","Unique","Data Type Details","Validate"],"line":43},{"cells":["One","Yes","test1","true"],"line":44},{"cells":["Two","No","test2","false"],"line":45}],"name":"these attribute definitions"},{"line":46,"keyword":"When ","name":"I complete them"},{"line":47,"match":{"location":"AttributeDefinitionHelperStepdefs.I_get_the_following_attribute_definitions(DataTable)"},"keyword":"Then ","rows":[{"cells":["TSO Attribute","Unique","Required Field","number of characters type","number of charaters","allowable strings"," ;restricted chars","restricted Strin gs","Data Type","Data Type Details","Validate"],"line":48},{"cells":["One","Yes","","","","","","","","test1","true"],"line":49},{"cells":["Two","No","","","","","","","","test2","false"],"line":50}],"name":"I get the following attribute definitions","result":{"status":"passed","duration":106000}}],"keyword":"Scenario","type":"scenario","name":"Values in supplied columns","id":"attribute-definition-completion;values-in-supplied-columns","description":""}],"keyword&quo t;:"Feature","name":"Attribute definition completion","id":"attribute-definition-completion","uri":"com/scholastic/util/scrubber/helpers/attributedefinitionhelper.feature","description":""},{"line":1,"elements":[{"line":2,"keyword":"Background","type":"background","name":"When fields have requirements about the number of characters, the scrubber generates errors when those rules are violated","description":""},{"line":4,"steps":[{"line":6,"keyword":"Given ","rows":[{"cells":["TSO Attribute","number of characters type ","number of charaters"],"line":7},{"cells":["No Requirement","",""],"line":8},{"cells":["5 or less","up to","5"],"line":9}],"name":"the following attribute definitions"},{"line":11,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":12},{"cells":["","Test"],"line":13}],"name":"I validate an empty field with no requirement"},{"line":14,"keyword":"Then ","name":"there are no errors"},{"line":16,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":17},{"cells":["","Test12"],"line":18}],"name":"I validate a field with more characters than allowed"},{"line":19,"keyword":"Then ","rows":[{"cells":[" ;lineNumber","(1)5 or lessErrors","5 or less"],"line":20},{"cells":["2","[GREATER THAN 5 CHARS]","Test12"],"line":21}],"name":"there is 1 error"},{"line":23,"keyword":"When ","rows":[{"cells":["No Requirement","5 or less"],"line":24},{"cells":["","Test1"],"line":25}],"name":"I validate a field with exactly the number of characters allowed"},{"line ":26,"match":{"location":"ScrubberStepDefs.there_are_no_errors()"},"keyword":"Then ","name":"there are no errors","result":{"status&quo

Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.

from cucumber-reporting-jenkins.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.