增量检查初始设置

Signed-off-by: wangcaoyu <wangcaoyu@huawei.com>
This commit is contained in:
wangcaoyu 2024-08-26 17:24:30 +08:00
parent 1ad7a7adad
commit c0fac78939
36 changed files with 962 additions and 56 deletions

File diff suppressed because one or more lines are too long

View File

@ -42,6 +42,7 @@ import { ApiCountHelper } from '../coreImpl/count/count';
import { CommonFunctions } from '../utils/checkUtils';
import { FunctionUtils, KitData } from '../utils/FunctionUtils';
import { ApiInfo, ApiType } from '../typedef/parser/ApiInfoDefination';
import { checkEntryType } from '../typedef/checker/result_type';
/**
@ -140,6 +141,10 @@ export const Plugin: PluginType = {
isRequiredOption: false,
options: ['--prId <string>', 'check api prId', ''],
},
{
isRequiredOption: false,
options: ['--is-increment <string>', 'check api is increment, only check change', 'true'],
},
{
isRequiredOption: false,
options: ['--excel <string>', 'check api excel', 'false'],
@ -198,6 +203,7 @@ export const Plugin: PluginType = {
path: argv.path,
checker: argv.checker,
prId: argv.prId,
isIncrement: argv.isIncrement,
old: argv.old,
new: argv.new,
oldVersion: argv.oldVersion,
@ -449,14 +455,22 @@ function handleCollectData(apiData: ApiStatisticsInfo[], workbook: ExcelJS.Workb
* @param { OptionObjType } options
* @return { ToolNameValueType }
*/
function checkApi(): ToolNameValueType {
function checkApi(options: OptionObjType): ToolNameValueType {
try {
let mdApiFiles: string[] = [];
const filePathTxt: string = path.resolve(FileUtils.getBaseDirName(), '../mdFiles.txt');
if (fs.existsSync(filePathTxt)) {
mdApiFiles = CommonFunctions.getMdFiles(filePathTxt);
}
LocalEntry.checkEntryLocal(mdApiFiles, ['all'], './result.json', '', 'true');
const checkParam: checkEntryType = {
filePathArr: mdApiFiles,
fileRuleArr: ['all'],
output: './result.json',
prId: options.prId,
isOutExcel: 'true',
isIncrement: Boolean(options.isIncrement === 'true'),
};
LocalEntry.checkEntryLocal(checkParam);
return {
data: [],
};
@ -478,8 +492,16 @@ function checkApi(): ToolNameValueType {
function checkOnline(options: OptionObjType): ToolNameValueType {
options.format = formatType.NULL;
try {
LocalEntry.checkEntryLocal(options.path.split(','), options.checker.split(','), options.output, options.prId,
options.excel);
const checkParam: checkEntryType = {
filePathArr: options.path.split(','),
fileRuleArr: options.checker.split(','),
output: options.output,
prId: options.prId,
isOutExcel: options.excel,
isIncrement: Boolean(options.isIncrement === 'true'),
};
LocalEntry.checkEntryLocal(checkParam);
return {
data: [],
};
@ -502,7 +524,15 @@ function checkOnline(options: OptionObjType): ToolNameValueType {
function apiChangeCheck(options: OptionObjType): ToolNameValueType {
options.format = formatType.NULL;
try {
LocalEntry.apiChangeCheckEntryLocal(options.prId, options.checker.split(','), options.output, options.excel);
const checkParam: checkEntryType = {
filePathArr: [],
fileRuleArr: options.checker.split(','),
output: options.output,
prId: options.prId,
isOutExcel: options.excel,
isIncrement: Boolean(options.isIncrement === 'true'),
};
LocalEntry.apiChangeCheckEntryLocal(checkParam);
return {
data: [],
};
@ -929,6 +959,7 @@ export type OptionObjType = {
path: string;
checker: string;
prId: string;
isIncrement: string;
collectPath: string;
collectFile: string;
checkLabels: string;

View File

@ -22,4 +22,5 @@ export default {
DIR_NAME: path.resolve(__dirname, '../..'), //项目根目录地址
NEED_DETECTION: '',
IS_OH: '',
IS_INCREMENT_CHECK: undefined,
};

View File

@ -22,4 +22,5 @@ export default {
DIR_NAME: path.resolve(__dirname, '..'), //打包之后文件根目录地址
NEED_DETECTION: '',
IS_OH: '',
IS_INCREMENT_CHECK: undefined,
};

View File

@ -12,11 +12,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ApiResultSimpleInfo, ApiResultMessage, ApiBaseInfo } from '../../typedef/checker/result_type';
import { ApiResultSimpleInfo, ApiResultMessage, ApiBaseInfo, checkEntryType } from '../../typedef/checker/result_type';
import { Check } from './src/api_check_plugin';
import { LogUtil } from '../../utils/logUtil';
import { GenerateFile } from '../../utils/checkUtils';
import { compositiveResult, compositiveLocalResult, apiCheckResult } from '../../utils/checkUtils';
import { compositiveResult, compositiveLocalResult, apiCheckResult, hierarchicalRelationsSet } from '../../utils/checkUtils';
import { DOC, DEFINE, CHANEGE } from './config/api_check_config.json';
import { ApiChangeCheck } from './src/check_api_diff';
@ -25,23 +25,50 @@ import { ApiChangeCheck } from './src/check_api_diff';
*/
export class LocalEntry {
static checkEntryLocal(filePathArr: string[], fileRuleArr: string[], output: string, prId: string, excel: string): ApiResultMessage[] {
static checkEntryLocal(checkParam: checkEntryType): ApiResultMessage[] {
let allResult: ApiResultMessage[] = apiCheckResult;
try {
Check.scanEntry(filePathArr, prId, false);
LocalEntry.maskAlarm(compositiveResult, fileRuleArr);
Check.scanEntry(checkParam.filePathArr, checkParam.prId);
const incrementResult: ApiResultSimpleInfo[] = LocalEntry.filterIncrementResult(compositiveResult, checkParam.isIncrement);
LocalEntry.maskAlarm(incrementResult, checkParam.fileRuleArr);
} catch (error) {
LogUtil.e('API_CHECK_ERROR', error);
} finally {
GenerateFile.writeFile(apiCheckResult, output, {});
if (excel === 'true') {
GenerateFile.writeFile(apiCheckResult, checkParam.output, {});
if (checkParam.isOutExcel === 'true') {
GenerateFile.writeExcelFile(apiCheckResult);
}
}
return allResult;
}
/**
*
*
* @param {ApiResultSimpleInfo[]} allResultInfo apicheck结果
* @param {boolean} isIncrement true
* @return {*} {ApiResultSimpleInfo[]}
* @memberof LocalEntry
*/
static filterIncrementResult(allResultInfo: ApiResultSimpleInfo[], isIncrement: boolean): ApiResultSimpleInfo[] {
// 不需要增量检查或者diff数据为空
if (!isIncrement || hierarchicalRelationsSet.size === 0) {
return allResultInfo;
}
return allResultInfo.filter((resultItem: ApiResultSimpleInfo) => {
return !Boolean(process.env.IS_INCREMENT_CHECK) || LocalEntry.hasHierarchicalRelations(resultItem);
});
}
static hasHierarchicalRelations(resultItem: ApiResultSimpleInfo): boolean {
if (process.env.NODE_ENV === 'development') {
return hierarchicalRelationsSet.has(resultItem.hierarchicalRelations);
} else if (process.env.NODE_ENV === 'production') {
return hierarchicalRelationsSet.has(resultItem.hierarchicalRelations);
}
return hierarchicalRelationsSet.has(resultItem.hierarchicalRelations);
}
static maskAlarm(allResultInfo: ApiResultSimpleInfo[], fileRuleArr: string[]): void {
const localScan: boolean = (fileRuleArr.length === 1 && fileRuleArr[0] === 'all') ? true : false;
const apiCheckInfos: Map<string, string> = new Map(Object.entries({ ...DOC, ...DEFINE, ...CHANEGE }));
@ -130,16 +157,16 @@ export class LocalEntry {
return '';
}
static apiChangeCheckEntryLocal(prId: string, fileRuleArr: string[], output: string, excel: string): ApiResultMessage[] {
static apiChangeCheckEntryLocal(checkParam: checkEntryType): ApiResultMessage[] {
let apiChangeCheckResult: ApiResultMessage[] = apiCheckResult;
try {
ApiChangeCheck.checkApiChange(prId);
LocalEntry.maskAlarm(compositiveResult, fileRuleArr);
ApiChangeCheck.checkApiChange(checkParam.prId);
LocalEntry.maskAlarm(compositiveResult, checkParam.fileRuleArr);
} catch (error) {
LogUtil.e('API_CHECK_ERROR', error);
} finally {
GenerateFile.writeFile(apiCheckResult, output, {});
if (excel === 'true') {
GenerateFile.writeFile(apiCheckResult, checkParam.output, {});
if (checkParam.isOutExcel === 'true') {
GenerateFile.writeExcelFile(apiCheckResult);
}
}

View File

@ -28,7 +28,7 @@ import {
} from '../../../typedef/checker/result_type';
import { ClassInfo } from '../../../typedef/parser/ApiInfoDefination';
import { Comment } from '../../../typedef/parser/Comment';
import { compositiveResult, compositiveLocalResult, CommonFunctions, cleanCompositiveResult } from '../../../utils/checkUtils';
import { compositiveResult, compositiveLocalResult, CommonFunctions, cleanApiCheckResult } from '../../../utils/checkUtils';
import { OrderCheck } from './tag_order_check';
import { TagNameCheck } from './tag_name_check';
import { LegalityCheck } from './tag_legality_check';
@ -54,12 +54,12 @@ export class Check {
* checker tool main entrance
* @param { string[] } files -File path for storing file information.
*/
static scanEntry(files: string[], prId: string, isRunAutoTest: boolean): void {
cleanCompositiveResult();
static scanEntry(files: string[], prId: string): void {
cleanApiCheckResult();
ApiChangeCheck.checkApiChange(prId);
files.forEach((filePath: string, index: number) => {
currentFilePath = filePath;
if (filePath.indexOf('build-tools') !== -1 && !isRunAutoTest) {
if (process.env.NODE_ENV !== "development" && filePath.indexOf('build-tools') !== -1) {
return;
}
console.log(`scaning file in no ${++index}!`);

View File

@ -20,7 +20,7 @@ import { DiffHelper } from '../../diff/diff';
import { FileUtils } from '../../../utils/FileUtils';
import { BasicDiffInfo } from '../../../typedef/diff/ApiInfoDiff';
import { AddErrorLogs } from './compile_info';
import { compositiveResult, compositiveLocalResult, CommonFunctions } from '../../../utils/checkUtils';
import { compositiveResult, compositiveLocalResult, CommonFunctions, hierarchicalRelationsSet } from '../../../utils/checkUtils';
import {
ErrorType,
ErrorID,
@ -44,9 +44,13 @@ export class ApiChangeCheck {
const localDir: string = path.resolve(FileUtils.getBaseDirName(), prId);
if (fs.existsSync(onlineDir)) {
process.env.IS_INCREMENT_CHECK = 'true';
rootDir = onlineDir;
} else if (fs.existsSync(localDir)) {
process.env.IS_INCREMENT_CHECK = 'true';
rootDir = localDir;
} else {
process.env.IS_INCREMENT_CHECK = undefined;
}
const oldFileDir: string = path.resolve(rootDir, './old');
const newFileDir: string = path.resolve(rootDir, './new');
@ -65,6 +69,8 @@ export class ApiChangeCheck {
diffInfos = DiffHelper.diffSDK(oldSDKApiMap, newSDKApiMap, false, true);
}
diffInfos.forEach((diffInfo: BasicDiffInfo) => {
hierarchicalRelationsSet.add(diffInfo.oldHierarchicalRelations.join('|'))
.add(diffInfo.newHierarchicalRelations.join('|'));
if (diffInfo.getIsCompatible() !== false) {
return;
}

View File

@ -854,4 +854,58 @@ export class ErrorBaseInfo {
getErrorInfo(): string {
return this.errorInfo;
}
}
/**
* check工具入口传参
*
* @interface checkEntryType
*/
export interface checkEntryType {
/**
*
*
* @type {string[]}
*/
filePathArr: string[];
/**
* all
*
* @type {string[]}
*/
fileRuleArr: string[];
/**
*
*
* @type {string}
*/
output: string;
/**
* check中判断diff数据时的路径
* 线prid
* diff文件old和new两个文件
*
* @type {string}
*/
prId: string;
/**
* excel
*
* @type {string}
* @memberof checkEntry
*/
isOutExcel: string;
/**
*
*
* @default true
* @type {boolean}
* @memberof checkEntryType
*/
isIncrement: boolean;
}

View File

@ -401,10 +401,6 @@ export const apiLegalityCheckTypeMap: Map<ts.SyntaxKind, string[]> = new Map([
*/
export let compositiveResult: ApiResultSimpleInfo[] = [];
export function cleanCompositiveResult() {
compositiveResult = [];
}
/**
* An array of local error messages
*/
@ -412,8 +408,12 @@ export const compositiveLocalResult: ApiResultInfo[] = [];
export let apiCheckResult: ApiResultMessage[] = [];
export let hierarchicalRelationsSet: Set<string> = new Set();
export function cleanApiCheckResult() {
apiCheckResult = [];
compositiveResult = [];
hierarchicalRelationsSet = new Set();
}
export const punctuationMarkSet: Set<string> = new Set(['\\{', '\\}', '\\(', '\\)', '\\[', '\\]', '\\@', '\\.', '\\:',

View File

@ -27,7 +27,7 @@ import { Check } from '../../src/coreImpl/checker/src/api_check_plugin';
import { apiCheckResult, cleanApiCheckResult, compositiveResult } from '../../src/utils/checkUtils';
import { LocalEntry } from '../../src/coreImpl/checker/local_entry';
import { ApiChangeCheck } from '../../src/coreImpl/checker/src/check_api_diff';
import { ApiResultMessage } from '../../src/typedef/checker/result_type';
import { ApiResultMessage, checkEntryType } from '../../src/typedef/checker/result_type';
const utDir: string = 'test/ut';
const outputDir: string = 'test/output';
const expectDir: string = 'test/expect';
@ -161,7 +161,6 @@ describe('testApiCheck', function () {
const outputFileDir: string = path.join(FileUtils.getBaseDirName(), outputDir, 'apiCheck');
const expectFileDir: string = path.join(FileUtils.getBaseDirName(), expectDir, 'apiCheck');
const testFileNames: string[] = fs.readdirSync(testFileDir);
testFileNames.forEach((testFileName: string) => {
const baseName: string = path
.basename(testFileName)
@ -174,8 +173,7 @@ describe('testApiCheck', function () {
if (!fs.existsSync(outputFileDir)) {
fs.mkdirSync(outputFileDir);
}
cleanApiCheckResult();
Check.scanEntry([testFilePath], '', true);
Check.scanEntry([testFilePath], '');
let ruleName: string = testFileName.substring(0, testFileName.indexOf('.'));
ruleName = testFileName.indexOf('API_DEFINE_ANONYMOUS_FUNCTION') !== -1 ?
'API_DEFINE_ANONYMOUS_FUNCTION_01' : ruleName;
@ -236,5 +234,43 @@ describe('testApiChangeCheck', function () {
expect(outputContent).eql(expectFileContent);
});
});
});
describe('testApiCheckIncrement', function testApiCheckIncrement() {
const testFileDir: string = path.join(FileUtils.getBaseDirName(), '/test/ut/apiIncrement');
const outputFileDir: string = path.join(FileUtils.getBaseDirName(), '/test/output/apiIncrement');
const expectFileDir: string = path.join(FileUtils.getBaseDirName(), '/test/expect/apiIncrement');
const testFileNames: string[] = fs.readdirSync(testFileDir);
testFileNames.forEach((testFileName: string) => {
const testFilePath: string = path.join(testFileDir, testFileName);
const testOldFileDir: string = path.join(testFilePath, '/old');
const testNewFileDir: string = path.join(testFilePath, '/new');
const baseName: string = path
.basename(testFileName)
.replace(/.d.ts/g, '')
.replace(/.d.ets/g, '');
const outputFilePath: string = path.join(outputFileDir, `${baseName}.json`);
const expectFilePath: string = path.join(expectFileDir, `${baseName}.json`);
it('\ntestFile#' + testFilePath + '\noutput:' + outputFilePath + '\nexpect:' + expectFilePath, function () {
if (!fs.existsSync(outputFileDir)) {
fs.mkdirSync(outputFileDir);
}
cleanApiCheckResult();
const files: Array<string> = FileUtils.readFilesInDir(testNewFileDir);
const checkParam: checkEntryType = {
filePathArr: files,
fileRuleArr: ['all'],
output: './result.json',
prId: testFilePath,
isOutExcel: 'true',
isIncrement: true,
};
LocalEntry.checkEntryLocal(checkParam);
const outputContent: string = JSON.stringify(apiCheckResult, null, 2);
fs.writeFileSync(outputFilePath, outputContent, StringConstant.UTF8);
const expectFileContent: string = fs.readFileSync(expectFilePath, 'utf-8').replace(/\r\n/g, '\n');
expect(outputContent).eql(expectFileContent);
});
});
});

View File

@ -0,0 +1,43 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about add class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export interface Test {
str: string;
}
/**
* the ut for property about add class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export class TestClass {
/**
* the ut for property about add class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
testProperty: string;
testFunction(testParam: string): void;
}

View File

@ -0,0 +1,24 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about add class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export interface Test {
str: string;
}

View File

@ -0,0 +1,35 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export interface Test {
str: string;
}
/**
* the ut for property about change class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export class TestClass {
testPropertyChange: string;
testFunctionChange(testParam: string): void;
}

View File

@ -0,0 +1,35 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export interface Test {
str: string;
}
/**
* the ut for property about change class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export class TestClass {
testProperty: string;
testFunction(testParam: string): void;
}

View File

@ -0,0 +1,24 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about delete class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export interface Test {
str: string;
}

View File

@ -0,0 +1,35 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about delete class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export interface Test {
str: string;
}
/**
* the ut for property about delete class
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export class TestClass {
testProperty: string;
testFunction(testParam: string): void;
}

View File

@ -0,0 +1,44 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* @kit ArkUI
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition { }
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 12
*/
declare enum BadgePosition2 { }

View File

@ -0,0 +1,37 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* @kit ArkUI
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition { }
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition2 { }

View File

@ -0,0 +1,37 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* @kit ArkUI
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition { }
/**
* A test case for form tag's order
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
* @form
*/
declare enum BadgePosition2 { }

View File

@ -0,0 +1,37 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* @kit ArkUI
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition { }
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition2 { }

View File

@ -0,0 +1,37 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* @kit ArkUI
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition { }
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition2 { }

View File

@ -0,0 +1,44 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* @kit ArkUI
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
declare enum BadgePosition { }
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 10
*/
/**
* A test case for form tag's order
* @form
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @since 12
*/
declare enum BadgePosition2 { }

View File

@ -0,0 +1,24 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about add file
*
* @syscap SystemCapability.Security.AccessToken
* @since 12
*/
export interface Test {
str: string;
}

View File

@ -0,0 +1,22 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export interface Test {
str: string;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export interface Test {
str: string;
testPropertyAdd: string;
}

View File

@ -0,0 +1,22 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export interface Test {
str: string;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export interface Test {
str: string;
testPropertyChange: string;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export interface Test {
str: string;
testProperty: string;
}

View File

@ -0,0 +1,22 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export interface Test {
str: string;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export interface Test {
str: string;
testPropertyDelete: string;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export class Test {
sameNameFunction(testParam: string): void;
sameNameFunction(testParam: string, testParam2: string): void;
}

View File

@ -0,0 +1,22 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export class Test {
sameNameFunction(testParam: string): void;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export class Test {
sameNameFunction(testParam: string): void;
sameNameFunction(testParam: string, testParam2Change: string): void;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export class Test {
sameNameFunction(testParam: string): void;
sameNameFunction(testParam: string, testParam2: string): void;
}

View File

@ -0,0 +1,22 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export class Test {
sameNameFunction(testParam: string): void;
}

View File

@ -0,0 +1,23 @@
/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* the ut for property about change type
*
*/
export class Test {
sameNameFunction(testParam: string): void;
sameNameFunction(testParam: string, testParam2: string): void;
}