Skip to content

Commit b70b386

Browse files
committed
Add acceptance tests for RF metadata coming from handlers
Complements #40
1 parent 98c1110 commit b70b386

3 files changed

Lines changed: 58 additions & 7 deletions

File tree

tasks.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
import os
2+
13
from pathlib import Path
24
from platform import system
5+
from tempfile import mkstemp
6+
from textwrap import dedent
37

48
from invoke import run, task
59

@@ -48,18 +52,35 @@ def coverage(context):
4852
pty=(not system() == 'Windows'))
4953
run('coverage html')
5054

55+
def _setup_atest():
56+
_, tempconf = mkstemp()
57+
with open(tempconf, 'w') as f:
58+
f.write('''dummy_handler_metadata:
59+
handler: MyDummyMetadataHandler
60+
keyword: run_metadata_dummy_handler
61+
tags: oxygen-metadata''')
62+
return (tempconf,
63+
os.pathsep.join([str(SRCPATH),
64+
str(UNIT_TESTS / 'resources' / 'my_dummy_handlers')]))
65+
5166
@task(help={
5267
'rf': 'Additional command-line arguments for Robot Framework as '
5368
'single string. E.g: invoke atest --rf "--name my_suite"'
5469
})
5570
def atest(context, rf=''):
56-
run(f'robot '
57-
f'--pythonpath {str(SRCPATH)} '
58-
f'--dotted '
59-
f'{rf} '
60-
f'--listener oxygen.listener '
61-
f'{str(CURDIR / "tests" / "atest")}',
62-
pty=(not system() == 'Windows'))
71+
tempconf, pythonpath = _setup_atest()
72+
run(f'python -m oxygen --add-config {tempconf}',
73+
env={'PYTHONPATH': pythonpath})
74+
try:
75+
run(f'robot '
76+
f'--pythonpath {pythonpath} '
77+
f'--dotted '
78+
f'{rf} '
79+
f'--listener oxygen.listener '
80+
f'{str(CURDIR / "tests" / "atest")}',
81+
pty=(not system() == 'Windows'))
82+
finally:
83+
run('python -m oxygen --reset-config', env={'PYTHONPATH': pythonpath})
6384

6485
@task
6586
def test(context):

tests/atest/metadata.robot

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
*** Settings ***
2+
Library oxygen.OxygenLibrary
3+
Metadata RF suite This metadata comes from the suite file itself
4+
5+
*** Test Cases ***
6+
Metadata returned by handler should be visible
7+
[Documentation] This test is replaced with fix results that have metadata in them
8+
Run Metadata Dummy Handler doesentmatter
9+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from oxygen import BaseHandler
2+
3+
class MyDummyMetadataHandler(BaseHandler):
4+
def run_metadata_dummy_handler(self, result_file):
5+
return result_file
6+
7+
def parse_results(self, result_file):
8+
return {
9+
'name': 'Minimal Suite',
10+
'metadata': {
11+
'Main-level metadata': 'This should come *from handler*'
12+
},
13+
'suites': [{
14+
'name': 'Minimal Subsuite',
15+
'metadata': { 'Sub-level metadata': '_Inner_ metadata' },
16+
'tests': [{
17+
'name': 'Minimal TC',
18+
'keywords': [{ 'name': 'someKeyword', 'pass': True }]
19+
}]
20+
}]
21+
}

0 commit comments

Comments
 (0)