Skip to content
This repository has been archived by the owner on Feb 18, 2019. It is now read-only.

Commit

Permalink
fix(dtsm): fix reference path lookup fixes #10
Browse files Browse the repository at this point in the history
  • Loading branch information
vvakame committed May 20, 2015
1 parent b48dfb3 commit dfe797d
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 12 deletions.
5 changes: 3 additions & 2 deletions lib/manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,8 @@ export class Manager {
if (!recipe.bundle) {
return;
}
this._addReferenceToBundle(recipe, _path.relative(this.path, depResult.depName));
let depPath = _path.join(_path.dirname(this.configPath), this.path, depResult.depName);
this._addReferenceToBundle(recipe, depPath);
});

return result;
Expand Down Expand Up @@ -598,7 +599,7 @@ export class Manager {
if (_path.posix) {
referencePath = _path.posix.relative(_path.posix.dirname(bundlePath), pathFromCwd);
}
var referenceComment = "/// <reference path=\"" + referencePath + "\" />\n";
var referenceComment = `/// <reference path="${referencePath}" />` + "\n";
if (bundleContent.indexOf(referenceComment) === -1) {
fs.appendFileSync(bundlePath, referenceComment, {encoding: "utf8"});
}
Expand Down
2 changes: 1 addition & 1 deletion test/fixture/dtsm-installFromFile.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"path": "../../test-tmp/installFromFile",
"bundle": "../../test-tmp/installFromFile/bundle.d.ts",
"dependencies": {
"atom/atom.d.ts": {
"angularjs/angular.d.ts": {
"ref": "master"
}
}
Expand Down
48 changes: 39 additions & 9 deletions test/index_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,17 @@ try {
}

import fs = require("fs");
import path = require("path");
import rimraf = require("rimraf");

import dtsm = require("../lib/index");
import fsgit = require("fs-git");

function bundleBuilder(referencePaths: string[] = []): string {
"use strict";
return referencePaths.map(referencePath => `/// <reference path="${referencePath}" />${"\n"}`).join("");
}

describe("Manager", ()=> {

describe("#init", () => {
Expand Down Expand Up @@ -128,7 +134,8 @@ describe("Manager", ()=> {
describe("#installFromFile", ()=> {

var dtsmFilePath = "./test/fixture/dtsm-installFromFile.json";
var targetDir:string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var pathFromConfig: string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var targetDir = path.join(path.dirname(dtsmFilePath), pathFromConfig);

beforeEach(()=> {
if (fs.existsSync(targetDir)) {
Expand All @@ -144,7 +151,24 @@ describe("Manager", ()=> {
.then(manager => {
return manager.installFromFile().then(result => {
assert(1 < result.dependenciesList.length); // atom.d.ts has meny dependencies
assert(fs.existsSync("test-tmp/installFromFile/atom/atom.d.ts"));
assert(fs.existsSync("test-tmp/installFromFile/angularjs/angular.d.ts"));
});
});
});
it("can generate definitions bundle files", ()=> {
assert(!fs.existsSync(targetDir));

return dtsm
.createManager({configPath: dtsmFilePath})
.then(manager => {
return manager.installFromFile().then(result => {
assert(fs.existsSync("test-tmp/installFromFile/bundle.d.ts"));
let generatedBundle = fs.readFileSync("test-tmp/installFromFile/bundle.d.ts", {encoding:"utf8"});
let expectedBundle = bundleBuilder([
"angularjs/angular.d.ts",
"jquery/jquery.d.ts",
]);
assert(generatedBundle === expectedBundle);
});
});
});
Expand All @@ -153,7 +177,8 @@ describe("Manager", ()=> {
describe("#update", ()=> {

var dtsmFilePath = "./test/fixture/dtsm-update.json";
var targetDir:string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var pathFromConfig: string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var targetDir = path.join(path.dirname(dtsmFilePath), pathFromConfig);

beforeEach(()=> {
if (fs.existsSync(targetDir)) {
Expand Down Expand Up @@ -191,7 +216,8 @@ describe("Manager", ()=> {
describe("#uninstall", ()=> {

var dtsmFilePath = "./test/fixture/dtsm-uninstall.json";
var targetDir:string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var pathFromConfig: string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var targetDir = path.join(path.dirname(dtsmFilePath), pathFromConfig);

beforeEach(()=> {
if (fs.existsSync(targetDir)) {
Expand All @@ -215,7 +241,8 @@ describe("Manager", ()=> {
describe("#link", ()=> {

var dtsmFilePath = "./test/fixture/dtsm-link.json";
var targetDir:string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var pathFromConfig: string = JSON.parse(fs.readFileSync(dtsmFilePath, "utf8")).path;
var targetDir = path.join(path.dirname(dtsmFilePath), pathFromConfig);

beforeEach(()=> {
if (fs.existsSync(targetDir)) {
Expand All @@ -235,10 +262,13 @@ describe("Manager", ()=> {
assert(fs.existsSync(dtsPath));

// check content
var dtsContent = fs.readFileSync(dtsPath, "utf8");
assert(dtsContent.indexOf(`/// <reference path="../../node_modules/commandpost/commandpost.d.ts" />`) !== -1);
assert(dtsContent.indexOf(`/// <reference path="../../node_modules/fs-git/fs-git.d.ts" />`) !== -1);
assert(dtsContent.indexOf(`/// <reference path="../../node_modules/packagemanager-backend/packagemanager-backend.d.ts" />`) !== -1);
let generatedBundle = fs.readFileSync(dtsPath, "utf8");
let expectedBundle = bundleBuilder([
"../../node_modules/commandpost/commandpost.d.ts",
"../../node_modules/fs-git/fs-git.d.ts",
"../../node_modules/packagemanager-backend/packagemanager-backend.d.ts",
]);
assert(generatedBundle === expectedBundle);
});
});
});
Expand Down

0 comments on commit dfe797d

Please sign in to comment.