Skip to content

[pull] master from robotframework:master #145

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1,499 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1499 commits
Select commit Hold shift + click to select a range
6d0c6a4
Initiallize `TypeConverter.languages` only when needed.
pekkaklarck Nov 5, 2024
9d93b7d
Make initializing `Languages` without arguments faster.
pekkaklarck Nov 5, 2024
843bebd
Document where JS files creted by `--splitlog` are saved
pekkaklarck Nov 6, 2024
f21f70e
Fix exit-on-failure with skip-on-failure if suite setup fails
pekkaklarck Nov 6, 2024
1fda956
Read per-file language config from whole `Language:` line
pekkaklarck Nov 6, 2024
e9e75b7
UG: Separate section for templates with multiple iterations
pekkaklarck Nov 6, 2024
d3e6c68
Minor cleanup to docs, remove trailing spaces
pekkaklarck Nov 7, 2024
273c17c
Minor cleanup
pekkaklarck Nov 7, 2024
6fec209
Clenup tests
pekkaklarck Nov 7, 2024
5594d7f
Yield bytes if variables containing bytes are concatenated.
pekkaklarck Nov 7, 2024
f913d46
Fix string representation of bytes.
pekkaklarck Nov 8, 2024
6a61e79
Run all iterations with templated tests even if one is skipped
olesz Nov 11, 2024
930c02d
Collections: Add `ignore_value_order` to dictionary comparison keywor…
MarcinGmurczyk Nov 11, 2024
fc31e51
Small test cleanup related to PR #5244 and issue #4426.
pekkaklarck Nov 11, 2024
a2ef4ad
Enhance docs related to templates with multiple iterations.
pekkaklarck Nov 11, 2024
83f3e0f
Fix using logging APIs when Robot is run on thread.
pekkaklarck Nov 12, 2024
a1bd3fe
Remove installation of tools that shouldn't be needed anymore.
pekkaklarck Nov 12, 2024
124befb
Remove installation of tools that aren't needed anymore.
pekkaklarck Nov 12, 2024
576498e
Update Python versions used for acceptange tests.
pekkaklarck Nov 12, 2024
8f9ba4f
Remove --help line related to --critical.
pekkaklarck Nov 13, 2024
1690106
Enhance messages related to skipping based on tags.
pekkaklarck Nov 13, 2024
6f58c00
Don't update test status if keyword status is `NOT RUN`.
pekkaklarck Nov 13, 2024
63f96c4
Refactor. Use local `get` method consistently.
pekkaklarck Nov 15, 2024
5b57d60
Allow proper logging from `start/end_test` listener methods.
pekkaklarck Nov 15, 2024
400610b
Fix type of the messages created during execution.
pekkaklarck Nov 15, 2024
82d8517
Notify listeners also about actions they initiate.
pekkaklarck Nov 15, 2024
50b6bd8
Fix recreating control structure results containing messages from JSON
pekkaklarck Nov 16, 2024
778f501
Add logged messages to result model created during execution.
pekkaklarck Nov 16, 2024
79d06e8
Windows test fix
pekkaklarck Nov 18, 2024
218d426
Enhance recursion detection.
pekkaklarck Nov 19, 2024
f1251c6
Rename files
pekkaklarck Nov 20, 2024
d1a9159
Test and document raising recursion limit with sys.setrecursionlimit.
pekkaklarck Nov 21, 2024
7bbda9a
Fixes to $var recommendation.
pekkaklarck Nov 21, 2024
07a36d8
Restore root logging level (#5265)
theodore86 Nov 21, 2024
638fcb5
Cleanup
pekkaklarck Nov 25, 2024
45311b9
Document return codes in --help.
pekkaklarck Nov 25, 2024
583a288
Support argument conversion with `Should Be Equal`.
pekkaklarck Nov 25, 2024
7e6d2bb
Explicitly prevent templates with WHILE.
pekkaklarck Nov 26, 2024
5db65d5
Fix template + FOR + SKIP combination.
pekkaklarck Nov 26, 2024
c8fd259
Add direct body item access to model used in tests
Snooz82 Nov 28, 2024
aeeafda
Remova `kws` and `msgs` from test model.
pekkaklarck Nov 29, 2024
ffb71a0
Add missing return type
pekkaklarck Nov 29, 2024
61004e3
Add `keywords`, `messages` and `non_messages` to test result model.
pekkaklarck Nov 30, 2024
54ab845
Refactor handling internal and external log levels.
pekkaklarck Dec 2, 2024
44ba50c
Move logic from `XmlLogger` to higher level.
pekkaklarck Dec 2, 2024
1c8a376
Refactor
pekkaklarck Dec 2, 2024
d54e78b
Rename `XmlLoggerAdapter` to `OutputFile`.
pekkaklarck Dec 2, 2024
4bdb320
Refactor
pekkaklarck Dec 4, 2024
5f6bc64
Add suite and test `id` to JSON result model.
pekkaklarck Dec 4, 2024
71832ef
Add `type` to `TestSuite` and `TestCase`.
pekkaklarck Dec 9, 2024
f3e72ef
Fix `Message.id` if parent has no `messages`.
pekkaklarck Dec 9, 2024
9f20e27
Make sure all `Body` subclasses have `__slots__`.
pekkaklarck Dec 9, 2024
733a649
Unit test fix for Python 3.13
pekkaklarck Dec 9, 2024
10a6b41
Fix lineno of keywords executed by Run Keyword in dry-run
pekkaklarck Dec 9, 2024
96229fe
Fix status of library keywords that are executed in dry-run
pekkaklarck Dec 10, 2024
aab6f59
Cleanup. Don't reuse local variable name.
pekkaklarck Dec 10, 2024
ed69131
Refactor
pekkaklarck Dec 10, 2024
3079a91
Fixes for `--tagdoc`.
pekkaklarck Dec 10, 2024
6d5b35f
libdoc: support setting default language
yanne Dec 12, 2024
79aa05b
remove css hack, it caused other issues
yanne Dec 12, 2024
1afe6fe
libdoc: cmd line for setting default lang
yanne Dec 12, 2024
ce72e7a
libdoc: validate cmd line arg
yanne Dec 12, 2024
20d26c5
web/libdoc: fix translation keys
yanne Dec 12, 2024
0bb1fdd
libdoc: add language selector icon
yanne Dec 12, 2024
d523cef
libdoc: regen template
yanne Dec 12, 2024
aa296d3
libdoc: a css hack to fix multi-line pre blocks
yanne Dec 12, 2024
64c9cf2
libdoc: regen template
yanne Dec 12, 2024
0022d84
Support JSON output files as part of execution (#3423)
pekkaklarck Dec 12, 2024
95c9aa0
libdoc docs: remove references to RF 4.0
yanne Dec 12, 2024
17f7de0
ug: docs for libdoc option
yanne Dec 12, 2024
3a53c11
add test for libdoc --language cli option
yanne Dec 12, 2024
728d75b
remove accidentally committed file
yanne Dec 13, 2024
e5cee95
libdoc: improve typing
yanne Dec 13, 2024
b0c1923
Add GROUP syntax (PR #5275, issue #5257)
Snooz82 Dec 13, 2024
46acc7b
Make body optional in result JSON schema
pekkaklarck Dec 13, 2024
41879c0
refactor
pekkaklarck Dec 13, 2024
b18af40
Refactor setting rpa mode for JSON results
pekkaklarck Dec 13, 2024
f4bfc13
Do not report errors if GROUP (#5257) is not run.
pekkaklarck Dec 14, 2024
bf7bd99
Always verify message with Check Body Item Data
pekkaklarck Dec 14, 2024
ca04062
Add template support for GROUP (#5257)
pekkaklarck Dec 14, 2024
0bbb344
Fix link targets and use VAR instead of Set Variable.
pekkaklarck Dec 14, 2024
2aba0a3
Document GROUP syntax (#5257)
pekkaklarck Dec 14, 2024
6a0f3dd
Add GROUP support to JsonLogger.
pekkaklarck Dec 15, 2024
17a975a
Cleanup
pekkaklarck Dec 16, 2024
af1b306
Support variables with reserved tags consistently.
pekkaklarck Dec 16, 2024
c28525f
Enhance GROUP (#5257) docs
pekkaklarck Dec 16, 2024
5c4fad6
Fix duplicate test name detection if name contains variable
pekkaklarck Dec 16, 2024
15466a8
Add test data file that tries to cover all syntax.
pekkaklarck Dec 16, 2024
cd1d6e0
Make GROUP name optional in JSON schema
pekkaklarck Dec 16, 2024
80e5fdb
Add typing to TestCheckerLibrary.process_output.
pekkaklarck Dec 16, 2024
aa295c3
Acceptance tests for JSON output during execution (#3423)
pekkaklarck Dec 16, 2024
8294006
Enhance GROUP (#5257) docs
pekkaklarck Dec 16, 2024
7c8c25b
Allow `<kw>` under `<error>` in output.xml.
pekkaklarck Dec 17, 2024
fa88f6b
Fix `Result.generation_time` with JSON outputs (#5160)
pekkaklarck Dec 17, 2024
b598d2a
Align test data
pekkaklarck Dec 17, 2024
029aab5
Handle logging and keyword running listeners with JSON output.
pekkaklarck Dec 17, 2024
65d14d9
Restore `LOGGING_THREADS` constant.
pekkaklarck Dec 18, 2024
e4b1679
Enhance (and test) writing stats with JsonLogger (#3423)
pekkaklarck Dec 18, 2024
270d2e0
Refactor
pekkaklarck Dec 18, 2024
5d6d132
Document JSON output during execution (#3423)
pekkaklarck Dec 18, 2024
89b9d2d
Refactor, enhance doc
pekkaklarck Dec 18, 2024
1f8cb09
libdoc: document how to add translations
yanne Dec 18, 2024
636d606
Enhance wording
pekkaklarck Dec 18, 2024
fa45fb3
Release notes for 7.2b1
pekkaklarck Dec 18, 2024
8e4dd16
Updated version to 7.2b1
pekkaklarck Dec 18, 2024
60cbc68
Back to dev version
pekkaklarck Dec 18, 2024
ff09a46
libdoc: convert readme to markdown
yanne Dec 19, 2024
bfb3d24
BUILD.rst: add libdoc build step
yanne Dec 19, 2024
5d02454
Change source distro format from zip to tag.gz.
pekkaklarck Dec 20, 2024
d08fffe
Simplify libdoc.html building instructions
pekkaklarck Dec 20, 2024
66e84f4
Use FOR/WHILE instead of for/while consistently.
pekkaklarck Dec 30, 2024
757cd46
Update not done TODOs.
pekkaklarck Dec 30, 2024
41d0ea5
Move JsonDumper and JsonLoader to utils.
pekkaklarck Dec 30, 2024
5ec9866
Add newline at end of file
pekkaklarck Dec 30, 2024
cad97af
Release notes for 7.2rc1
pekkaklarck Dec 30, 2024
68fd9b7
Add planned final release date
pekkaklarck Dec 31, 2024
37ce04c
Updated version to 7.2rc1
pekkaklarck Dec 31, 2024
39ed9ee
Back to dev version
pekkaklarck Dec 31, 2024
1dc85f7
added Dutch Libdoc translation
leeuwe Jan 2, 2025
ff31845
add french language to libdoc
hassineabd Jan 6, 2025
ebb7bbf
Fix confusing error message when rebot with empty suite results (#5307)
jnhyperion Jan 10, 2025
2390ac6
Fix doc bug and enhance wording. Fixes #5309.
pekkaklarck Jan 8, 2025
b66f911
Enhance example
pekkaklarck Jan 9, 2025
c1208db
Add test for Rebot when output contains no tests.
pekkaklarck Jan 10, 2025
eeecdbd
Add Portuguese to libdoc translations (pt-PT and pt-BR)
HelioGuilherme66 Dec 31, 2024
38b3496
Minor update, PT
HelioGuilherme66 Jan 11, 2025
06fafc4
Update PT-BR translation
HelioGuilherme66 Jan 13, 2025
8c4ee0f
regen libdoc template
yanne Jan 13, 2025
63f0afd
Merge branch 'master' into added_french_language_to_libdoc
yanne Jan 13, 2025
dd625a7
Merge pull request #5308 from hassineabd/added_french_language_to_libdoc
yanne Jan 13, 2025
401843f
regen libdoc template
yanne Jan 13, 2025
e3ab0a6
Update translations.json
leeuwe Jan 14, 2025
3071538
Merge branch 'master' into master
leeuwe Jan 14, 2025
30c26db
Merge pull request #5303 from leeuwe/master
yanne Jan 14, 2025
ca71e5b
sort translations alphabetically by lang code
yanne Jan 14, 2025
f976fd0
regen libdoc template
yanne Jan 14, 2025
f28eb4d
fix typoes in translations
yanne Jan 14, 2025
40f799d
regen libdoc template
yanne Jan 14, 2025
d506088
Release notes for 7.2
pekkaklarck Jan 14, 2025
764bb44
Updated version to 7.2
pekkaklarck Jan 14, 2025
9863516
Back to dev version
pekkaklarck Jan 14, 2025
1c7708e
Fix elapsed time when merging results. Fixes #5058.
pekkaklarck Jan 24, 2025
5775a08
Fix crash with templates using skip.
pekkaklarck Jan 27, 2025
b205cef
Try to fix flakey test
pekkaklarck Jan 28, 2025
eb03b40
Fix `Lists Should Be Equal` with `ignore_order` and `ignore_case`
m-usmani Jan 28, 2025
b6eb47a
Make AddMessagesToTestBody.py listener reusable in tests
pekkaklarck Jan 28, 2025
834edff
Fix `--removekeyword PASSED/ALL` if test has messages in body
pekkaklarck Jan 28, 2025
dfad2f6
Bump actions/setup-python from 5.3.0 to 5.4.0 (#5327)
dependabot[bot] Jan 28, 2025
87199af
consistent case for translations
yanne Jan 27, 2025
7e4a6b9
update known languages for libdoc
yanne Jan 29, 2025
f908c7d
allow default language be case insensitive
yanne Jan 29, 2025
02d96ee
regen libdoc template
yanne Jan 29, 2025
8db4a86
mobile styles for lang container
yanne Feb 4, 2025
5a6c13d
`is_string(x)` -> `isinstance(x, str)`
pekkaklarck Feb 6, 2025
5fadd14
Explicit pathlib.Path support to utils.normpath.
pekkaklarck Feb 6, 2025
9baff1c
Remove unnecessary `^` and `$` from regexp pattern.
pekkaklarck Feb 6, 2025
8e94a8f
Explain backwards compatibility issues caused by #5266
pekkaklarck Feb 6, 2025
5b9e132
Fix unit test logic bug affecting Windows
pekkaklarck Feb 6, 2025
13d016a
Fix test using JSON to actually use JSON
pekkaklarck Feb 6, 2025
5f23f96
Don't log if listener sets variable and no keyword is started.
pekkaklarck Feb 6, 2025
02448ed
Fix schema validation if output is JSON, not XML.
pekkaklarck Feb 7, 2025
56db4af
Add crossreferences to release notes.
pekkaklarck Feb 7, 2025
1ad191f
Release notes for 7.2.1
pekkaklarck Feb 7, 2025
6db8f0f
Updated version to 7.2.1
pekkaklarck Feb 7, 2025
872e42c
Back to dev version
pekkaklarck Feb 7, 2025
27e1e28
regen libdoc template
yanne Feb 7, 2025
0bf86a5
Release notes for 7.2
pekkaklarck Feb 7, 2025
e80b8ab
Updated version to 7.2
pekkaklarck Feb 7, 2025
a7e511a
Release notes for 7.2.2
pekkaklarck Feb 7, 2025
8858c13
Updated version to 7.2.2
pekkaklarck Feb 7, 2025
aeaa3b6
Back to dev version
pekkaklarck Feb 7, 2025
71a6610
added Italian Libdoc translation
LucianCrainic Feb 17, 2025
c78108e
Refactor.
pekkaklarck Mar 3, 2025
11123df
Fix typing
pekkaklarck Mar 3, 2025
2644028
Make jsonschema optional in tests.
pekkaklarck Mar 6, 2025
e13ed40
Let's get started with RF 7.3 development!
pekkaklarck Mar 7, 2025
341ae48
Update French BDD prefixes
orenault Mar 7, 2025
d57fee9
Fix line length
pekkaklarck Mar 7, 2025
4fb3f0f
Test that BDD prefixes are sorted by length
pekkaklarck Mar 7, 2025
0d26309
cleanup
pekkaklarck Mar 7, 2025
f2f2f99
Process: Use communicate(), not wait(), to avoid deadlock.
pekkaklarck Mar 11, 2025
5b0bf28
Remove duplicate tests.
pekkaklarck Mar 11, 2025
7971c84
Shorter timeout to make tests faster
pekkaklarck Mar 11, 2025
9550ac2
Process: Support Robot's timeouts also on Windows.
pekkaklarck Mar 11, 2025
2113498
Update code to use newer subprocess features.
pekkaklarck Mar 11, 2025
1d56361
Add info to ease debugging PyPy failure on CI
pekkaklarck Mar 12, 2025
3688436
Exclude test on PyPy due to it failing on CI.
pekkaklarck Mar 13, 2025
98af479
Use `get_args/origin` instead of accessing `__args/origin__`.
pekkaklarck Mar 19, 2025
cca331c
Test for deferred evaluation of annotations in library.
pekkaklarck Mar 20, 2025
c1a3ba6
Enhance docs related to output redirection.
pekkaklarck Mar 20, 2025
2b9f0c7
Process: Kill waited process if Robot's timeout is exceeded.
pekkaklarck Mar 21, 2025
0fa6a8c
Fix typos in 7.2 release notes (tag.gz => tar.gz) (#5374)
kkotenko Mar 21, 2025
843bd64
micro optimization
pekkaklarck Mar 21, 2025
9b2cc4d
Dialogs: Add padding and increase font size.
pekkaklarck Mar 24, 2025
19b28c5
Enhance typing
pekkaklarck Mar 24, 2025
b32ec40
tkinter import cleanup
pekkaklarck Mar 24, 2025
b2fc7aa
Bundle Robot logo with the distribution.
pekkaklarck Mar 25, 2025
3e12478
Add application and taskbar icons to Dialogs.
pekkaklarck Mar 25, 2025
4cce0e9
Remove unnecessary is_truthy usage.
pekkaklarck Mar 26, 2025
cd87c47
Test cleanup.
pekkaklarck Mar 26, 2025
57fe7f5
Dialogs: Support exit by timeouts, signals and Ctrl-C.
pekkaklarck Mar 26, 2025
7a0841e
Process: Don't log timeout type because its unreliable.
pekkaklarck Mar 26, 2025
c161955
Cleanup code related to raising a TimeoutError on Windows.
pekkaklarck Mar 26, 2025
ffa840f
Dialogs: Activate default selection.
pekkaklarck Mar 26, 2025
702ed47
Refactor.
pekkaklarck Mar 26, 2025
29aebea
Fix creash with __dir__ and dynamic attributes.
pekkaklarck Mar 27, 2025
b16eec6
Fix setup/teardown using embedded args with non-string values.
pekkaklarck Mar 27, 2025
a1df52d
Add Arabic localization (#5359)
hassineabd Mar 28, 2025
9490305
Merge pull request #5342 from LucianCrainic/master
yanne Mar 31, 2025
5be76d4
libdoc: support for italian
yanne Mar 31, 2025
fa0b408
libdoc: render TypedDict structure correctly
yanne Mar 31, 2025
8c5a185
libdoc: hack for typed dict example rendering
yanne Mar 31, 2025
71e586f
assert -> assert_equal() to get better reporting
pekkaklarck Mar 31, 2025
a68f1d5
Refector handling nested TypeConverters
pekkaklarck Mar 31, 2025
1ecf76f
libdoc: add languages file for help&validation
yanne Apr 2, 2025
219a760
add invoke task to resolve supported libdoc langs
yanne Apr 2, 2025
7d55c93
TypeInfo: Make handling unknown converters configurable.
pekkaklarck Apr 2, 2025
1a8f4c6
Refactor TypeConverter.no_conversion_needed.
pekkaklarck Apr 2, 2025
417188a
libdoc: review fixes
yanne Apr 2, 2025
e3781ab
Fix problems using embedded arguments with variables.
pekkaklarck Apr 4, 2025
dcb3861
Cleanup.
pekkaklarck Apr 4, 2025
4779fb9
Respect current log level also when timeouts are active.
pekkaklarck Apr 4, 2025
65c0766
Merge pull request #5391 from robotframework/feat/libdoc-dynamic-lang…
yanne Apr 4, 2025
20bcb00
regen
pekkaklarck Apr 4, 2025
a5710cc
Add `${OPTIONS.rpa}`. Fixes #5397.
pekkaklarck Apr 4, 2025
e2bd2bb
Document issues using variables with custom embedded arg regexps
pekkaklarck Apr 4, 2025
40721f9
Rename TimeoutError to TimeoutExceeded.
pekkaklarck Apr 4, 2025
29177a3
Document how libraries can handle Robot timeouts
pekkaklarck Apr 4, 2025
13e513e
libdoc: fix language validation
yanne Apr 5, 2025
644cedc
Fix handling paremeterized special forms as type hints
pekkaklarck Apr 6, 2025
c83b63a
Fix string repr of parameterized special forms.
pekkaklarck Apr 7, 2025
c040b04
Validate variable assignment during parsing.
pekkaklarck Apr 7, 2025
1c86665
libdoc: fix rendering of <pre> blocks in docs
yanne Apr 7, 2025
fcffa3c
Micro optimization, f-strings
pekkaklarck Apr 10, 2025
13f14a7
rm unused import
pekkaklarck Apr 10, 2025
18fa4a2
search_variable: support parsing type information
pekkaklarck Apr 11, 2025
24d682a
Fix TEST scope variables on suite level.
pekkaklarck Apr 11, 2025
b36c723
Fix error calling user keyword with invalid arg spec
pekkaklarck Apr 15, 2025
c738a2a
Make time strings like `1s 2s` invalid.
pekkaklarck Apr 17, 2025
7db37a3
Use custom lib, not Process, in Libdoc tests
pekkaklarck Apr 24, 2025
4c8f33e
Update keywords to use named-only args instead of **config
pekkaklarck Apr 24, 2025
3a57fd1
Variable type conversion (#5379)
aaltat Apr 25, 2025
26eb4b1
Refactor varible conversion.
pekkaklarck Apr 25, 2025
4c7b0b6
Test data cleanup
pekkaklarck Apr 26, 2025
4648515
Add explicit package APIs.
pekkaklarck Apr 27, 2025
7e89170
Deprecate `robot.utils.ET`.
pekkaklarck Apr 27, 2025
e1f378d
Remove side-effects from `pythonpathsetter` import
pekkaklarck Apr 27, 2025
c4060d5
Deprecate is_string, is_bytes, is_number, is_integer and is_pathlike
pekkaklarck Apr 27, 2025
4f3dd96
Avoid bare `except:`
pekkaklarck Apr 27, 2025
e96e62a
Deprecate RERAISED_EXCEPTIONS.
pekkaklarck Apr 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
104 changes: 44 additions & 60 deletions .github/workflows/acceptance_tests_cpython.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches:
- main
- master
- v*-maintenance
paths:
- '.github/workflows/**'
- 'src/**'
Expand All @@ -18,30 +19,26 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest', 'windows-latest' ]
python-version: [ '3.6', '3.7', '3.8', '3.9', 'pypy3' ]
python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.10' ]
include:
- os: ubuntu-latest
set_display: export DISPLAY=:99; Xvfb :99 -screen 0 1024x768x24 -ac -noreset & sleep 3
- os: windows-latest
set_codepage: chcp 850
- os: windows-latest
python-version: '3.9'
set_codepage: chcp 850
atest_args: --exclude require-lxml --exclude require-screenshot
exclude:
- os: windows-latest
python-version: 'pypy3'
python-version: 'pypy-3.10'

runs-on: ${{ matrix.os }}

name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Setup python for starting the tests
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v5.4.0
with:
python-version: 3.6
python-version: '3.13'
architecture: 'x64'

- name: Get test starter Python at Windows
Expand All @@ -53,7 +50,7 @@ jobs:
if: runner.os != 'Windows'

- name: Setup python ${{ matrix.python-version }} for running the tests
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v5.4.0
with:
python-version: ${{ matrix.python-version }}
architecture: 'x64'
Expand All @@ -66,22 +63,16 @@ jobs:
run: echo "BASE_PYTHON=$(which python)" >> $GITHUB_ENV
if: runner.os != 'Windows'

- name: Install Report handling tools to Windows
run: |
choco install curl -y --no-progress
choco install zip -y --no-progress
if: runner.os == 'Windows'

- name: Install Ubuntu PyPy dependencies
run: |
sudo apt-get update
sudo apt-get -y -q install libxslt-dev libxml2-dev
if: contains(matrix.python-version, 'pypy') && contains(matrix.os, 'ubuntu')

- name: Install screen and report handling tools, and other required libraries to Linux
- name: Install screen and other required libraries to Linux
run: |
sudo apt-get update
sudo apt-get -y -q install xvfb scrot zip curl libxml2-dev libxslt1-dev
sudo apt-get -y -q install xvfb scrot libxml2-dev libxslt1-dev
if: contains(matrix.os, 'ubuntu')

- name: Run acceptance tests
Expand All @@ -92,52 +83,45 @@ jobs:
${{ matrix.set_display }}
${{ env.ATEST_PYTHON }} atest/run.py --interpreter ${{ env.BASE_PYTHON }} --exclude no-ci ${{ matrix.atest_args }} atest/robot

- name: Delete output.xml (on Win)
run: |
Get-ChildItem atest/results -Include output.xml -Recurse | Remove-Item
if: always() && runner.os == 'Windows'

- name: Delete output.xml (on Unix-like)
run: |
find atest/results -type f -name 'output.xml' -exec rm {} +
if: always() && runner.os != 'Windows'

- name: Archive acceptances test results
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: at-results-${{ matrix.python-version }}-${{ matrix.os }}
path: atest/results
if: always() && job.status == 'failure'

- name: Upload results on *nix
run: |
echo '<html><head><meta http-equiv = "refresh" content =" 0 ; url = /report.html"></head></html>' > atest/results/index.html
zip -r -j site.zip atest/results > no_output 2>&1
curl -s -H "Content-Type: application/zip" -H "Authorization: Bearer ${{ secrets.NETLIFY_TOKEN }}" --data-binary "@site.zip" https://api.netlify.com/api/v1/sites > response.json
echo "REPORT_URL=$(cat response.json|python -c "import sys, json; print('https://' + json.load(sys.stdin)['subdomain'] + '.netlify.com')")" >> $GITHUB_ENV
echo "JOB_STATUS=$(python -c "print('${{ job.status }}'.lower())")" >> $GITHUB_ENV
if: always() && job.status == 'failure' && runner.os != 'Windows'

- name: Upload results on Windows
run: |
echo '<html><head><meta http-equiv = "refresh" content =" 0 ; url = /report.html"></head></html>' > atest/results/index.html
zip -r -j site.zip atest/results > no_output 2>&1
curl -s -H "Content-Type: application/zip" -H "Authorization: Bearer ${{ secrets.NETLIFY_TOKEN }}" --data-binary "@site.zip" https://api.netlify.com/api/v1/sites > response.json
echo "REPORT_URL=$(cat response.json|python -c "import sys, json; print('https://' + json.load(sys.stdin)['subdomain'] + '.netlify.com')")" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "JOB_STATUS=$(python -c "print('${{ job.status }}'.lower())")" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
if: always() && job.status == 'failure' && runner.os == 'Windows'

- uses: octokit/request-action@971ad48f9c40ed001c41c2671b1e6e8e8165d5af
name: Update status with Github Status API
id: update_status
with:
route: POST /repos/:repository/statuses/:sha
repository: ${{ github.repository }}
sha: ${{ github.sha }}
state: "${{env.JOB_STATUS}}"
target_url: "${{env.REPORT_URL}}"
description: "Link to test report."
context: at-results-${{ matrix.python-version }}-${{ matrix.os }}
- name: Install and run rflogs
if: failure()
env:
GITHUB_TOKEN: ${{ secrets.STATUS_UPLOAD_TOKEN }}
if: always() && job.status == 'failure'
RFLOGS_API_KEY: ${{ secrets.RFLOGS_API_KEY }}
working-directory: atest/results
shell: python
run: |
import os
import glob
import subprocess

# Install rflogs
subprocess.check_call(["pip", "install", "rflogs"])

# Find the first directory containing log.html
log_files = glob.glob("**/log.html", recursive=True)
if log_files:
result_dir = os.path.dirname(log_files[0])
print(f"Result directory: {result_dir}")

# Construct the rflogs command
cmd = [
"rflogs", "upload",
"--tag", f"workflow:${{ github.workflow }}",
"--tag", f"os:${{ runner.os }}",
"--tag", f"python-version:${{ matrix.python-version }}",
"--tag", f"branch:${{ github.head_ref || github.ref_name }}",
result_dir
]

# Run rflogs upload
subprocess.check_call(cmd)
else:
print("No directory containing log.html found")
exit(1)
114 changes: 43 additions & 71 deletions .github/workflows/acceptance_tests_cpython_pr.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Acceptance tests (CPython + PyPy)
name: Acceptance tests (CPython)

on:
pull_request:
Expand All @@ -15,32 +15,23 @@ jobs:
fail-fast: true
matrix:
os: [ 'ubuntu-latest', 'windows-latest' ]
python-version: [ '3.6', '3.9' ]
python-version: [ '3.8', '3.13' ]
include:
- os: ubuntu-latest
set_display: export DISPLAY=:99; Xvfb :99 -screen 0 1024x768x24 -ac -noreset & sleep 3
- os: windows-latest
set_codepage: chcp 850
- os: windows-latest
python-version: '3.9'
set_codepage: chcp 850
atest_args: --exclude require-lxml --exclude require-screenshot
exclude:
- os: windows-latest
python-version: 'pypy2'
- os: windows-latest
python-version: 'pypy3'

runs-on: ${{ matrix.os }}

name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Setup python for starting the tests
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v5.4.0
with:
python-version: 3.6
python-version: '3.13'
architecture: 'x64'

- name: Get test starter Python at Windows
Expand All @@ -52,7 +43,7 @@ jobs:
if: runner.os != 'Windows'

- name: Setup python ${{ matrix.python-version }} for running the tests
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v5.4.0
with:
python-version: ${{ matrix.python-version }}
architecture: 'x64'
Expand All @@ -65,22 +56,10 @@ jobs:
run: echo "BASE_PYTHON=$(which python)" >> $GITHUB_ENV
if: runner.os != 'Windows'

- name: Install Report handling tools to Windows
run: |
choco install curl -y --no-progress
choco install zip -y --no-progress
if: runner.os == 'Windows'

- name: Install Ubuntu PyPy dependencies
run: |
sudo apt-get update
sudo apt-get -y -q install libxslt-dev libxml2-dev
if: contains(matrix.python-version, 'pypy') && contains(matrix.os, 'ubuntu')

- name: Install screen and report handling tools, and other required libraries to Linux
- name: Install screen and other required libraries to Linux
run: |
sudo apt-get update
sudo apt-get -y -q install xvfb scrot zip curl libxml2-dev libxslt1-dev
sudo apt-get -y -q install xvfb scrot libxml2-dev libxslt1-dev
if: contains(matrix.os, 'ubuntu')

- name: Run acceptance tests
Expand All @@ -91,52 +70,45 @@ jobs:
${{ matrix.set_display }}
${{ env.ATEST_PYTHON }} atest/run.py --interpreter ${{ env.BASE_PYTHON }} --exclude no-ci ${{ matrix.atest_args }} atest/robot

- name: Delete output.xml (on Win)
run: |
Get-ChildItem atest/results -Include output.xml -Recurse | Remove-Item
if: always() && runner.os == 'Windows'

- name: Delete output.xml (on Unix-like)
run: |
find atest/results -type f -name 'output.xml' -exec rm {} +
if: always() && runner.os != 'Windows'

- name: Archive acceptances test results
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: at-results-${{ matrix.python-version }}-${{ matrix.os }}
path: atest/results
if: always() && job.status == 'failure'

- name: Upload results on *nix
run: |
echo '<html><head><meta http-equiv = "refresh" content =" 0 ; url = /report.html"></head></html>' > atest/results/index.html
zip -r -j site.zip atest/results > no_output 2>&1
curl -s -H "Content-Type: application/zip" -H "Authorization: Bearer ${{ secrets.NETLIFY_TOKEN }}" --data-binary "@site.zip" https://api.netlify.com/api/v1/sites > response.json
echo "REPORT_URL=$(cat response.json|python -c "import sys, json; print('https://' + json.load(sys.stdin)['subdomain'] + '.netlify.com')")" >> $GITHUB_ENV
echo "JOB_STATUS=$(python -c "print('${{ job.status }}'.lower())")" >> $GITHUB_ENV
if: always() && job.status == 'failure' && runner.os != 'Windows'

- name: Upload results on Windows
run: |
echo '<html><head><meta http-equiv = "refresh" content =" 0 ; url = /report.html"></head></html>' > atest/results/index.html
zip -r -j site.zip atest/results > no_output 2>&1
curl -s -H "Content-Type: application/zip" -H "Authorization: Bearer ${{ secrets.NETLIFY_TOKEN }}" --data-binary "@site.zip" https://api.netlify.com/api/v1/sites > response.json
echo "REPORT_URL=$(cat response.json|python -c "import sys, json; print('https://' + json.load(sys.stdin)['subdomain'] + '.netlify.com')")" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "JOB_STATUS=$(python -c "print('${{ job.status }}'.lower())")" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
if: always() && job.status == 'failure' && runner.os == 'Windows'

- uses: octokit/request-action@971ad48f9c40ed001c41c2671b1e6e8e8165d5af
name: Update status with Github Status API
id: update_status
with:
route: POST /repos/:repository/statuses/:sha
repository: ${{ github.repository }}
sha: ${{ github.sha }}
state: "${{env.JOB_STATUS}}"
target_url: "${{env.REPORT_URL}}"
description: "Link to test report."
context: at-results-${{ matrix.python-version }}-${{ matrix.os }}
- name: Install and run rflogs
if: failure()
env:
GITHUB_TOKEN: ${{ secrets.STATUS_UPLOAD_TOKEN }}
if: always() && job.status == 'failure'
RFLOGS_API_KEY: ${{ secrets.RFLOGS_API_KEY }}
working-directory: atest/results
shell: python
run: |
import os
import glob
import subprocess

# Install rflogs
subprocess.check_call(["pip", "install", "rflogs"])

# Find the first directory containing log.html
log_files = glob.glob("**/log.html", recursive=True)
if log_files:
result_dir = os.path.dirname(log_files[0])
print(f"Result directory: {result_dir}")

# Construct the rflogs command
cmd = [
"rflogs", "upload",
"--tag", f"workflow:${{ github.workflow }}",
"--tag", f"os:${{ runner.os }}",
"--tag", f"python-version:${{ matrix.python-version }}",
"--tag", f"branch:${{ github.head_ref || github.ref_name }}",
result_dir
]

# Run rflogs upload
subprocess.check_call(cmd)
else:
print("No directory containing log.html found")
exit(1)
24 changes: 7 additions & 17 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
branches:
- main
- master
- v*-maintenance
paths:
- '.github/workflows/**'
- 'src/**'
Expand All @@ -19,35 +20,24 @@ jobs:
fail-fast: false
matrix:
os: [ 'ubuntu-latest', 'windows-latest' ]
python-version: [ '3.6', '3.7', '3.8', '3.9', 'pypy3' ]
python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.8' ]
exclude:
- os: windows-latest
python-version: 'pypy3'
python-version: 'pypy-3.8'

runs-on: ${{ matrix.os }}

name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Setup python ${{ matrix.python-version }}
uses: actions/setup-python@v3.1.2
uses: actions/setup-python@v5.4.0
with:
python-version: ${{ matrix.python-version }}
architecture: 'x64'

- name: Run unit tests with coverage
- name: Run unit tests
run: |
python -m pip install coverage
python -m pip install -r utest/requirements.txt
python -m coverage run --branch utest/run.py -v

- name: Prepare HTML/XML coverage report
run: |
python -m coverage xml -i
if: always()

- uses: codecov/codecov-action@e3c560433a6cc60aec8812599b7844a7b4fa0d71
with:
name: ${{ matrix.python-version }}-${{ matrix.os }}
if: always()
python utest/run.py -v
Loading