Setup for L0 Testcases (#6)

* SetUp for L0 TestCases

* Issue Fix

* Issue Fix

* Issue Fix

* Issue Fix

* Issue Fix

* Issue Fix

* Review comments fix: run npm install only with our build, npm install only dev for releases

* Running code covrage only on PR of master and releases
This commit is contained in:
rgsubh 2020-07-01 09:07:14 +05:30 committed by GitHub
parent b7b3104215
commit 24a3a128bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 120 additions and 4 deletions

81
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,81 @@
on:
pull_request:
push:
branches:
- master
- 'releases/*'
jobs:
build_test_job:
name: 'Build and test job'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- name: 'Checking out repo code'
uses: actions/checkout@v1
- name: Extract branch name
id: extract_branch
run: |
echo "##[set-output name=branchname;]$(echo ${GITHUB_REF##*/})"
- name: 'Install dependency for master'
if: github.event.pull_request.base.ref == 'master' || steps.extract_branch.outputs.branchname == 'master'
run: |
npm install
- name: 'Install dependency for releases'
if: github.event.pull_request.base.ref == 'releases/v1' || steps.extract_branch.outputs.branchname == 'releases/v1'
run: |
npm install --only=dev
- name: 'Run L0 tests'
run: |
npm run test
- name : 'Run test coverage'
if: runner.os == 'Windows' && (github.event.pull_request.base.ref == 'releases/v1' || github.event.pull_request.base.ref == 'master')
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
$coverage_result = npm run test-coverage
$start = $false;
$middle = $false;
$end = $false;
$count = 0;
foreach ($j in $coverage_result)
{
if ($j.tostring().startswith("----------"))
{
if (!$start)
{
$start = $true;
$start_index = $count
}
elseif (!$middle)
{
$middle = $true;
}
elseif (!$end)
{
$end = $true;
$end_index = $count
}
}
$count++
}
$tbl_md = $coverage_result[($start_index+1)..($end_index-1)] -join "\n"
$summary = $coverage_result[($end_index + 1)..$count] -join "\n"
$comment = $tbl_md + "\n" + $summary
$url = "https://api.github.com/repos/${env:GITHUB_REPOSITORY}/issues/${env:PR_NUMBER}/comments"
$headers = @{
"Authorization" = "token ${env:GITHUB_TOKEN}"
}
$body = "{ `"body`": `"${comment}`" }"
Invoke-RestMethod -Method POST -Uri $url -Headers $headers -Body $body

1
.gitignore vendored
View file

@ -327,3 +327,4 @@ ASALocalRun/
# MFractors (Xamarin productivity tool) working folder # MFractors (Xamarin productivity tool) working folder
.mfractor/ .mfractor/
node_modules

7
__tests__/run.test.ts Normal file
View file

@ -0,0 +1,7 @@
import { run } from '../src/run'
describe('This is a placeholder for intial test cases, to be removed', () => {
test('Dummy test case', async () => {
await expect(run()).rejects.toThrow();
})
})

18
jest.config.js Normal file
View file

@ -0,0 +1,18 @@
module.exports = {
clearMocks: true,
moduleFileExtensions: ['js', 'ts'],
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
transform: {
'^.+\\.ts$': 'ts-jest'
},
verbose: true,
coverageThreshold: {
"global": {
"branches": 0,
"functions": 14,
"lines": 27,
"statements": 27
}
}
}

View file

@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
}); });
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.run = void 0;
const os = require("os"); const os = require("os");
const path = require("path"); const path = require("path");
const util = require("util"); const util = require("util");
@ -80,4 +81,5 @@ function run() {
core.setOutput('kubectl-path', cachedPath); core.setOutput('kubectl-path', cachedPath);
}); });
} }
exports.run = run;
run().catch(core.setFailed); run().catch(core.setFailed);

View file

@ -4,7 +4,9 @@
"private": true, "private": true,
"main": "lib/run.js", "main": "lib/run.js",
"scripts": { "scripts": {
"build": "tsc --outDir .\\lib\\ --rootDir .\\src\\" "build": "tsc --outDir .\\lib\\ --rootDir .\\src\\",
"test": "jest",
"test-coverage": "jest --coverage"
}, },
"keywords": [ "keywords": [
"actions", "actions",
@ -19,6 +21,10 @@
"@actions/tool-cache": "^1.0.0" "@actions/tool-cache": "^1.0.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^12.0.4" "@types/node": "^12.0.4",
"jest": "^26.0.1",
"@types/jest": "^25.2.2",
"ts-jest": "^25.5.1",
"typescript": "3.9.2"
} }
} }

View file

@ -64,7 +64,7 @@ async function downloadKubectl(version: string): Promise<string> {
return kubectlPath; return kubectlPath;
} }
async function run() { export async function run() {
let version = core.getInput('version', { 'required': true }); let version = core.getInput('version', { 'required': true });
if (version.toLocaleLowerCase() === 'latest') { if (version.toLocaleLowerCase() === 'latest') {
version = await getStableKubectlVersion(); version = await getStableKubectlVersion();

View file

@ -4,6 +4,7 @@
"module": "commonjs" "module": "commonjs"
}, },
"exclude": [ "exclude": [
"node_modules" "node_modules",
"__tests__"
] ]
} }