conftest.py
Go to the documentation of this file.
1 
4 
5 """Automatic testing for qicore behavior's converter"""
6 
7 import distutils.dir_util
8 import os
9 import py
10 import pytest
11 
12 import converter.choregraphe_project_importer as crg_importer
13 import converter.xar_format_generator as xar_format_generator
14 import converter.new_format_generator as new_format_generator
15 import converter.name_map_builder as names_builder
16 import converter.xar_parser as xar_parser
17 
18 
19 def pytest_addoption(parser):
20  parser.addoption("--xar", action="store", default="",
21  help="specify path of files to use:\n"
22  + "- old format behavior.xar\n")
23 
24 
26  args = []
27  currentDir = os.path.dirname(os.path.abspath(__file__))
28  args.append(os.path.join(currentDir,
29  "tests",
30  "behavior1",
31  "behavior.xar"))
32  return args
33 
34 
35 @pytest.fixture(scope="module")
36 def parse_arg(request):
37  """ extract args
38  """
39  str_args = request.config.getoption("--xar")
40  if not str_args:
41  return _default_args()
42 
43  args = []
44  raw_args = str_args.split(" ")
45  for argument in raw_args:
46  args.append(os.path.abspath(argument))
47  return args
48 
49 
50 @pytest.fixture(scope="module")
51 def mytmpdir(request):
52  import tempfile
53  temppath = tempfile.mkdtemp()
54  print "\nTest working in %s" % str(temppath)
55  tempdir = py.path.local(temppath)
56 
57  def remove_temp_dir():
58  tempdir.remove(rec=1, ignore_errors=True)
59 
60  # request.addfinalizer(remove_temp_dir)
61  return tempdir
62 
63 
64 @pytest.fixture(scope="module")
65 def generate_data(parse_arg, mytmpdir):
66  # execute successives conversion and return an array of output path
67  result = []
68 
69  filename = parse_arg[0]
70  behaviorname = os.path.basename(os.path.dirname(filename))
71  # input path is the witness
72  result.append(filename)
73 
74  # first, convert to new format
75  root_node1 = xar_parser.generate_tree_from_filename(filename)
76  namesBuilder = names_builder.NameMapBuilder()
77  namesBuilder.visit(root_node1)
78  namesMap = namesBuilder.get_name_map()
79 
80  dest_dir = str(mytmpdir.join("test1"))
81  distutils.dir_util.mkpath(dest_dir)
82 
83  generator = new_format_generator.NewFormatGenerator(namesMap)
84  generator.visit(root_node1, dest_dir)
85  generator.generate_entry_point(root_node1, behaviorname)
86  result.append(os.path.join(dest_dir, "behavior.xar"))
87 
88  # second, convert result back to old xar format
89  filename = os.path.join(dest_dir, "behavior.xar")
90  root_node2 = crg_importer.import_behavior(filename)
91 
92  dest_dir2 = str(mytmpdir.join("test2"))
93  distutils.dir_util.mkpath(dest_dir2)
94 
95  generator = xar_format_generator.XarFormatGenerator(root_node2)
96  generator.export_to_xar(dest_dir2)
97  result.append(os.path.join(dest_dir2, "behavior.xar"))
98 
99  # third, import and convert once again last xar
100  filename = os.path.join(dest_dir2, "behavior.xar")
101  root_node3 = xar_parser.generate_tree_from_filename(filename)
102  namesBuilder = names_builder.NameMapBuilder()
103  namesBuilder.visit(root_node3)
104 
105  dest_dir3 = str(mytmpdir.join("test3"))
106  distutils.dir_util.mkpath(dest_dir3)
107 
108  namesMap = namesBuilder.get_name_map()
109  generator = new_format_generator.NewFormatGenerator(namesMap)
110  generator.visit(root_node3, dest_dir3)
111  generator.generate_entry_point(root_node3, behaviorname)
112  result.append(os.path.join(dest_dir3, "behavior.xar"))
113 
114  return result
converter.new_format_generator
Definition: new_format_generator.py:1
converter.xar_parser
Definition: xar_parser.py:1
conftest.mytmpdir
def mytmpdir(request)
Definition: conftest.py:51
conftest._default_args
def _default_args()
Definition: conftest.py:25
converter.choregraphe_project_importer
Definition: choregraphe_project_importer.py:1
converter.xar_format_generator
Definition: xar_format_generator.py:1
conftest.generate_data
def generate_data(parse_arg, mytmpdir)
Definition: conftest.py:65
converter.name_map_builder
Definition: name_map_builder.py:1
conftest.parse_arg
def parse_arg(request)
Definition: conftest.py:36
conftest.pytest_addoption
def pytest_addoption(parser)
Definition: conftest.py:19


naoqi_libqicore
Author(s): Aldebaran
autogenerated on Wed Sep 14 2022 02:22:41