Repository: ioBroker/create-adapter
Pull request #38 (2018-12-19 16:20:04)

Add a pull request template


Patch:
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..fbd37d7
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,15 @@
+<!--
+	Thanks for providing a PR! 
+	Please make sure you have completed the following checklist before submitting your PR
+-->
+
+**PR Checklist:**  
+- [ ] Provide a meaningful description to this PR or mention which issues this fixes.
+- [ ] Add tests for your change. This includes negative tests (i.e. inputs that need to fail) as well as baseline tests (i.e. how should the directory structure look like?).
+- [ ] Run the test suite with `npm test`
+- [ ] If there are baseline changes, review them and make a separate commit for them with the comment "accept baselines" if they are desired changes
+- [ ] Ensure the project builds with `npm run build` and include those artifacts aswell
+
+
+**Description:**  
+add description here
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 911ceda..dc34e88 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,5 @@
 # Changelog
 
-## __WORK_IN_PROGRESS__
-* (AlCalzone) Ask the user for a title (mandatory) and a short description (optional) (#37)
-
 ## v1.2.0 (2018-12-16)
 * (AlCalzone) Initialize the git repo automatically (fixes #13)
 * (AlCalzone) When using TypeScript, perform an initial build run (fixes #27)
diff --git a/README.md b/README.md
index b59693c..239079f 100644
--- a/README.md
+++ b/README.md
@@ -52,7 +52,9 @@ The following features did not make it into v1.0.0 and are planned for a later r
 - [ ] Package scripts for automatic semantic release of new versions
 - [ ] Choice of start mode
 - [ ] Ask for:
+  * adapter title
   * keywords
+  * short description
 - [ ] Automatically open the folder in your favorite editor
 - [ ] Scripts/Helpers for remote debugging
 
diff --git a/build/lib/actionsAndTransformers.js b/build/lib/actionsAndTransformers.js
index 91d4a3b..1d6682e 100644
--- a/build/lib/actionsAndTransformers.js
+++ b/build/lib/actionsAndTransformers.js
@@ -11,7 +11,7 @@ async function checkMinSelections(category, min, answers) {
 }
 exports.checkMinSelections = checkMinSelections;
 function isAdapterNameValid(name) {
-    if (!isNotEmpty(name)) {
+    if (!checkName(name)) {
         return "Please enter a valid name!";
     }
     const forbiddenChars = /[^a-z0-9\-_]/g;
@@ -46,21 +46,11 @@ async function checkAdapterName(name) {
     return true;
 }
 exports.checkAdapterName = checkAdapterName;
-function checkTitle(title) {
-    if (!isNotEmpty(title)) {
-        return "Please enter a title!";
-    }
-    if (/iobroker|adapter/i.test(title)) {
-        return `The title must not contain the words "ioBroker" or "adapter"!`;
-    }
-    return true;
-}
-exports.checkTitle = checkTitle;
-function isNotEmpty(answer) {
-    return answer != undefined && answer.length > 0 && answer.trim().length > 0;
+function checkName(name) {
+    return name != undefined && name.length > 0 && name.trim().length > 0;
 }
 async function checkAuthorName(name) {
-    if (!isNotEmpty(name)) {
+    if (!checkName(name)) {
         return "Please enter a valid name!";
     }
     return true;
@@ -82,13 +72,6 @@ function transformAdapterName(name) {
     return name;
 }
 exports.transformAdapterName = transformAdapterName;
-function transformDescription(description) {
-    description = description.trim();
-    if (description.length === 0)
-        return undefined;
-    return description;
-}
-exports.transformDescription = transformDescription;
 // Taken from https://api.github.com/licenses
 const licenseUrls = {
     "GNU AGPLv3": "https://api.github.com/licenses/agpl-3.0",
diff --git a/build/lib/questions.js b/build/lib/questions.js
index 29f6889..8189027 100644
--- a/build/lib/questions.js
+++ b/build/lib/questions.js
@@ -34,20 +34,6 @@ exports.questionsAndText = [
         resultTransform: actionsAndTransformers_1.transformAdapterName,
         action: actionsAndTransformers_1.checkAdapterName,
     },
-    {
-        type: "input",
-        name: "title",
-        message: "Which title should be shown in the admin UI?",
-        action: actionsAndTransformers_1.checkTitle,
-    },
-    {
-        type: "input",
-        name: "description",
-        message: "Please enter a short description:",
-        hint: "(optional)",
-        optional: true,
-        resultTransform: actionsAndTransformers_1.transformDescription,
-    },
     styledMultiselect({
         name: "features",
         message: "Which features should your project contain?",
@@ -85,7 +71,7 @@ exports.questionsAndText = [
         initial: [0],
         choices: [
             { message: "TSLint", hint: "(recommended)" },
-            { message: "code coverage" },
+            { message: "Code coverage" },
         ],
     }),
     // TODO: enable React (only TypeScript at the start)
@@ -196,7 +182,7 @@ function checkAnswers(answers) {
     for (const q of exports.questions) {
         const answer = answers[q.name];
         const conditionFulfilled = createAdapter_1.testCondition(q.condition, answers);
-        if (!q.optional && conditionFulfilled && answer == undefined) {
+        if (conditionFulfilled && answer == undefined) {
             // A required answer was not given
             throw new Error(`Missing answer "${q.name}"!`);
         }
diff --git a/build/templates/_gitignore.js b/build/templates/_gitignore.js
index ff46151..7db94d4 100644
--- a/build/templates/_gitignore.js
+++ b/build/templates/_gitignore.js
@@ -1,6 +1,6 @@
 "use strict";
 const templateFunction = answers => {
-    const useNyc = answers.tools && answers.tools.indexOf("code coverage") > -1;
+    const useNyc = answers.tools && answers.tools.indexOf("Code coverage") > -1;
     const useTypeScript = answers.language === "TypeScript";
     const template = `
 .git
diff --git a/build/templates/_npmignore.js b/build/templates/_npmignore.js
index f459929..10cfa49 100644
--- a/build/templates/_npmignore.js
+++ b/build/templates/_npmignore.js
@@ -1,7 +1,7 @@
 "use strict";
 const templateFunction = answers => {
     const isAdapter = answers.features.indexOf("Adapter") > -1;
-    const useNyc = answers.tools && answers.tools.indexOf("code coverage") > -1;
+    const useNyc = answers.tools && answers.tools.indexOf("Code coverage") > -1;
     const useTypeScript = answers.language === "TypeScript";
     const useTSLint = answers.tools && answers.tools.indexOf("TSLint") > -1;
     const useESLint = answers.tools && answers.tools.indexOf("ESLint") > -1;
diff --git a/build/templates/package.json.js b/build/templates/package.json.js
index 0f2823b..c2fd2e3 100644
--- a/build/templates/package.json.js
+++ b/build/templates/package.json.js
@@ -8,7 +8,7 @@ const templateFunction = async (answers) => {
     const useTypeScript = answers.language === "TypeScript";
     const useTSLint = answers.tools && answers.tools.indexOf("TSLint") > -1;
     const useESLint = answers.tools && answers.tools.indexOf("ESLint") > -1;
-    const useNyc = answers.tools && answers.tools.indexOf("code coverage") > -1;
+    const useNyc = answers.tools && answers.tools.indexOf("Code coverage") > -1;
     const dependencyPromises = []
         .concat(isAdapter ? ["@iobroker/adapter-core"] : [])
         .sort()
diff --git a/src/lib/actionsAndTransformers.ts b/src/lib/actionsAndTransformers.ts
index ef3bcc1..94eb669 100644
--- a/src/lib/actionsAndTransformers.ts
+++ b/src/lib/actionsAndTransformers.ts
@@ -11,7 +11,7 @@ export async function checkMinSelections(category: string, min: number, answers:
 }
 
 function isAdapterNameValid(name: string): CheckResult {
-	if (!isNotEmpty(name)) {
+	if (!checkName(name)) {
 		return "Please enter a valid name!";
 	}
 	const forbiddenChars = /[^a-z0-9\-_]/g;
@@ -47,22 +47,12 @@ export async function checkAdapterName(name: string): Promise<CheckResult> {
 	return true;
 }
 
-export function checkTitle(title: string): CheckResult {
-	if (!isNotEmpty(title)) {
-		return "Please enter a title!";
-	}
-	if (/iobroker|adapter/i.test(title)) {
-		return `The title must not contain the words "ioBroker" or "adapter"!`;
-	}
-	return true;
-}
-
-function isNotEmpty(answer: string): boolean {
-	return answer != undefined && answer.length > 0 && answer.trim().length > 0;
+function checkName(name: string): boolean {
+	return name != undefined && name.length > 0 && name.trim().length > 0;
 }
 
 export async function checkAuthorName(name: string): Promise<CheckResult> {
-	if (!isNotEmpty(name)) {
+	if (!checkName(name)) {
 		return "Please enter a valid name!";
 	}
 	return true;
@@ -84,12 +74,6 @@ export function transformAdapterName(name: string): string {
 	return name;
 }
 
-export function transformDescription(description: string): string | undefined {
-	description = description.trim();
-	if (description.length === 0) return undefined;
-	return description;
-}
-
 // Taken from https://api.github.com/licenses
 const licenseUrls = {
 	"GNU AGPLv3": "https://api.github.com/licenses/agpl-3.0",
diff --git a/src/lib/questions.ts b/src/lib/questions.ts
index f8d510c..ac1ad82 100644
--- a/src/lib/questions.ts
+++ b/src/lib/questions.ts
@@ -1,12 +1,12 @@
 import { bold, dim, gray, green, underline } from "ansi-colors";
 import { prompt } from "enquirer";
-import { checkAdapterName, checkAuthorName, checkEmail, checkMinSelections, CheckResult, checkTitle, loadLicense, transformAdapterName, transformDescription } from "./actionsAndTransformers";
+import { checkAdapterName, checkAuthorName, checkEmail, checkMinSelections, CheckResult, loadLicense, transformAdapterName } from "./actionsAndTransformers";
 import { testCondition } from "./createAdapter";
 
 // Sadly, Enquirer does not export the PromptOptions type
 // tslint:disable-next-line:ban-types
 type PromptOptions = Exclude<Parameters<typeof prompt>[0], Function | any[]>;
-type QuestionAction<T> = (value: T) => CheckResult | Promise<CheckResult>;
+type QuestionAction<T> = (value: T) => Promise<CheckResult>;
 // tslint:disable-next-line:interface-over-type-literal
 export type AnswerValue = string | boolean | number;
 export type Condition = { name: string } & (
@@ -16,9 +16,8 @@ export type Condition = { name: string } & (
 
 interface QuestionMeta {
 	condition?: Condition | Condition[];
-	resultTransform?: (val: AnswerValue | AnswerValue[]) => AnswerValue | AnswerValue[] | undefined | Promise<AnswerValue | AnswerValue[] | undefined>;
+	resultTransform?: (val: AnswerValue | AnswerValue[]) => AnswerValue | AnswerValue[] | Promise<AnswerValue | AnswerValue[]>;
 	action?: QuestionAction<AnswerValue | AnswerValue[]>;
-	optional?: boolean;
 }
 type Question = PromptOptions & QuestionMeta;
 
@@ -55,20 +54,6 @@ export const questionsAndText: (Question | string)[] = [
 		resultTransform: transformAdapterName,
 		action: checkAdapterName,
 	},
-	{
-		type: "input",
-		name: "title",
-		message: "Which title should be shown in the admin UI?",
-		action: checkTitle,
-	},
-	{
-		type: "input",
-		name: "description",
-		message: "Please enter a short description:",
-		hint: "(optional)",
-		optional: true,
-		resultTransform: transformDescription,
-	},
 	styledMultiselect({
 		name: "features",
 		message: "Which features should your project contain?",
@@ -106,7 +91,7 @@ export const questionsAndText: (Question | string)[] = [
 		initial: [0],
 		choices: [
 			{ message: "TSLint", hint: "(recommended)" },
-			{ message: "code coverage" },
+			{ message: "Code coverage" },
 		],
 	}),
 
@@ -219,18 +204,18 @@ export const questions = questionsAndText.filter(q => typeof q !== "string") as
 
 export interface Answers {
 	adapterName: string;
-	description?: string;
 	authorName: string;
 	authorEmail: string;
 	authorGithub: string;
-	language?: "JavaScript" | "TypeScript";
-	features: ("Adapter" | "VIS widget")[];
-	tools?: ("ESLint" | "TSLint" | "type checking" | "code coverage")[];
+	description?: string;
+	language?: string;
+	tools?: string[];
+	features: string[];
 	title?: string;
 	license: { id: string, name: string, text: string };
 	type?: string;
 	adminReact?: string;
-	indentation?: "Tab" | "Space (4)";
+	indentation?: string;
 	quotes?: "single" | "double";
 	gitCommit?: "yes" | "no";
 }
@@ -239,7 +224,7 @@ export function checkAnswers(answers: Partial<Answers>): void {
 	for (const q of questions) {
 		const answer = (answers as any)[q.name as string];
 		const conditionFulfilled = testCondition(q.condition, answers);
-		if (!q.optional && conditionFulfilled && answer == undefined) {
+		if (conditionFulfilled && answer == undefined) {
 			// A required answer was not given
 			throw new Error(`Missing answer "${q.name}"!`);
 		} else if (!conditionFulfilled && answer != undefined) {
diff --git a/src/templates/_gitignore.ts b/src/templates/_gitignore.ts
index e46c5dd..dfd60e0 100644
--- a/src/templates/_gitignore.ts
+++ b/src/templates/_gitignore.ts
@@ -3,7 +3,7 @@ import { Answers } from "../lib/questions";
 
 const templateFunction: TemplateFunction = answers => {
 
-	const useNyc = answers.tools && answers.tools.indexOf("code coverage") > -1;
+	const useNyc = answers.tools && answers.tools.indexOf("Code coverage") > -1;
 	const useTypeScript = answers.language === "TypeScript";
 
 	const template = `
diff --git a/src/templates/_npmignore.ts b/src/templates/_npmignore.ts
index f6eaada..ac3c2d2 100644
--- a/src/templates/_npmignore.ts
+++ b/src/templates/_npmignore.ts
@@ -4,7 +4,7 @@ import { Answers } from "../lib/questions";
 const templateFunction: TemplateFunction = answers => {
 
 	const isAdapter = answers.features.indexOf("Adapter") > -1;
-	const useNyc = answers.tools && answers.tools.indexOf("code coverage") > -1;
+	const useNyc = answers.tools && answers.tools.indexOf("Code coverage") > -1;
 	const useTypeScript = answers.language === "TypeScript";
 	const useTSLint = answers.tools && answers.tools.indexOf("TSLint") > -1;
 	const useESLint = answers.tools && answers.tools.indexOf("ESLint") > -1;
diff --git a/src/templates/package.json.ts b/src/templates/package.json.ts
index 1044d83..c0e5a42 100644
--- a/src/templates/package.json.ts
+++ b/src/templates/package.json.ts
@@ -10,7 +10,7 @@ const templateFunction: TemplateFunction = async answers => {
 	const useTypeScript = answers.language === "TypeScript";
 	const useTSLint = answers.tools && answers.tools.indexOf("TSLint") > -1;
 	const useESLint = answers.tools && answers.tools.indexOf("ESLint") > -1;
-	const useNyc = answers.tools && answers.tools.indexOf("code coverage") > -1;
+	const useNyc = answers.tools && answers.tools.indexOf("Code coverage") > -1;
 
 	const dependencyPromises = ([] as string[])
 		.concat(isAdapter ? ["@iobroker/adapter-core"] : [])


Test patch:
diff --git a/src/index.test.ts b/src/index.test.ts
index e9be503..03c05bf 100644
--- a/src/index.test.ts
+++ b/src/index.test.ts
@@ -3,26 +3,24 @@
 import * as fs from "fs-extra";
 import * as path from "path";
 import { createAdapter } from "./index";
-import { File, writeFiles } from "./lib/createAdapter";
+import { loadLicense } from "./lib/actionsAndTransformers";
+import { writeFiles } from "./lib/createAdapter";
 import { Answers } from "./lib/questions";
 
 const baselineDir = path.join(__dirname, "../test/baselines");
 
-async function generateBaselines(testName: string, answers: Answers, filterFilesPredicate?: (file: File) => boolean) {
+async function generateBaselines(testName: string, answers: Answers) {
 	const files = await createAdapter(answers);
 
 	const testDir = path.join(baselineDir, testName);
 	await fs.emptyDir(testDir);
-	await writeFiles(
-		testDir,
-		typeof filterFilesPredicate === "function" ? files.filter(filterFilesPredicate) : files,
-	);
+	await writeFiles(testDir, files);
 }
 
 // TODO: Mock network requests
 
-async function expectSuccess(testName: string, answers: Answers, filterFilesPredicate?: (file: File) => boolean) {
-	await generateBaselines(testName, answers, filterFilesPredicate);
+async function expectSuccess(testName: string, answers: Answers) {
+	await generateBaselines(testName, answers as Answers);
 }
 
 async function expectFail(testName: string, answers: Partial<Answers>, message: string) {
@@ -31,20 +29,6 @@ async function expectFail(testName: string, answers: Partial<Answers>, message:
 	await fs.pathExists(testDir).should.become(false);
 }
 
-const baseAnswers: Answers = {
-	adapterName: "test-adapter",
-	title: "Is used to test the creator",
-	features: ["Adapter"],
-	language: "TypeScript",
-	tools: ["TSLint"],
-	indentation: "Tab",
-	quotes: "double",
-	authorName: "Al Calzone",
-	authorGithub: "AlCalzone",
-	authorEmail: "al@calzo.ne",
-	license: "MIT License" as any,
-};
-
 describe("adapter creation =>", () => {
 
 	describe("incomplete answer sets should fail =>", () => {
@@ -54,38 +38,9 @@ describe("adapter creation =>", () => {
 			expectFail("incompleteAnswersOnlyName", answers, "Missing answer");
 		});
 
-		it("no title", () => {
-			const { title, ...noTitle } = baseAnswers;
-			expectFail("incompleteAnswersNoTitle", noTitle, "Missing answer");
-		});
-
-		it("empty title 1", () => {
-			const answers: Answers = {
-				...baseAnswers,
-				title: "",
-			};
-			expectFail("incompleteAnswersEmptyTitle", answers, "Please enter a title");
-		});
-
-		it("empty title 2", () => {
-			const answers: Answers = {
-				...baseAnswers,
-				title: "   ",
-			};
-			expectFail("incompleteAnswersEmptyTitle", answers, "Please enter a title");
-		});
-
-		it("invalid title 1", () => {
-			const answers: Answers = {
-				...baseAnswers,
-				title: "Adapter for ioBroker",
-			};
-			expectFail("incompleteAnswersEmptyTitle", answers, "must not contain the words");
-		});
-
 	});
 
-	describe("generate baselines =>", function () {
+	describe("generate valid baselines =>", function() {
 		this.timeout(60000);
 
 		before(async () => {
@@ -99,63 +54,36 @@ describe("adapter creation =>", () => {
 			);
 		});
 
-		describe("full adapter dir =>", () => {
-			it("Adapter, TypeScript, TSLint, Tabs, Double quotes, MIT License", async () => {
-				const answers: Answers = {
-					...baseAnswers,
-				};
-				await expectSuccess("adapter_TS_TSLint_Tabs_DoubleQuotes_MIT", answers);
-			});
-
-			it("Adapter, JavaScript, ESLint, Spaces, Single quotes, LGPLv3", async () => {
-				const answers: Answers = {
-					...baseAnswers,
-					language: "JavaScript",
-					tools: ["ESLint", "type checking"],
-					indentation: "Space (4)",
-					quotes: "single",
-					license: "GNU LGPLv3" as any,
-				};
-				await expectSuccess("adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3", answers);
-			});
+		it("Adapter, TypeScript, TSLint, Tabs, Double quotes, MIT License", async () => {
+			const answers: Answers = {
+				adapterName: "test-adapter",
+				features: ["Adapter"],
+				language: "TypeScript",
+				tools: ["TSLint"],
+				indentation: "Tab",
+				quotes: "double",
+				authorName: "Al Calzone",
+				authorGithub: "AlCalzone",
+				authorEmail: "al@calzo.ne",
+				license: "MIT License" as any,
+			};
+			await expectSuccess("adapter_TS_TSLint_Tabs_DoubleQuotes_MIT", answers);
 		});
 
-		describe("Single-file component tests =>", () => {
-			it("Valid description", async () => {
-				const answers: Answers = {
-					...baseAnswers,
-					description: "This is a short description",
-				};
-				await expectSuccess(
-					"description_valid",
-					answers,
-					file => file.name === "io-package.json",
-				);
-			});
-
-			it("Empty description 1", async () => {
-				const answers: Answers = {
-					...baseAnswers,
-					description: "",
-				};
-				await expectSuccess(
-					"description_empty_1",
-					answers,
-					file => file.name === "io-package.json",
-				);
-			});
-
-			it("Empty description 2", async () => {
-				const answers: Answers = {
-					...baseAnswers,
-					description: "   ",
-				};
-				await expectSuccess(
-					"description_empty_2",
-					answers,
-					file => file.name === "io-package.json",
-				);
-			});
+		it("Adapter, JavaScript, ESLint, Spaces, Single quotes, LGPLv3", async () => {
+			const answers: Answers = {
+				adapterName: "test-adapter",
+				features: ["Adapter"],
+				language: "JavaScript",
+				tools: ["ESLint", "type checking"],
+				indentation: "Space (4)",
+				quotes: "single",
+				authorName: "Al Calzone",
+				authorGithub: "AlCalzone",
+				authorEmail: "al@calzo.ne",
+				license: "GNU LGPLv3" as any,
+			};
+			await expectSuccess("adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3", answers);
 		});
 
 	});
diff --git a/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/io-package.json b/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/io-package.json
index 5416a37..838ea0e 100644
--- a/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/io-package.json
+++ b/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/io-package.json
@@ -15,17 +15,17 @@
                 "pl": "Pierwsze wydanie"
             }
         },
-        "title": "Is used to test the creator",
+        "title": "test-adapter",
         "titleLang": {
-            "en": "Is used to test the creator",
-            "de": "Is used to test the creator",
-            "ru": "Is used to test the creator",
-            "pt": "Is used to test the creator",
-            "nl": "Is used to test the creator",
-            "fr": "Is used to test the creator",
-            "it": "Is used to test the creator",
-            "es": "Is used to test the creator",
-            "pl": "Is used to test the creator"
+            "en": "test-adapter",
+            "de": "test-adapter",
+            "ru": "test-adapter",
+            "pt": "test-adapter",
+            "nl": "test-adapter",
+            "fr": "test-adapter",
+            "it": "test-adapter",
+            "es": "test-adapter",
+            "pl": "test-adapter"
         },
         "desc": {
             "en": "test-adapter",
diff --git a/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/package.json b/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/package.json
index e1a6571..7fe1048 100644
--- a/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/package.json
+++ b/test/baselines/adapter_JS_ESLint_TypeChecking_Spaces_SingleQuotes_LGPLv3/package.json
@@ -26,7 +26,7 @@
     "@types/chai-as-promised": "^7.1.0",
     "@types/gulp": "^4.0.5",
     "@types/mocha": "^5.2.5",
-    "@types/node": "^10.12.17",
+    "@types/node": "^10.12.15",
     "@types/proxyquire": "^1.3.28",
     "@types/sinon": "^7.0.0",
     "@types/sinon-chai": "^3.2.2",
diff --git a/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/io-package.json b/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/io-package.json
index 3bb7780..7ade7dd 100644
--- a/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/io-package.json
+++ b/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/io-package.json
@@ -15,17 +15,17 @@
 				"pl": "Pierwsze wydanie"
 			}
 		},
-		"title": "Is used to test the creator",
+		"title": "test-adapter",
 		"titleLang": {
-			"en": "Is used to test the creator",
-			"de": "Is used to test the creator",
-			"ru": "Is used to test the creator",
-			"pt": "Is used to test the creator",
-			"nl": "Is used to test the creator",
-			"fr": "Is used to test the creator",
-			"it": "Is used to test the creator",
-			"es": "Is used to test the creator",
-			"pl": "Is used to test the creator"
+			"en": "test-adapter",
+			"de": "test-adapter",
+			"ru": "test-adapter",
+			"pt": "test-adapter",
+			"nl": "test-adapter",
+			"fr": "test-adapter",
+			"it": "test-adapter",
+			"es": "test-adapter",
+			"pl": "test-adapter"
 		},
 		"desc": {
 			"en": "test-adapter",
diff --git a/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/package.json b/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/package.json
index 750d264..3b54d03 100644
--- a/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/package.json
+++ b/test/baselines/adapter_TS_TSLint_Tabs_DoubleQuotes_MIT/package.json
@@ -26,7 +26,7 @@
     "@types/chai-as-promised": "^7.1.0",
     "@types/gulp": "^4.0.5",
     "@types/mocha": "^5.2.5",
-    "@types/node": "^10.12.17",
+    "@types/node": "^10.12.15",
     "@types/proxyquire": "^1.3.28",
     "@types/sinon": "^7.0.0",
     "@types/sinon-chai": "^3.2.2",
@@ -40,7 +40,7 @@
     "sinon-chai": "^3.3.0",
     "source-map-support": "^0.5.9",
     "ts-node": "^7.0.1",
-    "tslint": "^5.12.0",
+    "tslint": "^5.11.0",
     "typescript": "^3.2.2"
   },
   "main": "build/main.js",
diff --git a/test/baselines/description_empty_1/io-package.json b/test/baselines/description_empty_1/io-package.json
deleted file mode 100644
index 3bb7780..0000000
--- a/test/baselines/description_empty_1/io-package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-	"common": {
-		"name": "test-adapter",
-		"version": "0.0.1",
-		"news": {
-			"0.0.1": {
-				"en": "initial release",
-				"de": "Erstveröffentlichung",
-				"ru": "Начальная версия",
-				"pt": "lançamento inicial",
-				"nl": "Eerste uitgave",
-				"fr": "Première version",
-				"it": "Versione iniziale",
-				"es": "Versión inicial",
-				"pl": "Pierwsze wydanie"
-			}
-		},
-		"title": "Is used to test the creator",
-		"titleLang": {
-			"en": "Is used to test the creator",
-			"de": "Is used to test the creator",
-			"ru": "Is used to test the creator",
-			"pt": "Is used to test the creator",
-			"nl": "Is used to test the creator",
-			"fr": "Is used to test the creator",
-			"it": "Is used to test the creator",
-			"es": "Is used to test the creator",
-			"pl": "Is used to test the creator"
-		},
-		"desc": {
-			"en": "test-adapter",
-			"de": "test-adapter",
-			"ru": "test-adapter",
-			"pt": "test-adapter",
-			"nl": "test-adapter",
-			"fr": "test-adapter",
-			"it": "test-adapter",
-			"es": "test-adapter",
-			"pl": "test-adapter"
-		},
-		"authors": [
-			"Al Calzone <al@calzo.ne>"
-		],
-		"keywords": [
-			"ioBroker",
-			"template",
-			"Smart Home",
-			"home automation"
-		],
-		"platform": "Javascript/Node.js",
-		"main": "build/main.js",
-		"icon": "test-adapter.png",
-		"enabled": true,
-		"extIcon": "https://raw.githubusercontent.com/AlCalzone/ioBroker.test-adapter/master/admin/test-adapter.png",
-		"readme": "https://github.com/AlCalzone/ioBroker.test-adapter/blob/master/README.md",
-		"loglevel": "info",
-		"mode": "daemon",
-		"type": "general",
-		"materialize": true,
-		"dependencies": [
-			{
-				"admin": ">=3.0.0"
-			}
-		]
-	},
-	"native": {
-		"option1": true,
-		"option2": "42"
-	},
-	"objects": [],
-	"instanceObjects": []
-}
\ No newline at end of file
diff --git a/test/baselines/description_empty_2/io-package.json b/test/baselines/description_empty_2/io-package.json
deleted file mode 100644
index 3bb7780..0000000
--- a/test/baselines/description_empty_2/io-package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-	"common": {
-		"name": "test-adapter",
-		"version": "0.0.1",
-		"news": {
-			"0.0.1": {
-				"en": "initial release",
-				"de": "Erstveröffentlichung",
-				"ru": "Начальная версия",
-				"pt": "lançamento inicial",
-				"nl": "Eerste uitgave",
-				"fr": "Première version",
-				"it": "Versione iniziale",
-				"es": "Versión inicial",
-				"pl": "Pierwsze wydanie"
-			}
-		},
-		"title": "Is used to test the creator",
-		"titleLang": {
-			"en": "Is used to test the creator",
-			"de": "Is used to test the creator",
-			"ru": "Is used to test the creator",
-			"pt": "Is used to test the creator",
-			"nl": "Is used to test the creator",
-			"fr": "Is used to test the creator",
-			"it": "Is used to test the creator",
-			"es": "Is used to test the creator",
-			"pl": "Is used to test the creator"
-		},
-		"desc": {
-			"en": "test-adapter",
-			"de": "test-adapter",
-			"ru": "test-adapter",
-			"pt": "test-adapter",
-			"nl": "test-adapter",
-			"fr": "test-adapter",
-			"it": "test-adapter",
-			"es": "test-adapter",
-			"pl": "test-adapter"
-		},
-		"authors": [
-			"Al Calzone <al@calzo.ne>"
-		],
-		"keywords": [
-			"ioBroker",
-			"template",
-			"Smart Home",
-			"home automation"
-		],
-		"platform": "Javascript/Node.js",
-		"main": "build/main.js",
-		"icon": "test-adapter.png",
-		"enabled": true,
-		"extIcon": "https://raw.githubusercontent.com/AlCalzone/ioBroker.test-adapter/master/admin/test-adapter.png",
-		"readme": "https://github.com/AlCalzone/ioBroker.test-adapter/blob/master/README.md",
-		"loglevel": "info",
-		"mode": "daemon",
-		"type": "general",
-		"materialize": true,
-		"dependencies": [
-			{
-				"admin": ">=3.0.0"
-			}
-		]
-	},
-	"native": {
-		"option1": true,
-		"option2": "42"
-	},
-	"objects": [],
-	"instanceObjects": []
-}
\ No newline at end of file
diff --git a/test/baselines/description_valid/io-package.json b/test/baselines/description_valid/io-package.json
deleted file mode 100644
index f3328ef..0000000
--- a/test/baselines/description_valid/io-package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-	"common": {
-		"name": "test-adapter",
-		"version": "0.0.1",
-		"news": {
-			"0.0.1": {
-				"en": "initial release",
-				"de": "Erstveröffentlichung",
-				"ru": "Начальная версия",
-				"pt": "lançamento inicial",
-				"nl": "Eerste uitgave",
-				"fr": "Première version",
-				"it": "Versione iniziale",
-				"es": "Versión inicial",
-				"pl": "Pierwsze wydanie"
-			}
-		},
-		"title": "Is used to test the creator",
-		"titleLang": {
-			"en": "Is used to test the creator",
-			"de": "Is used to test the creator",
-			"ru": "Is used to test the creator",
-			"pt": "Is used to test the creator",
-			"nl": "Is used to test the creator",
-			"fr": "Is used to test the creator",
-			"it": "Is used to test the creator",
-			"es": "Is used to test the creator",
-			"pl": "Is used to test the creator"
-		},
-		"desc": {
-			"en": "This is a short description",
-			"de": "This is a short description",
-			"ru": "This is a short description",
-			"pt": "This is a short description",
-			"nl": "This is a short description",
-			"fr": "This is a short description",
-			"it": "This is a short description",
-			"es": "This is a short description",
-			"pl": "This is a short description"
-		},
-		"authors": [
-			"Al Calzone <al@calzo.ne>"
-		],
-		"keywords": [
-			"ioBroker",
-			"template",
-			"Smart Home",
-			"home automation"
-		],
-		"platform": "Javascript/Node.js",
-		"main": "build/main.js",
-		"icon": "test-adapter.png",
-		"enabled": true,
-		"extIcon": "https://raw.githubusercontent.com/AlCalzone/ioBroker.test-adapter/master/admin/test-adapter.png",
-		"readme": "https://github.com/AlCalzone/ioBroker.test-adapter/blob/master/README.md",
-		"loglevel": "info",
-		"mode": "daemon",
-		"type": "general",
-		"materialize": true,
-		"dependencies": [
-			{
-				"admin": ">=3.0.0"
-			}
-		]
-	},
-	"native": {
-		"option1": true,
-		"option2": "42"
-	},
-	"objects": [],
-	"instanceObjects": []
-}
\ No newline at end of file