13 # |
13 # |
14 # Description: |
14 # Description: |
15 # |
15 # |
16 |
16 |
17 import sys, os, unittest |
17 import sys, os, unittest |
18 import __init__ |
|
19 |
18 |
20 ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) |
19 ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) |
21 |
20 |
22 from testautomation.base_testcase import BaseTestCase |
21 from testautomation.base_testcase import BaseTestCase |
23 from cone.public import exceptions, plugin, api, container |
22 from cone.public import exceptions, plugin, api, container, utils |
24 |
23 |
25 from CRMLPlugin import crml_impl |
24 from CRMLPlugin import crml_impl |
26 |
25 |
27 def abspath(path): |
26 def abspath(path): |
28 return os.path.normpath(os.path.join(ROOT_PATH, path)) |
27 return os.path.normpath(os.path.join(ROOT_PATH, path)) |
37 |
36 |
38 self.remove_if_exists(output_dir) |
37 self.remove_if_exists(output_dir) |
39 |
38 |
40 prj = api.Project(api.Storage.open(project_dir)) |
39 prj = api.Project(api.Storage.open(project_dir)) |
41 config = prj.get_configuration(config) |
40 config = prj.get_configuration(config) |
|
41 gc = plugin.GenerationContext(configuration=config, |
|
42 output=output_dir) |
|
43 |
42 impls = plugin.get_impl_set(config, 'crml$') |
44 impls = plugin.get_impl_set(config, 'crml$') |
43 impls.output = output_dir |
45 gc.tags['target'] = ['rofs2'] |
44 impls.generation_context.tags['target'] = ['rofs2'] |
46 gc.filtering_disabled = True |
45 impls.generate() |
47 impls.generate(gc) |
46 impls.post_generate() |
48 impls.post_generate(gc) |
47 |
49 |
48 self.assert_dir_contents_equal(output_dir, expected_dir, ['.svn']) |
50 self.assert_dir_contents_equal(output_dir, expected_dir, ['.svn']) |
49 |
51 |
50 def test_generate_from_project_without_rfs(self): |
52 def test_generate_from_project_without_rfs(self): |
51 project_dir = abspath('gen_project') |
53 project_dir = abspath('gen_project') |
55 |
57 |
56 self.remove_if_exists(output_dir) |
58 self.remove_if_exists(output_dir) |
57 |
59 |
58 prj = api.Project(api.Storage.open(project_dir)) |
60 prj = api.Project(api.Storage.open(project_dir)) |
59 config = prj.get_configuration(config) |
61 config = prj.get_configuration(config) |
|
62 gc = plugin.GenerationContext(configuration=config, |
|
63 output=output_dir) |
|
64 |
60 impls = plugin.get_impl_set(config, 'crml$') |
65 impls = plugin.get_impl_set(config, 'crml$') |
61 impls.output = output_dir |
66 gc.tags['target'] = [] |
62 impls.generation_context.tags['target'] = [] |
67 gc.filtering_disabled = True |
63 impls.generate() |
68 impls.generate(gc) |
64 impls.post_generate() |
69 impls.post_generate(gc) |
65 |
70 |
66 self.assert_dir_contents_equal(output_dir, expected_dir, ['.svn', 'private']) |
71 self.assert_dir_contents_equal(output_dir, expected_dir, ['.svn', 'private']) |
67 self.assertFalse(os.path.exists(os.path.join(output_dir, 'private/100059C9/cenrep_rfs.txt'))) |
72 self.assertFalse(os.path.exists(os.path.join(output_dir, 'private/100059C9/cenrep_rfs.txt'))) |
68 |
73 |
69 |
74 |
75 |
80 |
76 self.remove_if_exists(output_dir) |
81 self.remove_if_exists(output_dir) |
77 |
82 |
78 prj = api.Project(api.Storage.open(project_dir)) |
83 prj = api.Project(api.Storage.open(project_dir)) |
79 config = prj.get_configuration(config) |
84 config = prj.get_configuration(config) |
|
85 gc = plugin.GenerationContext(configuration=config, |
|
86 output=output_dir) |
80 impls = plugin.get_impl_set(config, 'crml$') |
87 impls = plugin.get_impl_set(config, 'crml$') |
81 impls.output = output_dir |
88 gc.tags['target'] = ['rofs2'] |
82 impls.generation_context.tags['target'] = ['rofs2'] |
89 gc.filtering_disabled = True |
83 impls.generate() |
90 impls.generate(gc) |
84 impls.post_generate() |
91 impls.post_generate(gc) |
85 |
92 |
86 self.assert_dir_contents_equal(output_dir, expected_dir, ['.svn']) |
93 self.assert_dir_contents_equal(output_dir, expected_dir, ['.svn']) |
87 |
94 |
|
95 def test_generate_delta_cenreps(self): |
|
96 project_dir = abspath('gen_project') |
|
97 config = 'root2.confml' |
|
98 output_dir = abspath('temp/gen_output_deltacenrep') |
|
99 expected_dir = abspath('gen_expected_deltacenrep') |
|
100 |
|
101 self.remove_if_exists(output_dir) |
|
102 |
|
103 prj = api.Project(api.Storage.open(project_dir)) |
|
104 config = prj.get_configuration(config) |
|
105 gc = plugin.GenerationContext(configuration=config, |
|
106 output=output_dir) |
|
107 # Get refs from the last layer |
|
108 layer = config.get_configuration_by_index(-1) |
|
109 refs = utils.distinct_array(layer.list_leaf_datas()) |
|
110 |
|
111 impls = plugin.get_impl_set(config, 'crml$') |
|
112 impls = impls | plugin.get_impl_set(config, 'implml$') |
|
113 impls = impls.filter_implementations(refs=refs) |
|
114 |
|
115 gc.tags['crml'] = ['deltacenrep'] |
|
116 gc.changed_refs = refs |
|
117 gc.filtering_disabled = True |
|
118 impls.generate(gc) |
|
119 impls.post_generate(gc) |
|
120 |
|
121 output_dir = os.path.join(output_dir, 'deltacenreps') |
|
122 self.assert_dir_contents_equal(output_dir, expected_dir, ['.svn']) |