mcdev 4.3.4 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.coverage-comment-template.md +20 -0
- package/.coverage-comment-template.svelte +178 -0
- package/.eslintrc.json +2 -0
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/workflows/code-test.yml +36 -0
- package/.github/workflows/coverage-base-update.yml +57 -0
- package/.github/workflows/coverage-develop-branch.yml +41 -0
- package/.github/workflows/coverage-main-branch.yml +41 -0
- package/.github/workflows/coverage.yml +77 -0
- package/.husky/post-checkout +1 -1
- package/.prettierrc +1 -1
- package/.vscode/extensions.json +0 -4
- package/README.md +1 -1
- package/boilerplate/config.json +1 -1
- package/boilerplate/files/.prettierrc +1 -1
- package/boilerplate/files/.vscode/extensions.json +1 -1
- package/boilerplate/forcedUpdates.json +4 -0
- package/docs/dist/documentation.md +1196 -430
- package/lib/Builder.js +6 -1
- package/lib/Deployer.js +30 -5
- package/lib/MetadataTypeDefinitions.js +8 -6
- package/lib/MetadataTypeInfo.js +8 -6
- package/lib/cli.js +54 -42
- package/lib/index.js +82 -8
- package/lib/metadataTypes/Asset.js +73 -1
- package/lib/metadataTypes/AttributeGroup.js +0 -1
- package/lib/metadataTypes/Automation.js +48 -5
- package/lib/metadataTypes/Campaign.js +20 -7
- package/lib/metadataTypes/ContentArea.js +1 -1
- package/lib/metadataTypes/DataExtension.js +221 -184
- package/lib/metadataTypes/DataExtensionField.js +12 -19
- package/lib/metadataTypes/DataExtensionTemplate.js +1 -1
- package/lib/metadataTypes/DataExtract.js +1 -1
- package/lib/metadataTypes/DataExtractType.js +1 -1
- package/lib/metadataTypes/Email.js +1 -1
- package/lib/metadataTypes/{EmailSendDefinition.js → EmailSend.js} +5 -5
- package/lib/metadataTypes/{EventDefinition.js → Event.js} +17 -35
- package/lib/metadataTypes/{FtpLocation.js → FileLocation.js} +2 -2
- package/lib/metadataTypes/FileTransfer.js +8 -7
- package/lib/metadataTypes/Filter.js +1 -1
- package/lib/metadataTypes/Folder.js +8 -3
- package/lib/metadataTypes/ImportFile.js +6 -6
- package/lib/metadataTypes/{Interaction.js → Journey.js} +311 -147
- package/lib/metadataTypes/List.js +2 -2
- package/lib/metadataTypes/MetadataType.js +318 -90
- package/lib/metadataTypes/MobileCode.js +0 -1
- package/lib/metadataTypes/MobileKeyword.js +336 -40
- package/lib/metadataTypes/MobileMessage.js +473 -0
- package/lib/metadataTypes/Query.js +114 -32
- package/lib/metadataTypes/Role.js +60 -21
- package/lib/metadataTypes/Script.js +2 -3
- package/lib/metadataTypes/SendClassification.js +40 -0
- package/lib/metadataTypes/SetDefinition.js +1 -7
- package/lib/metadataTypes/TransactionalEmail.js +2 -3
- package/lib/metadataTypes/TransactionalMessage.js +1 -2
- package/lib/metadataTypes/TransactionalSMS.js +8 -15
- package/lib/metadataTypes/{TriggeredSendDefinition.js → TriggeredSend.js} +35 -27
- package/lib/metadataTypes/User.js +1185 -0
- package/lib/metadataTypes/definitions/Asset.definition.js +1 -0
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +3 -2
- package/lib/metadataTypes/definitions/Campaign.definition.js +79 -4
- package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtension.definition.js +2 -1
- package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtract.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -0
- package/lib/metadataTypes/definitions/Discovery.definition.js +1 -0
- package/lib/metadataTypes/definitions/Email.definition.js +1 -0
- package/lib/metadataTypes/definitions/{EmailSendDefinition.definition.js → EmailSend.definition.js} +4 -2
- package/lib/metadataTypes/definitions/{EventDefinition.definition.js → Event.definition.js} +2 -1
- package/lib/metadataTypes/definitions/{FtpLocation.definition.js → FileLocation.definition.js} +4 -3
- package/lib/metadataTypes/definitions/FileTransfer.definition.js +3 -2
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
- package/lib/metadataTypes/definitions/Folder.definition.js +2 -0
- package/lib/metadataTypes/definitions/ImportFile.definition.js +4 -3
- package/lib/metadataTypes/definitions/{Interaction.definition.js → Journey.definition.js} +11 -2
- package/lib/metadataTypes/definitions/List.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileCode.definition.js +3 -1
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +27 -17
- package/lib/metadataTypes/definitions/MobileMessage.definition.js +743 -0
- package/lib/metadataTypes/definitions/Query.definition.js +3 -2
- package/lib/metadataTypes/definitions/Role.definition.js +5 -0
- package/lib/metadataTypes/definitions/Script.definition.js +1 -0
- package/lib/metadataTypes/definitions/SendClassification.definition.js +114 -0
- package/lib/metadataTypes/definitions/SetDefinition.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +2 -1
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +1 -0
- package/lib/metadataTypes/definitions/{TriggeredSendDefinition.definition.js → TriggeredSend.definition.js} +5 -3
- package/lib/metadataTypes/definitions/User.definition.js +365 -0
- package/lib/retrieveChangelog.js +1 -2
- package/lib/util/auth.js +38 -9
- package/lib/util/businessUnit.js +3 -3
- package/lib/util/cli.js +55 -7
- package/lib/util/devops.js +6 -4
- package/lib/util/file.js +55 -13
- package/lib/util/init.config.js +1 -2
- package/lib/util/init.npm.js +3 -3
- package/lib/util/util.js +23 -14
- package/package.json +16 -15
- package/test/general.test.js +62 -0
- package/test/mockRoot/.mcdevrc.json +7 -5
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testBlocked_user.user-meta.json +23 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testExisting_user.user-meta.json +31 -0
- package/test/mockRoot/deploy/testInstance/_ParentBU_/user/testNew_user.user-meta.json +27 -0
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{childBU_dataextension_test.dataExtension-meta.json → testExisting_dataExtension.dataExtension-meta.json} +2 -2
- package/test/mockRoot/deploy/testInstance/testBU/dataExtension/{testDataExtension.dataExtension-meta.json → testNew_dataExtension.dataExtension-meta.json} +2 -2
- package/test/mockRoot/deploy/testInstance/testBU/journey/testExisting_interaction.interaction-meta.json +576 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.amp +2 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword.mobileKeyword-meta.json +10 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.amp +2 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/testNew_keyword_blocked.mobileKeyword-meta.json +10 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.amp +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/NTIzOjc4OjA.mobileMessage-meta.json +61 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.amp +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileMessage/new.mobileMessage-meta.json +60 -0
- package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/query/testNewQuery.query-meta.sql +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testExisting_temail.transactionalEmail-meta.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/transactionalEmail/testNew_temail.transactionalEmail-meta.json +1 -1
- package/test/resourceFactory.js +13 -0
- package/test/resources/1111111/accountUser/configure-response.xml +70 -0
- package/test/resources/1111111/accountUser/create-response.xml +97 -0
- package/test/resources/1111111/accountUser/retrieve-response.xml +156 -0
- package/test/resources/1111111/accountUser/update-response.xml +111 -0
- package/test/resources/1111111/accountUserAccount/retrieve-response.xml +77 -0
- package/test/resources/1111111/platform/v1/setup/quickflow/data/get-response.json +455 -0
- package/test/resources/1111111/role/retrieve-response.xml +76 -0
- package/test/resources/1111111/user/build-expected.json +16 -0
- package/test/resources/1111111/user/create-expected.json +21 -0
- package/test/resources/1111111/user/retrieve-expected.json +24 -0
- package/test/resources/1111111/user/template-expected.json +16 -0
- package/test/resources/1111111/user/update-expected.json +21 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/delete-response.json +1 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/get-response.json +17 -0
- package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +3 -3
- package/test/resources/9999999/automation/v1/queries/get-response.json +21 -4
- package/test/resources/9999999/automation/v1/queries/post-response.json +4 -4
- package/test/resources/9999999/data/v1/customobjectdata/key/{childBU_dataextension_test → testExisting_dataExtension}/rowset/get-response.json +1 -1
- package/test/resources/9999999/dataExtension/build-expected.json +3 -3
- package/test/resources/9999999/dataExtension/create-expected.json +2 -2
- package/test/resources/9999999/dataExtension/create-response.xml +8 -3
- package/test/resources/9999999/dataExtension/retrieve-expected.json +3 -3
- package/test/resources/9999999/dataExtension/retrieve-response.xml +9 -4
- package/test/resources/9999999/dataExtension/template-expected.json +3 -3
- package/test/resources/9999999/dataExtension/update-expected.json +3 -3
- package/test/resources/9999999/dataExtension/update-response.xml +9 -4
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +14 -9
- package/test/resources/9999999/interaction/v1/interactions/get-response.json +312 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/get-response.json +312 -0
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_interaction/put-response.json +592 -0
- package/test/resources/9999999/journey/build-expected.json +572 -0
- package/test/resources/9999999/journey/get-expected.json +576 -0
- package/test/resources/9999999/journey/put-expected.json +576 -0
- package/test/resources/9999999/journey/template-expected.json +572 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/NXV4ZFMwTEFwRVczd3RaLUF5X3p5dzo4Njow/get-response.json +42 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/cTVJaG5oSDJPVUNHcUh6Z3pQT2tVdzo4Njow/delete-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/get-response.json +1 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/keyword/post-response.json +3 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/delete-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/get-response.json +106 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTIzOjc4OjA/post-response.json +0 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/NTQ3Ojc4OjA/get-response.json +127 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/get-response.json +129 -0
- package/test/resources/9999999/legacy/v1/beta/mobile/message/post-response.json +3 -0
- package/test/resources/9999999/legacy/v1/beta2/data/campaign/get-response.json +29 -0
- package/test/resources/9999999/messaging/v1/email/definitions/post-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/get-response.json +1 -1
- package/test/resources/9999999/messaging/v1/email/definitions/testExisting_temail/patch-response.json +1 -1
- package/test/resources/9999999/mobileKeyword/build-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/build-expected.json +9 -0
- package/test/resources/9999999/mobileKeyword/get-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/get-expected.json +15 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.json +17 -0
- package/test/resources/9999999/mobileKeyword/template-expected.amp +2 -0
- package/test/resources/9999999/mobileKeyword/template-expected.json +9 -0
- package/test/resources/9999999/mobileMessage/build-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/build-expected.json +60 -0
- package/test/resources/9999999/mobileMessage/get-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/get-expected.json +61 -0
- package/test/resources/9999999/mobileMessage/post-create-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/post-create-expected.json +63 -0
- package/test/resources/9999999/mobileMessage/post-update-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/post-update-expected.json +61 -0
- package/test/resources/9999999/mobileMessage/template-expected.amp +1 -0
- package/test/resources/9999999/mobileMessage/template-expected.json +60 -0
- package/test/resources/9999999/query/build-expected.json +1 -1
- package/test/resources/9999999/query/get-expected.json +1 -1
- package/test/resources/9999999/query/get2-expected.json +11 -0
- package/test/resources/9999999/query/patch-expected.json +1 -1
- package/test/resources/9999999/query/post-expected.json +1 -1
- package/test/resources/9999999/query/template-expected.json +1 -1
- package/test/resources/9999999/queryDefinition/retrieve-response.xml +30 -0
- package/test/resources/9999999/transactionalEmail/build-expected.json +5 -5
- package/test/resources/9999999/transactionalEmail/get-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/patch-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/post-expected.json +1 -1
- package/test/resources/9999999/transactionalEmail/template-expected.json +5 -5
- package/test/resources/9999999/transactionalPush/build-expected.json +2 -2
- package/test/resources/9999999/transactionalPush/template-expected.json +2 -2
- package/test/resources/9999999/transactionalSMS/build-expected.json +3 -3
- package/test/resources/9999999/transactionalSMS/template-expected.json +3 -3
- package/test/{dataExtension.test.js → type.dataExtension.test.js} +78 -21
- package/test/{interaction.test.js → type.journey.test.js} +64 -30
- package/test/type.mobileKeyword.test.js +250 -0
- package/test/type.mobileMessage.test.js +205 -0
- package/test/{query.test.js → type.query.test.js} +102 -5
- package/test/{transactionalEmail.test.js → type.transactionalEmail.test.js} +40 -2
- package/test/{transactionalPush.test.js → type.transactionalPush.test.js} +41 -2
- package/test/{transactionalSMS.test.js → type.transactionalSMS.test.js} +73 -3
- package/test/type.user.test.js +160 -0
- package/test/utils.js +17 -5
- package/types/mcdev.d.js +48 -15
- package/.github/workflows/code-analysis.yml +0 -57
- package/lib/metadataTypes/AccountUser.js +0 -426
- package/lib/metadataTypes/definitions/AccountUser.definition.js +0 -227
- package/test/mockRoot/deploy/testInstance/testBU/interaction/testExisting_interaction.interaction-meta.json +0 -266
- package/test/resources/9999999/interaction/build-expected.json +0 -260
- package/test/resources/9999999/interaction/get-expected.json +0 -264
- package/test/resources/9999999/interaction/put-expected.json +0 -264
- package/test/resources/9999999/interaction/template-expected.json +0 -260
- package/test/resources/9999999/interaction/v1/interactions/put-response.json +0 -280
- /package/test/mockRoot/deploy/testInstance/testBU/{interaction → journey}/testNew_interaction.interaction-meta.json +0 -0
- /package/test/resources/9999999/{interaction → journey}/post-expected.json +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Coverage Report
|
|
2
|
+
|
|
3
|
+
Commit: [{{short_commit_sha}}]({{commit_link}})
|
|
4
|
+
Base: [{{base_ref}}@{{base_short_commit_sha}}]({{base_commit_link}})
|
|
5
|
+
|
|
6
|
+
| Type | Base | This PR |
|
|
7
|
+
| ------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------------- |
|
|
8
|
+
| Total Statements Coverage | {{base_total_statements_coverage_percent}} | {{total_statements_coverage_percent}} ({{total_statements_coverage_percent_diff}}) |
|
|
9
|
+
| Total Branches Coverage | {{base_total_branches_coverage_percent}} | {{total_branches_coverage_percent}} ({{total_branches_coverage_percent_diff}}) |
|
|
10
|
+
| Total Functions Coverage | {{base_total_functions_coverage_percent}} | {{total_functions_coverage_percent}} ({{total_functions_coverage_percent_diff}}) |
|
|
11
|
+
| Total Lines Coverage | {{base_total_lines_coverage_percent}} | {{total_lines_coverage_percent}} ({{total_lines_coverage_percent_diff}}) |
|
|
12
|
+
|
|
13
|
+
<details>
|
|
14
|
+
<summary>Details (changed files)</summary>
|
|
15
|
+
{{changed_files_coverage_table}}
|
|
16
|
+
</details>
|
|
17
|
+
<details>
|
|
18
|
+
<summary>Details (all files)</summary>
|
|
19
|
+
{{files_coverage_table}}
|
|
20
|
+
</details>
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
export let total_statements_coverage_percent_raw;
|
|
3
|
+
export let total_branches_coverage_percent_raw;
|
|
4
|
+
export let total_functions_coverage_percent_raw;
|
|
5
|
+
export let total_lines_coverage_percent_raw;
|
|
6
|
+
|
|
7
|
+
export let base_total_statements_coverage_percent_raw;
|
|
8
|
+
export let base_total_branches_coverage_percent_raw;
|
|
9
|
+
export let base_total_functions_coverage_percent_raw;
|
|
10
|
+
export let base_total_lines_coverage_percent_raw;
|
|
11
|
+
|
|
12
|
+
export let commit_sha;
|
|
13
|
+
export let short_commit_sha;
|
|
14
|
+
export let commit_link;
|
|
15
|
+
|
|
16
|
+
export let base_commit_sha;
|
|
17
|
+
export let base_short_commit_sha;
|
|
18
|
+
export let base_commit_link;
|
|
19
|
+
export let base_ref;
|
|
20
|
+
|
|
21
|
+
export let changed_files_coverage_data;
|
|
22
|
+
|
|
23
|
+
const has_base_data = base_total_branches_coverage_percent_raw !== '?';
|
|
24
|
+
const summary_list = [
|
|
25
|
+
{
|
|
26
|
+
type: 'Total Statements Coverage',
|
|
27
|
+
percent: {
|
|
28
|
+
total: total_statements_coverage_percent_raw,
|
|
29
|
+
base: has_base_data ? base_total_statements_coverage_percent_raw: null,
|
|
30
|
+
diff: has_base_data ? (total_statements_coverage_percent_raw - base_total_statements_coverage_percent_raw) : null,
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
type: 'Total Branches Coverage',
|
|
35
|
+
percent: {
|
|
36
|
+
total: total_branches_coverage_percent_raw,
|
|
37
|
+
base: has_base_data ? base_total_branches_coverage_percent_raw: null,
|
|
38
|
+
diff: has_base_data ? (total_branches_coverage_percent_raw - base_total_branches_coverage_percent_raw) : null,
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'Total Functions Coverage',
|
|
43
|
+
percent: {
|
|
44
|
+
total: total_functions_coverage_percent_raw,
|
|
45
|
+
base: has_base_data ? base_total_functions_coverage_percent_raw: null,
|
|
46
|
+
diff: has_base_data ? (total_functions_coverage_percent_raw - base_total_functions_coverage_percent_raw) : null,
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'Total Lines Coverage',
|
|
51
|
+
percent: {
|
|
52
|
+
total: total_lines_coverage_percent_raw,
|
|
53
|
+
base: has_base_data ? base_total_lines_coverage_percent_raw: null,
|
|
54
|
+
diff: has_base_data ? (total_lines_coverage_percent_raw - base_total_lines_coverage_percent_raw) : null,
|
|
55
|
+
}
|
|
56
|
+
}];
|
|
57
|
+
|
|
58
|
+
const LETTER_LABEL = {
|
|
59
|
+
S: 'Statements',
|
|
60
|
+
B: 'Branches',
|
|
61
|
+
F: 'Functions',
|
|
62
|
+
L: 'Lines',
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const COVERAGE_LEVEL_IMAGE = {
|
|
66
|
+
low: 'https://user-images.githubusercontent.com/11299391/159445221-fe3dc085-8c56-4e03-9642-219784c88fe7.svg',
|
|
67
|
+
medium:
|
|
68
|
+
'https://user-images.githubusercontent.com/11299391/159445212-f135c6d7-f354-4e8c-9a9f-28bb3ff1b7b5.svg',
|
|
69
|
+
high: 'https://user-images.githubusercontent.com/11299391/159445220-d88b3624-0814-4664-80c8-09f0f2b8e68b.svg',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
function formatPercentDiff(percent) {
|
|
73
|
+
if (!Number.isFinite(percent)) {
|
|
74
|
+
return '';
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const roundedPercent = `${Number(percent.toFixed(2))}%`;
|
|
78
|
+
|
|
79
|
+
if (percent >= 0) {
|
|
80
|
+
return '+' + roundedPercent;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return roundedPercent;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function getCoverageLevelImage(percent) {
|
|
87
|
+
// https://github.com/istanbuljs/istanbuljs/blob/c1559005b3bb318da01f505740adb0e782aaf14e/packages/istanbul-lib-report/lib/watermarks.js
|
|
88
|
+
if (percent >= 80) {
|
|
89
|
+
return COVERAGE_LEVEL_IMAGE.high;
|
|
90
|
+
} else if (percent >= 50) {
|
|
91
|
+
return COVERAGE_LEVEL_IMAGE.medium;
|
|
92
|
+
} else {
|
|
93
|
+
return COVERAGE_LEVEL_IMAGE.low;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function getFilePrefix() {
|
|
98
|
+
return `../blob/${commit_sha}/`;
|
|
99
|
+
}
|
|
100
|
+
</script>
|
|
101
|
+
|
|
102
|
+
<h2>Coverage Report</h2>
|
|
103
|
+
|
|
104
|
+
Commit: <a href="{commit_link}">{short_commit_sha}</a><br>
|
|
105
|
+
Base: <a href="{base_commit_link}">{base_ref}@{base_short_commit_sha}</a><br><br>
|
|
106
|
+
|
|
107
|
+
<table>
|
|
108
|
+
<thead>
|
|
109
|
+
<th>Type</th>
|
|
110
|
+
{#if has_base_data}
|
|
111
|
+
<th>Base</th>
|
|
112
|
+
{/if}
|
|
113
|
+
<th>This PR</th>
|
|
114
|
+
</thead>
|
|
115
|
+
<tbody>
|
|
116
|
+
{#each summary_list as {type, percent}}
|
|
117
|
+
<tr>
|
|
118
|
+
<td>{type}</td>
|
|
119
|
+
{#if has_base_data}
|
|
120
|
+
<td>
|
|
121
|
+
{#if Number.isFinite(percent.base)}
|
|
122
|
+
<img src="{getCoverageLevelImage(percent.base)}" alt=""> {percent.base}%
|
|
123
|
+
{:else}
|
|
124
|
+
-
|
|
125
|
+
{/if}
|
|
126
|
+
</td>
|
|
127
|
+
{/if}
|
|
128
|
+
<td>
|
|
129
|
+
{#if Number.isFinite(percent.total)}
|
|
130
|
+
<img src="{getCoverageLevelImage(percent.total)}" alt=""> {percent.total}%
|
|
131
|
+
{#if has_base_data}
|
|
132
|
+
({formatPercentDiff(percent.diff)})
|
|
133
|
+
{/if}
|
|
134
|
+
{:else}
|
|
135
|
+
-
|
|
136
|
+
{/if}
|
|
137
|
+
</td>
|
|
138
|
+
</tr>
|
|
139
|
+
{/each}
|
|
140
|
+
</tbody>
|
|
141
|
+
</table>
|
|
142
|
+
|
|
143
|
+
<details>
|
|
144
|
+
<summary>Details (changed testable files):</summary><br>
|
|
145
|
+
<table>
|
|
146
|
+
<thead>
|
|
147
|
+
<th>File</th>
|
|
148
|
+
<th>Statements</th>
|
|
149
|
+
<th>Branches</th>
|
|
150
|
+
<th>Functions</th>
|
|
151
|
+
<th>Lines</th>
|
|
152
|
+
</thead>
|
|
153
|
+
<tbody>
|
|
154
|
+
{#each changed_files_coverage_data as [file, data]}
|
|
155
|
+
{@const percents = [
|
|
156
|
+
data.statements.pct,
|
|
157
|
+
data.branches.pct,
|
|
158
|
+
data.functions.pct,
|
|
159
|
+
data.lines.pct
|
|
160
|
+
]}
|
|
161
|
+
<tr>
|
|
162
|
+
<td>
|
|
163
|
+
<a href="{getFilePrefix()}{file}">{file}</a>
|
|
164
|
+
</td>
|
|
165
|
+
{#each percents as percent}
|
|
166
|
+
<td>
|
|
167
|
+
{#if Number.isFinite(percent)}
|
|
168
|
+
<img src="{getCoverageLevelImage(percent)}" alt=""> {percent}%
|
|
169
|
+
{:else}
|
|
170
|
+
-
|
|
171
|
+
{/if}
|
|
172
|
+
</td>
|
|
173
|
+
{/each}
|
|
174
|
+
</tr>
|
|
175
|
+
{/each}
|
|
176
|
+
</tbody>
|
|
177
|
+
</table>
|
|
178
|
+
</details>
|
package/.eslintrc.json
CHANGED
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"rules": {
|
|
45
|
+
"logical-assignment-operators": ["error", "always"],
|
|
45
46
|
"unicorn/better-regex": "off",
|
|
46
47
|
"unicorn/catch-error-name": [
|
|
47
48
|
"error",
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"unicorn/prefer-array-some": "off",
|
|
66
67
|
"unicorn/prefer-set-has": "off",
|
|
67
68
|
"unicorn/prefer-spread": "off",
|
|
69
|
+
"unicorn/prefer-string-replace-all": "error",
|
|
68
70
|
"unicorn/unicorn/no-lonely-if": "off",
|
|
69
71
|
"arrow-body-style": ["error", "as-needed"],
|
|
70
72
|
"curly": "error",
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Custom tests for mcdev
|
|
2
|
+
#
|
|
3
|
+
name: 'Code Testing'
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main, develop, hotfix]
|
|
8
|
+
pull_request:
|
|
9
|
+
# The branches below must be a subset of the branches above
|
|
10
|
+
branches: [main, develop, hotfix]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
testAndCoverage:
|
|
14
|
+
name: lint & test
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
actions: read
|
|
18
|
+
contents: read
|
|
19
|
+
security-events: write
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout repository
|
|
23
|
+
uses: actions/checkout@v3
|
|
24
|
+
|
|
25
|
+
- uses: actions/setup-node@v3
|
|
26
|
+
with:
|
|
27
|
+
node-version: 16
|
|
28
|
+
registry-url: https://registry.npmjs.org/
|
|
29
|
+
|
|
30
|
+
- run: npm ci --ignore-scripts
|
|
31
|
+
|
|
32
|
+
- run: npm run lint
|
|
33
|
+
|
|
34
|
+
# Assuming code passes, run tests
|
|
35
|
+
- name: Run mcdev-tests
|
|
36
|
+
run: npm run test
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: Update coverage comment
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
types: [edited]
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
hello_world_job:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
name: Test and report
|
|
10
|
+
steps:
|
|
11
|
+
- name: Checkout
|
|
12
|
+
uses: actions/checkout@v3
|
|
13
|
+
with:
|
|
14
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
|
15
|
+
fetch-depth: 1000
|
|
16
|
+
|
|
17
|
+
- name: Prepare for Report Coverage (without nyc run)
|
|
18
|
+
run: |
|
|
19
|
+
npm i svelte-to-html@1.0.9
|
|
20
|
+
git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
|
|
21
|
+
|
|
22
|
+
- name: Download artifact for base branch
|
|
23
|
+
uses: dawidd6/action-download-artifact@v2
|
|
24
|
+
continue-on-error: true
|
|
25
|
+
with:
|
|
26
|
+
workflow: ${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}
|
|
27
|
+
workflow_conclusion: success
|
|
28
|
+
commit: ${{github.event.pull_request.base.sha}}
|
|
29
|
+
name: 'test-coverage-output'
|
|
30
|
+
path: base-artifacts
|
|
31
|
+
search_artifacts: true
|
|
32
|
+
|
|
33
|
+
- name: Download artifact for to be merged branch
|
|
34
|
+
uses: dawidd6/action-download-artifact@v2
|
|
35
|
+
continue-on-error: true
|
|
36
|
+
with:
|
|
37
|
+
workflow: 'coverage.yml'
|
|
38
|
+
workflow_conclusion: success
|
|
39
|
+
commit: ${{github.event.pull_request.head.sha}}
|
|
40
|
+
name: 'test-coverage-output'
|
|
41
|
+
path: artifacts
|
|
42
|
+
search_artifacts: true
|
|
43
|
+
|
|
44
|
+
- name: Check file existence
|
|
45
|
+
id: check_files
|
|
46
|
+
uses: andstor/file-existence-action@v2
|
|
47
|
+
with:
|
|
48
|
+
files: 'base-artifacts/coverage-summary.json, artifacts/coverage-summary.json'
|
|
49
|
+
|
|
50
|
+
- name: Update Coverage comment
|
|
51
|
+
uses: sidx1024/report-nyc-coverage-github-action@v1.2.6
|
|
52
|
+
if: steps.check_files.outputs.files_exists == 'true'
|
|
53
|
+
# Only runs if all of the files exists
|
|
54
|
+
with:
|
|
55
|
+
coverage_file: 'artifacts/coverage-summary.json'
|
|
56
|
+
base_coverage_file: 'base-artifacts/coverage-summary.json'
|
|
57
|
+
comment_template_file: '.coverage-comment-template.svelte'
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Test coverage for develop branch
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- develop
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
hello_world_job:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
name: Test and report
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout
|
|
14
|
+
uses: actions/checkout@v3
|
|
15
|
+
with:
|
|
16
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
|
17
|
+
fetch-depth: 1000
|
|
18
|
+
|
|
19
|
+
- name: Fetch base
|
|
20
|
+
run: git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
|
|
21
|
+
|
|
22
|
+
- uses: actions/setup-node@v3
|
|
23
|
+
with:
|
|
24
|
+
node-version: 16
|
|
25
|
+
|
|
26
|
+
- run: npm ci --ignore-scripts
|
|
27
|
+
|
|
28
|
+
- run: npm run lint
|
|
29
|
+
|
|
30
|
+
- name: Run mcdev-tests with coverage
|
|
31
|
+
run: npm run coverage
|
|
32
|
+
|
|
33
|
+
- name: Prepare for Report Coverage (mini)
|
|
34
|
+
run: |
|
|
35
|
+
npx nyc report --reporter json-summary --exclude-after-remap false
|
|
36
|
+
|
|
37
|
+
- name: Upload coverage artifact
|
|
38
|
+
uses: actions/upload-artifact@v3
|
|
39
|
+
with:
|
|
40
|
+
name: test-coverage-output
|
|
41
|
+
path: coverage
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Test coverage for main branch
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
hello_world_job:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
name: Test and report
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout
|
|
14
|
+
uses: actions/checkout@v3
|
|
15
|
+
with:
|
|
16
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
|
17
|
+
fetch-depth: 1000
|
|
18
|
+
|
|
19
|
+
- name: Fetch base
|
|
20
|
+
run: git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
|
|
21
|
+
|
|
22
|
+
- uses: actions/setup-node@v3
|
|
23
|
+
with:
|
|
24
|
+
node-version: 16
|
|
25
|
+
|
|
26
|
+
- run: npm ci --ignore-scripts
|
|
27
|
+
|
|
28
|
+
- run: npm run lint
|
|
29
|
+
|
|
30
|
+
- name: Run mcdev-tests with coverage
|
|
31
|
+
run: npm run coverage
|
|
32
|
+
|
|
33
|
+
- name: Prepare for Report Coverage (mini)
|
|
34
|
+
run: |
|
|
35
|
+
npx nyc report --reporter json-summary --exclude-after-remap false
|
|
36
|
+
|
|
37
|
+
- name: Upload coverage artifact
|
|
38
|
+
uses: actions/upload-artifact@v3
|
|
39
|
+
with:
|
|
40
|
+
name: test-coverage-output
|
|
41
|
+
path: coverage
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
on: [pull_request]
|
|
2
|
+
|
|
3
|
+
name: Test coverage report
|
|
4
|
+
jobs:
|
|
5
|
+
hello_world_job:
|
|
6
|
+
runs-on: ubuntu-latest
|
|
7
|
+
name: Test and report
|
|
8
|
+
steps:
|
|
9
|
+
- name: Checkout
|
|
10
|
+
uses: actions/checkout@v3
|
|
11
|
+
with:
|
|
12
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
|
13
|
+
fetch-depth: 1000
|
|
14
|
+
|
|
15
|
+
- uses: actions/setup-node@v3
|
|
16
|
+
with:
|
|
17
|
+
node-version: 16
|
|
18
|
+
|
|
19
|
+
- run: npm ci --ignore-scripts
|
|
20
|
+
|
|
21
|
+
- run: npm run lint
|
|
22
|
+
|
|
23
|
+
- name: Run mcdev-tests with coverage
|
|
24
|
+
run: npm run coverage
|
|
25
|
+
|
|
26
|
+
- name: Prepare for Report Coverage
|
|
27
|
+
run: |
|
|
28
|
+
npx nyc report --reporter json-summary --exclude-after-remap false
|
|
29
|
+
npm i svelte-to-html@1.0.9
|
|
30
|
+
git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1000
|
|
31
|
+
|
|
32
|
+
- name: Upload coverage artifact
|
|
33
|
+
uses: actions/upload-artifact@v3
|
|
34
|
+
with:
|
|
35
|
+
name: test-coverage-output
|
|
36
|
+
path: coverage
|
|
37
|
+
|
|
38
|
+
- name: Download coverage artifact
|
|
39
|
+
uses: actions/download-artifact@v3
|
|
40
|
+
with:
|
|
41
|
+
path: artifacts
|
|
42
|
+
|
|
43
|
+
- name: Get Run ID
|
|
44
|
+
id: get_run_id
|
|
45
|
+
run: |
|
|
46
|
+
echo "name=run_id::$(\
|
|
47
|
+
gh run list \
|
|
48
|
+
--workflow "${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}" \
|
|
49
|
+
--json conclusion,headSha,status,databaseId \
|
|
50
|
+
--jq ".[] | select( .conclusion == \"success\" and .headSha == \"${{github.event.pull_request.base.sha}}\") | .databaseId" \
|
|
51
|
+
)" >> $GITHUB_OUTPUT
|
|
52
|
+
env:
|
|
53
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
54
|
+
|
|
55
|
+
- name: Download artifact for base branch if available, previous
|
|
56
|
+
uses: dawidd6/action-download-artifact@v2
|
|
57
|
+
continue-on-error: true
|
|
58
|
+
with:
|
|
59
|
+
workflow: ${{ github.event.pull_request.base.ref == 'main' && 'coverage-main-branch.yml' || github.event.pull_request.base.ref == 'develop' && 'coverage-develop-branch.yml' || 'coverage.yml' }}
|
|
60
|
+
run_id: ${{steps.get_run_id.outputs.run_id}}
|
|
61
|
+
name: 'test-coverage-output'
|
|
62
|
+
path: base-artifacts
|
|
63
|
+
search_artifacts: true
|
|
64
|
+
|
|
65
|
+
- name: Check file existence
|
|
66
|
+
id: check_files
|
|
67
|
+
uses: andstor/file-existence-action@v2
|
|
68
|
+
with:
|
|
69
|
+
files: 'base-artifacts/coverage-summary.json'
|
|
70
|
+
|
|
71
|
+
- name: Report coverage
|
|
72
|
+
uses: sidx1024/report-nyc-coverage-github-action@v1.2.6
|
|
73
|
+
id: report
|
|
74
|
+
with:
|
|
75
|
+
coverage_file: 'artifacts/test-coverage-output/coverage-summary.json'
|
|
76
|
+
base_coverage_file: ${{steps.check_files.outputs.files_exists == 'true' && 'base-artifacts/coverage-summary.json' || ''}}
|
|
77
|
+
comment_template_file: '.coverage-comment-template.svelte'
|
package/.husky/post-checkout
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
2
|
git config commit.template .git/templatemessage
|
|
3
|
-
TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '(
|
|
3
|
+
TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '((feature|bug|bugfix|fix|hotfix|task|chore)\/)\K\d{1,7}'`
|
|
4
4
|
echo "[POST_CHECKOUT] Setting template commit to $TICKETID"
|
|
5
5
|
echo "#$TICKETID: " > ".git/templatemessage"
|
package/.prettierrc
CHANGED
package/.vscode/extensions.json
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
// List of extensions which should be recommended for users of this workspace.
|
|
6
6
|
"recommendations": [
|
|
7
7
|
// collaboration
|
|
8
|
-
"gruntfuggly.todo-tree",
|
|
9
8
|
"aaron-bond.better-comments",
|
|
10
9
|
"github.vscode-pull-request-github",
|
|
11
10
|
|
|
@@ -15,11 +14,8 @@
|
|
|
15
14
|
// Formatting & colors
|
|
16
15
|
"editorconfig.editorconfig",
|
|
17
16
|
"esbenp.prettier-vscode",
|
|
18
|
-
"sergey-agadzhanov.ampscript",
|
|
19
17
|
|
|
20
18
|
// Markdown / Readme.md
|
|
21
|
-
"yzhang.markdown-all-in-one",
|
|
22
|
-
"davidanson.vscode-markdownlint",
|
|
23
19
|
"joernberkefeld.markdown-preview-bitbucket-innersource"
|
|
24
20
|
]
|
|
25
21
|
}
|
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ Find info on the latest releases with a detailed changelog in the [GitHub Releas
|
|
|
47
47
|
|
|
48
48
|
If you want to enhance Accenture SFMC DevTools you are welcome to fork the repo and create a pull request. Please understand that we will have to conduct a code review before accepting your changes.
|
|
49
49
|
|
|
50
|
-
More details on how to best do that are described in our [wiki](https://github.com/Accenture/sfmc-devtools/wiki/
|
|
50
|
+
More details on how to best do that are described in our [wiki](https://github.com/Accenture/sfmc-devtools/wiki/10.-Contribute).
|
|
51
51
|
|
|
52
52
|
## Main Contacts
|
|
53
53
|
|
package/boilerplate/config.json
CHANGED