diff --git a/tests/app/ui/builder/builder-tests.ts b/tests/app/ui/builder/builder-tests.ts index 48bd27f80..32cb83b95 100644 --- a/tests/app/ui/builder/builder-tests.ts +++ b/tests/app/ui/builder/builder-tests.ts @@ -1,5 +1,5 @@ import { createViewFromEntry } from "tns-core-modules/ui/builder"; -import { assertEqual, assertNull, assertThrows } from "../../tk-unit"; +import { assertEqual, assertNull, assertThrows, assertNotNull } from "../../tk-unit"; const COMPONENT_MODULE = "ui/builder/component-module"; const MISSING_MODULE = "ui/builder/missing-module"; @@ -22,7 +22,17 @@ export function test_view_is_NOT_module_root_component() { assertNull(undefinedModule, `View<${nestedView}> should NOT be a root component of a module.`); } -export function test_load_component_from_missing_module_throws() { +export function test_create_view_from_entry_from_missing_module_throws() { assertThrows(() => getViewComponent(MISSING_MODULE), "Loading component from a missing module SHOULD throw an error."); } + +export function test_create_view_from_entry_with_path_with_slash() { + const view = getViewComponent("/" + COMPONENT_MODULE); + assertNotNull(view, `Module starting with "/" could not be loaded`); +} + +export function test_create_view_from_entry_with_path_with_tilde() { + const view = getViewComponent("~/" + COMPONENT_MODULE); + assertNotNull(view, `Module starting with "~/" could not be loaded`); +} \ No newline at end of file diff --git a/tns-core-modules/ui/builder/builder.ts b/tns-core-modules/ui/builder/builder.ts index 6a391a0c0..ff8977d2b 100644 --- a/tns-core-modules/ui/builder/builder.ts +++ b/tns-core-modules/ui/builder/builder.ts @@ -57,20 +57,21 @@ export const createViewFromEntry = profile("createViewFromEntry", (entry: ViewEn return view; } else if (entry.moduleName) { - const resolvedCodeModuleName = resolveModuleName(entry.moduleName, ""); //`${moduleName}.xml`; + const moduleName = sanitizeModuleName(entry.moduleName); + const resolvedCodeModuleName = resolveModuleName(moduleName, ""); //`${moduleName}.xml`; let moduleExports = resolvedCodeModuleName ? global.loadModule(resolvedCodeModuleName) : null; if (moduleExports && moduleExports.createPage) { // Exports has a createPage() method const view = moduleExports.createPage(); - const resolvedCssModuleName = resolveModuleName(entry.moduleName, "css"); //entry.moduleName + ".css"; + const resolvedCssModuleName = resolveModuleName(moduleName, "css"); //entry.moduleName + ".css"; if (resolvedCssModuleName) { view.addCssFile(resolvedCssModuleName); } return view; } else { - const componentModule = loadInternal(entry.moduleName, moduleExports); + const componentModule = loadInternal(moduleName, moduleExports); const componentView = componentModule && componentModule.component; return componentView;