From 998f629d6366f58b64b7b83714ff7620adf3cea9 Mon Sep 17 00:00:00 2001 From: Peter Kanev Date: Thu, 19 Oct 2017 18:02:32 +0300 Subject: [PATCH 1/2] add asbg parser and class generation tests --- .travis.yml | 2 ++ android-static-binding-generator/package.json | 6 ++-- android-static-binding-generator/run-tests.js | 34 +++++++++++++++++++ .../tests/specs/ast-parser-tests.spec.js | 16 ++++----- build.gradle | 9 +++-- 5 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 android-static-binding-generator/run-tests.js diff --git a/.travis.yml b/.travis.yml index 1020586e5..2b0f65b79 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,6 +51,8 @@ script: - echo no | android create avd --force -n $EMULATOR_NAME-$EMULATOR_API_LEVEL -t android-$EMULATOR_API_LEVEL --abi $ANDROID_ABI -c 12M - emulator -avd $EMULATOR_NAME-$EMULATOR_API_LEVEL -no-skin -no-audio -no-window & - android-wait-for-emulator + - "node android-static-binding-generator/run-tests" + - "android-static-binding-generator/project/staticbindinggenerator/gradlew clean test --project-dir android-static-binding-generator/project/staticbindinggenerator/" - "cd test-app && ./gradlew runtest --stacktrace" - adb -e logcat -d 300 - cd .. diff --git a/android-static-binding-generator/package.json b/android-static-binding-generator/package.json index fcd080bff..cc26d8c2f 100644 --- a/android-static-binding-generator/package.json +++ b/android-static-binding-generator/package.json @@ -2,10 +2,11 @@ "name": "static_analysis", "version": "1.0.0", "description": "", - "main": "project/parse.js", + "main": "project/parser", "scripts": { - "test": "jasmine JASMINE_CONFIG_PATH=jasmine.json" + "test": "node run-tests.js" }, + "repository": "https://github.com/NativeScript/android-runtime/", "author": "", "license": "ISC", "dependencies": { @@ -15,6 +16,7 @@ "lazy": "^1.0.11" }, "devDependencies": { + "jasmine": "^2.8.0", "jasmine-node": "^1.14.5" } } diff --git a/android-static-binding-generator/run-tests.js b/android-static-binding-generator/run-tests.js new file mode 100644 index 000000000..213d1ad7d --- /dev/null +++ b/android-static-binding-generator/run-tests.js @@ -0,0 +1,34 @@ +(function () { + let { spawnSync, execSync } = require('child_process'); + + console.log("Installing JavaScript parser test dependencies."); + + execSync('npm install'); + + console.log("Executing JavaScript parser tests using Jasmine."); + + const subprocess = spawnSync('node', ['./node_modules/jasmine/bin/jasmine.js', 'JASMINE_CONFIG_PATH=jasmine.json'], { cwd: __dirname }); + + let stdout = subprocess.stdout.toString(); + let stderr = subprocess.stderr.toString(); + let code = subprocess.status; + let err = subprocess.error; + + if (code !== 0) { + console.log("Tests runner exited with a non-zero code."); + + let errorString = stdout; + + if (err) { + errorString = err; + } + + if (stderr) { + errorString = stderr; + } + + throw new Error(errorString); + } + + console.log(stdout); +}()); diff --git a/android-static-binding-generator/tests/specs/ast-parser-tests.spec.js b/android-static-binding-generator/tests/specs/ast-parser-tests.spec.js index ea1c5d2c6..b95493693 100644 --- a/android-static-binding-generator/tests/specs/ast-parser-tests.spec.js +++ b/android-static-binding-generator/tests/specs/ast-parser-tests.spec.js @@ -1,16 +1,15 @@ -'use strict'; - -var exec = require("child_process").exec, +const exec = require("child_process").exec, path = require("path"), fs = require("fs"), prefix = path.resolve(__dirname, "../cases/"), interfaceNames = path.resolve(__dirname, "../interfaces-names.txt"), gradleTraverse = path.resolve(__dirname, "../../project"), gradleTaskName = "traverseJsFilesArgs", - parser = path.resolve(__dirname, "../../project/parser/js_parser.js"); + parser = path.resolve(__dirname, "../../project/parser/js_parser.js"), + gradleExecutable = path.resolve(__dirname, "../../project/staticbindinggenerator/gradlew"); function execGradle(inputPath, bindingsOutput, jsFilesInput, callback) { - exec("gradle -p " + gradleTraverse + " " + gradleTaskName + " -Ptest -PjsCodeDir=\"" + inputPath + "\" -PbindingsFilePath=\"" + bindingsOutput + "\" -PinterfaceNamesFilePath=\"" + interfaceNames + "\" -PjsParserPath=\"" + parser + "\" -PjsFilesParameter=\"" + jsFilesInput + "\"", callback); + exec(`${gradleExecutable} -p ${gradleTraverse} ${gradleTaskName} -Ptest -PjsCodeDir="${inputPath}" -PbindingsFilePath="${bindingsOutput}" -PinterfaceNamesFilePath="${interfaceNames}" -PjsParserPath="${parser}" -PjsFilesParameter="${jsFilesInput}"`, callback); } function logExecResult(stdout, stderr) { @@ -35,9 +34,11 @@ function clearOutput(bindingsOutput, jsFilesInput) { } describe("parser/js_parser tests", function () { + beforeAll(() => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 20 * 1000; // give enough time to start the gradle daemon + }); - describe("js_parser tests", function () { - + describe("Traversal tests", function () { it("Analyse files only in the correct folder structure", function (done) { let input = path.normalize(prefix + "/mini_app/app"), @@ -213,7 +214,6 @@ describe("parser/js_parser tests", function () { console.error(`exec error: ${error}`); return; } - logExecResult(stdout, stderr) let bindingsContent = fs.readFileSync(output, "utf-8").toString().trim().split('\n'); diff --git a/build.gradle b/build.gradle index f0b502180..9bf681a91 100644 --- a/build.gradle +++ b/build.gradle @@ -219,11 +219,16 @@ task generateStaticBindingGeneratorJar(type: Exec) { doFirst { workingDir "$rootDir/android-static-binding-generator/project/staticbindinggenerator" + + def commandArgs = ["assemble"] + if (isWinOs) { - commandLine "cmd", "/c", "gradlew", "assemble" + commandLine "cmd", "/c", "gradlew" } else { - commandLine "./gradlew", "assemble" + commandLine "./gradlew" } + + args commandArgs } } From eb69d4df7b74b556ae908b132e80ee7a1fe3b3f6 Mon Sep 17 00:00:00 2001 From: Peter Kanev Date: Wed, 25 Oct 2017 09:40:39 +0300 Subject: [PATCH 2/2] npm install asbg dependencies in travis ci config --- .travis.yml | 5 ++++- android-static-binding-generator/package.json | 4 ++-- android-static-binding-generator/run-tests.js | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2b0f65b79..6c6141b4d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,7 +51,10 @@ script: - echo no | android create avd --force -n $EMULATOR_NAME-$EMULATOR_API_LEVEL -t android-$EMULATOR_API_LEVEL --abi $ANDROID_ABI -c 12M - emulator -avd $EMULATOR_NAME-$EMULATOR_API_LEVEL -no-skin -no-audio -no-window & - android-wait-for-emulator - - "node android-static-binding-generator/run-tests" + - cd android-static-binding-generator + - "npm install" + - "node run-tests" + - cd .. - "android-static-binding-generator/project/staticbindinggenerator/gradlew clean test --project-dir android-static-binding-generator/project/staticbindinggenerator/" - "cd test-app && ./gradlew runtest --stacktrace" - adb -e logcat -d 300 diff --git a/android-static-binding-generator/package.json b/android-static-binding-generator/package.json index cc26d8c2f..88a966be7 100644 --- a/android-static-binding-generator/package.json +++ b/android-static-binding-generator/package.json @@ -16,7 +16,7 @@ "lazy": "^1.0.11" }, "devDependencies": { - "jasmine": "^2.8.0", - "jasmine-node": "^1.14.5" + "jasmine": "2.8.0", + "jasmine-node": "1.14.5" } } diff --git a/android-static-binding-generator/run-tests.js b/android-static-binding-generator/run-tests.js index 213d1ad7d..4095e8af4 100644 --- a/android-static-binding-generator/run-tests.js +++ b/android-static-binding-generator/run-tests.js @@ -3,7 +3,9 @@ console.log("Installing JavaScript parser test dependencies."); - execSync('npm install'); + let npmInstallResult = execSync('npm install'); + + console.log(npmInstallResult.toString()); console.log("Executing JavaScript parser tests using Jasmine.");