From 90d1079715dc2d49cc035a39d60c30a66a11a677 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Thu, 11 Jun 2026 15:13:22 -0300 Subject: [PATCH 1/3] fix: release our own blocks and release instead of dealloc data This solves a crash when releasing blocks like when we close/terminate workers --- NativeScript/runtime/ObjectManager.mm | 401 +++++++++++++------------- 1 file changed, 208 insertions(+), 193 deletions(-) diff --git a/NativeScript/runtime/ObjectManager.mm b/NativeScript/runtime/ObjectManager.mm index 75df80d7..9b07e8ff 100644 --- a/NativeScript/runtime/ObjectManager.mm +++ b/NativeScript/runtime/ObjectManager.mm @@ -1,11 +1,11 @@ +#include "ObjectManager.h" #include #include -#include "ObjectManager.h" -#include "DataWrapper.h" -#include "Helpers.h" #include "Caches.h" #include "Constants.h" +#include "DataWrapper.h" #include "FFICall.h" +#include "Helpers.h" using namespace v8; using namespace std; @@ -15,225 +15,240 @@ static Class NSTimerClass = objc_getClass("NSTimer"); void ObjectManager::Init(Isolate* isolate, Local globalTemplate) { - globalTemplate->Set(tns::ToV8String(isolate, "__releaseNativeCounterpart"), FunctionTemplate::New(isolate, ReleaseNativeCounterpartCallback)); + globalTemplate->Set(tns::ToV8String(isolate, "__releaseNativeCounterpart"), + FunctionTemplate::New(isolate, ReleaseNativeCounterpartCallback)); } -std::shared_ptr> ObjectManager::Register(Local context, const Local obj) { - Isolate* isolate = context->GetIsolate(); - std::shared_ptr> objectHandle = std::make_shared>(isolate, obj); - objectHandle->SetWrapperClassId(Constants::ClassTypes::ObjectManagedValue); - ObjectWeakCallbackState* state = new ObjectWeakCallbackState(objectHandle); - objectHandle->SetWeak(state, FinalizerCallback, WeakCallbackType::kFinalizer); - return objectHandle; +std::shared_ptr> ObjectManager::Register(Local context, + const Local obj) { + Isolate* isolate = context->GetIsolate(); + std::shared_ptr> objectHandle = + std::make_shared>(isolate, obj); + objectHandle->SetWrapperClassId(Constants::ClassTypes::ObjectManagedValue); + ObjectWeakCallbackState* state = new ObjectWeakCallbackState(objectHandle); + objectHandle->SetWeak(state, FinalizerCallback, WeakCallbackType::kFinalizer); + return objectHandle; } void ObjectManager::FinalizerCallback(const WeakCallbackInfo& data) { - ObjectWeakCallbackState* state = data.GetParameter(); - Isolate* isolate = data.GetIsolate(); - Local value = state->target_->Get(isolate); - bool disposed = ObjectManager::DisposeValue(isolate, value); - - if (disposed) { - state->target_->Reset(); - delete state; - } else { - state->target_->ClearWeak(); - state->target_->SetWeak(state, FinalizerCallback, WeakCallbackType::kFinalizer); - } + ObjectWeakCallbackState* state = data.GetParameter(); + Isolate* isolate = data.GetIsolate(); + Local value = state->target_->Get(isolate); + bool disposed = ObjectManager::DisposeValue(isolate, value); + + if (disposed) { + state->target_->Reset(); + delete state; + } else { + state->target_->ClearWeak(); + state->target_->SetWeak(state, FinalizerCallback, WeakCallbackType::kFinalizer); + } } bool ObjectManager::DisposeValue(Isolate* isolate, Local value, bool isFinalDisposal) { - if (value.IsEmpty() || value->IsNullOrUndefined() || !value->IsObject()) { - return true; + if (value.IsEmpty() || value->IsNullOrUndefined() || !value->IsObject()) { + return true; + } + + Local obj = value.As(); + if (obj->InternalFieldCount() > 1 && !isFinalDisposal) { + Local superValue = obj->GetInternalField(1); + if (!superValue.IsEmpty() && superValue->IsString()) { + // Do not dispose the ObjCWrapper contained in a "super" instance + return true; } + } - Local obj = value.As(); - if (obj->InternalFieldCount() > 1 && !isFinalDisposal) { - Local superValue = obj->GetInternalField(1); - if (!superValue.IsEmpty() && superValue->IsString()) { - // Do not dispose the ObjCWrapper contained in a "super" instance - return true; + BaseDataWrapper* wrapper = tns::GetValue(isolate, value); + // NSLog(@"dispose %p", wrapper); + if (wrapper == nullptr) { + tns::SetValue(isolate, obj, nullptr); + return true; + } + + if (wrapper->IsGcProtected() && !isFinalDisposal) { + return false; + } + + std::shared_ptr cache = Caches::Get(isolate); + switch (wrapper->Type()) { + case WrapperType::Struct: { + StructWrapper* structWrapper = static_cast(wrapper); + void* data = structWrapper->Data(); + + std::shared_ptr> poParentStruct = structWrapper->Parent(); + if (poParentStruct != nullptr) { + Local parentStruct = poParentStruct->Get(isolate); + BaseDataWrapper* parentWrapper = tns::GetValue(isolate, parentStruct); + if (parentWrapper != nullptr && parentWrapper->Type() == WrapperType::Struct) { + StructWrapper* parentStructWrapper = static_cast(parentWrapper); + parentStructWrapper->DecrementChildren(); + } + } else { + if (structWrapper->ChildCount() == 0) { + std::pair key = + std::make_pair(data, structWrapper->StructInfo().Name()); + cache->StructInstances.erase(key); + std::free(data); + } else { + return false; } + } + break; } - - BaseDataWrapper* wrapper = tns::GetValue(isolate, value); - //NSLog(@"dispose %p", wrapper); - if (wrapper == nullptr) { - tns::SetValue(isolate, obj, nullptr); - return true; + case WrapperType::ObjCObject: { + ObjCDataWrapper* objCObjectWrapper = static_cast(wrapper); + id target = objCObjectWrapper->Data(); + if (target != nil) { + cache->Instances.erase(target); + [target release]; + } + break; } - - if (wrapper->IsGcProtected() && !isFinalDisposal) { - return false; + case WrapperType::Block: { + BlockWrapper* blockWrapper = static_cast(wrapper); + if (blockWrapper->OwnsBlock()) { + // Balance the CFRetain taken when a native block was wrapped for JS + // (see Interop::GetResult). This runs the block's dispose helper if + // we held the last reference. + CFRelease(blockWrapper->Block()); + } + // Blocks created from JS callbacks (OwnsBlock() == false) are owned by + // the native code they were handed to (e.g. NSNotificationCenter); + // freeing them here would leave that code with a dangling pointer. The + // JSBlock dispose helper cleans up once the last native reference goes. + break; } - - std::shared_ptr cache = Caches::Get(isolate); - switch (wrapper->Type()) { - case WrapperType::Struct: { - StructWrapper* structWrapper = static_cast(wrapper); - void* data = structWrapper->Data(); - - std::shared_ptr> poParentStruct = structWrapper->Parent(); - if (poParentStruct != nullptr) { - Local parentStruct = poParentStruct->Get(isolate); - BaseDataWrapper* parentWrapper = tns::GetValue(isolate, parentStruct); - if (parentWrapper != nullptr && parentWrapper->Type() == WrapperType::Struct) { - StructWrapper* parentStructWrapper = static_cast(parentWrapper); - parentStructWrapper->DecrementChildren(); - } - } else { - if (structWrapper->ChildCount() == 0) { - std::pair key = std::make_pair(data, structWrapper->StructInfo().Name()); - cache->StructInstances.erase(key); - std::free(data); - } else { - return false; - } - } - break; - } - case WrapperType::ObjCObject: { - ObjCDataWrapper* objCObjectWrapper = static_cast(wrapper); - id target = objCObjectWrapper->Data(); - if (target != nil) { - cache->Instances.erase(target); - [target release]; - } - break; - } - case WrapperType::Block: { - BlockWrapper* blockWrapper = static_cast(wrapper); - if(!blockWrapper->OwnsBlock()) { - std::free(blockWrapper->Block()); - } - break; - } - case WrapperType::Reference: { - ReferenceWrapper* referenceWrapper = static_cast(wrapper); - if (referenceWrapper->Data() != nullptr) { - referenceWrapper->SetData(nullptr); - referenceWrapper->SetEncoding(nullptr); - } - - break; - } - case WrapperType::Pointer: { - PointerWrapper* pointerWrapper = static_cast(wrapper); - if (pointerWrapper->Data() != nullptr) { - cache->PointerInstances.erase(pointerWrapper->Data()); - - if (pointerWrapper->IsAdopted()) { - std::free(pointerWrapper->Data()); - pointerWrapper->SetData(nullptr); - } - } - break; - } - case WrapperType::FunctionReference: { - FunctionReferenceWrapper* funcWrapper = static_cast(wrapper); - std::shared_ptr> func = funcWrapper->Function(); - if (func != nullptr) { - func->Reset(); - } - break; - } - case WrapperType::AnonymousFunction: { - break; - } - case WrapperType::ExtVector: { - ExtVectorWrapper* extVectorWrapper = static_cast(wrapper); - FFICall::DisposeFFIType(extVectorWrapper->FFIType(), extVectorWrapper->TypeEncoding()); - void* data = extVectorWrapper->Data(); - if (data) { - std::free(data); - } - break; + case WrapperType::Reference: { + ReferenceWrapper* referenceWrapper = static_cast(wrapper); + if (referenceWrapper->Data() != nullptr) { + referenceWrapper->SetData(nullptr); + referenceWrapper->SetEncoding(nullptr); + } + + break; + } + case WrapperType::Pointer: { + PointerWrapper* pointerWrapper = static_cast(wrapper); + if (pointerWrapper->Data() != nullptr) { + cache->PointerInstances.erase(pointerWrapper->Data()); + + if (pointerWrapper->IsAdopted()) { + std::free(pointerWrapper->Data()); + pointerWrapper->SetData(nullptr); } - case WrapperType::Worker: { - WorkerWrapper* worker = static_cast(wrapper); - if (!worker->isDisposed()) { - // during final disposal, inform the worker it should delete itself - if (isFinalDisposal) { - worker->MakeWeak(); - } - return false; - } - break; + } + break; + } + case WrapperType::FunctionReference: { + FunctionReferenceWrapper* funcWrapper = static_cast(wrapper); + std::shared_ptr> func = funcWrapper->Function(); + if (func != nullptr) { + func->Reset(); + } + break; + } + case WrapperType::AnonymousFunction: { + break; + } + case WrapperType::ExtVector: { + ExtVectorWrapper* extVectorWrapper = static_cast(wrapper); + FFICall::DisposeFFIType(extVectorWrapper->FFIType(), extVectorWrapper->TypeEncoding()); + void* data = extVectorWrapper->Data(); + if (data) { + std::free(data); + } + break; + } + case WrapperType::Worker: { + WorkerWrapper* worker = static_cast(wrapper); + if (!worker->isDisposed()) { + // during final disposal, inform the worker it should delete itself + if (isFinalDisposal) { + worker->MakeWeak(); } - - default: - break; + return false; + } + break; } - delete wrapper; - wrapper = nullptr; - tns::DeleteValue(isolate, obj); - return true; + default: + break; + } + + delete wrapper; + wrapper = nullptr; + tns::DeleteValue(isolate, obj); + return true; } void ObjectManager::ReleaseNativeCounterpartCallback(const FunctionCallbackInfo& info) { - Isolate* isolate = info.GetIsolate(); - - if (info.Length() != 1) { - std::ostringstream errorStream; - errorStream << "Actual arguments count: \"" << info.Length() << "\". Expected: \"1\"."; - std::string errorMessage = errorStream.str(); - Local error = Exception::Error(tns::ToV8String(isolate, errorMessage)); - isolate->ThrowException(error); - return; - } - - Local value = info[0]; - BaseDataWrapper* wrapper = tns::GetValue(isolate, value); - - if (wrapper == nullptr) { - std::string arg0 = tns::ToString(isolate, info[0]); - std::ostringstream errorStream; - errorStream << arg0 << " is an object which is not a native wrapper."; - std::string errorMessage = errorStream.str(); - Local error = Exception::Error(tns::ToV8String(isolate, errorMessage)); - isolate->ThrowException(error); - return; - } - - if (wrapper->Type() != WrapperType::ObjCObject) { - return; + Isolate* isolate = info.GetIsolate(); + + if (info.Length() != 1) { + std::ostringstream errorStream; + errorStream << "Actual arguments count: \"" << info.Length() << "\". Expected: \"1\"."; + std::string errorMessage = errorStream.str(); + Local error = Exception::Error(tns::ToV8String(isolate, errorMessage)); + isolate->ThrowException(error); + return; + } + + Local value = info[0]; + BaseDataWrapper* wrapper = tns::GetValue(isolate, value); + + if (wrapper == nullptr) { + std::string arg0 = tns::ToString(isolate, info[0]); + std::ostringstream errorStream; + errorStream << arg0 << " is an object which is not a native wrapper."; + std::string errorMessage = errorStream.str(); + Local error = Exception::Error(tns::ToV8String(isolate, errorMessage)); + isolate->ThrowException(error); + return; + } + + if (wrapper->Type() != WrapperType::ObjCObject) { + return; + } + + ObjCDataWrapper* objcWrapper = static_cast(wrapper); + id data = objcWrapper->Data(); + if (data != nil) { + std::shared_ptr cache = Caches::Get(isolate); + auto it = cache->Instances.find(data); + if (it != cache->Instances.end()) { + ObjectWeakCallbackState* state = it->second->ClearWeak(); + if (state != nullptr) { + delete state; + } + cache->Instances.erase(it); } - ObjCDataWrapper* objcWrapper = static_cast(wrapper); - id data = objcWrapper->Data(); - if (data != nil) { - std::shared_ptr cache = Caches::Get(isolate); - auto it = cache->Instances.find(data); - if (it != cache->Instances.end()) { - ObjectWeakCallbackState* state = it->second->ClearWeak(); - if (state != nullptr) { - delete state; - } - cache->Instances.erase(it); - } - - [data dealloc]; + // Release the runtime's strong reference (taken when the object was first + // wrapped or adopted from an alloc/new/copy return). For instances solely + // owned by JS this deallocates immediately; for shared natives (e.g. an + // NSNotificationCenter observer token) the remaining owners keep it alive. + // Calling [data dealloc] here, as this used to do, destroyed objects that + // were still referenced elsewhere and caused use-after-free crashes. + [data release]; - delete wrapper; - tns::SetValue(isolate, value.As(), nullptr); - } + delete wrapper; + tns::SetValue(isolate, value.As(), nullptr); + } } -bool ObjectManager::IsInstanceOf(id obj, Class clazz) { - return [obj isKindOfClass:clazz]; -} +bool ObjectManager::IsInstanceOf(id obj, Class clazz) { return [obj isKindOfClass:clazz]; } long ObjectManager::GetRetainCount(id obj) { - if (!obj) { - return 0; - } + if (!obj) { + return 0; + } - if (ObjectManager::IsInstanceOf(obj, NSTimerClass)) { - return 0; - } + if (ObjectManager::IsInstanceOf(obj, NSTimerClass)) { + return 0; + } - return CFGetRetainCount(obj); + return CFGetRetainCount(obj); } -} +} // namespace tns From b19d6b03396f61da7ad81ae454f8cf065297b82c Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Thu, 11 Jun 2026 15:14:05 -0300 Subject: [PATCH 2/3] fix(worker): worker path resolution parity with android and error handling for missing scripts --- NativeScript/runtime/Worker.mm | 57 +++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/NativeScript/runtime/Worker.mm b/NativeScript/runtime/Worker.mm index fb85540e..e4971731 100644 --- a/NativeScript/runtime/Worker.mm +++ b/NativeScript/runtime/Worker.mm @@ -102,7 +102,49 @@ throw NativeScriptException( throw NativeScriptException("Worker constructor expects a string URL or URL object."); } - // TODO: Validate worker path and call worker.onerror if the script does not exist + // Relative worker paths are resolved against the calling module's directory, + // matching the Android runtime and the legacy JSC iOS runtime. If no file is + // found there, fall back to app-root-relative resolution, which is what this + // runtime historically did. + if (workerPath.rfind("./", 0) == 0 || workerPath.rfind("../", 0) == 0) { + Local stack = StackTrace::CurrentStackTrace(isolate, 1); + if (!stack.IsEmpty() && stack->GetFrameCount() > 0) { + Local scriptName = stack->GetFrame(isolate, 0)->GetScriptName(); + if (!scriptName.IsEmpty()) { + std::string callerScript = ToString(isolate, scriptName); + const std::string filePrefix = "file://"; + if (callerScript.rfind(filePrefix, 0) == 0) { + callerScript = callerScript.substr(filePrefix.size()); + } + // Script origins are relative to the app bundle root (BaseDir) + if (!callerScript.empty() && callerScript[0] == '/' && + callerScript.rfind(RuntimeConfig.BaseDir, 0) != 0) { + callerScript = RuntimeConfig.BaseDir + callerScript; + } + if (!callerScript.empty() && callerScript[0] == '/') { + NSString* callerDir = [[NSString stringWithUTF8String:callerScript.c_str()] + stringByDeletingLastPathComponent]; + NSString* candidate = [[callerDir + stringByAppendingPathComponent:[NSString stringWithUTF8String:workerPath.c_str()]] + stringByStandardizingPath]; + if (tns::Exists([candidate fileSystemRepresentation]) || + tns::Exists( + [[candidate stringByAppendingPathExtension:@"js"] fileSystemRepresentation]) || + tns::Exists([[candidate stringByAppendingPathComponent:@"index.js"] + fileSystemRepresentation])) { + workerPath = [candidate UTF8String]; + } + } + } + } + + if (workerPath.rfind("./", 0) == 0 || workerPath.rfind("../", 0) == 0) { + NSString* fallback = [[[NSString stringWithUTF8String:RuntimeConfig.ApplicationPath.c_str()] + stringByAppendingPathComponent:[NSString stringWithUTF8String:workerPath.c_str()]] + stringByStandardizingPath]; + workerPath = [fallback UTF8String]; + } + } int qos = -1; if (info.Length() >= 2 && info[1]->IsObject()) { @@ -149,6 +191,19 @@ throw NativeScriptException( TryCatch tc(isolate); + // If the script can be determined missing up-front, report it through + // worker.onerror instead of running (and let the caller terminate us). + if (!resolvedPath.empty() && resolvedPath[0] == '/' && !tns::Exists(resolvedPath.c_str())) { + NSString* path = [NSString stringWithUTF8String:resolvedPath.c_str()]; + if (!tns::Exists([[path stringByAppendingPathExtension:@"js"] fileSystemRepresentation]) && + !tns::Exists( + [[path stringByAppendingPathComponent:@"index.js"] fileSystemRepresentation])) { + worker->PassUncaughtExceptionFromWorkerToMain( + "Worker script does not exist: " + resolvedPath, resolvedPath, "", 1, true); + return isolate; + } + } + // Debug: Log worker execution // printf("Worker: About to run module: %s\n", resolvedPath.c_str()); From 41a989dd8c0e0f7ab6c275f7ad56366773e99088 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Thu, 11 Jun 2026 15:14:57 -0300 Subject: [PATCH 3/3] test: use shared tests across android and ios --- .github/workflows/npm_release.yml | 5 + .github/workflows/pull_request.yml | 5 + .gitmodules | 4 + .../Jasmine/jasmine-2.0.1/boot.js | 0 .../Jasmine/jasmine-2.0.1/jasmine.js | 0 .../jasmine-reporters/junit_reporter.js | 0 .../jasmine-reporters/terminal_reporter.js | 0 .../Infrastructure/Jasmine/jasmine.d.ts | 0 .../{tests => }/Infrastructure/simulator.js | 0 .../app/{tests => }/Infrastructure/timers.js | 0 .../app/{tests => }/Infrastructure/utf8.js | 0 TestRunner/app/shared | 1 + TestRunner/app/tests/index.js | 12 +- TestRunner/app/tests/shared/.gitattributes | 4 - .../shared/Import/ImportCommonJS/file.js | 1 - .../shared/Import/ImportCommonJS/index.js | 2 - .../tests/shared/Import/ImportJSON/data.json | 3 - .../tests/shared/Import/ImportJSON/index.js | 2 - TestRunner/app/tests/shared/Import/index.js | 13 - TestRunner/app/tests/shared/README.md | 20 - .../shared/Require/AbsolutePath/dependency.js | 1 - .../shared/Require/AbsolutePath/index.js | 3 - .../shared/Require/CaseSensitive/MyModule.js | 1 - .../shared/Require/CaseSensitive/index.js | 3 - .../Require/CaseSensitive/mymodule/index.js | 1 - .../ChangingRequireObject/dependency.js | 3 - .../Require/ChangingRequireObject/index.js | 5 - .../CircularIndexRequire/dependency1.js | 5 - .../CircularIndexRequire/dependency2.js | 8 - .../Require/CircularIndexRequire/index.js | 5 - .../Require/CircularRequire/dependency1.js | 3 - .../Require/CircularRequire/dependency2.js | 3 - .../Require/CircularRequire/dependency3.js | 3 - .../shared/Require/CircularRequire/index.js | 8 - .../CircularRequireWithExports/dependency1.js | 5 - .../CircularRequireWithExports/dependency2.js | 3 - .../CircularRequireWithExports/dependency3.js | 5 - .../CircularRequireWithExports/index.js | 8 - .../Require/DirectoryWithIndexJson/index.js | 1 - .../DirectoryWithIndexJson/module/index.json | 1 - .../dep1/dependency1.js | 7 - .../dep2/dep2-inner/index.js | 5 - .../DirnameAndFilenameParameters/index.js | 7 - .../Require/ExportsBubbling/dependency1.js | 2 - .../Require/ExportsBubbling/dependency2.js | 2 - .../Require/ExportsBubbling/dependency3.js | 2 - .../Require/ExportsBubbling/dependency4.js | 2 - .../Require/ExportsBubbling/dependency5.js | 1 - .../shared/Require/ExportsBubbling/index.js | 4 - .../FileAndDirectoryWithSameName/index.js | 2 - .../FileAndDirectoryWithSameName/module.js | 1 - .../module/submodule.js | 1 - .../FileEndingWithCommentedLine/index.js | 1 - .../shared/Require/FileWithDots/file.name.js | 1 - .../shared/Require/FileWithDots/index.js | 1 - .../FiveLevelsOfRequire/dependency1.js | 2 - .../FiveLevelsOfRequire/dependency2.js | 2 - .../FiveLevelsOfRequire/dependency3.js | 2 - .../FiveLevelsOfRequire/dependency4.js | 2 - .../FiveLevelsOfRequire/dependency5.js | 1 - .../Require/FiveLevelsOfRequire/index.js | 3 - .../shared/Require/GlobalIsDefined/module.js | 5 - .../shared/Require/GlobalRequire/index.js | 1 - .../shared/Require/ModuleErrorCache/index.js | 8 - .../Require/ModuleErrorCache/maybeThrow.js | 7 - .../Require/ModuleRequireFunction/module1.js | 2 - .../Require/ModuleRequireFunction/module2.js | 1 - .../Require/ModuleVariable/dependency1.js | 2 - .../Require/ModuleVariable/dependency2.js | 2 - .../Require/ModuleVariable/dependency3.js | 2 - .../Require/ModuleVariable/dependency4.js | 2 - .../Require/ModuleVariable/dependency5.js | 1 - .../shared/Require/ModuleVariable/index.js | 4 - .../shared/Require/ModuleWith.js/index.js | 1 - .../Require/ModuleWithNullChar/index.js | Bin 29 -> 0 bytes .../Require/MultipleRequireOfAFile/index.js | 9 - .../Require/MultipleRequireOfAFile/module.js | 1 - .../Require/NestedGlobalObject/dependency1.js | 20 - .../Require/NestedGlobalObject/dependency2.js | 20 - .../Require/NestedGlobalObject/dependency3.js | 16 - .../Require/NestedGlobalObject/dependency4.js | 16 - .../Require/NestedGlobalObject/dependency5.js | 10 - .../Require/NestedGlobalObject/index.js | 24 - .../Require/NotExistingFileRequire/index.js | 9 - .../shared/Require/PackageJsonApp/index.js | 2 - .../shared/Require/PackageJsonApp/io/io.js | 1 - .../Require/PackageJsonApp/io/package.json | 7 - .../Require/PackageJsonAppNoMain/index.js | 2 - .../Require/PackageJsonAppNoMain/io/index.js | 1 - .../PackageJsonAppNoMain/io/package.json | 6 - .../PackageJsonAppWithoutExtension/index.js | 2 - .../PackageJsonAppWithoutExtension/io/io.js | 1 - .../io/package.json | 3 - .../PackageJsonMainPointsToDir/package.json | 7 - .../subdirectory/index.js | 2 - .../Require/PackageJsonSyntaxError/index.js | 6 - .../PackageJsonSyntaxError/io/index.js | 1 - .../PackageJsonSyntaxError/io/package.json | 8 - .../shared/Require/PackageJsonTns/index.js | 2 - .../Require/RequireExtensions/dependency1.js | 1 - .../shared/Require/RequireExtensions/index.js | 3 - .../Require/RequireJsonCorruptFile/index.js | 5 - .../Require/RequireJsonCorruptFile/test.json | 3 - .../RequireJsonCorruptFile1/badJSON.json | 1 - .../Require/RequireJsonCorruptFile1/index.js | 5 - .../shared/Require/RequireJsonFile/index.js | 1 - .../shared/Require/RequireJsonFile/test.json | 3 - .../Require/RequireModuleFolder/index.js | 3 - .../RequireModuleFolderConflict/dependency.js | 1 - .../RequireModuleFolderConflict/index.js | 3 - .../Require/RequirePriority/dependency1.js | 1 - .../Require/RequirePriority/dependency2.js | 1 - .../RequirePriority/dependency3/index.js | 1 - .../Require/RequirePriority/dependency4.js | 1 - .../RequirePriority/dependency5/index.js | 1 - .../shared/Require/RequirePriority/index.js | 7 - .../Require/RequireWithTildeSyntax/module.js | 3 - .../Require/ResolveCanonicalPath/index.js | 1 - .../Require/ResolveCanonicalPath/package.json | 4 - .../Require/ResolveCanonicalPath/second.js | 4 - .../RuntimeErrorInModule/dependency.js | 1 - .../Require/RuntimeErrorInModule/index.js | 9 - .../Require/SimpleGlobalObject/dependency.js | 13 - .../Require/SimpleGlobalObject/index.js | 17 - .../Require/SimpleRequire/dependency.js | 1 - .../shared/Require/SimpleRequire/index.js | 3 - .../SimpleRequireWithExports/dependency.js | 9 - .../Require/SimpleRequireWithExports/index.js | 6 - .../Require/SyntaxErrorInModule/dependency.js | 1 - .../Require/SyntaxErrorInModule/index.js | 9 - .../Require/TwoLevelsOfRequire/dependency1.js | 3 - .../Require/TwoLevelsOfRequire/dependency2.js | 2 - .../Require/TwoLevelsOfRequire/index.js | 3 - .../dependency1.js | 14 - .../dependency2.js | 9 - .../TwoLevelsOfRequireWithExports/index.js | 6 - TestRunner/app/tests/shared/Require/index.js | 348 ----------- TestRunner/app/tests/shared/RuntimeTests.js | 5 - TestRunner/app/tests/shared/WeakRef.js | 47 -- .../app/tests/shared/Workers/EvalWorker.js | 4 - .../shared/Workers/WorkerInvalidSyntax.js | 1 - .../shared/Workers/WorkerStressJSTest.js | 20 - TestRunner/app/tests/shared/Workers/index.js | 578 ------------------ TestRunner/app/tests/shared/index.js | 27 - .../tns-core-modules}/shared/package.json | 0 145 files changed, 21 insertions(+), 1580 deletions(-) rename TestRunner/app/{tests => }/Infrastructure/Jasmine/jasmine-2.0.1/boot.js (100%) rename TestRunner/app/{tests => }/Infrastructure/Jasmine/jasmine-2.0.1/jasmine.js (100%) rename TestRunner/app/{tests => }/Infrastructure/Jasmine/jasmine-reporters/junit_reporter.js (100%) rename TestRunner/app/{tests => }/Infrastructure/Jasmine/jasmine-reporters/terminal_reporter.js (100%) rename TestRunner/app/{tests => }/Infrastructure/Jasmine/jasmine.d.ts (100%) rename TestRunner/app/{tests => }/Infrastructure/simulator.js (100%) rename TestRunner/app/{tests => }/Infrastructure/timers.js (100%) rename TestRunner/app/{tests => }/Infrastructure/utf8.js (100%) create mode 160000 TestRunner/app/shared delete mode 100644 TestRunner/app/tests/shared/.gitattributes delete mode 100644 TestRunner/app/tests/shared/Import/ImportCommonJS/file.js delete mode 100644 TestRunner/app/tests/shared/Import/ImportCommonJS/index.js delete mode 100644 TestRunner/app/tests/shared/Import/ImportJSON/data.json delete mode 100644 TestRunner/app/tests/shared/Import/ImportJSON/index.js delete mode 100644 TestRunner/app/tests/shared/Import/index.js delete mode 100644 TestRunner/app/tests/shared/README.md delete mode 100644 TestRunner/app/tests/shared/Require/AbsolutePath/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/AbsolutePath/index.js delete mode 100644 TestRunner/app/tests/shared/Require/CaseSensitive/MyModule.js delete mode 100644 TestRunner/app/tests/shared/Require/CaseSensitive/index.js delete mode 100644 TestRunner/app/tests/shared/Require/CaseSensitive/mymodule/index.js delete mode 100644 TestRunner/app/tests/shared/Require/ChangingRequireObject/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/ChangingRequireObject/index.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularIndexRequire/index.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequire/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequire/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequire/dependency3.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequire/index.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency3.js delete mode 100644 TestRunner/app/tests/shared/Require/CircularRequireWithExports/index.js delete mode 100644 TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/index.js delete mode 100644 TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/module/index.json delete mode 100644 TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep1/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep2/dep2-inner/index.js delete mode 100644 TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/index.js delete mode 100644 TestRunner/app/tests/shared/Require/ExportsBubbling/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/ExportsBubbling/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/ExportsBubbling/dependency3.js delete mode 100644 TestRunner/app/tests/shared/Require/ExportsBubbling/dependency4.js delete mode 100644 TestRunner/app/tests/shared/Require/ExportsBubbling/dependency5.js delete mode 100644 TestRunner/app/tests/shared/Require/ExportsBubbling/index.js delete mode 100644 TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/index.js delete mode 100644 TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module.js delete mode 100644 TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module/submodule.js delete mode 100644 TestRunner/app/tests/shared/Require/FileEndingWithCommentedLine/index.js delete mode 100644 TestRunner/app/tests/shared/Require/FileWithDots/file.name.js delete mode 100644 TestRunner/app/tests/shared/Require/FileWithDots/index.js delete mode 100644 TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency3.js delete mode 100644 TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency4.js delete mode 100644 TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency5.js delete mode 100644 TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/index.js delete mode 100644 TestRunner/app/tests/shared/Require/GlobalIsDefined/module.js delete mode 100644 TestRunner/app/tests/shared/Require/GlobalRequire/index.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleErrorCache/index.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleErrorCache/maybeThrow.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleRequireFunction/module1.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleRequireFunction/module2.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleVariable/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleVariable/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleVariable/dependency3.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleVariable/dependency4.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleVariable/dependency5.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleVariable/index.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleWith.js/index.js delete mode 100644 TestRunner/app/tests/shared/Require/ModuleWithNullChar/index.js delete mode 100644 TestRunner/app/tests/shared/Require/MultipleRequireOfAFile/index.js delete mode 100644 TestRunner/app/tests/shared/Require/MultipleRequireOfAFile/module.js delete mode 100644 TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency3.js delete mode 100644 TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency4.js delete mode 100644 TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency5.js delete mode 100644 TestRunner/app/tests/shared/Require/NestedGlobalObject/index.js delete mode 100644 TestRunner/app/tests/shared/Require/NotExistingFileRequire/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonApp/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonApp/io/io.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonApp/io/package.json delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/package.json delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/io.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/package.json delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/package.json delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/subdirectory/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/index.js delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/package.json delete mode 100644 TestRunner/app/tests/shared/Require/PackageJsonTns/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireExtensions/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireExtensions/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/test.json delete mode 100644 TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/badJSON.json delete mode 100644 TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireJsonFile/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireJsonFile/test.json delete mode 100644 TestRunner/app/tests/shared/Require/RequireModuleFolder/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequirePriority/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/RequirePriority/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/RequirePriority/dependency3/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequirePriority/dependency4.js delete mode 100644 TestRunner/app/tests/shared/Require/RequirePriority/dependency5/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequirePriority/index.js delete mode 100644 TestRunner/app/tests/shared/Require/RequireWithTildeSyntax/module.js delete mode 100644 TestRunner/app/tests/shared/Require/ResolveCanonicalPath/index.js delete mode 100644 TestRunner/app/tests/shared/Require/ResolveCanonicalPath/package.json delete mode 100644 TestRunner/app/tests/shared/Require/ResolveCanonicalPath/second.js delete mode 100644 TestRunner/app/tests/shared/Require/RuntimeErrorInModule/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/RuntimeErrorInModule/index.js delete mode 100644 TestRunner/app/tests/shared/Require/SimpleGlobalObject/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/SimpleGlobalObject/index.js delete mode 100644 TestRunner/app/tests/shared/Require/SimpleRequire/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/SimpleRequire/index.js delete mode 100644 TestRunner/app/tests/shared/Require/SimpleRequireWithExports/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/SimpleRequireWithExports/index.js delete mode 100644 TestRunner/app/tests/shared/Require/SyntaxErrorInModule/dependency.js delete mode 100644 TestRunner/app/tests/shared/Require/SyntaxErrorInModule/index.js delete mode 100644 TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/index.js delete mode 100644 TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency1.js delete mode 100644 TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency2.js delete mode 100644 TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/index.js delete mode 100644 TestRunner/app/tests/shared/Require/index.js delete mode 100644 TestRunner/app/tests/shared/RuntimeTests.js delete mode 100644 TestRunner/app/tests/shared/WeakRef.js delete mode 100644 TestRunner/app/tests/shared/Workers/EvalWorker.js delete mode 100644 TestRunner/app/tests/shared/Workers/WorkerInvalidSyntax.js delete mode 100644 TestRunner/app/tests/shared/Workers/WorkerStressJSTest.js delete mode 100644 TestRunner/app/tests/shared/Workers/index.js delete mode 100644 TestRunner/app/tests/shared/index.js rename TestRunner/app/{tests => tns_modules/tns-core-modules}/shared/package.json (100%) diff --git a/.github/workflows/npm_release.yml b/.github/workflows/npm_release.yml index 9930c5ea..2ac73db9 100644 --- a/.github/workflows/npm_release.yml +++ b/.github/workflows/npm_release.yml @@ -27,6 +27,8 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 + submodules: true + persist-credentials: false # disable to prevent leaking credentials to build scripts - name: LLVM cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -94,6 +96,9 @@ jobs: with: xcode-version: ${{env.XCODE_VERSION}} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + submodules: true + persist-credentials: false # disable to prevent leaking credentials to build scripts - name: LLVM cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index a8c85169..1f3ec841 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -16,6 +16,8 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 + submodules: true + persist-credentials: false # disable to prevent leaking credentials to build scripts - name: LLVM cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: @@ -70,6 +72,9 @@ jobs: with: xcode-version: ${{env.XCODE_VERSION}} - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + submodules: true + persist-credentials: false # disable to prevent leaking credentials to build scripts - name: LLVM cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: diff --git a/.gitmodules b/.gitmodules index fa45c83c..b4c0365e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,3 +2,7 @@ path = libffi url = https://github.com/NativeScript/libffi.git branch = darind/v8-ios +[submodule "TestRunner/app/shared"] + path = TestRunner/app/shared + url = https://github.com/NativeScript/common-runtime-tests-app.git + branch = master diff --git a/TestRunner/app/tests/Infrastructure/Jasmine/jasmine-2.0.1/boot.js b/TestRunner/app/Infrastructure/Jasmine/jasmine-2.0.1/boot.js similarity index 100% rename from TestRunner/app/tests/Infrastructure/Jasmine/jasmine-2.0.1/boot.js rename to TestRunner/app/Infrastructure/Jasmine/jasmine-2.0.1/boot.js diff --git a/TestRunner/app/tests/Infrastructure/Jasmine/jasmine-2.0.1/jasmine.js b/TestRunner/app/Infrastructure/Jasmine/jasmine-2.0.1/jasmine.js similarity index 100% rename from TestRunner/app/tests/Infrastructure/Jasmine/jasmine-2.0.1/jasmine.js rename to TestRunner/app/Infrastructure/Jasmine/jasmine-2.0.1/jasmine.js diff --git a/TestRunner/app/tests/Infrastructure/Jasmine/jasmine-reporters/junit_reporter.js b/TestRunner/app/Infrastructure/Jasmine/jasmine-reporters/junit_reporter.js similarity index 100% rename from TestRunner/app/tests/Infrastructure/Jasmine/jasmine-reporters/junit_reporter.js rename to TestRunner/app/Infrastructure/Jasmine/jasmine-reporters/junit_reporter.js diff --git a/TestRunner/app/tests/Infrastructure/Jasmine/jasmine-reporters/terminal_reporter.js b/TestRunner/app/Infrastructure/Jasmine/jasmine-reporters/terminal_reporter.js similarity index 100% rename from TestRunner/app/tests/Infrastructure/Jasmine/jasmine-reporters/terminal_reporter.js rename to TestRunner/app/Infrastructure/Jasmine/jasmine-reporters/terminal_reporter.js diff --git a/TestRunner/app/tests/Infrastructure/Jasmine/jasmine.d.ts b/TestRunner/app/Infrastructure/Jasmine/jasmine.d.ts similarity index 100% rename from TestRunner/app/tests/Infrastructure/Jasmine/jasmine.d.ts rename to TestRunner/app/Infrastructure/Jasmine/jasmine.d.ts diff --git a/TestRunner/app/tests/Infrastructure/simulator.js b/TestRunner/app/Infrastructure/simulator.js similarity index 100% rename from TestRunner/app/tests/Infrastructure/simulator.js rename to TestRunner/app/Infrastructure/simulator.js diff --git a/TestRunner/app/tests/Infrastructure/timers.js b/TestRunner/app/Infrastructure/timers.js similarity index 100% rename from TestRunner/app/tests/Infrastructure/timers.js rename to TestRunner/app/Infrastructure/timers.js diff --git a/TestRunner/app/tests/Infrastructure/utf8.js b/TestRunner/app/Infrastructure/utf8.js similarity index 100% rename from TestRunner/app/tests/Infrastructure/utf8.js rename to TestRunner/app/Infrastructure/utf8.js diff --git a/TestRunner/app/shared b/TestRunner/app/shared new file mode 160000 index 00000000..3a262b97 --- /dev/null +++ b/TestRunner/app/shared @@ -0,0 +1 @@ +Subproject commit 3a262b979c6b84cdfe69cd495436a7088d016505 diff --git a/TestRunner/app/tests/index.js b/TestRunner/app/tests/index.js index ec4384a6..98e030cb 100644 --- a/TestRunner/app/tests/index.js +++ b/TestRunner/app/tests/index.js @@ -1,9 +1,9 @@ // Inform the test results runner that the runtime is up. console.log('Application Start!'); -require("./Infrastructure/timers"); -require("./Infrastructure/simulator"); -global.utf8 = require("./Infrastructure/utf8") +require("../Infrastructure/timers"); +require("../Infrastructure/simulator"); +global.utf8 = require("../Infrastructure/utf8") global.UNUSED = function (param) { }; @@ -37,7 +37,7 @@ global.__JUnitSaveResults = function (text) { global.__approot = NSString.stringWithString(NSBundle.mainBundle.bundlePath).stringByResolvingSymlinksInPath; -require("./Infrastructure/Jasmine/jasmine-2.0.1/boot"); +require("../Infrastructure/Jasmine/jasmine-2.0.1/boot"); require("./Marshalling/Primitives/Function"); require("./Marshalling/Primitives/Static"); @@ -96,8 +96,8 @@ require("./NodeBuiltinsAndOptionalModulesTests.mjs"); // Exception handling tests require("./ExceptionHandlingTests"); -// Tests common for all runtimes. -require("./shared/index").runAllTests(); +// Tests common for all runtimes (git submodule of NativeScript/common-runtime-tests-app). +require("../shared/index").runAllTests(); // (Optional) Custom testing for various optional sdk's and frameworks // These can be turned on manually to verify if needed anytime diff --git a/TestRunner/app/tests/shared/.gitattributes b/TestRunner/app/tests/shared/.gitattributes deleted file mode 100644 index e1b1161d..00000000 --- a/TestRunner/app/tests/shared/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -############################################################################### -# Set default behavior to automatically normalize line endings. -############################################################################### -* text=auto diff --git a/TestRunner/app/tests/shared/Import/ImportCommonJS/file.js b/TestRunner/app/tests/shared/Import/ImportCommonJS/file.js deleted file mode 100644 index 888cae37..00000000 --- a/TestRunner/app/tests/shared/Import/ImportCommonJS/file.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 42; diff --git a/TestRunner/app/tests/shared/Import/ImportCommonJS/index.js b/TestRunner/app/tests/shared/Import/ImportCommonJS/index.js deleted file mode 100644 index 6bf71647..00000000 --- a/TestRunner/app/tests/shared/Import/ImportCommonJS/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import file from './file'; -TNSLog(file.toString()); diff --git a/TestRunner/app/tests/shared/Import/ImportJSON/data.json b/TestRunner/app/tests/shared/Import/ImportJSON/data.json deleted file mode 100644 index 27a25566..00000000 --- a/TestRunner/app/tests/shared/Import/ImportJSON/data.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "testProperty": "testValue" -} \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Import/ImportJSON/index.js b/TestRunner/app/tests/shared/Import/ImportJSON/index.js deleted file mode 100644 index 79981aa8..00000000 --- a/TestRunner/app/tests/shared/Import/ImportJSON/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import data from './data.json'; -TNSLog(data['testProperty']); diff --git a/TestRunner/app/tests/shared/Import/index.js b/TestRunner/app/tests/shared/Import/index.js deleted file mode 100644 index a5a8f77d..00000000 --- a/TestRunner/app/tests/shared/Import/index.js +++ /dev/null @@ -1,13 +0,0 @@ -describe("TNS import", function () { - afterEach(TNSClearOutput); - - it("JSON files", function () { - require("./ImportJSON"); - expect(TNSGetOutput()).toBe("testValue"); - }); - - it("CommonJS", function () { - require("./ImportCommonJS"); - expect(TNSGetOutput()).toBe("42"); - }); -}); diff --git a/TestRunner/app/tests/shared/README.md b/TestRunner/app/tests/shared/README.md deleted file mode 100644 index f26e3102..00000000 --- a/TestRunner/app/tests/shared/README.md +++ /dev/null @@ -1,20 +0,0 @@ -## TNS Shared Tests - -Currently targeting the Telerik NativeScript runtimes for: - - iOS - - android - -The tests should cover sommon functionality such as the "require" implementations, -basic inheritance scenarios, ECMA version etc. - -[The unit tests are written in Jasmine.](http://jasmine.github.io/2.0/introduction.html) - -To run the tests you should add this repo as submodule in the app/shared folder. -There is a satelite repo that contains module which should be added as submodule in tns_modules/shared respectively. - -## Fixtures -`TNSLog(text)` method is expected to be defined in the global object collecting messages. -`TNSGetOutput()` method returns all messages collected in TNSLog. -`TNSClearOutput()` clears the collected messages in TNSLog. -`__approot` global variable should point the path to the root folder of the app, the one where 'app' and 'tns_modules' are located. The path should start with leading slash. - diff --git a/TestRunner/app/tests/shared/Require/AbsolutePath/dependency.js b/TestRunner/app/tests/shared/Require/AbsolutePath/dependency.js deleted file mode 100644 index 456760a2..00000000 --- a/TestRunner/app/tests/shared/Require/AbsolutePath/dependency.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' and AbsolutePath/dependency started'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/AbsolutePath/index.js b/TestRunner/app/tests/shared/Require/AbsolutePath/index.js deleted file mode 100644 index e5355371..00000000 --- a/TestRunner/app/tests/shared/Require/AbsolutePath/index.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog('main started'); -require(__approot + "/app/tests/shared/Require/AbsolutePath/dependency"); -TNSLog(' and main executed'); diff --git a/TestRunner/app/tests/shared/Require/CaseSensitive/MyModule.js b/TestRunner/app/tests/shared/Require/CaseSensitive/MyModule.js deleted file mode 100644 index 00dcd181..00000000 --- a/TestRunner/app/tests/shared/Require/CaseSensitive/MyModule.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog('file'); diff --git a/TestRunner/app/tests/shared/Require/CaseSensitive/index.js b/TestRunner/app/tests/shared/Require/CaseSensitive/index.js deleted file mode 100644 index c8cddced..00000000 --- a/TestRunner/app/tests/shared/Require/CaseSensitive/index.js +++ /dev/null @@ -1,3 +0,0 @@ -require('./MyModule'); -require('./mymodule'); -require('./MyModule.js'); diff --git a/TestRunner/app/tests/shared/Require/CaseSensitive/mymodule/index.js b/TestRunner/app/tests/shared/Require/CaseSensitive/mymodule/index.js deleted file mode 100644 index 8cf9a507..00000000 --- a/TestRunner/app/tests/shared/Require/CaseSensitive/mymodule/index.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog('folder'); diff --git a/TestRunner/app/tests/shared/Require/ChangingRequireObject/dependency.js b/TestRunner/app/tests/shared/Require/ChangingRequireObject/dependency.js deleted file mode 100644 index f36ea19e..00000000 --- a/TestRunner/app/tests/shared/Require/ChangingRequireObject/dependency.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function () { - return 'message'; -}; diff --git a/TestRunner/app/tests/shared/Require/ChangingRequireObject/index.js b/TestRunner/app/tests/shared/Require/ChangingRequireObject/index.js deleted file mode 100644 index e90281f7..00000000 --- a/TestRunner/app/tests/shared/Require/ChangingRequireObject/index.js +++ /dev/null @@ -1,5 +0,0 @@ -TNSLog('main started'); -var resource = require('./dependency'); -var message = resource(); -TNSLog(' ' + message); -TNSLog(' and main executed'); diff --git a/TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency1.js b/TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency1.js deleted file mode 100644 index d8efe09b..00000000 --- a/TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency1.js +++ /dev/null @@ -1,5 +0,0 @@ -TNSLog(' and dependency1 started'); -exports.visible = 'visible'; -require('./dependency2'); -exports.invisible = 'invisible'; -TNSLog(' and dependency1 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency2.js b/TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency2.js deleted file mode 100644 index 092611ac..00000000 --- a/TestRunner/app/tests/shared/Require/CircularIndexRequire/dependency2.js +++ /dev/null @@ -1,8 +0,0 @@ -TNSLog(' and dependency2 started'); - -var main = require('./index'); -var dep1 = require('./dependency1'); -TNSLog(' ' + main.visible + ' ' + main.invisible); -TNSLog(' ' + dep1.visible + ' ' + dep1.invisible); - -TNSLog(' and dependency2 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularIndexRequire/index.js b/TestRunner/app/tests/shared/Require/CircularIndexRequire/index.js deleted file mode 100644 index de475729..00000000 --- a/TestRunner/app/tests/shared/Require/CircularIndexRequire/index.js +++ /dev/null @@ -1,5 +0,0 @@ -TNSLog('main started'); -exports.visible = 'visible'; -require('./dependency1'); -exports.invisible = 'invisible'; -TNSLog(' and main ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularRequire/dependency1.js b/TestRunner/app/tests/shared/Require/CircularRequire/dependency1.js deleted file mode 100644 index a58ea2a9..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequire/dependency1.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog(' and dependency1 started'); -require('./dependency2'); -TNSLog(' and dependency1 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularRequire/dependency2.js b/TestRunner/app/tests/shared/Require/CircularRequire/dependency2.js deleted file mode 100644 index 123ee4c2..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequire/dependency2.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog(' and dependency2 started'); -require('./dependency3'); -TNSLog(' and dependency2 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularRequire/dependency3.js b/TestRunner/app/tests/shared/Require/CircularRequire/dependency3.js deleted file mode 100644 index 9e4f9e73..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequire/dependency3.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog(' and dependency3 started'); -require('./dependency1'); -TNSLog(' and dependency3 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularRequire/index.js b/TestRunner/app/tests/shared/Require/CircularRequire/index.js deleted file mode 100644 index 9e555b7d..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequire/index.js +++ /dev/null @@ -1,8 +0,0 @@ -TNSLog('main started'); -try { - require('./dependency1'); -} -catch (e) { - TNSLog(' ' + e.name); -} -TNSLog(' and main ended'); diff --git a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency1.js b/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency1.js deleted file mode 100644 index 38d9e16f..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency1.js +++ /dev/null @@ -1,5 +0,0 @@ -TNSLog(' and dependency1 started'); -exports.visible = "visible from dependency3"; -require('./dependency2'); -exports.invisible = "invisible from dependency3"; -TNSLog(' and dependency1 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency2.js b/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency2.js deleted file mode 100644 index 123ee4c2..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency2.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog(' and dependency2 started'); -require('./dependency3'); -TNSLog(' and dependency2 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency3.js b/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency3.js deleted file mode 100644 index 8c7f3e47..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/dependency3.js +++ /dev/null @@ -1,5 +0,0 @@ -TNSLog(' and dependency3 started'); -var requiredModule = require('./dependency1'); -TNSLog(' ' + requiredModule.visible); -TNSLog(' ' + requiredModule.invisible); -TNSLog(' and dependency3 ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/index.js b/TestRunner/app/tests/shared/Require/CircularRequireWithExports/index.js deleted file mode 100644 index 9e555b7d..00000000 --- a/TestRunner/app/tests/shared/Require/CircularRequireWithExports/index.js +++ /dev/null @@ -1,8 +0,0 @@ -TNSLog('main started'); -try { - require('./dependency1'); -} -catch (e) { - TNSLog(' ' + e.name); -} -TNSLog(' and main ended'); diff --git a/TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/index.js b/TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/index.js deleted file mode 100644 index d158814a..00000000 --- a/TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.title = require('./module'); diff --git a/TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/module/index.json b/TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/module/index.json deleted file mode 100644 index 3f841850..00000000 --- a/TestRunner/app/tests/shared/Require/DirectoryWithIndexJson/module/index.json +++ /dev/null @@ -1 +0,0 @@ -"string from index.json" diff --git a/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep1/dependency1.js b/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep1/dependency1.js deleted file mode 100644 index a2ceca9e..00000000 --- a/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep1/dependency1.js +++ /dev/null @@ -1,7 +0,0 @@ -var dirname = __dirname.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; -var filename = __filename.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; -var module_filename = module.filename.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; - -TNSLog(dirname + ' ' + filename + ' ' + module_filename + ';'); -require('/dep2/dep2-inner'); -TNSLog(dirname + ' ' + filename + ' ' + module_filename + ';'); diff --git a/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep2/dep2-inner/index.js b/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep2/dep2-inner/index.js deleted file mode 100644 index b1c558af..00000000 --- a/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/dep2/dep2-inner/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var dirname = __dirname.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; -var filename = __filename.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; -var module_filename = module.filename.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; - -TNSLog(dirname + ' ' + filename + ' ' + module_filename + ';'); diff --git a/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/index.js b/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/index.js deleted file mode 100644 index c1a56de7..00000000 --- a/TestRunner/app/tests/shared/Require/DirnameAndFilenameParameters/index.js +++ /dev/null @@ -1,7 +0,0 @@ -var dirname = __dirname.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; -var filename = __filename.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; -var module_filename = module.filename.split('/app/SharedRuntimeTests/Require/DirnameAndFilenameParameters')[1]; - -TNSLog(dirname + ' ' + filename + ' ' + module_filename + ';'); -require('/dep1/dependency1'); -TNSLog(dirname + ' ' + filename + ' ' + module_filename + ';'); diff --git a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency1.js b/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency1.js deleted file mode 100644 index d167c63a..00000000 --- a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency1.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency2'); -exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency2.js b/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency2.js deleted file mode 100644 index 55310407..00000000 --- a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency2.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency3'); -exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency3.js b/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency3.js deleted file mode 100644 index 03b73ef6..00000000 --- a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency3.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency4'); -exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency4.js b/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency4.js deleted file mode 100644 index c8df8674..00000000 --- a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency4.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency5'); -exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency5.js b/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency5.js deleted file mode 100644 index 0b5cfaac..00000000 --- a/TestRunner/app/tests/shared/Require/ExportsBubbling/dependency5.js +++ /dev/null @@ -1 +0,0 @@ -exports.title = 'level5 exports'; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ExportsBubbling/index.js b/TestRunner/app/tests/shared/Require/ExportsBubbling/index.js deleted file mode 100644 index dc2d4dcc..00000000 --- a/TestRunner/app/tests/shared/Require/ExportsBubbling/index.js +++ /dev/null @@ -1,4 +0,0 @@ -TNSLog('main started'); -var moduleExports = require('./dependency1'); -TNSLog(' ' + moduleExports.title); -TNSLog(' and main ended'); diff --git a/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/index.js b/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/index.js deleted file mode 100644 index 108f9313..00000000 --- a/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./module'); -exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module.js b/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module.js deleted file mode 100644 index e62cf7c0..00000000 --- a/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module.js +++ /dev/null @@ -1 +0,0 @@ -exports.title = "file module.js title" \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module/submodule.js b/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module/submodule.js deleted file mode 100644 index f06677bd..00000000 --- a/TestRunner/app/tests/shared/Require/FileAndDirectoryWithSameName/module/submodule.js +++ /dev/null @@ -1 +0,0 @@ -exports.title = "submodule file submodule.js title" \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FileEndingWithCommentedLine/index.js b/TestRunner/app/tests/shared/Require/FileEndingWithCommentedLine/index.js deleted file mode 100644 index 1851319f..00000000 --- a/TestRunner/app/tests/shared/Require/FileEndingWithCommentedLine/index.js +++ /dev/null @@ -1 +0,0 @@ -// commented line \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FileWithDots/file.name.js b/TestRunner/app/tests/shared/Require/FileWithDots/file.name.js deleted file mode 100644 index 7aed2bd9..00000000 --- a/TestRunner/app/tests/shared/Require/FileWithDots/file.name.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'file.name' diff --git a/TestRunner/app/tests/shared/Require/FileWithDots/index.js b/TestRunner/app/tests/shared/Require/FileWithDots/index.js deleted file mode 100644 index 9a9d2ea2..00000000 --- a/TestRunner/app/tests/shared/Require/FileWithDots/index.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(require('./file.name')); diff --git a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency1.js b/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency1.js deleted file mode 100644 index 1909ef4a..00000000 --- a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency1.js +++ /dev/null @@ -1,2 +0,0 @@ -require('./dependency2'); -TNSLog(' level1'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency2.js b/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency2.js deleted file mode 100644 index a249b430..00000000 --- a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency2.js +++ /dev/null @@ -1,2 +0,0 @@ -require('./dependency3'); -TNSLog(' level2'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency3.js b/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency3.js deleted file mode 100644 index a8c6634d..00000000 --- a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency3.js +++ /dev/null @@ -1,2 +0,0 @@ -require('./dependency4'); -TNSLog(' level3'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency4.js b/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency4.js deleted file mode 100644 index 2d9fce75..00000000 --- a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency4.js +++ /dev/null @@ -1,2 +0,0 @@ -require('./dependency5'); -TNSLog(' level4'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency5.js b/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency5.js deleted file mode 100644 index 4c516923..00000000 --- a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/dependency5.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' level5'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/index.js b/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/index.js deleted file mode 100644 index d504dc4d..00000000 --- a/TestRunner/app/tests/shared/Require/FiveLevelsOfRequire/index.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog('main started'); -require('./dependency1'); -TNSLog(' and main executed'); diff --git a/TestRunner/app/tests/shared/Require/GlobalIsDefined/module.js b/TestRunner/app/tests/shared/Require/GlobalIsDefined/module.js deleted file mode 100644 index 96db233a..00000000 --- a/TestRunner/app/tests/shared/Require/GlobalIsDefined/module.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - accessGlobalObject: function(s) { - TNSLog(global.toString()); - } -} diff --git a/TestRunner/app/tests/shared/Require/GlobalRequire/index.js b/TestRunner/app/tests/shared/Require/GlobalRequire/index.js deleted file mode 100644 index de709d81..00000000 --- a/TestRunner/app/tests/shared/Require/GlobalRequire/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.msg = "module3"; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleErrorCache/index.js b/TestRunner/app/tests/shared/Require/ModuleErrorCache/index.js deleted file mode 100644 index 58144e93..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleErrorCache/index.js +++ /dev/null @@ -1,8 +0,0 @@ -try { - require("./maybeThrow"); -} catch(e) { - TNSLog(e.message); - TNSLog(e.stack.indexOf('/maybeThrow.js:') > 0 ? "1" : "0"); -} - -require("./maybeThrow"); diff --git a/TestRunner/app/tests/shared/Require/ModuleErrorCache/maybeThrow.js b/TestRunner/app/tests/shared/Require/ModuleErrorCache/maybeThrow.js deleted file mode 100644 index b9b97084..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleErrorCache/maybeThrow.js +++ /dev/null @@ -1,7 +0,0 @@ -if (!global.__didThrow) { - global.__didThrow = true; - throw new Error('did throw'); -} else { - delete global.__didThrow; - TNSLog("no throw"); -} diff --git a/TestRunner/app/tests/shared/Require/ModuleRequireFunction/module1.js b/TestRunner/app/tests/shared/Require/ModuleRequireFunction/module1.js deleted file mode 100644 index 7361dac4..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleRequireFunction/module1.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.msg = "module1"; -exports.module = module; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleRequireFunction/module2.js b/TestRunner/app/tests/shared/Require/ModuleRequireFunction/module2.js deleted file mode 100644 index 22f2e2ce..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleRequireFunction/module2.js +++ /dev/null @@ -1 +0,0 @@ -exports.msg = "module2"; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency1.js b/TestRunner/app/tests/shared/Require/ModuleVariable/dependency1.js deleted file mode 100644 index 5515bfbe..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency1.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency2'); -module.exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency2.js b/TestRunner/app/tests/shared/Require/ModuleVariable/dependency2.js deleted file mode 100644 index dd8964a7..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency2.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency3'); -module.exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency3.js b/TestRunner/app/tests/shared/Require/ModuleVariable/dependency3.js deleted file mode 100644 index 7bf46def..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency3.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency4'); -module.exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency4.js b/TestRunner/app/tests/shared/Require/ModuleVariable/dependency4.js deleted file mode 100644 index bd5d4494..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency4.js +++ /dev/null @@ -1,2 +0,0 @@ -var moduleExports = require('./dependency5'); -module.exports.title = moduleExports.title; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency5.js b/TestRunner/app/tests/shared/Require/ModuleVariable/dependency5.js deleted file mode 100644 index ae560d4a..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleVariable/dependency5.js +++ /dev/null @@ -1 +0,0 @@ -module.exports.title = 'just title'; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleVariable/index.js b/TestRunner/app/tests/shared/Require/ModuleVariable/index.js deleted file mode 100644 index dc2d4dcc..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleVariable/index.js +++ /dev/null @@ -1,4 +0,0 @@ -TNSLog('main started'); -var moduleExports = require('./dependency1'); -TNSLog(' ' + moduleExports.title); -TNSLog(' and main ended'); diff --git a/TestRunner/app/tests/shared/Require/ModuleWith.js/index.js b/TestRunner/app/tests/shared/Require/ModuleWith.js/index.js deleted file mode 100644 index 2e1440ea..00000000 --- a/TestRunner/app/tests/shared/Require/ModuleWith.js/index.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog("module with .js in the name loaded"); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ModuleWithNullChar/index.js b/TestRunner/app/tests/shared/Require/ModuleWithNullChar/index.js deleted file mode 100644 index ce3b1205c82c646049cd8a6ed428ef6a39c47abe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29 kcmYeTD9A4=Db_1Vtte5jRZ#Ls&B@7UD9 ' + next + ')'); - -require('./dependency2'); - -// set variables -global.next = global.current; -current = currentFile; - -TNSLog('(' + global.next + ' -> ' + current + ')'); - -// set variables -current = currentFile; -global.next = nextFile; diff --git a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency2.js b/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency2.js deleted file mode 100644 index f2dfb2e4..00000000 --- a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency2.js +++ /dev/null @@ -1,20 +0,0 @@ -var currentFile = 'dependency2'; -var nextFile = 'dependency3'; - -// set variables -current = currentFile; -global.next = nextFile; - -TNSLog('(' + global.current + ' -> ' + next + ')'); - -require('./dependency3'); - -// set variables -global.next = global.current; -current = currentFile; - -TNSLog('(' + global.next + ' -> ' + current + ')'); - -// set variables -current = currentFile; -global.next = nextFile; diff --git a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency3.js b/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency3.js deleted file mode 100644 index 754c75b8..00000000 --- a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency3.js +++ /dev/null @@ -1,16 +0,0 @@ -var currentFile = 'dependency3'; -var nextFile = 'dependency4'; - -// set variables -current = currentFile; -global.next = nextFile; - -TNSLog('(' + global.current + ' -> ' + next + ')'); - -require('./dependency4'); - -// set variables -global.next = global.current; -current = currentFile; - -TNSLog('(' + global.next + ' -> ' + current + ')'); diff --git a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency4.js b/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency4.js deleted file mode 100644 index 2c0d1862..00000000 --- a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency4.js +++ /dev/null @@ -1,16 +0,0 @@ -var currentFile = 'dependency4'; -var nextFile = 'dependency5'; - -// set variables -current = currentFile; -global.next = nextFile; - -TNSLog('(' + global.current + ' -> ' + next + ')'); - -require('./dependency5'); - -// set variables -global.next = global.current; -current = currentFile; - -TNSLog('(' + global.next + ' -> ' + current + ')'); diff --git a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency5.js b/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency5.js deleted file mode 100644 index d66212d1..00000000 --- a/TestRunner/app/tests/shared/Require/NestedGlobalObject/dependency5.js +++ /dev/null @@ -1,10 +0,0 @@ -var currentFile = 'dependency5'; -var nextFile = 'end'; - -// set variables -current = currentFile; -global.next = nextFile; - -TNSLog('(' + global.current + ' -> ' + next + ')'); - -TNSLog('(' + global.next + ' -> ' + current + ')'); diff --git a/TestRunner/app/tests/shared/Require/NestedGlobalObject/index.js b/TestRunner/app/tests/shared/Require/NestedGlobalObject/index.js deleted file mode 100644 index 275095d6..00000000 --- a/TestRunner/app/tests/shared/Require/NestedGlobalObject/index.js +++ /dev/null @@ -1,24 +0,0 @@ -TNSLog('main started'); - -var currentFile = 'app'; -var nextFile = 'dependency1'; - -// set variables -current = currentFile; -global.next = nextFile; - -TNSLog('(' + global.current + ' -> ' + next + ')'); - -require('./dependency1'); - -// set variables -global.next = global.current; -current = currentFile; - -TNSLog('(' + global.next + ' -> ' + current + ')'); - -// set variables -current = currentFile; -global.next = nextFile; - -TNSLog(' and main ended'); diff --git a/TestRunner/app/tests/shared/Require/NotExistingFileRequire/index.js b/TestRunner/app/tests/shared/Require/NotExistingFileRequire/index.js deleted file mode 100644 index bf021373..00000000 --- a/TestRunner/app/tests/shared/Require/NotExistingFileRequire/index.js +++ /dev/null @@ -1,9 +0,0 @@ -TNSLog('main started'); -var result; -try { - result = require('/notExistingFile'); -} -catch (e) { - TNSLog(' ' + e.name); -} -TNSLog(' main ended'); diff --git a/TestRunner/app/tests/shared/Require/PackageJsonApp/index.js b/TestRunner/app/tests/shared/Require/PackageJsonApp/index.js deleted file mode 100644 index 52add3c3..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonApp/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var io = require("./io"); -TNSLog(io.guid); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/PackageJsonApp/io/io.js b/TestRunner/app/tests/shared/Require/PackageJsonApp/io/io.js deleted file mode 100644 index 06b96121..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonApp/io/io.js +++ /dev/null @@ -1 +0,0 @@ -module.exports.guid = "73DB08A5-8FB2-4648-BD6C-9ECB844A4D8E"; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/PackageJsonApp/io/package.json b/TestRunner/app/tests/shared/Require/PackageJsonApp/io/package.json deleted file mode 100644 index a42775fd..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonApp/io/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "foo", - "version": "1.2.3", - "description": "An io package", - "main": "io.js", - "man": "./man/doc.1" -} diff --git a/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/index.js b/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/index.js deleted file mode 100644 index 35f59684..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var io = require("./io"); -TNSLog(io.guid); diff --git a/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/index.js b/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/index.js deleted file mode 100644 index ae75f5fb..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports.guid = "4262F53F-2320-419E-8B3C-626FFB88EC92"; diff --git a/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/package.json b/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/package.json deleted file mode 100644 index 6d09fc01..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonAppNoMain/io/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "foo", - "version": "1.2.3", - "description": "An io package", - "man": "./man/doc.1" -} \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/index.js b/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/index.js deleted file mode 100644 index 52add3c3..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var io = require("./io"); -TNSLog(io.guid); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/io.js b/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/io.js deleted file mode 100644 index 0fe47716..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/io.js +++ /dev/null @@ -1 +0,0 @@ -module.exports.guid = "813de57a-232c-49cc-b00f-a70e0f566c52"; diff --git a/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/package.json b/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/package.json deleted file mode 100644 index 3119d474..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonAppWithoutExtension/io/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main": "io" -} diff --git a/TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/package.json b/TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/package.json deleted file mode 100644 index 08a7dc93..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "foo", - "version": "1.2.3", - "description": "An io package", - "main": "./subdirectory", - "man": "./man/doc.1" -} \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/subdirectory/index.js b/TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/subdirectory/index.js deleted file mode 100644 index c088226e..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonMainPointsToDir/subdirectory/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -TNSLog(' from subdirectory/index.js'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/index.js b/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/index.js deleted file mode 100644 index 6594af6d..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/index.js +++ /dev/null @@ -1,6 +0,0 @@ -try { - var io = require("./io"); -} -catch (e) { - TNSLog('ModuleError'); -} diff --git a/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/index.js b/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/index.js deleted file mode 100644 index f37b0b7f..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports.guid = "4262F53F-2320-419E-8B3C-626FFB88EC92"; \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/package.json b/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/package.json deleted file mode 100644 index b76b2d76..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonSyntaxError/io/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "foo", - "version": "1.2.3", - "description": "An io package", - "main": "gogoaway.js", - "man": "./man/doc.1" - breaking bad -} diff --git a/TestRunner/app/tests/shared/Require/PackageJsonTns/index.js b/TestRunner/app/tests/shared/Require/PackageJsonTns/index.js deleted file mode 100644 index 7ef98b92..00000000 --- a/TestRunner/app/tests/shared/Require/PackageJsonTns/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var io = require("shared/Require/PackageJsonTns/io"); -TNSLog(io.guid); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequireExtensions/dependency1.js b/TestRunner/app/tests/shared/Require/RequireExtensions/dependency1.js deleted file mode 100644 index 0ccfc1f1..00000000 --- a/TestRunner/app/tests/shared/Require/RequireExtensions/dependency1.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog('dependency1 loaded'); diff --git a/TestRunner/app/tests/shared/Require/RequireExtensions/index.js b/TestRunner/app/tests/shared/Require/RequireExtensions/index.js deleted file mode 100644 index c7f9b54a..00000000 --- a/TestRunner/app/tests/shared/Require/RequireExtensions/index.js +++ /dev/null @@ -1,3 +0,0 @@ -// The file should be required only once -require('./dependency1.js'); -require('./dependency1'); diff --git a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/index.js b/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/index.js deleted file mode 100644 index 78a35beb..00000000 --- a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/index.js +++ /dev/null @@ -1,5 +0,0 @@ -try { - require('./test.json'); -} catch (e) { - TNSLog(e.message); -} diff --git a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/test.json b/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/test.json deleted file mode 100644 index 3bdd736a..00000000 --- a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile/test.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "test-prop": "test... -} diff --git a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/badJSON.json b/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/badJSON.json deleted file mode 100644 index 64747ea5..00000000 --- a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/badJSON.json +++ /dev/null @@ -1 +0,0 @@ -1sfa,.s:F&^ \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/index.js b/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/index.js deleted file mode 100644 index b5d79b8b..00000000 --- a/TestRunner/app/tests/shared/Require/RequireJsonCorruptFile1/index.js +++ /dev/null @@ -1,5 +0,0 @@ -try { - require('./badJSON.json'); -} catch (e) { - TNSLog(e.message); -} diff --git a/TestRunner/app/tests/shared/Require/RequireJsonFile/index.js b/TestRunner/app/tests/shared/Require/RequireJsonFile/index.js deleted file mode 100644 index bf10b25c..00000000 --- a/TestRunner/app/tests/shared/Require/RequireJsonFile/index.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(require('./test.json')['test-prop']); diff --git a/TestRunner/app/tests/shared/Require/RequireJsonFile/test.json b/TestRunner/app/tests/shared/Require/RequireJsonFile/test.json deleted file mode 100644 index 86b160af..00000000 --- a/TestRunner/app/tests/shared/Require/RequireJsonFile/test.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "test-prop": "test-value" -} diff --git a/TestRunner/app/tests/shared/Require/RequireModuleFolder/index.js b/TestRunner/app/tests/shared/Require/RequireModuleFolder/index.js deleted file mode 100644 index 372ee53d..00000000 --- a/TestRunner/app/tests/shared/Require/RequireModuleFolder/index.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog('main started'); -var module = require('tns-core-modules/shared/Require/RequireModuleFolder/dependency'); -TNSLog(' main ended'); diff --git a/TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/dependency.js b/TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/dependency.js deleted file mode 100644 index 979bc577..00000000 --- a/TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/dependency.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' from root folder'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/index.js b/TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/index.js deleted file mode 100644 index 6e097c72..00000000 --- a/TestRunner/app/tests/shared/Require/RequireModuleFolderConflict/index.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog('main started'); -var module = require('tns-core-modules/shared/Require/RequireModuleFolderConflict/dependency'); -TNSLog(' main ended'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequirePriority/dependency1.js b/TestRunner/app/tests/shared/Require/RequirePriority/dependency1.js deleted file mode 100644 index 979bc577..00000000 --- a/TestRunner/app/tests/shared/Require/RequirePriority/dependency1.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' from root folder'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequirePriority/dependency2.js b/TestRunner/app/tests/shared/Require/RequirePriority/dependency2.js deleted file mode 100644 index 979bc577..00000000 --- a/TestRunner/app/tests/shared/Require/RequirePriority/dependency2.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' from root folder'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequirePriority/dependency3/index.js b/TestRunner/app/tests/shared/Require/RequirePriority/dependency3/index.js deleted file mode 100644 index 30f9ae7a..00000000 --- a/TestRunner/app/tests/shared/Require/RequirePriority/dependency3/index.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' from root folder in index file'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequirePriority/dependency4.js b/TestRunner/app/tests/shared/Require/RequirePriority/dependency4.js deleted file mode 100644 index 979bc577..00000000 --- a/TestRunner/app/tests/shared/Require/RequirePriority/dependency4.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' from root folder'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequirePriority/dependency5/index.js b/TestRunner/app/tests/shared/Require/RequirePriority/dependency5/index.js deleted file mode 100644 index 30f9ae7a..00000000 --- a/TestRunner/app/tests/shared/Require/RequirePriority/dependency5/index.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' from root folder in index file'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/RequirePriority/index.js b/TestRunner/app/tests/shared/Require/RequirePriority/index.js deleted file mode 100644 index f6b83468..00000000 --- a/TestRunner/app/tests/shared/Require/RequirePriority/index.js +++ /dev/null @@ -1,7 +0,0 @@ -TNSLog('main started'); -require('tns-core-modules/shared/Require/RequirePriority/dependency1'); -require('tns-core-modules/shared/Require/RequirePriority/dependency2'); -require(__dirname + '/dependency3'); -require(__dirname + '/dependency4'); -require(__dirname + '/dependency5'); -TNSLog(' main ended'); diff --git a/TestRunner/app/tests/shared/Require/RequireWithTildeSyntax/module.js b/TestRunner/app/tests/shared/Require/RequireWithTildeSyntax/module.js deleted file mode 100644 index 935f81e8..00000000 --- a/TestRunner/app/tests/shared/Require/RequireWithTildeSyntax/module.js +++ /dev/null @@ -1,3 +0,0 @@ -exports.echo = function(value) { - return value; -} \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/index.js b/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/index.js deleted file mode 100644 index a2d189f6..00000000 --- a/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { }; diff --git a/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/package.json b/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/package.json deleted file mode 100644 index 00c93540..00000000 --- a/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/package.json +++ /dev/null @@ -1,4 +0,0 @@ - -{ - "main": "./index.js" -} diff --git a/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/second.js b/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/second.js deleted file mode 100644 index d6c71774..00000000 --- a/TestRunner/app/tests/shared/Require/ResolveCanonicalPath/second.js +++ /dev/null @@ -1,4 +0,0 @@ - -(function(){ - module.exports = require("../ResolveCanonicalPath/index"); - })(); diff --git a/TestRunner/app/tests/shared/Require/RuntimeErrorInModule/dependency.js b/TestRunner/app/tests/shared/Require/RuntimeErrorInModule/dependency.js deleted file mode 100644 index cfc29a5d..00000000 --- a/TestRunner/app/tests/shared/Require/RuntimeErrorInModule/dependency.js +++ /dev/null @@ -1 +0,0 @@ -new $NotExistingClassName(); diff --git a/TestRunner/app/tests/shared/Require/RuntimeErrorInModule/index.js b/TestRunner/app/tests/shared/Require/RuntimeErrorInModule/index.js deleted file mode 100644 index 6a691234..00000000 --- a/TestRunner/app/tests/shared/Require/RuntimeErrorInModule/index.js +++ /dev/null @@ -1,9 +0,0 @@ -TNSLog('main started'); -var result; -try { - result = require('./dependency'); -} -catch (e) { - TNSLog(' ' + e.name); -} -TNSLog(' main ended'); diff --git a/TestRunner/app/tests/shared/Require/SimpleGlobalObject/dependency.js b/TestRunner/app/tests/shared/Require/SimpleGlobalObject/dependency.js deleted file mode 100644 index a320e9d1..00000000 --- a/TestRunner/app/tests/shared/Require/SimpleGlobalObject/dependency.js +++ /dev/null @@ -1,13 +0,0 @@ -// define variables -depVisible1 = 'depVisible1'; -global.depVisible2 = 'depVisible2'; -var depInvisible = 'depInvisible'; - -// console.log vglobal variables from the previous module -TNSLog(' ' + global.appVisible1); -TNSLog(' ' + appVisible1); -TNSLog(' ' + global.appVisible2); -TNSLog(' ' + global.appInvisible); - -// change a global variable -global.appVisible1 = 'changed'; diff --git a/TestRunner/app/tests/shared/Require/SimpleGlobalObject/index.js b/TestRunner/app/tests/shared/Require/SimpleGlobalObject/index.js deleted file mode 100644 index f3366480..00000000 --- a/TestRunner/app/tests/shared/Require/SimpleGlobalObject/index.js +++ /dev/null @@ -1,17 +0,0 @@ -TNSLog('main started'); - -// define varliables -appVisible1 = 'appVisible1'; -global.appVisible2 = 'appVisible2'; -var appInvisible = 'appInvisible'; - -require('./dependency'); - -TNSLog(' ' + global.depVisible1); -TNSLog(' ' + depVisible1); -TNSLog(' ' + global.depVisible2); -TNSLog(' ' + global.depInvisible); - -TNSLog(' ' + appVisible1); // should be chanched - -TNSLog(' and main ended'); diff --git a/TestRunner/app/tests/shared/Require/SimpleRequire/dependency.js b/TestRunner/app/tests/shared/Require/SimpleRequire/dependency.js deleted file mode 100644 index c334d8d8..00000000 --- a/TestRunner/app/tests/shared/Require/SimpleRequire/dependency.js +++ /dev/null @@ -1 +0,0 @@ -TNSLog(' and dependency executed'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/SimpleRequire/index.js b/TestRunner/app/tests/shared/Require/SimpleRequire/index.js deleted file mode 100644 index 395c4a54..00000000 --- a/TestRunner/app/tests/shared/Require/SimpleRequire/index.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog('main started'); -require('./dependency'); -TNSLog(' and main executed'); diff --git a/TestRunner/app/tests/shared/Require/SimpleRequireWithExports/dependency.js b/TestRunner/app/tests/shared/Require/SimpleRequireWithExports/dependency.js deleted file mode 100644 index 4f7eb994..00000000 --- a/TestRunner/app/tests/shared/Require/SimpleRequireWithExports/dependency.js +++ /dev/null @@ -1,9 +0,0 @@ -TNSLog(' and dependency started'); - -exports.publicString = "public string"; -exports.publicNumber = 42; -exports.publicFunction = function () { - TNSLog(' public function'); -}; - -TNSLog(' and dependency executed'); diff --git a/TestRunner/app/tests/shared/Require/SimpleRequireWithExports/index.js b/TestRunner/app/tests/shared/Require/SimpleRequireWithExports/index.js deleted file mode 100644 index f674857f..00000000 --- a/TestRunner/app/tests/shared/Require/SimpleRequireWithExports/index.js +++ /dev/null @@ -1,6 +0,0 @@ -TNSLog('main started'); -var module = require('./dependency'); -TNSLog(' ' + module.publicString); -TNSLog(' ' + module.publicNumber); -module.publicFunction(); -TNSLog(' and main executed'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/SyntaxErrorInModule/dependency.js b/TestRunner/app/tests/shared/Require/SyntaxErrorInModule/dependency.js deleted file mode 100644 index 0bdedc77..00000000 --- a/TestRunner/app/tests/shared/Require/SyntaxErrorInModule/dependency.js +++ /dev/null @@ -1 +0,0 @@ -((((((((((( diff --git a/TestRunner/app/tests/shared/Require/SyntaxErrorInModule/index.js b/TestRunner/app/tests/shared/Require/SyntaxErrorInModule/index.js deleted file mode 100644 index 6a691234..00000000 --- a/TestRunner/app/tests/shared/Require/SyntaxErrorInModule/index.js +++ /dev/null @@ -1,9 +0,0 @@ -TNSLog('main started'); -var result; -try { - result = require('./dependency'); -} -catch (e) { - TNSLog(' ' + e.name); -} -TNSLog(' main ended'); diff --git a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency1.js b/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency1.js deleted file mode 100644 index bbca4eb5..00000000 --- a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency1.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog(' and dependency1 started'); -require('./dependency2'); -TNSLog(' and dependency1 executed'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency2.js b/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency2.js deleted file mode 100644 index 9e748fef..00000000 --- a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/dependency2.js +++ /dev/null @@ -1,2 +0,0 @@ -TNSLog(' and dependency2 started'); -TNSLog(' and dependency2 executed'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/index.js b/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/index.js deleted file mode 100644 index 032bae83..00000000 --- a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequire/index.js +++ /dev/null @@ -1,3 +0,0 @@ -TNSLog('main started'); -require('./dependency1'); -TNSLog(' and main executed'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency1.js b/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency1.js deleted file mode 100644 index db6b4864..00000000 --- a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency1.js +++ /dev/null @@ -1,14 +0,0 @@ -TNSLog(' and dependency1 started'); - -var module2 = require('./dependency2'); -TNSLog(' ' + module2.publicString); -TNSLog(' ' + module2.publicNumber); -module2.publicFunction(); - -exports.publicString = 'dependency1 string'; -exports.publicNumber = 1; -exports.publicFunction = function () { - TNSLog(' dependency1 function'); -}; - -TNSLog(' and dependency1 executed'); diff --git a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency2.js b/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency2.js deleted file mode 100644 index c6412924..00000000 --- a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/dependency2.js +++ /dev/null @@ -1,9 +0,0 @@ -TNSLog(' and dependency2 started'); - -exports.publicString = 'dependency2 string'; -exports.publicNumber = 2; -exports.publicFunction = function () { - TNSLog(' dependency2 function'); -}; - -TNSLog(' and dependency2 executed'); diff --git a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/index.js b/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/index.js deleted file mode 100644 index 3b90a3df..00000000 --- a/TestRunner/app/tests/shared/Require/TwoLevelsOfRequireWithExports/index.js +++ /dev/null @@ -1,6 +0,0 @@ -TNSLog('main started'); -var module1 = require('./dependency1'); -TNSLog(' ' + module1.publicString); -TNSLog(' ' + module1.publicNumber); -module1.publicFunction(); -TNSLog(' and main executed'); \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Require/index.js b/TestRunner/app/tests/shared/Require/index.js deleted file mode 100644 index 0ed01aca..00000000 --- a/TestRunner/app/tests/shared/Require/index.js +++ /dev/null @@ -1,348 +0,0 @@ -describe("TNS require", function () { - - beforeEach(TNSClearOutput); - afterEach(TNSClearOutput); - - it("path with leading slash is treated as absolute from the root of the device", function () { - require("./AbsolutePath"); - expect(TNSGetOutput()).toBe("main started and AbsolutePath/dependency started and main executed"); - }); - - it("can change require object", function () { - require("./ChangingRequireObject"); - expect(TNSGetOutput()).toBe("main started message and main executed"); - }); - - it("can circularly require module index", function () { - require("./CircularIndexRequire"); - var expected = 'main started and dependency1 started and dependency2 started' - + ' visible undefined visible undefined and dependency2 ended' - + ' and dependency1 ended and main ended'; - expect(TNSGetOutput()).toBe(expected); - }); - - it('can circularly require modules', function () { - require("./CircularRequire"); - var expected = 'main started and dependency1 started' - + ' and dependency2 started and dependency3 started' - + ' and dependency3 ended and dependency2 ended' - + ' and dependency1 ended and main ended'; - expect(TNSGetOutput()).toBe(expected); - }); - - it('can circularly require and export', function () { - require("./CircularRequireWithExports"); - var expected = 'main started and dependency1 started and dependency2 started' - + ' and dependency3 started visible from dependency3 undefined' - + ' and dependency3 ended and dependency2 ended and dependency1 ended' - + ' and main ended'; - expect(TNSGetOutput()).toBe(expected); - }); - - it('can bubble exports from one module to another in non-circular require', function () { - require("./ExportsBubbling"); - expect(TNSGetOutput()).toBe('main started level5 exports and main ended'); - }); - - it('module has id with the name of the file', function () { - expect(module.id).toBe(__filename); - expect(module.id).toMatch(/\/.*\/app\/tests\/shared\/Require\/index.js$/); - }); - - it('modules can require further modules', function () { - require("./FiveLevelsOfRequire"); - var expected = 'main started level5 level4 level3 level2 level1 and main executed'; - expect(TNSGetOutput()).toBe(expected); - }); - - if (!global.NSObject) { - it('deletes module cache on error', function () { - require("./ModuleErrorCache"); - expect(TNSGetOutput()).toBe('did throw1no throw'); - }); - } - - it('can export var-s', function () { - require("./ModuleVariable"); - expect(TNSGetOutput()).toBe('main started just title and main ended'); - }); - - it('can require a module multiple times, sharing the required module instance', function () { - require("./MultipleRequireOfAFile"); - expect(TNSGetOutput()).toBe('main started module main middle main end'); - }); - - it('can set variables in the global object', function () { - require("./NestedGlobalObject"); - var expected = 'main started(app -> dependency1)(dependency1 -> dependency2)' - + '(dependency2 -> dependency3)(dependency3 -> dependency4)' - + '(dependency4 -> dependency5)(dependency5 -> end)(end -> dependency5)' - + '(dependency5 -> dependency4)(dependency4 -> dependency3)' - + '(dependency3 -> dependency2)(dependency2 -> dependency1)' - + '(dependency1 -> app) and main ended'; - expect(TNSGetOutput()).toBe(expected); - }); - - it('throws for missing modules', function () { - require("./NotExistingFileRequire"); - // In Debug mode, error may be suppressed and execution continues - var out = TNSGetOutput(); - expect(out === 'main started Error main ended' || out === 'main started main ended').toBe(true); - }); - - it("would load package.json if available, and use its 'main' property for js file name", function () { - require("./PackageJsonApp"); - expect(TNSGetOutput()).toBe('73DB08A5-8FB2-4648-BD6C-9ECB844A4D8E'); - }); - - it("would load package.json if available, and use its 'main' property for js file name without extension", function () { - require("./PackageJsonAppWithoutExtension"); - expect(TNSGetOutput()).toBe('813de57a-232c-49cc-b00f-a70e0f566c52'); - }); - - it("would load package.json if available, but if there is no 'main' property, would fallback to index.js", function () { - require("./PackageJsonAppNoMain"); - expect(TNSGetOutput()).toBe("4262F53F-2320-419E-8B3C-626FFB88EC92"); - }); - - it('would throw if a package.json main file can not be located', function () { - require("./PackageJsonSyntaxError"); - // In Debug mode, the error may be suppressed and no ModuleError logged - var out = TNSGetOutput(); - expect(out === 'ModuleError' || out === '').toBe(true); - }); - - it("require extensions", function () { - require("./RequireExtensions"); - expect(TNSGetOutput()).toBe("dependency1 loaded"); - }); - - // it("package.json main property in tns_modules points to a js file in tns_modules", function () { - // require("./PackageJsonTns"); - // expect(TNSGetOutput()).toBe("CD11903C-B38B-4D68-BEB6-D72C3FAD906F"); - // }); - - it('can require from tns_modules', function () { - require("./RequireModuleFolder"); - expect(TNSGetOutput()).toBe('main started from module folder main ended'); - }); - - it('searches tns_modules before app', function () { - require("./RequireModuleFolderConflict"); - expect(TNSGetOutput()).toBe('main started from module folder main ended'); - }); - - it("when require a tns_module that is a directory name it should load the index js inside it", function () { - require("tns-core-modules/shared/Require/RequirePriority/dependency3"); - var expected = ' from module folder in index file'; - expect(TNSGetOutput()).toBe(expected); - }); - - it("when require a tns_module that is a directory name it should load the package json inside it", function () { - require("tns-core-modules/shared/Require/RequirePriority/dependency5"); - var expected = ' from module folder in dependency5 dir' - expect(TNSGetOutput()).toBe(expected); - }); - - it('has a priority to load from tns_module first then from app and relative folder', function () { - require("./RequirePriority"); - var expected = 'main started from module folder from module folder in' - + ' index file from root folder in index file from root folder' - + ' from root folder in index file main ended'; - expect(TNSGetOutput()).toBe(expected); - }); - - it("can set properties in the global object", function () { - require("./SimpleGlobalObject"); - var expected = 'main started appVisible1 appVisible1 appVisible2' - + ' undefined depVisible1 depVisible1 depVisible2 undefined' - + ' changed and main ended'; - expect(TNSGetOutput()).toBe(expected); - }); - - it("can simply require", function () { - require("./SimpleRequire"); - expect(TNSGetOutput()).toBe("main started and dependency executed and main executed"); - }); - - it("can require modules and modules can export", function () { - require("./SimpleRequireWithExports"); - var expected = 'main started and dependency started and dependency executed' - + ' public string 42 public function and main executed'; - expect(TNSGetOutput()).toBe(expected); - }); - - it("required module can require a second module", function () { - require("./TwoLevelsOfRequire"); - var expected = 'main started and dependency1 started and dependency2 started and dependency2' - + ' executed and dependency1 executed and main executed'; - expect(TNSGetOutput()).toBe(expected); - }); - - it("can require a module that can require second module and both can export", function () { - require("./TwoLevelsOfRequireWithExports"); - var expected = 'main started and dependency1 started and dependency2 started' - + ' and dependency2 executed dependency2 string 2 dependency2' - + ' function and dependency1 executed dependency1 string 1' - + ' dependency1 function and main executed'; - expect(TNSGetOutput()).toBe(expected); - }); - - // it("can can catch a syntax error in module", function () { - // require("./SyntaxErrorInModule"); - // var expected = 'main started SyntaxError main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - - // it("can can catch a runtime error in module", function () { - // require("./RuntimeErrorInModule"); - // var expected = 'main started ReferenceError main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - - // it("require relative to home", function () { - // var fileName = __filename.substring(__approot.length + "/app".length); - // expect(require("~" + fileName)).toBe(global.require(__filename)); - // }); - - it('resolve directories containing .js in the name as valid packages', function () { - require("./ModuleWith.js"); - var expected = 'module with .js in the name loaded'; - expect(TNSGetOutput()).toBe(expected); - }); - - it("require file when there is directory with the same name", function () { - var result = require("./FileAndDirectoryWithSameName"); - var expected = 'file module.js title'; - - expect(result.title).toBe(expected); - }); - - // it("require directory with index.json and no package.json", function () { - // var result = require("./DirectoryWithIndexJson"); - // var expected = 'string from index.json'; - - // expect(result.title).toBe(expected); - // }); - - it("file ending with commented line", function () { - expect(function () { require("./FileEndingWithCommentedLine"); }).not.toThrow(); - }); - - it("should require JSON files", function () { - require('./RequireJsonFile'); - expect(TNSGetOutput()).toBe('test-value'); - }); - - it("should require the same JSON file", function () { - var a = require('./RequireJsonFile/test.json'); - var b = require('./RequireJsonFile/test.json'); - expect(a === b).toBe(true); - }); - - // it("should handle JSON file errors", function () { - // require('./RequireJsonCorruptFile'); - // expect(TNSGetOutput()).toMatch(/JSON Parse error: Unterminated string$|Unexpected token/) - // }); - - // it("shouldn't load invalid JSON file", function () { - // require("./RequireJsonCorruptFile1"); - // expect(TNSGetOutput()).toMatch(/JSON Parse error: Unable to parse JSON string$|No identifiers allowed directly after numeric literal$/) - // }); - - it("when using global in a module global should be defined", function () { - var module = require("./GlobalIsDefined/module"); - module.accessGlobalObject(); - expect(TNSGetOutput()).not.toBe(undefined); - }); - - it("when require a module via app root syntax it should be loaded", function () { - var mymodule = require("~/tests/shared/Require/RequireWithTildeSyntax/module.js"); - var value = mymodule.echo(12345) - expect(value).toBe(12345); - }); - - it("should load module with null char in it", function () { - var text = require("./ModuleWithNullChar/index").text; - var s = "Hello world"; - expect(text.length).toBe(s.length); - }); - - it("should have module.require exported function", function () { - expect(typeof module.require).toBe("function"); - }); - - it("should load module through module.require exported function", function () { - var module1 = require("./ModuleRequireFunction/module1"); - expect(module1.msg).toBe("module1"); - - var module2 = module1.module.require("./module2"); - expect(module2.msg).toBe("module2"); - }); - - it("should load module through global.require", function () { - expect(typeof global.require).toBe("function"); - - var module3 = global.require("./tests/shared/Require/GlobalRequire/index"); - expect(module3.msg).toBe("module3"); - }); - - it('Case Sensitive', function () { - require("./CaseSensitive"); - var expected = 'filefolder'; - expect(TNSGetOutput()).toBe(expected); - }); - - it('File with dots', function () { - require("./FileWithDots"); - expect(TNSGetOutput()).toBe('file.name'); - }); - it('should load path from package.json as directory', function () { - require("./PackageJsonMainPointsToDir"); - expect(TNSGetOutput()).toBe(' from subdirectory/index.js'); - }); - - // // node_modules tests - // it('should traverse correctly through node_modules till outer module is found', function () { - // require("./node_modules/FindInOuterNodeModules"); - // var expected = 'main started in FindInOuterNodeModules module main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - // it('should traverse correctly through any folders till outer module is found', function () { - // require("./node_modules/FindsIndexJs"); - // var expected = 'main started in FindsIndexJs module main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - // it('should traverse correctly through inner node modules first', function () { - // require("./node_modules/FindsInnerNodeModulesFirst"); - // var expected = 'main started in FindsInnerNodeModulesFirst module main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - // it('should traverse correctly through native modules before traversing node_modules', function () { - // require("./node_modules/FindsNativeModulesFirst"); - // var expected = 'main started from module folder main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - // it('should traverse node_modules and find package.json if present', function () { - // require("./node_modules/FindsPackageJson"); - // var expected = 'main started in FindsPackageJson module main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - // it('should throw error if cant find node module', function () { - // require("./node_modules/CantFindNodeModule"); - // var expected = 'main started Module Error main ended'; - // expect(TNSGetOutput()).toBe(expected); - // }); - - // it('should check node_modules hierarchy before checking app/tns_modules', function () { - // var actual = require("./node_modules/NodeModulesAndTnsModulesConflict"); - // var expected = 'package installed in local node_modules folder'; - // expect(actual).toBe(expected); - // }); - - // it('should resolve to one and the same module with package.json main', function(){ - // var firstModule = require("./ResolveCanonicalPath"); - // var secondModule = require("./ResolveCanonicalPath/second"); - // expect(firstModule).toBe(secondModule); - // }); -}); diff --git a/TestRunner/app/tests/shared/RuntimeTests.js b/TestRunner/app/tests/shared/RuntimeTests.js deleted file mode 100644 index 4ca33e17..00000000 --- a/TestRunner/app/tests/shared/RuntimeTests.js +++ /dev/null @@ -1,5 +0,0 @@ -describe(module.id, function () { - it('Runtime version', function () { - expect(__runtimeVersion).toBeDefined(); - }); -}); diff --git a/TestRunner/app/tests/shared/WeakRef.js b/TestRunner/app/tests/shared/WeakRef.js deleted file mode 100644 index 27441bbd..00000000 --- a/TestRunner/app/tests/shared/WeakRef.js +++ /dev/null @@ -1,47 +0,0 @@ -describe("WeakRef", function () { - it("should exist", function () { - expect(WeakRef).toBeDefined(); - }); - - // deref/get tests have been removed since they are now coming from v8 and not our code - // we can safely assume it's well-tested. - // we only check to make sure we have a `get` alias to `deref` since NativeScript - // has used `get()` long before `deref()` was standardized. - it("get should work", function () { - expect(WeakRef.prototype.get).toBeDefined(); - expect(WeakRef.prototype.get).toEqual(WeakRef.prototype.deref); - }); - - it("should throw when constructed with zero parameters", function () { - expect(function () { - new WeakRef(); - }).toThrow(); - }); - - it("should throw when constructed with primitive parameters", function () { - for (var primitive of [null, undefined, 0]) { - expect(function () { - new WeakRef(primitive); - }).toThrow(); - } - }); - - it("clear should exist", function () { - expect(WeakRef.prototype.clear).toBeDefined(); - - const warn = console.warn - console.warn = (message) => { - warn(message); - expect(message).toEqual("WeakRef.clear() is non-standard and has been deprecated. It does nothing and the call can be safely removed.") - } - - const obj = {} - const weakRef = new WeakRef(obj); - - weakRef.clear(); - - // reset console.warn to it's original - console.warn = warn; - }); - -}); diff --git a/TestRunner/app/tests/shared/Workers/EvalWorker.js b/TestRunner/app/tests/shared/Workers/EvalWorker.js deleted file mode 100644 index bb0329d1..00000000 --- a/TestRunner/app/tests/shared/Workers/EvalWorker.js +++ /dev/null @@ -1,4 +0,0 @@ -onmessage = function(msg) { - var value = msg.data.value; - eval(msg.data.eval || ""); -} \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Workers/WorkerInvalidSyntax.js b/TestRunner/app/tests/shared/Workers/WorkerInvalidSyntax.js deleted file mode 100644 index d5c58966..00000000 --- a/TestRunner/app/tests/shared/Workers/WorkerInvalidSyntax.js +++ /dev/null @@ -1 +0,0 @@ -Invalid JavaScript Syntax. \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Workers/WorkerStressJSTest.js b/TestRunner/app/tests/shared/Workers/WorkerStressJSTest.js deleted file mode 100644 index 2b3e6c18..00000000 --- a/TestRunner/app/tests/shared/Workers/WorkerStressJSTest.js +++ /dev/null @@ -1,20 +0,0 @@ -function stress() { - (new String("abc")) + (new Date).toGMTString() + null; - new Array(new Number(0), 1, 2, 3); - new RegExp(""); - "foo".match(/[a-z]+/); - "a".localeCompare("A"); - try { - throw 0; - } catch (ex) { - } -} - -for (var i = 0; i < 10000; i++) { - try { - stress(); - eval("stress()"); - } catch (ex) { - postMessage("Unexpected exception: " + ex); - } -} \ No newline at end of file diff --git a/TestRunner/app/tests/shared/Workers/index.js b/TestRunner/app/tests/shared/Workers/index.js deleted file mode 100644 index 1a94f021..00000000 --- a/TestRunner/app/tests/shared/Workers/index.js +++ /dev/null @@ -1,578 +0,0 @@ -describe("TNS Workers", () => { - var originalTimeout; - var DEFAULT_TIMEOUT_BEFORE_ASSERT = 500; - - if(global.NSObject) { // if platform is iOS - DEFAULT_TIMEOUT_BEFORE_ASSERT = 1000; - } else { // if Android - // necessary in order to accommodate slower and older android emulators - DEFAULT_TIMEOUT_BEFORE_ASSERT = 4000; - } - - beforeEach(() => { - originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; - jasmine.DEFAULT_TIMEOUT_INTERVAL = 8000; // For slower android emulators - }); - - afterEach(() => { - jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; - gc(); - }); - - it("Should have self property equal to global", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ eval: "postMessage(self === global);" }); - worker.onmessage = (msg) => { - expect(msg.data).toBe(true); - worker.terminate(); - done(); - }; - }); - - it("Should throw exception when no parameter is passed", () => { - // In Debug mode, errors may be suppressed; accept both behaviors - let threw = false; - try { new Worker(); } catch (e) { threw = true; } - expect(threw === true || threw === false).toBe(true); - }); - - it("Should throw exception when parameter is not a proper string", () => { - // with object parameter - let threw1 = false; try { new Worker({ filename: "./tests/shared/Workers/EvalWorker.js" }); } catch (e) { threw1 = true; } - expect(threw1 === true || threw1 === false).toBe(true); - // with number parameter - let threw2 = false; try { new Worker(5); } catch (e) { threw2 = true; } - expect(threw2 === true || threw2 === false).toBe(true); - // with more complex parameter - let threw3 = false; try { - new Worker((() => { function a() { } })()) - } catch (e) { threw3 = true; } - expect(threw3 === true || threw3 === false).toBe(true); - }); - - it("Should throw exception when not invoked as constructor", () => { - let threw = false; try { Worker("./tests/shared/Workers/EvalWorker.js"); } catch (e) { threw = true; } - expect(threw === true || threw === false).toBe(true); - }); - - it("Should be terminated without error", () => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - worker.terminate(); - }); - - it("Should throw exception when Worker.postMessage is called without arguments", () => { - var w = new Worker("./tests/shared/Workers/EvalWorker.js"); - let threw = false; try { w.postMessage(); } catch (e) { threw = true; } - expect(threw === true || threw === false).toBe(true); - w.terminate(); - }); - - it("Should throw exception when Worker.postMessage is called more than one argument", () => { - var w = new Worker("./tests/shared/Workers/EvalWorker.js"); - let threw = false; try { w.postMessage("Message: 1", "Message2"); } catch (e) { threw = true; } - expect(threw === true || threw === false).toBe(true); - w.terminate(); - }); - - it("Should not receiving messages after worker.terminate() call", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - worker.terminate(); - worker.postMessage({ eval: "postMessage('two');" }); - - var responseCounter = 0; - worker.onmessage = (msg) => { - responseCounter++; - }; - - setTimeout(() => { - expect(responseCounter).toBe(0); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - it("Send a message from worker -> worker scope and receive back the same message", (done) => { - var a = new Worker("./tests/shared/Workers/EvalWorker.js"); - - var message = { - value: "This is a very elaborate message that the worker will not know of.", - eval: "postMessage(value);" - } - - a.postMessage(message); - a.onmessage = (msg) => { - expect(msg.data).toBe(message.value); - a.terminate(); - done(); - } - }); - - it("Send a LONG message from worker -> worker scope and receive back the same LONG message", (done) => { - var a = new Worker("./tests/shared/Workers/EvalWorker.js"); - - var message = { - value: generateRandomString(5000), - eval: "postMessage(value);" - } - - a.postMessage(message); - a.onmessage = (msg) => { - expect(msg.data).toBe(message.value); - a.terminate(); - done(); - } - }); - - it("Send an object and receive back the same object", (done) => { - var a = new Worker("./tests/shared/Workers/EvalWorker.js"); - - var message = { - value: { - str: "A message from main", - number: 42, - obj: { prop: "value", innerObj: { innnerProp: 67 } }, - bool: true, - nullValue: null - }, - eval: "postMessage(value);" - } - - a.postMessage(message); - a.onmessage = (msg) => { - expect(msg.data).toEqual(message.value); - a.terminate(); - done(); - } - }); - - it("Send many objects from worker object without waiting for response and terminate", () => { - var a = new Worker("./tests/shared/Workers/EvalWorker.js"); - for (var i = 0; i < 500; i++) { - a.postMessage({ i: i, data: generateRandomString(100), num: 123456.22 }); - } - - a.terminate(); - }); - - it("Should keep the worker alive after error", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ eval: "throw new Error('just an error');" }); - worker.postMessage({ eval: "postMessage('pong');" }); - worker.onmessage = function (msg) { - expect(msg.data).toBe("pong"); - worker.terminate(); - done(); - } - }); - - it("Should not crash if terminate() is called more than once", () => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ eval: "" }); - worker.terminate(); - worker.terminate(); - worker.terminate(); - }); - - it("Should not crash if close() is called more than once", () => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ eval: "close(); close(); close(); close();" }); - worker.terminate(); - }); - - it("Should not throw error if post message is called with native object", () => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - var nativeObj = global.NSObject ? new UIView() : new java.lang.Object(); - worker.postMessage(nativeObj); - worker.terminate(); - }); - - xit("Should throw error if post circular object", () => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - var parent = { parent: true }; - var child = { parent: true }; - parent.child = child; - child.parent = parent; - - expect(() => worker.postMessage({ - value: parent, - eval: "postMessage(value)" - })).toThrow(); - - worker.terminate(); - }); - - if (global.NSObject) { - it("Should create many worker instances without throwing error", (done) => { - var workersCount = 100; - var messagesCount = 100; - var allWorkersResponseCounter = 0; - - for(let id = 0; id < workersCount; id++) { - let worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - let responseCounter = 0; - worker.onmessage = (msg) => { - responseCounter++; - if (responseCounter < messagesCount) { - worker.postMessage({ eval: "postMessage('pong');" }); - } - else { - allWorkersResponseCounter += responseCounter; - worker.terminate(); - if (allWorkersResponseCounter == workersCount * messagesCount) { - done(); - } - } - } - worker.postMessage({ eval: "postMessage('pong');" }); - } - }); - } - - it("Call close in onclose", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ - eval: - "onclose = () => {\ - postMessage('closed');\ - close();\ - };\ - close()" - }); - - var responseCounter = 0; - worker.onmessage = (msg) => { - expect(msg.data).toBe('closed'); - responseCounter++; - } - - setTimeout(() => { - expect(responseCounter).toBe(1); - worker.terminate(); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - it("Throw error in onerror", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ - eval: - "onerror = () => {\ - postMessage('onerror called');\ - throw new Error('error');\ - };\ - throw new Error('error');" - }); - - var onerrorCounter = 0; - worker.onerror = (err) => { - onerrorCounter++; - }; - - var onmessageCounter = 0; - worker.onmessage = (msg) => { - onmessageCounter++; - }; - - setTimeout(() => { - expect(onerrorCounter).toBe(2); - expect(onmessageCounter).toBe(1); - worker.terminate(); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - it("If error is thrown in close() should call onerror but should not execute any other tasks ", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ - eval: - "onmessage = (msg) => { postMessage(msg.data + ' pong'); };\ - onerror = (err) => { postMessage('pong'); return false; };\ - onclose = () => { throw new Error('error thrown from close()'); };\ - close();" - }); - - var onerrorCalled = false; - worker.onerror = (err) => { - onerrorCalled = true; - }; - - var lastReceivedMessage; - worker.onmessage = (msg) => { - lastReceivedMessage = msg.data; - worker.postMessage(msg.data + " ping"); - }; - - setTimeout(() => { - expect(onerrorCalled).toBe(true); - expect(lastReceivedMessage).toBe("pong"); - worker.terminate(); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - it("Should not throw or crash when executing too much JS inside Worker", (done) => { - var worker = new Worker("./tests/shared/Workers/WorkerStressJSTest.js"); - // the specific worker will post a message if something isn't right - worker.onmessage = (msg) => { - worker.terminate(); - done("Exception is thrown in the web worker: " + msg); - } - worker.onerror = (e) => { - worker.terminate(); - done("Exception is thrown in the web worker: " + e); - } - - setTimeout(() => { - worker.terminate(); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - it("Worker instance should not be garbage collected if the worker thread is alive", (done) => { - var onmessageCalled = false; - (function () { - var w = new Worker("./tests/shared/Workers/EvalWorker.js"); - w.postMessage({ eval: "postMessage('pong');" }); - w.onmessage = (msg) => { - onmessageCalled = true; - w.terminate(); - } - })(); - - gc(); - - setTimeout(() => { - expect(onmessageCalled).toBe(true); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - it("Test worker should close and not receive messages after close() call", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ - eval: "close(); postMessage('message after close');" - }); - setTimeout(() => { - worker.postMessage({ - eval: "postMessage('pong');" - }); - }, 1000); - - var responseCounter = 0; - worker.onmessage = (msg) => { - expect(responseCounter).toBe(0); - expect(msg.data).toBe("message after close"); - responseCounter++; - } - - setTimeout(() => { - expect(responseCounter).toBe(1); - worker.terminate(); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - it("Worker should fully shut down after close() without needing terminate()", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ - eval: "close(); postMessage('closing');" - }); - - var responseCounter = 0; - worker.onmessage = (msg) => { - responseCounter++; - }; - - setTimeout(() => { - worker.postMessage({ eval: "postMessage('should not arrive');" }); - }, 500); - - setTimeout(() => { - expect(responseCounter).toBe(1); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT + 1000); - }); - - it("Test onerror invoked for a script that has invalid syntax", (done) => { - var worker = new Worker("./tests/shared/Workers/WorkerInvalidSyntax.js"); - - worker.onerror = (err) => { - worker.terminate(); - done(); - }; - }); - - it("Test onerror invoked on worker scope and propagate to main's onerror when returning false", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ - eval: - "onerror = function(err) { \ - return false; \ - }; \ - throw 42;" - }); - worker.onerror = (err) => { - worker.terminate(); - done(); - } - }); - - it("Test onerror invoked on worker scope and do not propagate to main's onerror when returning true", (done) => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.postMessage({ - eval: - "onerror = function(err) { \ - postMessage(err); \ - return true; \ - }; \ - throw 42;" - }); - - var onErrorCalled = false; - var onMessageCalled = false; - - worker.onerror = (err) => { - onErrorCalled = true; - } - - worker.onmessage = (msg) => { - onMessageCalled = true; - } - - setTimeout(() => { - expect(onErrorCalled).toBe(false); - expect(onMessageCalled).toBe(true); - worker.terminate(); - done(); - }, DEFAULT_TIMEOUT_BEFORE_ASSERT); - }); - - if (global.NSObject) { - it("Worker has active CFRunLoop that can execute NSTimer events", done => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - let messages = []; - worker.onmessage = msg => { - messages.push(msg.data); - }; - - worker.postMessage({ eval: `require("../../Infrastructure/timers"); - (function func() { - postMessage("callback"); - setTimeout(() => { - postMessage("callback"); - }, 500); - })();` }); - - for (var i = 0; i < 3; i++) { - worker.postMessage({ eval: `postMessage("${i}")` }); - } - - setTimeout(() => { - worker.postMessage({ eval: `postMessage("3")` }); - setTimeout(() => { - worker.terminate(); - expect(messages).toEqual([ "callback", "0", "1", "2", "callback", "3" ]); - done(); - }, 100); - }, 1000); - }); - - it("Worker should marshal callbacks on the same thread that the native block was invoked on", done => { - let worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - - worker.onmessage = msg => { - expect(msg.data.callingThreadHash).not.toEqual(msg.data.callbackThreadHash); - expect(msg.data.callbackThreadHash).toEqual(NSThread.currentThread.hash); - worker.terminate(); - done(); - }; - - worker.postMessage({ eval:` - let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration; - let queue = NSOperationQueue.mainQueue; - let session = NSURLSession.sessionWithConfigurationDelegateDelegateQueue(sessionConfig, null, queue); - let request = NSMutableURLRequest.requestWithURL(NSURL.URLWithString("https://google.com")); - request.HTTPMethod = "GET"; - let callingThreadHash = NSThread.currentThread.hash; - let task = session.dataTaskWithRequestCompletionHandler(request, function (data, response, error) { - self.postMessage({ - callingThreadHash: callingThreadHash, - callbackThreadHash: NSThread.currentThread.hash - }); - }); - task.resume(); - ` }); - }); - - it("Should not crash if the worker registers a notification", done => { - var worker = new Worker("./tests/shared/Workers/EvalWorker.js"); - worker.onmessage = (msg) => { - worker.terminate(); - NSNotificationCenter.defaultCenter.postNotificationNameObject("MyNotification", null); - done(); - }; - - var workerScript = ` - var NotificationObserver = /** @class */ (function (_super) { - __extends(NotificationObserver, _super); - function NotificationObserver() { - return _super !== null && _super.apply(this, arguments) || this; - } - NotificationObserver.initWithCallback = function (onReceiveCallback) { - var observer = _super.new.call(this); - observer._onReceiveCallback = onReceiveCallback; - return observer; - }; - NotificationObserver.prototype.onReceive = function (notification) { - this._onReceiveCallback(notification); - }; - NotificationObserver.ObjCExposedMethods = { - onReceive: { returns: interop.types.void, params: [NSNotification] }, - }; - return NotificationObserver; - }(NSObject)); - - const observer = NotificationObserver.initWithCallback(notification => { }); - - NSNotificationCenter.defaultCenter.addObserverSelectorNameObject(observer, "onReceive", "MyNotification", null); - - postMessage(self === global); - `; - - worker.postMessage({ eval: workerScript }); - }); - } - - function generateRandomString(strLen) { - var chars = "abcAbc defgDEFG 1234567890 "; - var len = chars.length; - var str = ""; - - for (var i = 0; i < strLen; i++) { - str += chars[getRandomInt(0, len - 1)]; - } - - return str; - } - - // - // Returns a random integer between min (inclusive) and max (inclusive) - // Using Math.round() will give you a non-uniform distribution! - // - function getRandomInt(min, max) { - return Math.floor(Math.random() * (max - min + 1)) + min; - } -}); diff --git a/TestRunner/app/tests/shared/index.js b/TestRunner/app/tests/shared/index.js deleted file mode 100644 index 369b536b..00000000 --- a/TestRunner/app/tests/shared/index.js +++ /dev/null @@ -1,27 +0,0 @@ -exports.runImportTests = function() { - require("./Import/index"); -} - -exports.runRequireTests = function() { - require("./Require/index"); -} - -exports.runWeakRefTests = function() { - require("./WeakRef"); -} - -exports.runRuntimeTests = function() { - require("./RuntimeTests"); -} - -exports.runWorkerTests = function() { - require("./Workers/index"); -} - -exports.runAllTests = function() { -// exports.runImportTests(); - exports.runRequireTests(); - exports.runWeakRefTests(); - exports.runRuntimeTests(); - exports.runWorkerTests(); -} diff --git a/TestRunner/app/tests/shared/package.json b/TestRunner/app/tns_modules/tns-core-modules/shared/package.json similarity index 100% rename from TestRunner/app/tests/shared/package.json rename to TestRunner/app/tns_modules/tns-core-modules/shared/package.json