diff options
Diffstat (limited to 'platform/android/scripts/generate-test-code.js')
-rw-r--r-- | platform/android/scripts/generate-test-code.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/platform/android/scripts/generate-test-code.js b/platform/android/scripts/generate-test-code.js new file mode 100644 index 0000000000..1580949fda --- /dev/null +++ b/platform/android/scripts/generate-test-code.js @@ -0,0 +1,60 @@ +'use strict'; + +const fs = require('fs'); +const ejs = require('ejs'); + +global.iff = function (condition, val) { + return condition() ? val : ""; +} + +global.camelize = function (str) { + return str.replace(/(?:^|-)(.)/g, function (_, x) { + return x.toUpperCase(); + }); +} + + +const excludeActivities = ["GeoJsonClusteringActivity","RuntimeStyleTestActivity", "AnimatedMarkerActivity", "ViewPagerActivity","MapFragmentActivity","SupportMapFragmentActivity","SnapshotActivity","NavigationDrawerActivity"]; +const appBasePath = 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity'; +const testBasePath = 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/activity/gen'; +const subPackages = fs.readdirSync(appBasePath); +const ejsConversionTask = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/activity/activity.junit.ejs', 'utf8'), {strict: true}); + +if (!fs.existsSync(testBasePath)){ + fs.mkdirSync(testBasePath); +} + +for(const subPackage of subPackages) { + if(!(subPackage.slice(-5) == '.java')) { + const activities = fs.readdirSync(appBasePath+'/'+subPackage); + + // create directories for package + if (!fs.existsSync(testBasePath+"/"+subPackage)){ + fs.mkdirSync(testBasePath+"/"+subPackage); + } + + for (const activity of activities) { + // strip .java from input file + const activityName = activity.slice(0, -5); + + // create path for test file + const filePath = testBasePath+"/"+subPackage+"/"+activityName+'Test.java'; + + // try removing previous generated files + try { + fs.accessSync(filePath, fs.F_OK); + fs.unlinkSync(filePath); + console.log("Removed file: "+filePath); + } catch (e) { + console.log("No file found: "+filePath); + } + + // only generate test file if not part of exclude list + if (!(excludeActivities.indexOf(activityName) > -1)) { + console.log("Created file: "+filePath); + fs.writeFileSync(filePath, ejsConversionTask([activityName, subPackage])); + } + } + } +} + |