diff --git a/modules/swagger-codegen/pom.xml b/modules/swagger-codegen/pom.xml
index afaecfc3512..781a789372e 100644
--- a/modules/swagger-codegen/pom.xml
+++ b/modules/swagger-codegen/pom.xml
@@ -199,6 +199,9 @@
+
+ 1.2.1
+
io.swagger
@@ -279,6 +282,13 @@
test
+
+ com.googlecode.java-diff-utils
+ diffutils
+ ${diffutils-version}
+ test
+
+
diff --git a/modules/swagger-codegen/src/main/resources/typescript-angular2/apis.mustache b/modules/swagger-codegen/src/main/resources/typescript-angular2/apis.mustache
index 05b5c6ec2ea..9a39b864538 100644
--- a/modules/swagger-codegen/src/main/resources/typescript-angular2/apis.mustache
+++ b/modules/swagger-codegen/src/main/resources/typescript-angular2/apis.mustache
@@ -1,9 +1,7 @@
{{#apiInfo}}
{{#apis}}
{{#operations}}
-export * from '../api/{{classname}}';
+export * from './{{ classname }}';
{{/operations}}
{{/apis}}
-{{/apiInfo}}
-
-
+{{/apiInfo}}
\ No newline at end of file
diff --git a/modules/swagger-codegen/src/main/resources/typescript-angular2/models.mustache b/modules/swagger-codegen/src/main/resources/typescript-angular2/models.mustache
index 677b6b87328..ace053bd55b 100644
--- a/modules/swagger-codegen/src/main/resources/typescript-angular2/models.mustache
+++ b/modules/swagger-codegen/src/main/resources/typescript-angular2/models.mustache
@@ -3,6 +3,3 @@
export * from './{{{ classname }}}';
{{/model}}
{{/models}}
-
-
-
diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/AssertFile.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/AssertFile.java
index 5ec2d279d7d..d08b53bd686 100644
--- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/AssertFile.java
+++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/utils/AssertFile.java
@@ -9,6 +9,11 @@ import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
+import java.util.List;
+
+import difflib.Delta;
+import difflib.DiffUtils;
+import difflib.Patch;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;
@@ -27,14 +32,14 @@ public class AssertFile {
/**
* Asserts that two directories are recursively equal. If they are not, an {@link AssertionError} is thrown with the
* given message.
- * There will be a binary comparison of all files under expected with all files under actual. File attributes will
+ * There will be a textual comparison of all files under expected with all files under actual. File attributes will
* not be considered.
* Missing or additional files are considered an error.
*
* @param expected Path expected directory
* @param actual Path actual directory
*/
- public static final void assertPathEqualsRecursively(final Path expected, final Path actual) {
+ public static void assertPathEqualsRecursively(final Path expected, final Path actual) {
Assert.assertNotNull(expected);
Assert.assertNotNull(actual);
final Path absoluteExpected = expected.toAbsolutePath();
@@ -66,9 +71,8 @@ public class AssertFile {
if (!Files.exists(actualFile)) {
fail(String.format("File '%s' is missing.", actualFile));
}
- assertEquals(Files.readAllLines(expectedFile, Charset.defaultCharset()),
- Files.readAllLines(actualFile, Charset.defaultCharset()),
- String.format("File content of '%s' and '%s' differ.", expectedFile, actualFile));
+
+ assertFilesAreEqual(expectedFile, actualFile);
return FileVisitResult.CONTINUE;
}
@@ -86,9 +90,43 @@ public class AssertFile {
});
} catch (IOException e) {
- fail(e.getMessage());
+ fail(e.getMessage(), e);
}
}
+
+ public static void assertFilesAreEqual(final Path expected, final Path actual) {
+
+ if(!Files.isRegularFile(expected)) {
+ fail("expected: '%s' is not a readable file");
+ }
+
+ if(!Files.isRegularFile(actual)) {
+ fail("actual: '%s' is not a readable file");
+ }
+
+ try {
+ List expectedLines = Files.readAllLines(expected, Charset.defaultCharset());
+ List actualLines = Files.readAllLines(actual, Charset.defaultCharset());
+ Patch diff = DiffUtils.diff(expectedLines, actualLines);
+ List deltas = diff.getDeltas();
+ if(!deltas.isEmpty()) {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append("files diff:\n");
+ stringBuilder.append("\tfile: '" + expected.toAbsolutePath().toString() + "' \n");
+ stringBuilder.append("\tfile: '" + actual.toAbsolutePath().toString() + "' \n");
+ stringBuilder.append("\tdiffs:\n");
+
+ for (Delta delta: deltas) {
+ stringBuilder.append(delta.toString() + "\n");
+ }
+
+ fail(stringBuilder.toString());
+ }
+
+ } catch (IOException e) {
+ fail(e.getMessage(), e);
+ }
+ }
}
diff --git a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/UserApi.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/UserApi.ts
index 40f94703038..b5dea99577c 100644
--- a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/UserApi.ts
+++ b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/UserApi.ts
@@ -61,4 +61,3 @@ export class UserApi {
}
}
-
diff --git a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/api.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/api.ts
index b261015b7e3..d3bd8432806 100644
--- a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/api.ts
+++ b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/api/api.ts
@@ -1,3 +1 @@
export * from './UserApi';
-
-
diff --git a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/index.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/index.ts
index d6d02862e3c..cdfea183ad3 100644
--- a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/index.ts
+++ b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/index.ts
@@ -1,2 +1,2 @@
-export * from 'api/api';
-export * from 'model/models';
\ No newline at end of file
+export * from './api/api';
+export * from './model/models';
diff --git a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/User.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/User.ts
index b1ce0a0f144..44842ba89ee 100644
--- a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/User.ts
+++ b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/User.ts
@@ -11,4 +11,3 @@ export interface User {
*/
userStatus?: number;
}
-
diff --git a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/models.ts b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/models.ts
index 115b5f75ce4..f6b9f36c6e1 100644
--- a/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/models.ts
+++ b/modules/swagger-codegen/src/test/resources/integrationtests/typescript/additional-properties-expected/model/models.ts
@@ -1,4 +1 @@
export * from './User';
-
-
-