From 45c99c6a5fd537853f597f9f8d0db7bc07f9ab05 Mon Sep 17 00:00:00 2001 From: Charlie Rudolph Date: Mon, 20 Mar 2017 10:23:36 -0700 Subject: [PATCH] fix use of gherkin dependency to not rely on removed field (#793) --- .travis.yml | 7 ++++--- lib/cucumber/ast/feature.js | 4 ++-- lib/cucumber/ast/scenario.js | 8 ++------ lib/cucumber/ast/step.js | 6 +----- lib/cucumber/parser.js | 8 +++----- package.json | 4 ++-- spec/cucumber/ast/feature_spec.js | 19 +++++++++---------- spec/cucumber/ast/scenario_spec.js | 6 +++--- spec/cucumber/parser_spec.js | 16 ++++++++-------- 9 files changed, 34 insertions(+), 44 deletions(-) diff --git a/.travis.yml b/.travis.yml index 963d47563..f451d6933 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,11 +3,12 @@ cache: - $HOME/node_modules deploy: + api_key: "$NPM_AUTH_TOKEN" + email: "charles.w.rudolph@gmail.com" on: - branch: master node: "6" - provider: script - script: scripts/deploy.sh + tags: true + provider: npm skip_cleanup: true language: node_js diff --git a/lib/cucumber/ast/feature.js b/lib/cucumber/ast/feature.js index bd190f000..f94989238 100644 --- a/lib/cucumber/ast/feature.js +++ b/lib/cucumber/ast/feature.js @@ -1,4 +1,4 @@ -function Feature(data, scenarios) { +function Feature(data, uri, scenarios) { var Cucumber = require('../../cucumber'); var Gherkin = require('gherkin'); var _ = require('lodash'); @@ -51,7 +51,7 @@ function Feature(data, scenarios) { }, getUri: function getUri() { - return data.uri; + return uri; }, getLine: function getLine() { diff --git a/lib/cucumber/ast/scenario.js b/lib/cucumber/ast/scenario.js index 2106c03e6..ee4a5c5d8 100644 --- a/lib/cucumber/ast/scenario.js +++ b/lib/cucumber/ast/scenario.js @@ -1,4 +1,4 @@ -function Scenario(data) { +function Scenario(data, uri) { var Cucumber = require('../../cucumber'); var _ = require('lodash'); var feature, steps, tags = []; @@ -25,11 +25,7 @@ function Scenario(data) { }, getUri: function getUri() { - return _.first(self.getUris()); - }, - - getUris: function getUris() { - return _.map(data.locations, 'path'); + return uri; }, getLine: function getLine() { diff --git a/lib/cucumber/ast/step.js b/lib/cucumber/ast/step.js index 77143f735..b43b6850e 100644 --- a/lib/cucumber/ast/step.js +++ b/lib/cucumber/ast/step.js @@ -56,11 +56,7 @@ function Step(data) { }, getUri: function getUri() { - return _.first(self.getUris()); - }, - - getUris: function getUris() { - return _.map(data.locations, 'path'); + return self.getScenario().getUri(); }, getPreviousStep: function getPreviousStep() { diff --git a/lib/cucumber/parser.js b/lib/cucumber/parser.js index e2bc20623..2cb7aee4c 100644 --- a/lib/cucumber/parser.js +++ b/lib/cucumber/parser.js @@ -21,19 +21,17 @@ function Parser(featureSources, astFilter) { throw e; } - var pickles = compiler.compile(gherkinDocument, uri); + var pickles = compiler.compile(gherkinDocument); var scenarios = []; pickles.forEach(function (pickleData) { - var scenario = Cucumber.Ast.Scenario(pickleData); + var scenario = Cucumber.Ast.Scenario(pickleData, uri); if (astFilter.isElementEnrolled(scenario)) { scenarios.push(scenario); } }); if (scenarios.length > 0) { - var featureData = gherkinDocument.feature; - featureData.uri = uri; - features.push(Cucumber.Ast.Feature(featureData, scenarios)); + features.push(Cucumber.Ast.Feature(gherkinDocument.feature, uri, scenarios)); } }); diff --git a/package.json b/package.json index 1f9d1798d..beb41c83d 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "commander": "^2.9.0", "duration": "^0.2.0", "figures": "1.7.0", - "gherkin": "^4.0.0", + "gherkin": "^4.1.0", "glob": "^7.0.0", "is-generator": "^1.0.2", "lodash": "^4.0.0", @@ -127,7 +127,7 @@ "ansi_up": "^1.3.0", "async": "^1.5.0", "browserify": "^13.0.0", - "coffee-script": "^1.10.0", + "coffee-script": "^1.12.4", "connect": "^3.4.0", "exorcist": "^0.4.0", "fs-extra": "^0.26.0", diff --git a/spec/cucumber/ast/feature_spec.js b/spec/cucumber/ast/feature_spec.js index 1a802b5a5..6d956ce7b 100644 --- a/spec/cucumber/ast/feature_spec.js +++ b/spec/cucumber/ast/feature_spec.js @@ -14,8 +14,7 @@ describe("Cucumber.Ast.Feature", function () { tags: [ {tag1: 'data'}, {tag2: 'data'} - ], - uri: 'uri' + ] }; scenario1 = createSpyWithStubs('scenario 1', {setFeature: null}); @@ -26,7 +25,7 @@ describe("Cucumber.Ast.Feature", function () { tag2 = createSpy('tag 2'); spyOn(Cucumber.Ast, 'Tag').and.returnValues(tag1, tag2); - feature = Cucumber.Ast.Feature(featureData, scenarios); + feature = Cucumber.Ast.Feature(featureData, 'uri', scenarios); }); describe("constructor", function () { @@ -46,7 +45,7 @@ describe("Cucumber.Ast.Feature", function () { ' Scenario: Bar\n' + ' Then b\n'; var gherkinDocument = new Gherkin.Parser().parse(source); - feature = Cucumber.Ast.Feature(gherkinDocument.feature, []); + feature = Cucumber.Ast.Feature(gherkinDocument.feature, 'uri', []); }); it('returns the keyword', function() { @@ -61,7 +60,7 @@ describe("Cucumber.Ast.Feature", function () { ' Scenario: Bar\n' + ' Then b\n'; var gherkinDocument = new Gherkin.Parser().parse(source); - feature = Cucumber.Ast.Feature(gherkinDocument.feature, []); + feature = Cucumber.Ast.Feature(gherkinDocument.feature, 'uri', []); }); it('returns the keyword', function() { @@ -79,7 +78,7 @@ describe("Cucumber.Ast.Feature", function () { ' | what |\n' + ' | b |'; var gherkinDocument = new Gherkin.Parser().parse(source); - feature = Cucumber.Ast.Feature(gherkinDocument.feature, []); + feature = Cucumber.Ast.Feature(gherkinDocument.feature, 'uri', []); }); it('returns the keyword', function() { @@ -99,7 +98,7 @@ describe("Cucumber.Ast.Feature", function () { '\n' + ' Then b\n'; var gherkinDocument = new Gherkin.Parser().parse(source); - feature = Cucumber.Ast.Feature(gherkinDocument.feature, []); + feature = Cucumber.Ast.Feature(gherkinDocument.feature, 'uri', []); }); it('returns the keyword', function() { @@ -115,7 +114,7 @@ describe("Cucumber.Ast.Feature", function () { ' Scenario: Bar\n' + ' Then b\n'; var gherkinDocument = new Gherkin.Parser().parse(source); - feature = Cucumber.Ast.Feature(gherkinDocument.feature, []); + feature = Cucumber.Ast.Feature(gherkinDocument.feature, 'uri', []); }); it('returns the keyword', function() { @@ -138,7 +137,7 @@ describe("Cucumber.Ast.Feature", function () { ' | what |\n' + ' | b |'; var gherkinDocument = new Gherkin.Parser().parse(source); - feature = Cucumber.Ast.Feature(gherkinDocument.feature, []); + feature = Cucumber.Ast.Feature(gherkinDocument.feature, 'uri', []); }); it('returns the keyword', function() { @@ -157,7 +156,7 @@ describe("Cucumber.Ast.Feature", function () { ' | what |\n' + ' | b |'; var gherkinDocument = new Gherkin.Parser().parse(source); - feature = Cucumber.Ast.Feature(gherkinDocument.feature, []); + feature = Cucumber.Ast.Feature(gherkinDocument.feature, 'uri', []); }); it('returns the keyword', function() { diff --git a/spec/cucumber/ast/scenario_spec.js b/spec/cucumber/ast/scenario_spec.js index 5a1ae14af..584696614 100644 --- a/spec/cucumber/ast/scenario_spec.js +++ b/spec/cucumber/ast/scenario_spec.js @@ -6,7 +6,7 @@ describe("Cucumber.Ast.Scenario", function () { beforeEach(function () { var scenarioData = { - locations: [{path: 'path', line: 1}, {line: 2}], + locations: [{line: 1}, {line: 2}], name: 'name', steps: [ {step1: 'data'}, @@ -26,7 +26,7 @@ describe("Cucumber.Ast.Scenario", function () { tag2 = createSpy('tag 2'); spyOn(Cucumber.Ast, 'Tag').and.returnValues(tag1, tag2); - scenario = Cucumber.Ast.Scenario(scenarioData); + scenario = Cucumber.Ast.Scenario(scenarioData, 'uri'); }); describe("constructor", function () { @@ -80,7 +80,7 @@ describe("Cucumber.Ast.Scenario", function () { describe("getUri()", function () { it("returns the URI on which the background starts", function () { - expect(scenario.getUri()).toEqual('path'); + expect(scenario.getUri()).toEqual('uri'); }); }); diff --git a/spec/cucumber/parser_spec.js b/spec/cucumber/parser_spec.js index 595a8c80d..949e94426 100644 --- a/spec/cucumber/parser_spec.js +++ b/spec/cucumber/parser_spec.js @@ -54,15 +54,15 @@ describe("Cucumber.Parser", function () { }); it("compiles the feature data", function () { - expect(gherkinCompiler.compile).toHaveBeenCalledWith(gherkinDocument1, 'first feature uri'); - expect(gherkinCompiler.compile).toHaveBeenCalledWith(gherkinDocument2, 'second feature uri'); + expect(gherkinCompiler.compile).toHaveBeenCalledWith(gherkinDocument1); + expect(gherkinCompiler.compile).toHaveBeenCalledWith(gherkinDocument2); }); it("creates the scenarios", function () { - expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle1Data); - expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle2Data); - expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle3Data); - expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle4Data); + expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle1Data, 'first feature uri'); + expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle2Data, 'first feature uri'); + expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle3Data, 'second feature uri'); + expect(Cucumber.Ast.Scenario).toHaveBeenCalledWith(pickle4Data, 'second feature uri'); }); it("checks if each scenario should be enrolled", function () { @@ -73,8 +73,8 @@ describe("Cucumber.Parser", function () { }); it("creates the features", function () { - expect(Cucumber.Ast.Feature).toHaveBeenCalledWith({feature1: 'data', uri: 'first feature uri'}, [scenario1, scenario2]); - expect(Cucumber.Ast.Feature).toHaveBeenCalledWith({feature2: 'data', uri: 'second feature uri'}, [scenario3]); + expect(Cucumber.Ast.Feature).toHaveBeenCalledWith({feature1: 'data'}, 'first feature uri', [scenario1, scenario2]); + expect(Cucumber.Ast.Feature).toHaveBeenCalledWith({feature2: 'data'}, 'second feature uri', [scenario3]); }); it("returns the features", function () {