Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,11 @@ module.exports = function (grunt) {
testConflicts: {
src: ['test/src/conflicts/dirname/index.ts'],
outDir: 'test/build/conflicts/dirname'
}
},
testDotSlash: {
src: ['test/src/dot-slash/index.ts'],
outDir: 'test/build/dot-slash'
}
},
mochaTest: {
options: {
Expand All @@ -92,6 +96,7 @@ module.exports = function (grunt) {
'ts:testEs6',
'ts:testCommonJs',
'ts:testConflicts',
'ts:testDotSlash',
'run'
]);

Expand Down
4 changes: 2 additions & 2 deletions lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ export function bundle(options: Options): BundleResult {
mainFileContent += generatedLine + "\n";
});
mainFile = path.resolve(baseDir, "dts-bundle.tmp." + exportName + ".d.ts");
fs.writeFileSync(mainFile, mainFileContent, 'utf8');
fs.writeFileSync(mainFile, mainFileContent, { encoding: 'utf8' });
}

trace('\n### find typings ###');
Expand Down Expand Up @@ -424,7 +424,7 @@ export function bundle(options: Options): BundleResult {
}
}

fs.writeFileSync(outFile, content, 'utf8');
fs.writeFileSync(outFile, content, { encoding: 'utf8' });
bundleResult.emitted = true;
} else {
warning(" XXX Not emit due to exist files not found.")
Expand Down
19 changes: 19 additions & 0 deletions test/expected/dot-slash/bundle.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

declare module 'bundle' {
import { SomeOtherClass } from "bundle/SomeOtherClass";
export interface IShouldBeThereOnlyOnce {
name: string;
}
export function getOther(): SomeOtherClass;
}

declare module 'bundle/SomeOtherClass' {
import { IShouldBeThereOnlyOnce } from "bundle/";
export class SomeOtherClass {
/**
* Extract metadata from the given audio file
*/
static saveTheWorld(once: IShouldBeThereOnlyOnce): Promise<any>;
}
}

11 changes: 11 additions & 0 deletions test/src/dot-slash/SomeOtherClass.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import {IShouldBeThereOnlyOnce} from "./";

export class SomeOtherClass {

/**
* Extract metadata from the given audio file
*/
public static saveTheWorld(once: IShouldBeThereOnlyOnce): Promise<any> {
return null;
}
}
13 changes: 13 additions & 0 deletions test/src/dot-slash/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use strict';

import {SomeOtherClass} from "./SomeOtherClass";

const other: SomeOtherClass = new SomeOtherClass();

export interface IShouldBeThereOnlyOnce {
name: string,
}

export function getOther(): SomeOtherClass {
return null;
}
50 changes: 50 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -532,4 +532,54 @@ describe('dts bundle', function () {
]);
assert.strictEqual(getFile(actualFile), getFile(expectedFile));
});

(function testit(name, assertion, run) {
var buildDir = path.resolve(__dirname, 'build', name);
var call = function (done) {
var testDir = path.join(tmpDir, name);
var expDir = path.join(expectDir, name);

mkdirp.sync(testDir);

ncp.ncp(buildDir, testDir, function (err) {
if (err) {
done(err);
return;
}
assertion(testDir, expDir);
done();
});
};

var label = 'bundle ' + name;

if (run === 'skip') {
it.skip(label, call);
}
else if (run === 'only') {
it.only(label, call);
}
else {
it(label, call);
}
})('dot-slash', function (actDir, expDir) {
var result = dts.bundle({
name: 'bundle',
main: path.join(actDir, '../dot-slash', 'index.d.ts'),
newline: '\n',
verbose: true,
headerPath: "none"
});
var name = 'bundle.d.ts';
var actualFile = path.join(actDir, name);
assert.isTrue(result.emitted, "not emit " + actualFile);
var expectedFile = path.join(expDir, name);
assertFiles(actDir, [
name,
'index.d.ts',
'SomeOtherClass.d.ts'
]);
assert.strictEqual(getFile(actualFile), getFile(expectedFile));
})

});