Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
add535d
CI(pytest): Upload test results to Codecov for test analytics
echoix Jul 26, 2025
84dc271
CI(macOS): Upload test results to Codecov for test analytics
echoix Jul 26, 2025
a8b8eb8
CI(OSGeo4W): Upload test results to Codecov for test analytics
echoix Jul 26, 2025
ce0c4ad
CI: Use OIDC to upload coverage
echoix Jul 26, 2025
05a76d3
Merge branch 'OSGeo:main' into main
echoix Jul 26, 2025
0433719
CI: Add 'exclude: gui' to test results actions
echoix Jul 26, 2025
4507bca
Merge branch 'OSGeo:main' into main
echoix Jul 27, 2025
49437ae
docs(lib): Update parameter descriptions to match function signature …
echoix Jul 26, 2025
ff66354
docs(lib): Update parameter descriptions to match function signature,…
echoix Jul 27, 2025
06ba3f8
docs(lib): Put parameter direction on \param, not parameter name
echoix Jul 27, 2025
d81a939
docs: Format docstrings of IL_crst and IL_crstg in lib/rst/interp_flo…
echoix Jul 27, 2025
0dfa3d5
docs: Fix file command for lib/ogsf/gsd_objs.c
echoix Jul 27, 2025
65914cf
man: Ignore UNUSED attribute macros on parameters for doxygen docs
echoix Jul 27, 2025
9456f60
man: EXPAND_ONLY_PREDEF = YES in doxygen config
echoix Jul 27, 2025
fd622f6
Revert "man: EXPAND_ONLY_PREDEF = YES in doxygen config"
echoix Jul 27, 2025
70066dc
docs: Add missing param tags or fix invalid formatting in doxygen doc…
echoix Jul 27, 2025
dafd1c9
docs(lib): Rename siz parameter to size in GS_get_modelposition
echoix Jul 27, 2025
8360fa2
docs: Format doxygen docstrings
echoix Jul 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ jobs:
runs-on: macos-14
env:
PYTHONWARNINGS: always

permissions:
id-token: write
contents: read

steps:
- name: Info
run: |
Expand Down Expand Up @@ -98,6 +103,7 @@ jobs:
pytest \
@.github/workflows/pytest_args_ci.txt \
@.github/workflows/pytest_args_parallel.txt \
--junitxml=pytest.xdist.junit.xml \
-k 'not testsuite'
- name: Run pytest with a single worker (for tests marked with needs_solo_run)
shell: micromamba-shell {0}
Expand All @@ -107,14 +113,24 @@ jobs:
pytest \
@.github/workflows/pytest_args_ci.txt \
@.github/workflows/pytest_args_not_parallel.txt \
--junitxml=pytest.needs_solo_run.junit.xml \
-k 'not testsuite'
- name: Run pytest with a single worker (for gunittest-based tests)
shell: micromamba-shell {0}
run: |
export PYTHONPATH=$(grass --config python_path):$PYTHONPATH
export LD_LIBRARY_PATH=$(grass --config path)/lib:$LD_LIBRARY_PATH
pytest \
@.github/workflows/pytest_args_gunittest.txt
@.github/workflows/pytest_args_gunittest.txt \
--junitxml=pytest.gunittest.junit.xml

- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
exclude: gui
flags: macos-pytest-python
use_oidc: true

- name: Cache GRASS Sample Dataset
id: cached-data
Expand Down
16 changes: 15 additions & 1 deletion .github/workflows/osgeo4w.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ jobs:
- windows-2022
fail-fast: false

permissions:
id-token: write
contents: read

steps:
- name: Set git to use LF
run: |
Expand Down Expand Up @@ -135,6 +139,7 @@ jobs:
path %GISBASE%\lib;%GISBASE%\bin;%PATH%
pytest ^
@.github/workflows/pytest_args_ci.txt ^
--junitxml=pytest.junit.xml ^
-k "not testsuite"
shell: cmd /D /E:ON /V:OFF /S /C "CALL C:/OSGeo4W/OSGeo4W.bat "{0}""
- name: Run pytest with a single worker (for gunittest-based tests)
Expand All @@ -145,9 +150,18 @@ jobs:
pytest ^
@.github/workflows/pytest_args_ci.txt ^
@.github/workflows/pytest_args_deselect.txt ^
@.github/workflows/pytest_args_gunittest.txt
@.github/workflows/pytest_args_gunittest.txt ^
--junitxml=pytest.gunittest.junit.xml
shell: cmd /D /E:ON /V:OFF /S /C "CALL C:/OSGeo4W/OSGeo4W.bat "{0}""

- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
exclude: gui
flags: ${{ matrix.os }}-pytest-python
use_oidc: true

- name: Run tests
run: .github/workflows/test_thorough.bat '${{env.O4WROOT}}\opt\grass\grass85.bat' '${{env.O4WROOT}}\bin\python3'
env:
Expand Down
18 changes: 16 additions & 2 deletions .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ jobs:
CLICOLOR_FORCE: 1 # for other software including ninja: https://bixense.com/clicolors/
PYTHONWARNINGS: always

permissions:
id-token: write
contents: read

steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

Expand Down Expand Up @@ -91,6 +95,7 @@ jobs:
@.github/workflows/pytest_args_ci.txt \
@.github/workflows/pytest_args_cov.txt \
@.github/workflows/pytest_args_parallel.txt \
--junitxml=pytest.xdist.junit.xml \
-k 'not testsuite'

- name: Run pytest with a single worker (for tests marked with needs_solo_run)
Expand All @@ -103,6 +108,7 @@ jobs:
@.github/workflows/pytest_args_ci.txt \
@.github/workflows/pytest_args_cov.txt \
@.github/workflows/pytest_args_not_parallel.txt \
--junitxml=pytest.needs_solo_run.junit.xml \
-k 'not testsuite'
- name: Run pytest with a single worker (for gunittest-based tests)
run: |
Expand All @@ -112,7 +118,8 @@ jobs:
export INITIAL_PWD="${PWD}"
pytest \
@.github/workflows/pytest_args_cov.txt \
@.github/workflows/pytest_args_gunittest.txt
@.github/workflows/pytest_args_gunittest.txt \
--junitxml=pytest.gunittest.junit.xml
- name: Fix non-standard installed script paths in coverage data
run: |
export PYTHONPATH=`grass --config python_path`:$PYTHONPATH
Expand All @@ -123,13 +130,20 @@ jobs:
coverage combine
coverage html

- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
with:
exclude: gui
flags: pytest-python-${{ matrix.python-version }}
use_oidc: true
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
with:
verbose: true
flags: pytest-python-${{ matrix.python-version }}
name: pytest-python-${{ matrix.python-version }}
token: ${{ secrets.CODECOV_TOKEN }}
use_oidc: true
- name: Make python-only code coverage test report available
if: ${{ !cancelled() }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/pytest_args_ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@
--color=yes
--durations=0
--durations-min=0.5
--junitxml=junit.xml
-o junit_family=legacy
-ra
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -202,3 +202,6 @@ python/grass/docs/src/pydispatch.rst
python/grass/docs/src/pygrass.*rst
python/grass/docs/src/script.rst
python/grass/docs/src/temporal.rst

# Test result files
*junit.xml
2 changes: 1 addition & 1 deletion db/drivers/ogr/describe.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
\brief Describe table using driver

\param table_name table name (as dbString)
\param table[out] pointer to dbTable
\param[out] table pointer to dbTable

\return DB_OK on success
\return DB_FAILED on failure
Expand Down
13 changes: 8 additions & 5 deletions include/Make/Doxyfile_arch_html.in
Original file line number Diff line number Diff line change
Expand Up @@ -2211,7 +2211,7 @@ ENABLE_PREPROCESSING = YES
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

MACRO_EXPANSION = NO
MACRO_EXPANSION = YES

# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
Expand Down Expand Up @@ -2251,11 +2251,14 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

PREDEFINED = HAVE_OGR \
HAVE_TIFFIO_H \
HAVE_GEOS \
PREDEFINED = HAVE_GEOS \
HAVE_LIBBLAS \
HAVE_LIBLAPACK \
HAVE_LIBBLAS
HAVE_OGR \
HAVE_TIFFIO_H \
NOPG_UNUSED= \
NO_NLS_UNUSED= \
UNUSED=

# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
Expand Down
13 changes: 8 additions & 5 deletions include/Make/Doxyfile_arch_latex.in
Original file line number Diff line number Diff line change
Expand Up @@ -2211,7 +2211,7 @@ ENABLE_PREPROCESSING = YES
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

MACRO_EXPANSION = NO
MACRO_EXPANSION = YES

# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
Expand Down Expand Up @@ -2251,11 +2251,14 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

PREDEFINED = HAVE_OGR \
HAVE_TIFFIO_H \
HAVE_GEOS \
PREDEFINED = HAVE_GEOS \
HAVE_LIBBLAS \
HAVE_LIBLAPACK \
HAVE_LIBBLAS
HAVE_OGR \
HAVE_TIFFIO_H \
NOPG_UNUSED= \
NO_NLS_UNUSED= \
UNUSED=

# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
Expand Down
1 change: 1 addition & 0 deletions lib/db/dbmi_client/select.c
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ int db_select_value(dbDriver *driver, const char *tab, const char *key, int id,
\param tab table name
\param key key column name
\param col value column name
\param where where statement
\param[out] cvarr dbCatValArray to store within

\return number of selected values
Expand Down
5 changes: 1 addition & 4 deletions lib/gis/make_loc.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,15 +169,12 @@ int G_make_location_epsg(const char *location_name, struct Cell_head *wind,
* \param proj_units projection units suitable to write to the PROJ_UNITS
* file, or NULL.
*
* \param proj_epsg EPSG code suitable to write to the PROJ_EPSG
* \param proj_srid Spatial reference ID suitable to write to the PROJ_SRID
* file, or NULL.
*
* \param proj_wkt WKT definition suitable to write to the PROJ_WKT
* file, or NULL.
*
* \param proj_srid Spatial reference ID suitable to write to the PROJ_SRID
* file, or NULL.
*
* \return 0 on success
* \return -1 to indicate a system error (check errno).
* \return -2 failed to create projection file (currently not used)
Expand Down
1 change: 1 addition & 0 deletions lib/gis/open_misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ FILE *G_fopen_new_misc(const char *dir, const char *element, const char *name)
* the file does not exist, the NULL pointer is returned. Otherwise the file
* descriptor from the fopen( ) is returned.
*
* \param dir
* \param element
* \param name
* \param mapset
Expand Down
5 changes: 3 additions & 2 deletions lib/gmath/la.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,8 @@ mat_struct *G_matrix_subtract(mat_struct *mt1, mat_struct *mt2)
* Calculates the scalar-matrix multiplication
*
* \param scalar
* \param A
* \param matrix
* \param out
* \return mat_struct
*/
mat_struct *G_matrix_scalar_mul(double scalar, mat_struct *matrix,
Expand Down Expand Up @@ -1509,7 +1510,7 @@ int G_matrix_read(FILE *fp, mat_struct *out)
*
* Resizes a matrix
*
* \param A
* \param in
* \param rows
* \param cols
* \return mat_struct
Expand Down
4 changes: 3 additions & 1 deletion lib/gpde/n_gwflow.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,8 @@ void N_free_gwflow_data3d(N_gwflow_data3d *data)
*
* \param cols int
* \param rows int
* \param river
* \param drain
* \return N_gwflow_data2d *
* */
N_gwflow_data2d *N_alloc_gwflow_data2d(int cols, int rows, int river, int drain)
Expand Down Expand Up @@ -648,7 +650,7 @@ N_data_star *N_callback_gwflow_2d(void *gwdata, N_geom_data *geom, int col,
* the cells. The sum of the water budget of each active/dirichlet cell must be
* near zero due the effect of numerical inaccuracy of cpu's.
*
* \param gwdata N_gwflow_data2d *
* \param data N_gwflow_data2d *
* \param geom N_geom_data *
* \param budget N_array_2d
* \return void
Expand Down
2 changes: 1 addition & 1 deletion lib/gpde/n_les_assemble.c
Original file line number Diff line number Diff line change
Expand Up @@ -457,8 +457,8 @@ N_data_star *N_callback_template_3d(void *data UNUSED, N_geom_data *geom,
*
* \param data void * (unused)
* \param geom N_geom_data *
* \param row int (unused)
* \param col int (unused)
* \param row int (unused)
* \return N_data_star *
*
* */
Expand Down
6 changes: 3 additions & 3 deletions lib/imagery/group.c
Original file line number Diff line number Diff line change
Expand Up @@ -419,10 +419,10 @@ int I_add_file_to_group_ref(const char *name, const char *mapset,
* This routine is used by <i>g.gui.gcp</i> to create the REF file for a
* subgroup.
*
* \param src
* \param ref2 Source
* \param n
* \param dst
* \return int
* \param ref1 Destination
* \return int 0
*/
int I_transfer_group_ref_file(const struct Ref *ref2, int n, struct Ref *ref1)
{
Expand Down
10 changes: 5 additions & 5 deletions lib/imagery/iscatt_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ struct rast_row {
These pgms have header in format created by this function.

\param region region to be pgm header generated for
\param [out] header header of pgm file
\param[out] header header of pgm file
*/
static int get_cat_rast_header(struct Cell_head *region, char *header)
{
Expand Down Expand Up @@ -110,7 +110,7 @@ int I_create_cat_rast(struct Cell_head *cat_rast_region, const char *cat_rast)

\param A pointer to intersected region
\param B pointer to intersected region
\param [out] intersec pointer to intersection region of regions A B
\param[out] intersec pointer to intersection region of regions A B
(relevant params of the region are: south, north, east, west)

\return 0 if interaction exists
Expand Down Expand Up @@ -162,9 +162,9 @@ static int regions_intersecion(struct Cell_head *A, struct Cell_head *B,

\param A pointer to intersected region
\param B pointer to intersected region (A and B must have same resolution)
\param [out] A_bounds rows and cols numbers of A stored in
\param[out] A_bounds rows and cols numbers of A stored in
south, north, east, west, which defines intersection of A and B
\param [out] B_bounds rows and cols numbers of B stored in
\param[out] B_bounds rows and cols numbers of B stored in
south, north, east, west, which defines intersection of A and B

\return 0 if interaction exists
Expand Down Expand Up @@ -363,7 +363,7 @@ int I_insert_patch_to_cat_rast(const char *patch_rast,
\param bands_rows data represents data describig one row from raster band
\param belongs_pix array which defines which pixels belongs to category
(1 value) and which not (0 value)
\param [out] scatts pointer to scScatts struct of type SC_SCATT_DATA,
\param[out] scatts pointer to scScatts struct of type SC_SCATT_DATA,
which are modified according to values in belongs_pix
(represents scatter plot category)
*/
Expand Down
2 changes: 1 addition & 1 deletion lib/imagery/iscatt_structs.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ int I_sc_add_cat(struct scCats *cats)
cats struct (SC_SCATT_DATA or SC_SCATT_CONDITIONS).

\param cats pointer to scCats struct
\param scarr_data pointer to scdScattData struct
\param scatt_data pointer to scdScattData struct
\param cat_id id number of category
\param scatt_id id number of scatter plot

Expand Down
7 changes: 4 additions & 3 deletions lib/imagery/manage_signatures.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,8 @@ int I_signatures_copy(I_SIGFILE_TYPE type, const char *old_name,
* It is safe to pass fully qualified names.
*
* \param type I_SIGFILE_TYPE signature type
* \param name of old signature
* \param name of new signature
* \param old_name name of old signature
* \param new_name name of new signature
* \return 0 on success
* \return 1 on failure
*/
Expand Down Expand Up @@ -233,7 +233,8 @@ int I_signatures_rename(I_SIGFILE_TYPE type, const char *old_name,
*
* \param type I_SIGFILE_TYPE signature type
* \param mapset optional mapset to search in or NULL
* \param pointer to array of found signature strings or NULL if none found
* \param out_list pointer to array of found signature strings or NULL if none
* found
* \return count of signature strings in the array
*/
int I_signatures_list_by_type(I_SIGFILE_TYPE type, const char *mapset,
Expand Down
Loading
Loading