45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
"""Generate json report of a run"""
|
|
from __future__ import absolute_import, unicode_literals
|
|
|
|
import json
|
|
import os
|
|
import socket
|
|
import sys
|
|
|
|
from tox.version import __version__
|
|
|
|
from .command import CommandLog
|
|
from .env import EnvLog
|
|
|
|
|
|
class ResultLog(object):
|
|
"""The result of a tox session"""
|
|
|
|
def __init__(self):
|
|
command_log = []
|
|
self.command_log = CommandLog(None, command_log)
|
|
self.dict = {
|
|
"reportversion": "1",
|
|
"toxversion": __version__,
|
|
"platform": sys.platform,
|
|
"host": os.getenv(str("HOSTNAME")) or socket.getfqdn(),
|
|
"commands": command_log,
|
|
}
|
|
|
|
@classmethod
|
|
def from_json(cls, data):
|
|
result = cls()
|
|
result.dict = json.loads(data)
|
|
result.command_log = CommandLog(None, result.dict["commands"])
|
|
return result
|
|
|
|
def get_envlog(self, name):
|
|
"""Return the env log of an environment (create on first call)"""
|
|
test_envs = self.dict.setdefault("testenvs", {})
|
|
env_data = test_envs.setdefault(name, {})
|
|
return EnvLog(self, name, env_data)
|
|
|
|
def dumps_json(self):
|
|
"""Return the json dump of the current state, indented"""
|
|
return json.dumps(self.dict, indent=2)
|