Skip to content

Commit 9252334

Browse files
authored
Merge pull request #44 from mcarvin8/feat/shorten-cmd
Shorten Command to Allow Non-Unit Test (NUT)
2 parents 9fc0c62 + f3cea45 commit 9252334

File tree

10 files changed

+133
-24
lines changed

10 files changed

+133
-24
lines changed

.github/workflows/non-release-build.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

.github/workflows/release.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,18 @@ permissions:
1010
jobs:
1111
unit-tests:
1212
uses: salesforcecli/github-workflows/.github/workflows/unitTest.yml@main
13-
13+
nuts:
14+
needs: unit-tests
15+
uses: salesforcecli/github-workflows/.github/workflows/nut.yml@main
16+
secrets: inherit
17+
strategy:
18+
matrix:
19+
os: [windows-latest]
20+
fail-fast: false
21+
with:
22+
os: ${{ matrix.os }}
1423
release:
15-
needs: [unit-tests]
24+
needs: [unit-tests, nuts]
1625
name: Release
1726
runs-on: ubuntu-latest
1827
steps:

.github/workflows/test.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Test
2+
3+
on:
4+
push:
5+
branches-ignore:
6+
- main
7+
8+
jobs:
9+
unit-tests:
10+
uses: salesforcecli/github-workflows/.github/workflows/unitTest.yml@main
11+
nuts:
12+
needs: unit-tests
13+
uses: salesforcecli/github-workflows/.github/workflows/nut.yml@main
14+
secrets: inherit
15+
strategy:
16+
matrix:
17+
os: [windows-latest]
18+
fail-fast: false
19+
with:
20+
os: ${{ matrix.os }}

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ sf plugins install [email protected]
3535

3636
The `apex-code-coverage-transformer` has 1 command:
3737

38-
- `sf apex-code-coverage transformer transform`
38+
- `sf acc-transformer transform`
3939

4040
This command needs to be ran somewhere inside your Salesforce DX git repository, whether in the root folder (recommended) or in a subfolder. This plugin will determine the root folder of this repository and read the `sfdx-project.json` file in the root folder. All package directories listed in the `sfdx-project.json` file will be processed when running this plugin.
4141

42-
## `sf apex-code-coverage transformer transform`
42+
## `sf acc-transformer transform`
4343

4444
```
4545
USAGE
46-
$ sf apex-code-coverage transformer transform -j <value> -x <value> -c <value> [--json]
46+
$ sf acc-transformer transform -j <value> -x <value> -c <value> [--json]
4747
4848
FLAGS
4949
-j, --coverage-json=<value> Path to the code coverage JSON file created by the Salesforce CLI deployment or test command.
@@ -57,7 +57,7 @@ DESCRIPTION
5757
This plugin will convert the code coverage JSON file created by the Salesforce CLI during Apex deployments and test runs into an XML accepted by tools like SonarQube.
5858
5959
EXAMPLES
60-
$ sf apex-code-coverage transformer transform -j "coverage.json" -x "coverage.xml" -c "deploy"
60+
$ sf acc-transformer transform -j "coverage.json" -x "coverage.xml" -c "deploy"
6161
```
6262

6363
## Hook

messages/transformer.transform.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This plugin will convert the code coverage JSON file created by the Salesforce C
88

99
# examples
1010

11-
- `sf apex-code-coverage transformer transform -j "coverage.json" -x "coverage.xml" -c "deploy"`
11+
- `sf acc-transformer transform -j "coverage.json" -x "coverage.xml" -c "deploy"`
1212

1313
# flags.coverage-json.summary
1414

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@
5151
"commands": "./lib/commands",
5252
"bin": "sf",
5353
"topicSeparator": " ",
54+
"topics": {
55+
"acc-transformer": {
56+
"description": "description for acc-transformer"
57+
}
58+
},
5459
"hooks": {
5560
"postrun": "./lib/hooks/postrun"
5661
},
@@ -65,7 +70,7 @@
6570
"clean": "sf-clean",
6671
"clean-all": "sf-clean all",
6772
"clean:lib": "shx rm -rf lib && shx rm -rf coverage && shx rm -rf .nyc_output && shx rm -f oclif.manifest.json oclif.lock",
68-
"compile": "sf-compile",
73+
"compile": "wireit",
6974
"docs": "sf-docs",
7075
"format": "sf-format",
7176
"lint": "wireit",

src/commands/apex-code-coverage/transformer/transform.ts renamed to src/commands/acc-transformer/transform.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ import { writeFile, readFile } from 'node:fs/promises';
55

66
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
77
import { Messages } from '@salesforce/core';
8-
import { DeployCoverageData, TestCoverageData } from '../../../helpers/types.js';
9-
import { transformDeployCoverageReport } from '../../../helpers/transformDeployCoverageReport.js';
10-
import { transformTestCoverageReport } from '../../../helpers/transformTestCoverageReport.js';
11-
import { TransformerTransformResult } from '../../../helpers/types.js';
8+
import { DeployCoverageData, TestCoverageData, TransformerTransformResult } from '../../helpers/types.js';
9+
import { transformDeployCoverageReport } from '../../helpers/transformDeployCoverageReport.js';
10+
import { transformTestCoverageReport } from '../../helpers/transformTestCoverageReport.js';
1211

1312
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
1413
const messages = Messages.loadMessages('apex-code-coverage-transformer', 'transformer.transform');

src/hooks/postrun.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { readFile } from 'node:fs/promises';
55
import { resolve } from 'node:path';
66
import { Hook } from '@oclif/core';
77

8-
import TransformerTransform from '../commands/apex-code-coverage/transformer/transform.js';
8+
import TransformerTransform from '../commands/acc-transformer/transform.js';
99
import { ConfigFile } from '../helpers/types.js';
1010
import { getRepoRoot } from '../helpers/getRepoRoot.js';
1111

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
'use strict';
2+
3+
import { copyFile, writeFile, readFile, rm, mkdir } from 'node:fs/promises';
4+
import { strictEqual } from 'node:assert';
5+
import { resolve } from 'node:path';
6+
7+
import { execCmd, TestSession } from '@salesforce/cli-plugins-testkit';
8+
import { expect } from 'chai';
9+
10+
describe('acc-transformer transform NUTs', () => {
11+
let session: TestSession;
12+
const baselineClassPath = resolve('test/baselines/classes/AccountProfile.cls');
13+
const baselineTriggerPath = resolve('test/baselines/triggers/AccountTrigger.trigger');
14+
const deployCoverageNoExts = resolve('test/deploy_coverage_no_file_exts.json');
15+
const deployCoverageWithExts = resolve('test/deploy_coverage_with_file_exts.json');
16+
const testCoverage = resolve('test/test_coverage.json');
17+
const baselineXmlPath = resolve('test/coverage_baseline.xml');
18+
const testXmlPath1 = resolve('coverage1.xml');
19+
const testXmlPath2 = resolve('coverage2.xml');
20+
const testXmlPath3 = resolve('coverage3.xml');
21+
22+
const configFile = {
23+
packageDirectories: [{ path: 'force-app', default: true }, { path: 'packaged' }],
24+
namespace: '',
25+
sfdcLoginUrl: 'https://login.salesforce.com',
26+
sourceApiVersion: '58.0',
27+
};
28+
const configJsonString = JSON.stringify(configFile, null, 2);
29+
30+
before(async () => {
31+
session = await TestSession.create({ devhubAuthStrategy: 'NONE' });
32+
await writeFile('sfdx-project.json', configJsonString);
33+
await mkdir('force-app/main/default/classes', { recursive: true });
34+
await mkdir('packaged/triggers', { recursive: true });
35+
await copyFile(baselineClassPath, 'force-app/main/default/classes/AccountProfile.cls');
36+
await copyFile(baselineTriggerPath, 'packaged/triggers/AccountTrigger.trigger');
37+
});
38+
39+
after(async () => {
40+
await session?.clean();
41+
await rm('sfdx-project.json');
42+
await rm('force-app/main/default/classes/AccountProfile.cls');
43+
await rm('packaged/triggers/AccountTrigger.trigger');
44+
await rm('force-app', { recursive: true });
45+
await rm('packaged', { recursive: true });
46+
await rm(testXmlPath1);
47+
await rm(testXmlPath2);
48+
await rm(testXmlPath3);
49+
});
50+
51+
it('runs transform on the deploy coverage file without file extensions.', async () => {
52+
const command = `acc-transformer transform --coverage-json "${deployCoverageNoExts}" --xml "${testXmlPath1}"`;
53+
const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout;
54+
55+
expect(output.replace('\n', '')).to.equal(`The coverage XML has been written to ${testXmlPath1}`);
56+
});
57+
58+
it('runs transform on the deploy coverage file with file extensions.', async () => {
59+
const command = `acc-transformer transform --coverage-json "${deployCoverageWithExts}" --xml "${testXmlPath2}"`;
60+
const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout;
61+
62+
expect(output.replace('\n', '')).to.equal(`The coverage XML has been written to ${testXmlPath2}`);
63+
});
64+
65+
it('runs transform on the test coverage file.', async () => {
66+
const command = `acc-transformer transform --coverage-json "${testCoverage}" --xml "${testXmlPath3}"`;
67+
const output = execCmd(command, { ensureExitCode: 0 }).shellOutput.stdout;
68+
69+
expect(output.replace('\n', '')).to.equal(`The coverage XML has been written to ${testXmlPath3}`);
70+
});
71+
it('confirm the 2 XML files created in the previous tests are the same as the baseline.', async () => {
72+
const xmlContent1 = await readFile(testXmlPath1, 'utf-8');
73+
const xmlContent2 = await readFile(testXmlPath2, 'utf-8');
74+
const baselineXmlContent = await readFile(baselineXmlPath, 'utf-8');
75+
strictEqual(
76+
xmlContent1,
77+
baselineXmlContent,
78+
`File content is different between ${testXmlPath1} and ${baselineXmlPath}`
79+
);
80+
strictEqual(
81+
xmlContent2,
82+
baselineXmlContent,
83+
`File content is different between ${testXmlPath2} and ${baselineXmlPath}`
84+
);
85+
});
86+
});

test/commands/transformer/unit.test.ts renamed to test/commands/acc-transformer/transform.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { resolve } from 'node:path';
77
import { TestContext } from '@salesforce/core/lib/testSetup.js';
88
import { expect } from 'chai';
99
import { stubSfCommandUx } from '@salesforce/sf-plugins-core';
10-
import TransformerTransform from '../../../src/commands/apex-code-coverage/transformer/transform.js';
10+
import TransformerTransform from '../../../src/commands/acc-transformer/transform.js';
1111

1212
describe('main', () => {
1313
const $$ = new TestContext();

0 commit comments

Comments
 (0)