Skip to content

[pull] master from robotframework:master #145

New issue

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

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

Already on GitHub? # to your account

Open
wants to merge 1,600 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1600 commits
Select commit Hold shift + click to select a range
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
afeb105
Fix for delaying logging with timeouts.
pekkaklarck Apr 30, 2025
eb3fb3c
DateTime: Fix epoch secs close to the epoch on Windows
pekkaklarck Apr 30, 2025
d2cdcfa
Code formatting.
pekkaklarck Apr 30, 2025
25ad533
Bump base-x in /src/web in the npm_and_yarn group across 1 directory
dependabot[bot] Apr 30, 2025
cf4c12c
Add .git-blame-ignore-revs
pekkaklarck May 2, 2025
559f0ae
Little cleanup here and there
pekkaklarck May 2, 2025
e9050d7
Fix nested timeouts outside Windows.
pekkaklarck May 5, 2025
66d5300
Refactor timeout implementation.
pekkaklarck May 6, 2025
00d45d4
Pause timeouts when library keyword uses `BuiltIn.run_keyword`
pekkaklarck May 6, 2025
c150368
Refactor
pekkaklarck May 6, 2025
b234901
Cleanup
pekkaklarck May 7, 2025
cdf535f
Fix extended assign with `@` and `&` syntax
pekkaklarck May 7, 2025
a251531
Better performance optimization in test
pekkaklarck May 7, 2025
4067212
Merge pull request #5420 from robotframework/dependabot/npm_and_yarn/…
yanne May 7, 2025
19bb15d
Bump actions/setup-python from 5.4.0 to 5.6.0 (#5411)
dependabot[bot] May 7, 2025
514240e
Mention logging with ERROR level in `Stopping on parsing or execution…
gohierf May 7, 2025
ebcd593
Fix typos in user guide (#5378)
laurentbristiel May 7, 2025
6ad86f5
Prohibit types in embedded arguments with library keywords (#5425)
aaltat May 7, 2025
bd192d8
Clarify documentation
pekkaklarck May 7, 2025
7cf9450
Test fixes
pekkaklarck May 7, 2025
1d2acfa
formatting
pekkaklarck May 7, 2025
38c4616
Documentation enhancements
pekkaklarck May 7, 2025
de06a99
formatting
pekkaklarck May 7, 2025
65f913a
Refactor
pekkaklarck May 7, 2025
85e4c67
Test that debug file messages are not delayed
pekkaklarck May 7, 2025
aa1818a
test cleanup
pekkaklarck May 8, 2025
1476e53
Release notes for 7.3rc1
pekkaklarck May 8, 2025
48aa98b
Remove unnecessary typing_extensions usage in tests
pekkaklarck May 8, 2025
b3e881e
Updated version to 7.3rc1
pekkaklarck May 8, 2025
c9add1c
Add setuptools to dev requirements
pekkaklarck May 8, 2025
937392e
fix issue link
pekkaklarck May 8, 2025
d19dfcd
Back to dev version
pekkaklarck May 8, 2025
d32d5ad
add missing issue type
pekkaklarck May 8, 2025
6cc1198
Fix recursinve `BuiltIn.run_keyword` usage.
pekkaklarck May 9, 2025
9a6cc35
Fix Timeout.time_left() if timeout not started
pekkaklarck May 12, 2025
a1168b9
Unit tests for pausing timeouts.
pekkaklarck May 12, 2025
b1c031d
Allow starting Timeouts in `__init__`
pekkaklarck May 14, 2025
78d2d63
Timeout tuning
pekkaklarck May 14, 2025
37c979c
Test tuning
pekkaklarck May 14, 2025
09ce8ca
Fix minor bugs in robot.utils.Importer
pekkaklarck May 15, 2025
04a6efc
Fix error when adding incompatible objects to TestSuite
pekkaklarck May 15, 2025
9022df0
Fine-tune type conversion error message
pekkaklarck May 15, 2025
3e3f64e
Remove duplicate argument
pekkaklarck May 15, 2025
448fb07
FOR loop variable conversion
pekkaklarck May 16, 2025
375cc08
Enhance API docs and type hints
pekkaklarck May 16, 2025
b2c1cd1
Test tuning
pekkaklarck May 16, 2025
96c6ea5
Declare official Python 3.14 support
pekkaklarck May 16, 2025
0449463
Avoid test flakeyness
pekkaklarck May 16, 2025
2dc16cd
Enhance docs
pekkaklarck May 19, 2025
9ab62cb
Refactor
pekkaklarck May 19, 2025
77e1013
Release notes for 7.3rc2
pekkaklarck May 19, 2025
0f5cf25
Updated version to 7.3rc2
pekkaklarck May 19, 2025
22baede
Back to dev version
pekkaklarck May 19, 2025
c38531f
Use setuptools that doesn't require pyproject.toml
pekkaklarck May 19, 2025
9728623
Guard for `None`.
pekkaklarck May 19, 2025
78df7be
Process: Document that trailing newline is removed from stdout/stderr
pekkaklarck May 20, 2025
bfd2a03
Reset signal monitor between runs
pekkaklarck May 20, 2025
153db09
Remove [project] table from pyproject.toml
pekkaklarck May 20, 2025
b36bba4
buildout compatible entry point configuration
pekkaklarck May 20, 2025
5b121be
Add `EmbeddedArguments.match` back
pekkaklarck May 20, 2025
7781d8f
Command line variable conversion
pekkaklarck May 20, 2025
84cf17b
Enhance command line variable conversion test
pekkaklarck May 20, 2025
8b0dad4
Support current time conversion with `datetime` and `date`
pekkaklarck May 20, 2025
5af1f17
cleanup
pekkaklarck May 21, 2025
bd92295
Process: Enhance docs and tests related to newline handling
pekkaklarck May 21, 2025
f72db2a
Release notes for 7.3rc3
pekkaklarck May 21, 2025
3f6cb6b
Updated version to 7.3rc3
pekkaklarck May 21, 2025
1a0351e
Back to dev version
pekkaklarck May 21, 2025
c26fea6
Initial documentation for variable comversion
aaltat May 27, 2025
4db1959
Support both `now/today` with both `date/datetime` conversion.
pekkaklarck May 27, 2025
236327f
Update acknowledgements
pekkaklarck May 28, 2025
31c4daa
Don't use deprecated Default Tags in example
pekkaklarck May 28, 2025
a974f1c
UG: General cleanup to Variables section
pekkaklarck May 28, 2025
79cc536
Change embedded argument syntax with type and regexp
pekkaklarck May 29, 2025
e38c868
Enhance user keyword argument conversion errors
pekkaklarck May 30, 2025
e9fb143
Enhance tests
pekkaklarck May 30, 2025
30d87e4
Enhance variable type conversion documentation
pekkaklarck May 30, 2025
ab7d3e5
Update contribution guidelines (#5375)
robinmackaij May 30, 2025
2ac4b1e
Release notes for 7.3
pekkaklarck May 30, 2025
df95ec9
Updated version to 7.3
pekkaklarck May 30, 2025
f6b9301
UG: Fix internal link
pekkaklarck May 30, 2025
7204074
Back to dev version
pekkaklarck May 30, 2025
fd87e86
Update issue title
pekkaklarck Jun 2, 2025
ddaf044
Fix handling invalid UK argspec with types
pekkaklarck Jun 2, 2025
9526d10
Shorter timeouts in tests
pekkaklarck Jun 5, 2025
a05f167
Prefer exact match over embedded match with setup/teardown and Run Ke…
pekkaklarck Jun 5, 2025
3ddb4fe
reformat
pekkaklarck Jun 11, 2025
afdd154
Update release instructions.
pekkaklarck Jun 11, 2025
e90c913
Update contribution guidelines.
pekkaklarck Jun 13, 2025
014649b
Update CONTRIBUTING.rst (#5452)
LydiaPeabody Jun 16, 2025
3d26a62
Remove unnecessary `.readlines()`.
pekkaklarck Jun 16, 2025
d64fcd5
Use `# fmt: skip` instead of `# fmt: off/on`.
pekkaklarck Jun 16, 2025
eca2a1b
Two spaces before an inline comment.
pekkaklarck Jun 16, 2025
c77108c
New section about inline comments, fixes and adjustments
pekkaklarck Jun 16, 2025
af66f71
Fix expand icons for failed and skipped tests (#5322) (#5445)
psaikkonen Jun 16, 2025
56a770c
Refactor test toggle logic.
pekkaklarck Jun 16, 2025
a7a7b0a
Release notes for 7.3.1
pekkaklarck Jun 16, 2025
f189a6f
Updated version to 7.3.1
pekkaklarck Jun 16, 2025
f93fabf
Fixes
pekkaklarck Jun 16, 2025
14a273e
Back to dev version
pekkaklarck Jun 16, 2025
0f0d796
Fix formatting
pekkaklarck Jun 16, 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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Code formatting.
d2cdcfa9863e405983ecafc47e2e7e5af9da68f4
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.6.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.6.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.6.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.6.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.6.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