diff --git a/packages/comment-to-assert/.gitignore b/packages/comment-to-assert/.gitignore index 3ab6a7b..0dfab2a 100644 --- a/packages/comment-to-assert/.gitignore +++ b/packages/comment-to-assert/.gitignore @@ -80,3 +80,5 @@ crashlytics.properties crashlytics-build.properties + +lib \ No newline at end of file diff --git a/packages/comment-to-assert/example/example.js b/packages/comment-to-assert/example/example.js new file mode 100644 index 0000000..60fa00e --- /dev/null +++ b/packages/comment-to-assert/example/example.js @@ -0,0 +1,10 @@ +// LICENSE : MIT +"use strict"; +var assert = require("assert"); +var toAssert = require("comment-to-assert"); +var resultOfPrimitive = toAssert.commentToAssertFromCode("1;// => 1"); +assert.equal(resultOfPrimitive, 'assert.equal(1, 1);'); +var resultOfObject = toAssert.commentToAssertFromCode("[1];// => [1]"); +assert.equal(resultOfPrimitive, 'assert.deepEqual([1], [1]);'); +var resultOfIdentifier = toAssert.commentToAssertFromCode("var foo=1;foo;// => 1"); +assert.equal(resultOfPrimitive, 'assert.equal(foo, 1);'); diff --git a/packages/comment-to-assert/package.json b/packages/comment-to-assert/package.json index ee222b2..d36d33d 100644 --- a/packages/comment-to-assert/package.json +++ b/packages/comment-to-assert/package.json @@ -13,12 +13,18 @@ }, "version": "1.0.0", "description": "convert single line comment to assert.", - "main": "index.js", + "main": "lib/comment-to-assert.js", + "files": [ + "lib" + ], "directories": { "test": "test" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "babel src --out-dir lib --source-maps", + "watch": "babel src --out-dir lib --watch --source-maps", + "test": "mocha test/*", + "example": "npm i && npm run build && cd example && npm test" }, "keywords": [ "ast", diff --git a/packages/comment-to-assert/src/comment-to-assert.js b/packages/comment-to-assert/src/comment-to-assert.js index 215a19f..85e69b4 100644 --- a/packages/comment-to-assert/src/comment-to-assert.js +++ b/packages/comment-to-assert/src/comment-to-assert.js @@ -8,7 +8,15 @@ import { wrapAssert } from "./ast-utils" export function commentToAssertFromCode(code) { - return code; + var parseOption = { + loc: true, + range: true, + comment: true, + attachComment: true + }; + var AST = parse(code, parseOption); + var modifiedAST = commentToAssertFromAST(AST); + return generate(modifiedAST); } export function commentToAssertFromAST(ast) { estraverse.replace(ast, { diff --git a/packages/comment-to-assert/test/comment-to-assert-test.js b/packages/comment-to-assert/test/comment-to-assert-test.js index 8193e7b..8e4add7 100644 --- a/packages/comment-to-assert/test/comment-to-assert-test.js +++ b/packages/comment-to-assert/test/comment-to-assert-test.js @@ -2,7 +2,7 @@ import assert from "power-assert" import { commentToAssertFromCode, commentToAssertFromAST -} from "../src/comment-to-assert" + } from "../src/comment-to-assert" import {parse} from "esprima" import {astEqual} from "./lib/ast-equal" @@ -29,6 +29,11 @@ describe("comment-to-assert", function () { assert(typeof result === "string"); astEqual(result, code); }); + it("should keep code mean", function () { + var code = "1;// => 1"; + var result = commentToAssertFromCode(code); + assert.equal(result, "assert.equal(1, 1);"); + }); }); describe("#commentToAssertFromAST", function () { it("should return AST", function () {