Skip to content

Make tests passing with https://github.com/NativeScript/nativescript-cli/pull/3070 #74

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Aug 23, 2017
Merged
15 changes: 0 additions & 15 deletions core/tns/angular_helper.py

This file was deleted.

43 changes: 32 additions & 11 deletions core/tns/tns.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,10 @@ def create_app_ng(app_name, attributes={}, log_trace=False, assert_success=True,
if Npm.version() < 5:
assert "nativescript-angular" in output
assert File.exists(os.path.join(app_name, 'node_modules', 'nativescript-theme-core'))
package_json = File.read(os.path.join(app_name, 'package.json'))
assert "tns-core-modules" in package_json
assert "nativescript-angular" in package_json
assert "nativescript-dev-typescript" in package_json

return output

Expand Down Expand Up @@ -348,13 +352,17 @@ def prepare_ios(attributes={}, assert_success=True, log_trace=False, tns_path=No
return output

@staticmethod
def build_android(attributes={}, assert_success=True, tns_path=None):
output = Tns.run_tns_command("build android", attributes=attributes, tns_path=tns_path)
def build_android(attributes={}, assert_success=True, tns_path=None, log_trace=False):
output = Tns.run_tns_command("build android", attributes=attributes, tns_path=tns_path, log_trace=log_trace)
if assert_success:
# Verify output of build command
assert "BUILD SUCCESSFUL" in output, "Build failed!" + os.linesep + output
assert "Project successfully built" in output, "Build failed!" + os.linesep + output
assert "FAILURE" not in output
assert "NOT FOUND" not in output # Test for https://github.com/NativeScript/android-runtime/issues/390
if log_trace:
assert "BUILD SUCCESSFUL" in output, "Build failed!" + os.linesep + output
else:
assert "BUILD SUCCESSFUL" not in output, "Native build out is displayed even without --log trace"

# Verify apk packages
app_name = Tns.__get_app_name_from_attributes(attributes=attributes)
Expand All @@ -377,24 +385,29 @@ def build_android(attributes={}, assert_success=True, tns_path=None):
return output

@staticmethod
def build_ios(attributes={}, assert_success=True, tns_path=None):
def build_ios(attributes={}, assert_success=True, tns_path=None, log_trace=False):

if "--provision" not in attributes.keys():
attr = {"--teamId": DEVELOPMENT_TEAM}
attributes.update(attr)

output = Tns.run_tns_command("build ios", attributes=attributes, tns_path=tns_path)
output = Tns.run_tns_command("build ios", attributes=attributes, tns_path=tns_path, log_trace=log_trace)

app_name = Tns.__get_app_name_from_attributes(attributes=attributes)
app_name = app_name.replace("\"", "") # Handle projects with space
app_id = Tns.__get_final_package_name(app_name, platform=Platform.IOS)

if assert_success:
assert "BUILD SUCCEEDED" in output
assert "Project successfully built" in output
assert "ERROR" not in output
assert "malformed" not in output
assert "CodeSign" in output

if log_trace:
assert "BUILD SUCCEEDED" in output
assert "CodeSign" in output
else:
assert "BUILD SUCCEEDED" not in output, "Native build out is displayed even without --log trace"
assert "CodeSign" not in output, "Native build out is displayed even without --log trace"

# Verify release/debug builds
if "--release" in attributes.keys():
Expand All @@ -410,9 +423,13 @@ def build_ios(attributes={}, assert_success=True, tns_path=None):
device_folder = app_name + "/platforms/ios/build/device/"
emu_folder = app_name + "/platforms/ios/build/emulator/"
if "--forDevice" in attributes.keys() or "--for-device" in attributes.keys():
assert "build/device/" + app_id + ".app" in output
assert "ARCHIVE SUCCEEDED" in output
assert "EXPORT SUCCEEDED" in output
if log_trace:
assert "build/device/" + app_id + ".app" in output
assert "ARCHIVE SUCCEEDED" in output
assert "EXPORT SUCCEEDED" in output
else:
assert "ARCHIVE SUCCEEDED" not in output, "Native build out is displayed even without --log trace"
assert "EXPORT SUCCEEDED" not in output, "Native build out is displayed even without --log trace"
assert File.exists(device_folder + app_id + ".ipa"), "IPA file not found!"
bundle_content = File.read(device_folder + app_id + ".app/" + app_id)
xcode_project = Tns.__get_xcode_project_file(app_name)
Expand All @@ -422,7 +439,11 @@ def build_ios(attributes={}, assert_success=True, tns_path=None):
assert DEVELOPMENT_TEAM in xcode_project or DISTRIBUTION_PROVISIONING in xcode_project, \
"TeamID not passed to Xcode!"
else:
assert "build/emulator/" + app_id + ".app" in output
if log_trace:
assert "build/emulator/" + app_id + ".app" in output
else:
assert "build/emulator/" + app_id + ".app" not in output, \
"Native build out is displayed even without --log trace"
assert File.exists(app_name + "/platforms/ios/" + app_id + "/" + app_id + "-Prefix.pch")
assert File.exists(emu_folder + app_id + ".app")
bundle_content = File.read(emu_folder + app_id + ".app/" + app_id)
Expand Down
Binary file modified data/images/Emulator-Api19-Default/t-ng-live-template-live-n.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file modified data/images/iPhone7N/t-ng-live-template-live-n.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 7 additions & 18 deletions tests/build/android/build_android_ng_tests.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import os

from core.base_class.BaseClass import BaseClass
from core.osutils.file import File
from core.osutils.folder import Folder
from core.settings.settings import ANDROID_RUNTIME_PATH, \
ANDROID_KEYSTORE_PASS, ANDROID_KEYSTORE_ALIAS, ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_ALIAS_PASS
from core.tns.tns import Tns
from core.tns import angular_helper as angular
from core.settings.strings import *


class BuildAndroidNGTests(BaseClass):
Expand All @@ -25,21 +22,13 @@ def tearDownClass(cls):
Folder.cleanup(cls.app_name)

def test_001_build_android_ng_project(self):
angular.assert_angular_project(self.app_name)
Tns.build_android(attributes={"--path": self.app_name})
assert File.exists(os.path.join(self.app_name, debug_apk_path))

def test_200_build_android_ng_project_release(self):
print ANDROID_KEYSTORE_PATH
output = Tns.build_android(attributes={"--keyStorePath": ANDROID_KEYSTORE_PATH,
"--keyStorePassword": ANDROID_KEYSTORE_PASS,
"--keyStoreAlias": ANDROID_KEYSTORE_ALIAS,
"--keyStoreAliasPassword": ANDROID_KEYSTORE_ALIAS_PASS,
"--release": "",
"--path": self.app_name
})
assert successfully_prepared in output
assert build_successful in output

assert successfully_built in output
assert File.exists(os.path.join(self.app_name, release_apk_path))
Tns.build_android(attributes={"--keyStorePath": ANDROID_KEYSTORE_PATH,
"--keyStorePassword": ANDROID_KEYSTORE_PASS,
"--keyStoreAlias": ANDROID_KEYSTORE_ALIAS,
"--keyStoreAliasPassword": ANDROID_KEYSTORE_ALIAS_PASS,
"--release": "",
"--path": self.app_name
})
10 changes: 5 additions & 5 deletions tests/build/android/build_android_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,15 @@ def test_002_build_android_release(self):
"--keyStoreAlias": ANDROID_KEYSTORE_ALIAS,
"--keyStoreAliasPassword": ANDROID_KEYSTORE_ALIAS_PASS,
"--release": ""
})
}, log_trace=True)

# Configs are respected
assert 'release' in File.read(os.path.join(self.app_name, TnsAsserts.PLATFORM_ANDROID_APP_PATH, 'config.json'))

def test_200_build_android_inside_project_folder(self):
Folder.navigate_to(self.app_name)
output = Tns.build_android(tns_path=os.path.join("..", TNS_PATH), attributes={"--path": self.app_name},
assert_success=False)
assert_success=False, log_trace=True)
Folder.navigate_to(TEST_RUN_HOME, relative_from_current_folder=False)
assert successfully_prepared in output
assert build_successful in output
Expand All @@ -130,7 +130,7 @@ def test_201_build_android_with_additional_prepare(self):
def test_202_build_android_with_log_trace_and_platform_not_added_or_empty(self):
"""'tns build android' with log trace options should output more logs."""
Tns.create_app(self.app_no_platform)
output = Tns.build_android(attributes={"--path": self.app_no_platform, "--log trace": ""})
output = Tns.build_android(attributes={"--path": self.app_no_platform}, log_trace=True)

# Assert log trace show gradle logs
assert "[DEBUG]" in output
Expand Down Expand Up @@ -311,8 +311,8 @@ def test_390_build_project_with_foursquare_android_oauth(self):
Tns.platform_add_android(attributes={"--path": self.app_name, "--frameworkPath": ANDROID_RUNTIME_PATH})

# Add foursquare native library as dependency
source = os.path.join('data','issues','android-runtime-755','app.gradle')
target = os.path.join(self.app_name, 'app','App_Resources','Android','app.gradle')
source = os.path.join('data', 'issues', 'android-runtime-755', 'app.gradle')
target = os.path.join(self.app_name, 'app', 'App_Resources', 'Android', 'app.gradle')
File.copy(src=source, dest=target)

# Build the project
Expand Down
9 changes: 1 addition & 8 deletions tests/build/android/plugin_android_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,7 @@ def test_200_build_app_with_plugin_added_inside_project(self):
os.chdir(current_dir)
assert "Successfully installed plugin tns-plugin" in output

output = Tns.build_android(attributes={"--path": self.app_name})
assert successfully_prepared in output

assert build_successful in output
assert successfully_built in output
assert error not in output.lower()
assert "FAILURE" not in output

Tns.build_android(attributes={"--path": self.app_name}, log_trace=True)
assert File.exists(self.app_name + "/platforms/android/build/outputs/apk/TestApp-debug.apk")
assert File.exists(self.app_name + "/platforms/android/src/main/assets/app/tns_modules/tns-plugin/index.js")

Expand Down
34 changes: 26 additions & 8 deletions tests/build/android/prepare_android_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import unittest

from core.base_class.BaseClass import BaseClass
from core.git.git import Git
from core.npm.npm import Npm
from core.osutils.command import run
from core.osutils.file import File
from core.osutils.folder import Folder
from core.osutils.os_type import OSType
Expand All @@ -21,6 +23,7 @@
class PrepareAndroidTests(BaseClass):
def setUp(self):
BaseClass.setUp(self)
Folder.navigate_to(folder=TEST_RUN_HOME, relative_from_current_folder=False)

def test_101_prepare_android(self):
Tns.create_app(self.app_name, update_modules=False)
Expand Down Expand Up @@ -129,14 +132,29 @@ def test_310_prepare_should_flatten_scoped_dependencies(self):
ng_path = os.path.join(self.app_name, TnsAsserts.PLATFORM_ANDROID_NPM_MODULES_PATH, '@angular', 'core')
assert File.exists(ng_path), "Scoped dependencies are flattened, please see #1783!"

@unittest.skip("TODO: Fix the test")
def test_320_unmet_peer_dependencies_do_not_stop_prepare(self):
Tns.create_app_ng(self.app_name, update_modules=True)
# Cleanup node_modules and let CLI install npm dependencies
Folder.cleanup(os.path.join(TEST_RUN_HOME, self.app_name, 'node_modules'))
output = Tns.prepare_android(attributes={"--path": self.app_name})
assert "requires a peer of tns-core-modules" in output, "No npm warning for unmet peer dependencies."
assert "but none was installed" in output, "No npm warning for unmet peer dependencies."
@unittest.skipIf(CURRENT_OS == OSType.WINDOWS, "Skip on Windows")
def test_320_prepare_scoped_plugins(self):
"""
Test for https://github.com/NativeScript/nativescript-cli/pull/3080

Before this change we copied all NG components at following location (js demo of nativescript-facebook):
platforms/android/src/main/assets/app/tns_modules/nativescript-facebook/node_modules/@angular

Now folder above should be empty (or not existing at all).
"""

Folder.cleanup("nativescript-facebook")
Git.clone_repo(repo_url='[email protected]:NativeScript/nativescript-facebook.git',
local_folder="nativescript-facebook")
Folder.navigate_to(folder="nativescript-facebook/src")
output = run(command="npm run build")
Folder.navigate_to(folder=TEST_RUN_HOME, relative_from_current_folder=False)
assert "tsc" in output
assert "ERR" not in output
Tns.prepare_android(attributes={"--path": "nativescript-facebook/demo"})
output = run(command="find nativescript-facebook/demo/platforms/android/ | grep @")
assert "@angular/core" not in output, "@angular/* should not be in platforms folder."
assert "@angular/router" not in output, "@angular/* should not be in platforms folder."

def test_400_prepare_missing_or_missing_platform(self):
Tns.create_app(self.app_name, update_modules=False)
Expand Down
5 changes: 0 additions & 5 deletions tests/build/ios/build_ios_provision_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
Test for --provision options
"""
import os
import unittest

from core.base_class.BaseClass import BaseClass
from core.device.simulator import Simulator
Expand Down Expand Up @@ -47,14 +46,10 @@ def test_200_build_ios_list_provisions(self):
assert DISTRIBUTION_PROVISIONING in output
assert DEVELOPMENT_TEAM in output

@unittest.skipIf("9." in Xcode.get_version(),
"Skip on Xcode 9 because of https://github.com/NativeScript/nativescript-cli/issues/3046")
def test_201_build_ios_with_provision(self):
build_attributes = {"--path": self.app_name, "--forDevice": "", "--release": "", "--provision": PROVISIONING}
Tns.build_ios(attributes=build_attributes)

@unittest.skipIf("9." in Xcode.get_version(),
"Skip on Xcode 9 because of https://github.com/NativeScript/nativescript-cli/issues/3046")
def test_202_build_ios_with_distribution_provision(self):
build_attributes = {"--path": self.app_name, "--forDevice": "", "--release": "",
"--provision": DISTRIBUTION_PROVISIONING}
Expand Down
19 changes: 10 additions & 9 deletions tests/build/ios/build_ios_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,17 @@ def tearDownClass(cls):
def test_001_build_ios(self):
Tns.create_app(self.app_name)
Tns.platform_add_ios(attributes={"--path": self.app_name, "--frameworkPath": IOS_RUNTIME_PATH})
Tns.build_ios(attributes={"--path": self.app_name})
Tns.build_ios(attributes={"--path": self.app_name}, log_trace=True)

Folder.cleanup(os.path.join(self.app_name, 'platforms', 'ios'))
Tns.build_ios(attributes={"--path": self.app_name, "--release": ""})
Tns.build_ios(attributes={"--path": self.app_name, "--release": ""}, log_trace=True)

Folder.cleanup(os.path.join(self.app_name, 'platforms', 'ios'))
Tns.build_ios(attributes={"--path": self.app_name, "--forDevice": ""})
Tns.build_ios(attributes={"--path": self.app_name, "--forDevice": ""}, log_trace=True)

Folder.cleanup(os.path.join(self.app_name, 'platforms', 'ios'))
Tns.platform_add_android(attributes={"--path": self.app_name, "--frameworkPath": ANDROID_RUNTIME_PATH})
Tns.build_ios(attributes={"--path": self.app_name, "--forDevice": "", "--release": ""})
Tns.build_ios(attributes={"--path": self.app_name, "--forDevice": "", "--release": ""}, log_trace=True)

# Verify no aar and frameworks in platforms folder
assert not File.pattern_exists(self.app_name + "/platforms/ios", "*.aar")
Expand All @@ -82,17 +82,17 @@ def test_001_build_ios(self):
assert "armv7" in output
assert "arm64" in output

def test_211_build_ios_inside_project(self):
def test_200_build_ios_inside_project(self):
Tns.create_app(self.app_name)
Tns.platform_add_ios(attributes={"--path": self.app_name, "--frameworkPath": IOS_RUNTIME_PATH})
Folder.navigate_to(self.app_name)
output = Tns.build_ios(tns_path=os.path.join("..", TNS_PATH), attributes={"--path": self.app_name},
assert_success=False)
assert_success=False, log_trace=True)
Folder.navigate_to(TEST_RUN_HOME, relative_from_current_folder=False)
assert "build/emulator/TestApp.app" in output
assert File.exists(self.app_name + "/platforms/ios/build/emulator/TestApp.app")

def test_213_build_ios_platform_not_added_or_platforms_deleted(self):
def test_210_build_ios_platform_not_added_or_platforms_deleted(self):
Tns.create_app(self.app_name_noplatform)
Tns.build_ios(attributes={"--path": self.app_name_noplatform})

Expand Down Expand Up @@ -124,10 +124,11 @@ def test_310_build_ios_with_copy_to(self):
Tns.create_app(self.app_name)
Tns.platform_add_ios(attributes={"--path": self.app_name, "--frameworkPath": IOS_RUNTIME_PATH})

Tns.build_ios(attributes={"--path": self.app_name, "--copy-to": "./"})
Tns.build_ios(attributes={"--path": self.app_name, "--copy-to": "./"}, log_trace=True)
assert File.exists("TestApp.app")

Tns.build_ios(attributes={"--path": self.app_name, "--forDevice": "", "--release": "", "--copy-to": "./"})
Tns.build_ios(attributes={"--path": self.app_name, "--forDevice": "", "--release": "", "--copy-to": "./"},
log_trace=True)
assert File.exists("TestApp.ipa")

def test_320_build_ios_with_custom_entitlements(self):
Expand Down
2 changes: 1 addition & 1 deletion tests/device/run_ios_device_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ def test_330_tns_run_ios_after_rebuild_of_native_project(self):

# `tns run ios` and wait until app is deployed
log = Tns.run_ios(attributes={'--path': self.app_name, '--device': self.DEVICE_ID}, wait=False,
assert_success=False)
assert_success=False, log_trace=True)
strings = [self.DEVICE_ID, 'Successfully synced application']
Tns.wait_for_log(log_file=log, string_list=strings, timeout=120, check_interval=10)

Expand Down
2 changes: 1 addition & 1 deletion tests/emulator/run_android_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ def test_390_tns_run_android_should_warn_if_package_ids_do_not_match(self):
output = Tns.run_android(attributes={'--path': self.app_name, '--justlaunch': ''})
assert "The Application identifier is different from the one inside 'package.json' file." in output
assert "NativeScript CLI might not work properly." in output
assert "BUILD SUCCESSFUL" in output
assert "Project successfully built" in output

@unittest.skipIf(CURRENT_OS == OSType.LINUX, "`shell cp -r` fails for some reason on emulators on Linux.")
def test_400_tns_run_android_respect_adb_errors(self):
Expand Down
Loading