Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
style: run prettier
  • Loading branch information
rigor789 committed Mar 7, 2022
commit fdee9b8c99b81bb4ab2fea1f9e955b49cdd6e765
6 changes: 3 additions & 3 deletions lib/definitions/android-plugin-migrator.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ interface IBuildAndroidPluginData extends Partial<IProjectDir> {
* Optional custom Gradle path.
*/
gradlePath?: string;
/**

/**
* Optional custom Gradle arguments.
*/
gradleArgs?: string,
gradleArgs?: string;
}
8 changes: 2 additions & 6 deletions lib/services/android-plugin-build-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -421,11 +421,7 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
buildGradlePath,
runtimeGradleVersions.gradleAndroidPluginVersion
);
this.replaceFileContent(
buildGradlePath,
"{{pluginName}}",
pluginName
);
this.replaceFileContent(buildGradlePath, "{{pluginName}}", pluginName);
}

private async getRuntimeGradleVersions(
Expand Down Expand Up @@ -736,7 +732,7 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
`-PcompileSdk=android-${pluginBuildSettings.androidToolsInfo.compileSdkVersion}`,
`-PbuildToolsVersion=${pluginBuildSettings.androidToolsInfo.buildToolsVersion}`,
`-PappPath=${this.$projectData.getAppDirectoryPath()}`,
`-PappResourcesPath=${this.$projectData.getAppResourcesDirectoryPath()}`
`-PappResourcesPath=${this.$projectData.getAppResourcesDirectoryPath()}`,
];
if (pluginBuildSettings.gradleArgs) {
localArgs.push(pluginBuildSettings.gradleArgs);
Expand Down
54 changes: 35 additions & 19 deletions lib/services/android-project-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,21 +48,28 @@ import { IInjector } from "../common/definitions/yok";
import { injector } from "../common/yok";
import { INotConfiguredEnvOptions } from "../common/definitions/commands";



interface NativeDependency {
name: string;
directory: string;
dependencies: string[];
}
function treeSort(obj: NativeDependency[], start:NativeDependency[], depth = 0):NativeDependency[] {
const processed = obj.reduce((a,b,i) => {
if (b.dependencies.every(Array.prototype.includes, a.map(n=>n.name))) {
a.push(b);
}
return a;
function treeSort(
obj: NativeDependency[],
start: NativeDependency[],
depth = 0
): NativeDependency[] {
const processed = obj.reduce((a, b, i) => {
if (
b.dependencies.every(
Array.prototype.includes,
a.map((n) => n.name)
)
) {
a.push(b);
}
return a;
}, start);
const nextNames = obj.filter(n => !processed.includes(n));
const nextNames = obj.filter((n) => !processed.includes(n));
const goAgain = nextNames.length && depth <= obj.length;
return goAgain ? treeSort(nextNames, processed, depth + 1) : processed;
}
Expand Down Expand Up @@ -694,20 +701,29 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
platformDir,
constants.DEPENDENCIES_JSON_NAME
);
let nativeDependencyDatas = dependencies
.filter(AndroidProjectService.isNativeAndroidDependency);

let nativeDependencies = nativeDependencyDatas.map(({ name, directory, dependencies }) => ({
name,
directory: path.relative(platformDir, directory),
dependencies:dependencies.filter(d=>nativeDependencyDatas.findIndex(nd=>nd.name===d) !== -1)
} as NativeDependency));
let nativeDependencyDatas = dependencies.filter(
AndroidProjectService.isNativeAndroidDependency
);

let nativeDependencies = nativeDependencyDatas.map(
({ name, directory, dependencies }) =>
({
name,
directory: path.relative(platformDir, directory),
dependencies: dependencies.filter(
(d) => nativeDependencyDatas.findIndex((nd) => nd.name === d) !== -1
),
} as NativeDependency)
);
nativeDependencies = treeSort(nativeDependencies, []);
const jsonContent = JSON.stringify(nativeDependencies, null, 4);

this.$fs.writeFile(dependenciesJsonPath, jsonContent);
return dependencies.sort(function(a, b){
return nativeDependencies.findIndex(n => n.name === a.name) - nativeDependencies.findIndex(n => n.name === b.name);
return dependencies.sort(function (a, b) {
return (
nativeDependencies.findIndex((n) => n.name === a.name) -
nativeDependencies.findIndex((n) => n.name === b.name)
);
});
}

Expand Down
13 changes: 11 additions & 2 deletions lib/services/ios-project-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ import { IOSProvisionService } from "./ios-provision-service";
import { IOSEntitlementsService } from "./ios-entitlements-service";
import { IOSBuildData } from "../data/build-data";
import { IOSPrepareData } from "../data/prepare-data";
import { BUILD_XCCONFIG_FILE_NAME, CONFIG_FILE_NAME_DISPLAY, IosProjectConstants } from "../constants";
import {
BUILD_XCCONFIG_FILE_NAME,
CONFIG_FILE_NAME_DISPLAY,
IosProjectConstants,
} from "../constants";
import { hook } from "../common/helpers";
import {
IPlatformData,
Expand All @@ -31,7 +35,12 @@ import {
} from "../definitions/project";

import { IBuildData } from "../definitions/build";
import { IXcprojService, IXcconfigService, IDependencyData, IOptions } from "../declarations";
import {
IXcprojService,
IXcconfigService,
IDependencyData,
IOptions,
} from "../declarations";
import { IPluginData, IPluginsService } from "../definitions/plugins";
import {
IFileSystem,
Expand Down
5 changes: 2 additions & 3 deletions lib/services/platform-environment-requirements.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,8 @@ export class PlatformEnvironmentRequirements
// private $staticConfig: IStaticConfig,
private $analyticsService: IAnalyticsService,
// @ts-ignore - required by the hook helper!
private $injector: IInjector
) // private $previewQrCodeService: IPreviewQrCodeService
{}
private $injector: IInjector // private $previewQrCodeService: IPreviewQrCodeService
) {}

// public get $previewAppController(): IPreviewAppController {
// return this.$injector.resolve("previewAppController");
Expand Down
5 changes: 4 additions & 1 deletion lib/services/project-changes-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,10 @@ export class ProjectChangesService implements IProjectChangesService {
);

this.$nodeModulesDependenciesBuilder
.getProductionDependencies(projectData.projectDir, projectData.ignoredDependencies)
.getProductionDependencies(
projectData.projectDir,
projectData.ignoredDependencies
)
.filter(
(dep) =>
dep.nativescript &&
Expand Down
191 changes: 96 additions & 95 deletions test/services/test-execution-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,113 +9,114 @@ const karmaPluginName = "karma";
const unitTestsPluginName = "@nativescript/unit-test-runner";

function getTestExecutionService(): ITestExecutionService {
const injector = new InjectorStub();
injector.register("testExecutionService", TestExecutionService);
injector.register("runController", {});
const injector = new InjectorStub();
injector.register("testExecutionService", TestExecutionService);
injector.register("runController", {});

return injector.resolve("testExecutionService");
return injector.resolve("testExecutionService");
}

function getDependenciesObj(deps: string[]): IDictionary<string> {
const depsObj: IDictionary<string> = {};
deps.forEach((dep) => {
depsObj[dep] = "1.0.0";
});
const depsObj: IDictionary<string> = {};
deps.forEach((dep) => {
depsObj[dep] = "1.0.0";
});

return depsObj;
return depsObj;
}

describe("testExecutionService", () => {
const testCases = [
{
name:
"should return false when the project has no dependencies and dev dependencies",
expectedCanStartKarmaServer: false,
projectData: { dependencies: {}, devDependencies: {} },
},
{
name: "should return false when the project has no karma",
expectedCanStartKarmaServer: false,
projectData: {
dependencies: getDependenciesObj([unitTestsPluginName]),
devDependencies: {},
},
},
{
name: "should return false when the project has no unit test runner",
expectedCanStartKarmaServer: false,
projectData: {
dependencies: getDependenciesObj([karmaPluginName]),
devDependencies: {},
},
},
{
name:
"should return true when the project has the required plugins as dependencies",
expectedCanStartKarmaServer: true,
projectData: {
dependencies: getDependenciesObj([
karmaPluginName,
unitTestsPluginName,
]),
devDependencies: {},
},
},
{
name:
"should return true when the project has the required plugins as dev dependencies",
expectedCanStartKarmaServer: true,
projectData: {
dependencies: {},
devDependencies: getDependenciesObj([
karmaPluginName,
unitTestsPluginName,
]),
},
},
{
name:
"should return true when the project has the required plugins as dev and normal dependencies",
expectedCanStartKarmaServer: true,
projectData: {
dependencies: getDependenciesObj([karmaPluginName]),
devDependencies: getDependenciesObj([unitTestsPluginName]),
},
},
];
const testCases = [
{
name:
"should return false when the project has no dependencies and dev dependencies",
expectedCanStartKarmaServer: false,
projectData: { dependencies: {}, devDependencies: {} },
},
{
name: "should return false when the project has no karma",
expectedCanStartKarmaServer: false,
projectData: {
dependencies: getDependenciesObj([unitTestsPluginName]),
devDependencies: {},
},
},
{
name: "should return false when the project has no unit test runner",
expectedCanStartKarmaServer: false,
projectData: {
dependencies: getDependenciesObj([karmaPluginName]),
devDependencies: {},
},
},
{
name:
"should return true when the project has the required plugins as dependencies",
expectedCanStartKarmaServer: true,
projectData: {
dependencies: getDependenciesObj([
karmaPluginName,
unitTestsPluginName,
]),
devDependencies: {},
},
},
{
name:
"should return true when the project has the required plugins as dev dependencies",
expectedCanStartKarmaServer: true,
projectData: {
dependencies: {},
devDependencies: getDependenciesObj([
karmaPluginName,
unitTestsPluginName,
]),
},
},
{
name:
"should return true when the project has the required plugins as dev and normal dependencies",
expectedCanStartKarmaServer: true,
projectData: {
dependencies: getDependenciesObj([karmaPluginName]),
devDependencies: getDependenciesObj([unitTestsPluginName]),
},
},
];

describe("canStartKarmaServer", () => {
_.each(testCases, (testCase: any) => {
it(`${testCase.name}`, async () => {
const testExecutionService = getTestExecutionService();
describe("canStartKarmaServer", () => {
_.each(testCases, (testCase: any) => {
it(`${testCase.name}`, async () => {
const testExecutionService = getTestExecutionService();

// todo: cleanup monkey-patch with a friendlier syntax (util?)
// MOCK require.resolve
const Module = require('module');
const originalResolveFilename = Module._resolveFilename
// todo: cleanup monkey-patch with a friendlier syntax (util?)
// MOCK require.resolve
const Module = require("module");
const originalResolveFilename = Module._resolveFilename;

Module._resolveFilename = function (...args: any) {
if (args[0].startsWith(karmaPluginName)
&& (testCase.projectData.dependencies[karmaPluginName]
|| testCase.projectData.devDependencies[karmaPluginName])
) {
// override with a "random" built-in module to
// ensure the module can be resolved
args[0] = 'fs'
}
Module._resolveFilename = function (...args: any) {
if (
args[0].startsWith(karmaPluginName) &&
(testCase.projectData.dependencies[karmaPluginName] ||
testCase.projectData.devDependencies[karmaPluginName])
) {
// override with a "random" built-in module to
// ensure the module can be resolved
args[0] = "fs";
}

return originalResolveFilename.apply(this, args)
}
// END MOCK
return originalResolveFilename.apply(this, args);
};
// END MOCK

const canStartKarmaServer = await testExecutionService.canStartKarmaServer(
testCase.projectData
);
assert.equal(canStartKarmaServer, testCase.expectedCanStartKarmaServer);
const canStartKarmaServer = await testExecutionService.canStartKarmaServer(
testCase.projectData
);
assert.equal(canStartKarmaServer, testCase.expectedCanStartKarmaServer);

// restore mock
Module._resolveFilename = originalResolveFilename;
});
});
});
// restore mock
Module._resolveFilename = originalResolveFilename;
});
});
});
});