зеркало из https://github.com/mozilla/gecko-dev.git
79 строки
2.5 KiB
Python
79 строки
2.5 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
import os
|
|
import json
|
|
import yaml
|
|
import shutil
|
|
import unittest
|
|
import tempfile
|
|
|
|
from .. import decision
|
|
from ..graph import Graph
|
|
from ..taskgraph import TaskGraph
|
|
from .util import TestTask
|
|
from mozunit import main
|
|
|
|
|
|
class TestDecision(unittest.TestCase):
|
|
|
|
def test_taskgraph_to_json(self):
|
|
tasks = {
|
|
'a': TestTask(label='a', attributes={'attr': 'a-task'}),
|
|
'b': TestTask(label='b', task={'task': 'def'}),
|
|
}
|
|
graph = Graph(nodes=set('ab'), edges={('a', 'b', 'edgelabel')})
|
|
taskgraph = TaskGraph(tasks, graph)
|
|
|
|
res = taskgraph.to_json()
|
|
|
|
self.assertEqual(res, {
|
|
'a': {
|
|
'label': 'a',
|
|
'attributes': {'attr': 'a-task', 'kind': 'test'},
|
|
'task': {},
|
|
'dependencies': {'edgelabel': 'b'},
|
|
'kind_implementation': 'taskgraph.test.util:TestTask',
|
|
},
|
|
'b': {
|
|
'label': 'b',
|
|
'attributes': {'kind': 'test'},
|
|
'task': {'task': 'def'},
|
|
'dependencies': {},
|
|
'kind_implementation': 'taskgraph.test.util:TestTask',
|
|
}
|
|
})
|
|
|
|
def test_write_artifact_json(self):
|
|
data = [{'some': 'data'}]
|
|
tmpdir = tempfile.mkdtemp()
|
|
try:
|
|
decision.ARTIFACTS_DIR = os.path.join(tmpdir, "artifacts")
|
|
decision.write_artifact("artifact.json", data)
|
|
with open(os.path.join(decision.ARTIFACTS_DIR, "artifact.json")) as f:
|
|
self.assertEqual(json.load(f), data)
|
|
finally:
|
|
if os.path.exists(tmpdir):
|
|
shutil.rmtree(tmpdir)
|
|
decision.ARTIFACTS_DIR = 'artifacts'
|
|
|
|
def test_write_artifact_yml(self):
|
|
data = [{'some': 'data'}]
|
|
tmpdir = tempfile.mkdtemp()
|
|
try:
|
|
decision.ARTIFACTS_DIR = os.path.join(tmpdir, "artifacts")
|
|
decision.write_artifact("artifact.yml", data)
|
|
with open(os.path.join(decision.ARTIFACTS_DIR, "artifact.yml")) as f:
|
|
self.assertEqual(yaml.safe_load(f), data)
|
|
finally:
|
|
if os.path.exists(tmpdir):
|
|
shutil.rmtree(tmpdir)
|
|
decision.ARTIFACTS_DIR = 'artifacts'
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|