File: test.py

package info (click to toggle)
qtdeclarative-opensource-src 5.15.8%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 259,256 kB
  • sloc: javascript: 512,396; cpp: 495,775; xml: 8,892; python: 3,304; ansic: 2,764; sh: 206; makefile: 62; php: 27
file content (63 lines) | stat: -rw-r--r-- 1,934 bytes parent folder | download | duplicates (11)
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
55
56
57
58
59
60
61
62
63
# Copyright (C) 2016 the V8 project authors. All rights reserved.
# This code is governed by the BSD license found in the LICENSE file.

import os, re

from util.find_comments import find_comments
from util.parse_yaml import parse_yaml

class Test:
    """Representation of a generated test. Specifies a file location which may
    or may not exist."""
    def __init__(self, file_name, source=None):
        self.file_name = file_name
        self.source = source
        self.attribs = dict(meta=None)

        if self.source:
            self._parse()

    def load(self, prefix = None):
        location = os.path.join(prefix or '', self.file_name)
        with open(location) as handle:
            self.source = handle.read()
        self._parse()

    def _parse(self):
        for comment in find_comments(self.source):
            meta = parse_yaml(comment['source'])
            if meta:
                self.attribs['meta'] = meta
                break

    def is_generated(self):
        if not self.attribs['meta']:
            return False
        flags = self.attribs['meta'].get('flags')

        if not flags:
            return False

        return 'generated' in flags

    def to_string(self):
        return '\n'.join([
            '/**',
            ' * ----------------------------------------------------------------',
            ' * ' + self.file_name,
            ' * ----------------------------------------------------------------',
            ' */',
            self.source,
            '\n'])

    def write(self, prefix, parents=False):
        location = os.path.join(prefix, self.file_name)
        path = os.path.dirname(location)
        if not os.path.exists(path):
            if parents:
                os.makedirs(path)
            else:
                raise Exception('Directory does not exist: ' + path)

        with open(location, 'w') as handle:
            handle.write(self.source)