diff --git a/tests/circular-check.js b/tests/circular-check.js new file mode 100644 index 000000000..e9a4a7b78 --- /dev/null +++ b/tests/circular-check.js @@ -0,0 +1,37 @@ +const madge = require('madge'); +const path = require("path"); +const fs = require("fs"); + +const workingDirecotry = process.cwd(); +const androidApp = path.join(workingDirecotry, "platforms/android/app/src/main/assets/app/tns_modules/tns-core-modules"); +const iosApp = path.join(workingDirecotry, "platforms/ios/tests/app/tns_modules/tns-core-modules"); + +const iosWhiteList = ['image-source/image-source.js', + 'http/http.js', + 'http/http-request/http-request.js']; + +const androidWhiteList = ['ui/frame/frame.js', 'ui/frame/fragment.js']; + +const checkAppForCircualr = async (appName, whiteList) => { + if (!fs.existsSync(appName)) { + console.error(`${appName} doesn't exists!`); + return; + } + + const result = await madge(appName); + const circular = result.circular(); + console.info(`Check ${appName}`); + console.log(`Initial check: `, circular); + + const filteredResult = circular && circular.length > 0 && (whiteList ? circular.filter(c => whiteList.indexOf(c) >= 0) : circular); + + if (circular && circular.length > 0 && filteredResult.length > 0) { + console.log(`Found circular deps!`, filteredResult); + process.exit(1); + } else { + console.log(`Check of circular deps after filtering white list: `, filteredResult); + } +} + +(async () => await checkAppForCircualr(androidApp, androidWhiteList))(); +(async () => await checkAppForCircualr(iosApp, iosWhiteList))(); \ No newline at end of file diff --git a/tests/package.json b/tests/package.json index e5d9d7690..3f6cb8562 100644 --- a/tests/package.json +++ b/tests/package.json @@ -24,5 +24,8 @@ "lazy": "1.0.11", "tns-platform-declarations": "*", "typescript": "^3.1.6" + }, + "scripts": { + "check-circular-deps": "node circular-check.js" } -} +} \ No newline at end of file