summaryrefslogtreecommitdiffstats
path: root/taskcluster/taskgraph/test/test_taskgraph.py
blob: f8f09bce98165b201c3b9d6a57457dce69a10bec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 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 unittest

from ..graph import Graph
from ..task.docker_image import DockerImageTask
from ..task.transform import TransformTask
from ..taskgraph import TaskGraph
from mozunit import main
from taskgraph.util.docker import INDEX_PREFIX


class TestTargetTasks(unittest.TestCase):

    def test_from_json(self):
        task = {
            "routes": [],
            "extra": {
                "imageMeta": {
                    "contextHash": "<hash>",
                    "imageName": "<image>",
                    "level": "1"
                }
            }
        }
        index_paths = ["{}.level-{}.<image>.hash.<hash>".format(INDEX_PREFIX, level)
                       for level in range(1, 4)]
        graph = TaskGraph(tasks={
            'a': TransformTask(
                kind='fancy',
                task={
                    'label': 'a',
                    'attributes': {},
                    'dependencies': {},
                    'when': {},
                    'task': {'task': 'def'},
                }),
            'b': DockerImageTask(kind='docker-image',
                                 label='b',
                                 attributes={},
                                 task=task,
                                 index_paths=index_paths),
        }, graph=Graph(nodes={'a', 'b'}, edges=set()))

        tasks, new_graph = TaskGraph.from_json(graph.to_json())
        self.assertEqual(graph.tasks['a'], new_graph.tasks['a'])
        self.assertEqual(graph, new_graph)

if __name__ == '__main__':
    main()