Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 9 additions & 10 deletions .github/workflows/stackql-assert-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,12 @@ jobs:
uses: ./
with:
test_query: |
SELECT name
FROM google.compute.instances
WHERE project = 'stackql-integration-tests' AND zone = 'australia-southeast1-a' and name = 'stackql-test-001';
SELECT name, location, locationType
FROM google.storage.buckets
WHERE project = 'stackql'
AND name = 'stackql-public-releases';
expected_rows: 1
env:
env:
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}

#
Expand All @@ -47,8 +48,8 @@ jobs:
uses: ./
with:
test_query_file_path: './.github/workflows/workflow_scripts/google-example.iql'
expected_results_str: '[{"name":"stackql-test-001"}]'
env:
expected_results_str: '[{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]'
env:
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}

#
Expand All @@ -59,11 +60,9 @@ jobs:
with:
test_query_file_path: './.github/workflows/workflow_scripts/google-example-inline-jsonnet.iql'
expected_results_file_path: './.github/workflows/workflow_scripts/google-example-inline-jsonnet-results.json'
vars: GOOGLE_PROJECT=${{ env.GOOGLE_PROJECT }},GOOGLE_ZONE=${{ env.GOOGLE_ZONE }}
env:
vars: GOOGLE_PROJECT=stackql
env:
GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}
GOOGLE_PROJECT: ${{ vars.GOOGLE_PROJECT }}
GOOGLE_ZONE: ${{ vars.GOOGLE_ZONE }}

#
# Example `test_query_file_path` with `expected_rows` supplying `vars` using `jsonnet` config provided using `data_file_path`
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"name":"stackql-test-001"}]
[{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
<<<jsonnet
local project = std.extVar("GOOGLE_PROJECT");
local zone = std.extVar("GOOGLE_ZONE");
{
project: project,
zone: zone,
}
>>>
SELECT name
FROM google.compute.instances
WHERE project = '{{ .project }}' and zone = '{{ .zone }}' and name = 'stackql-test-001';
SELECT name, location, locationType
FROM google.storage.buckets
WHERE project = '{{ .project }}'
AND name = 'stackql-public-releases';
7 changes: 4 additions & 3 deletions .github/workflows/workflow_scripts/google-example.iql
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
SELECT name
FROM google.compute.instances
WHERE project = 'stackql-integration-tests' AND zone = 'australia-southeast1-a' AND name = 'stackql-test-001';
SELECT name, location, locationType
FROM google.storage.buckets
WHERE project = 'stackql'
AND name = 'stackql-public-releases';
9 changes: 8 additions & 1 deletion lib/assert.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ const getExpectedResult = (expectedResultStr, expectedResultFilePath) => {
return null;
};

const sortedStringify = (obj) => JSON.stringify(obj, Object.keys(obj).sort());

const rowsMatch = (expected, actual) => {
if (expected.length !== actual.length) return false;
return expected.every((expectedRow, i) => sortedStringify(expectedRow) === sortedStringify(actual[i]));
};

const checkResult = (core, expected, actual, expectedRows) => {
const actualLength = actual.length;

Expand All @@ -28,7 +35,7 @@ const checkResult = (core, expected, actual, expectedRows) => {
return false;
}

if (expected && JSON.stringify(expected) !== JSON.stringify(actual)) {
if (expected && !rowsMatch(expected, actual)) {
core.error(`Expected results do not match actual results.\nExpected: ${JSON.stringify(expected)}\nActual: ${JSON.stringify(actual)}`);
return false;
}
Expand Down
20 changes: 10 additions & 10 deletions lib/tests/assert.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ const {checkResult, parseResult, assertResult, getExpectedResult} = require('../
describe('parseResult', ()=>{

it('should parsedResult correctly', ()=>{
const resultString = `[{"name":"stackql-demo-001","status":"TERMINATED"}]`
const expected = [{"name":"stackql-demo-001","status":"TERMINATED"}]
const resultString = `[{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]`
const expected = [{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]
const actual = parseResult(resultString);
expect(actual).toEqual(expected);
})
})

describe('getExpectedResult', ()=>{
it('should return expectedResult when expectedResultStr is passed', ()=>{
const expectedResultStr = `[{"name":"stackql-demo-001","status":"TERMINATED"}]`
const expectedResult = [{"name":"stackql-demo-001","status":"TERMINATED"}]
const expectedResultStr = `[{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]`
const expectedResult = [{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]

const actual = getExpectedResult(expectedResultStr, undefined);

Expand All @@ -22,7 +22,7 @@ describe('getExpectedResult', ()=>{

it('should return expectedResult when expectedResultFilePath is passed', ()=>{
const expectedResultFilePath = 'lib/tests/success-result.json'
const expectedResult = [{"name":"stackql-demo-001","status":"TERMINATED"}]
const expectedResult = [{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]

const actual = getExpectedResult(undefined, expectedResultFilePath);

Expand All @@ -42,7 +42,7 @@ describe('checkResult', () => {
core.info.mockClear();
core.error.mockClear();
core.setFailed.mockClear();
});
});

it('should return false and log an error when the actual length does not match expected rows', () => {
const expectedRows = "3";
Expand Down Expand Up @@ -89,8 +89,8 @@ describe('assertResult', ()=>{
let coreObj;

const ACTION_ENV = {
RESULT: `[{"name":"stackql-demo-001","status":"TERMINATED"}]`,
EXPECTED_RESULTS_STR: `[{"name":"stackql-demo-001","status":"TERMINATED"}]`,
RESULT: `[{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]`,
EXPECTED_RESULTS_STR: `[{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]`,
EXPECTED_RESULTS_FILE_PATH: 'test.json',
EXPECTED_ROWS: 1
}
Expand Down Expand Up @@ -120,7 +120,7 @@ describe('assertResult', ()=>{
});

it('it should setFailed when actual result is not equal to expected result', () => {
process.env.RESULT= "[{\"name\":\"stackql-demo-001\",\"status\":\"RUNNING\"}]"
process.env.RESULT= "[{\"location\":\"EU\",\"locationType\":\"multi-region\",\"name\":\"stackql-public-releases\"}]"

assertResult(coreObj)

Expand Down Expand Up @@ -185,6 +185,6 @@ describe('assertResult', ()=>{
expect(coreObj.info).toHaveBeenCalledWith(expect.stringContaining('StackQL Assert Successful'))
})



})
2 changes: 1 addition & 1 deletion lib/tests/failed-result.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"name":"stackql-demo-001","status":"RUNNING"}]
[{"location":"EU","locationType":"multi-region","name":"stackql-public-releases"}]
2 changes: 1 addition & 1 deletion lib/tests/success-result.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"name":"stackql-demo-001","status":"TERMINATED"}]
[{"location":"US","locationType":"multi-region","name":"stackql-public-releases"}]