efl_ui_spec_suite: move the information about tests to the test files

for now the widgets which are tested are encoded in the test files where
the tests are implemented. This is for now done in a simple json format,
just for the sake of simplicity.

ref T7815

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8685
This commit is contained in:
Marcel Hollerbach 2019-04-23 10:21:43 +02:00
parent e9c49d0f70
commit 2e85c6ba34
5 changed files with 49 additions and 18 deletions

View File

@ -6,6 +6,15 @@
#include "efl_ui_spec_suite.h"
#include "suite_helpers.h"
/* spec-meta-start
{"test-interface":"Efl.Content",
"test-widgets": ["Efl.Ui.Button", "Efl.Ui.Frame", "Efl.Ui.Grid_Default_Item",
"Efl.Ui.List_Default_Item", "Efl.Ui.List_Empty_Item",
"Efl.Ui.Navigation_Layout", "Efl.Ui.Panel", "Efl.Ui.Progressbar",
"Efl.Ui.Radio", "Efl.Ui.Popup", "Efl.Ui.Tab_Page", "Efl.Ui.Scroller"]}
spec-meta-end */
EFL_START_TEST(content_set_get)
{
Efl_Ui_Widget *w = efl_add(WIDGET_CLASS, win);

View File

@ -6,6 +6,12 @@
#include "efl_ui_spec_suite.h"
#include "suite_helpers.h"
/* spec-meta-start
{"test-interface":"Efl.Pack",
"test-widgets": ["Efl.Ui.Table"]}
spec-meta-end */
/*
In general:
- If a subobject is deleted the box simply forgets about it. Never return this element again container.

View File

@ -7,6 +7,11 @@
#include "suite_helpers.h"
#include <limits.h>
/* spec-meta-start
{"test-interface":"Efl.Pack_Linear",
"test-widgets": ["Efl.Ui.Box"]}
spec-meta-end */
static void
_fill_array(Efl_Ui_Widget *wid[3])
{

View File

@ -1,14 +1,5 @@
#!/usr/bin/python
tests = [
["Efl.Pack_Linear" , "Efl.Ui.Box"],
["Efl.Pack" , "Efl.Ui.Table"],
["Efl.Content" , "Efl.Ui.Button", "Efl.Ui.Frame", "Efl.Ui.Grid_Default_Item",
"Efl.Ui.List_Default_Item", "Efl.Ui.List_Empty_Item",
"Efl.Ui.Navigation_Layout", "Efl.Ui.Panel", "Efl.Ui.Progressbar",
"Efl.Ui.Radio", "Efl.Ui.Popup", "Efl.Ui.Tab_Page", "Efl.Ui.Scroller"]
]
fixture_gen_template = """
static void
_{}_fixture(void)
@ -37,7 +28,10 @@ file_gen_template = """
"""
import sys
import json
output_file = sys.argv[-1]
input_files = sys.argv[1:-1]
list_of_tcases = "static const Efl_Test_Case etc[] = {\n"
list_entry = " {{ \"{}-{}\", {}}},\n"
generated_api = ""
@ -51,11 +45,23 @@ def to_func_name(class_name):
def to_class_getter(class_name):
return class_name.replace('.','_').upper()+'_CLASS'
tests = []
for input_file in input_files:
with open(input_file, 'r') as content_file:
content = content_file.read()
start = content.index('spec-meta-start') + len('spec-meta-start')
end = content.index('spec-meta-end')
resulting_json = content[start:end]
tmp = json.loads(resulting_json)
if "test-interface" in tmp and "test-widgets" in tmp:
tests.append(tmp)
widgets = []
for test in tests:
interface_test = to_func_name(test[0])
for widget_class in test[1:]:
interface_test = to_func_name(test["test-interface"])
for widget_class in test["test-widgets"]:
combo_name = "_{}_{}".format(to_func_name(interface_test), to_func_name(widget_class));
list_of_tcases += list_entry.format(interface_test, to_func_name(widget_class), combo_name)
generated_api += tcase_gen_template.format(combo_name, to_func_name(widget_class), interface_to_api(interface_test))
@ -67,5 +73,5 @@ for widget in widgets:
list_of_tcases += " { NULL, NULL }\n};"
output = open(sys.argv[1], "w")
output = open(output_file, "w")
output.write(file_gen_template.format(list_of_tcases, generated_api))

View File

@ -1,19 +1,24 @@
efl_ui_suite_behavior_src = [
efl_ui_suite_behavior_test_files = files([
'efl_test_pack.c',
'efl_test_pack_linear.c',
'efl_test_content.c',
])
efl_ui_suite_behavior_src = files([
join_paths('..','suite_helpers.c'),
join_paths('..','suite_helpers.h'),
join_paths('..','elm_test_init.c'),
'efl_ui_spec_suite.c',
'efl_test_pack.c',
'efl_test_pack_linear.c',
'efl_test_container.c',
'efl_test_content.c',
]
]) + efl_ui_suite_behavior_test_files
test_generator = find_program('generator.py')
generated_test_parts = custom_target('generate_test_suite',
input: efl_ui_suite_behavior_test_files,
output: 'efl_ui_spec_suite_gen.x',
command: [test_generator, '@OUTPUT@'],
command: [test_generator, '@INPUT@', '@OUTPUT@'],
)
efl_ui_behavior_suite = executable('efl_ui_spec_suite',