178 lines
4.0 KiB
Go
178 lines
4.0 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.rootprojects.org/root/gitdeploy/internal/jobs"
|
|
)
|
|
|
|
// PyResultToReport converts from pytest's result.json to the GitDeploy report format
|
|
func PyResultToReport(pyresult PyResult) WrappedReport {
|
|
report := jobs.Result{
|
|
Name: "pytest",
|
|
Status: "failed",
|
|
Message: fmt.Sprintf("Exited with status code %d", pyresult.ExitCode),
|
|
Detail: pyresult,
|
|
}
|
|
|
|
var failed bool
|
|
for i := range pyresult.Tests {
|
|
unit := pyresult.Tests[i]
|
|
report.Results = append(report.Results, jobs.Result{
|
|
Name: unit.NodeID,
|
|
Status: unit.Outcome,
|
|
//Detail: unit,
|
|
})
|
|
if "passed" != unit.Outcome {
|
|
failed = true
|
|
}
|
|
}
|
|
if !failed {
|
|
report.Status = "passed"
|
|
}
|
|
|
|
return WrappedReport{
|
|
Report: report,
|
|
}
|
|
}
|
|
|
|
// PyResult is the pytest report
|
|
type PyResult struct {
|
|
Created float64 `json:"created"`
|
|
Duration float64 `json:"duration"`
|
|
ExitCode int `json:"exitcode"`
|
|
Root string `json:"root"`
|
|
/*
|
|
Environment struct {
|
|
Python string `json:"Python"`
|
|
Platform string `json:"Platform"`
|
|
Packages struct {
|
|
Pytest string `json:"pytest"`
|
|
Py string `json:"py"`
|
|
Pluggy string `json:"pluggy"`
|
|
} `json:"Packages"`
|
|
Plugins struct {
|
|
HTML string `json:"html"`
|
|
Metadata string `json:"metadata"`
|
|
JSONReport string `json:"json-report"`
|
|
} `json:"Plugins"`
|
|
} `json:"environment"`
|
|
Summary struct {
|
|
Passed int `json:"passed"`
|
|
Total int `json:"total"`
|
|
Collected int `json:"collected"`
|
|
} `json:"summary"`
|
|
Collectors []struct {
|
|
Nodeid string `json:"nodeid"`
|
|
Outcome string `json:"outcome"`
|
|
Result []struct {
|
|
Nodeid string `json:"nodeid"`
|
|
Type string `json:"type"`
|
|
} `json:"result"`
|
|
} `json:"collectors"`
|
|
*/
|
|
Tests []struct {
|
|
NodeID string `json:"nodeid"`
|
|
LineNo int `json:"lineno"`
|
|
Outcome string `json:"outcome"`
|
|
Keywords []string `json:"keywords"`
|
|
Setup struct {
|
|
Duration float64 `json:"duration"`
|
|
Outcome string `json:"outcome"`
|
|
} `json:"setup"`
|
|
Call struct {
|
|
Duration float64 `json:"duration"`
|
|
Outcome string `json:"outcome"`
|
|
} `json:"call"`
|
|
Teardown struct {
|
|
Duration float64 `json:"duration"`
|
|
Outcome string `json:"outcome"`
|
|
} `json:"teardown"`
|
|
} `json:"tests"`
|
|
}
|
|
|
|
/*
|
|
{
|
|
"created": 1614248016.458921,
|
|
"duration": 16.896488904953003,
|
|
"exitcode": 0,
|
|
"root": "/home/app/srv/status.example.com/e2e-selenium",
|
|
"environment": {
|
|
"Python": "3.9.1",
|
|
"Platform": "Linux-5.4.0-65-generic-x86_64-with-glibc2.31",
|
|
"Packages": {
|
|
"pytest": "6.2.1",
|
|
"py": "1.10.0",
|
|
"pluggy": "0.13.1"
|
|
},
|
|
"Plugins": {
|
|
"html": "3.1.1",
|
|
"metadata": "1.11.0",
|
|
"json-report": "1.2.4"
|
|
}
|
|
},
|
|
"summary": {
|
|
"passed": 3,
|
|
"total": 3,
|
|
"collected": 3
|
|
},
|
|
"collectors": [
|
|
{
|
|
"nodeid": "",
|
|
"outcome": "passed",
|
|
"result": [
|
|
{
|
|
"nodeid": "test_landing_200.py",
|
|
"type": "Module"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"nodeid": "test_landing_200.py",
|
|
"outcome": "passed",
|
|
"result": [
|
|
{
|
|
"nodeid": "test_landing_200.py::test_welcome_page_loads",
|
|
"type": "Function",
|
|
"lineno": 35
|
|
},
|
|
{
|
|
"nodeid": "test_landing_200.py::test_create_account",
|
|
"type": "Function",
|
|
"lineno": 49
|
|
},
|
|
{
|
|
"nodeid": "test_landing_200.py::test_login_existing",
|
|
"type": "Function",
|
|
"lineno": 85
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"tests": [
|
|
{
|
|
"nodeid": "test_landing_200.py::test_welcome_page_loads",
|
|
"lineno": 35,
|
|
"outcome": "passed",
|
|
"keywords": [
|
|
"e2e-selenium",
|
|
"test_landing_200.py",
|
|
"test_welcome_page_loads"
|
|
],
|
|
"setup": {
|
|
"duration": 0.0006089679664000869,
|
|
"outcome": "passed"
|
|
},
|
|
"call": {
|
|
"duration": 2.512254447909072,
|
|
"outcome": "passed"
|
|
},
|
|
"teardown": {
|
|
"duration": 0.00038311502430588007,
|
|
"outcome": "passed"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
*/
|