Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
902ab0b
general boilerplate / project-support improvements (#16)
synesissoftware Aug 9, 2026
ee3e693
squash-commit
synesissoftware Aug 9, 2026
4526cb5
4.0.14
synesissoftware Aug 9, 2026
52e55d8
fix
synesissoftware Aug 9, 2026
c5e1400
Merge branch 'master' into 'dev'
synesissoftware Aug 9, 2026
a1cc131
4.0.15 (#20)
mwsis Sep 6, 2026
5517777
markdown
synesissoftware Sep 16, 2026
72487c5
chore(c-cpp): union files.associations from ~/dev vscode settings
synesissoftware Sep 16, 2026
a708e89
.gitattributes
synesissoftware Sep 17, 2026
e140930
.vscode/settings.json
synesissoftware Sep 17, 2026
39738e2
.vimrc
synesissoftware Sep 17, 2026
c51736e
CHANGES.md
synesissoftware Sep 17, 2026
93fbbfa
chore(<lib>): use computed PREFIX_VER with documented PATCH
synesissoftware Sep 17, 2026
277e74f
test(<lib>): ship scratch libver version reporter
synesissoftware Sep 17, 2026
9a77dbb
test(<lib>): rename scratch libver to versions
synesissoftware Sep 17, 2026
bce400d
test: add canonical scratch versions reporter
synesissoftware Sep 17, 2026
a7fc836
.gitattributes
synesissoftware Sep 21, 2026
3948256
fix(c-cpp): quote Dir resolution in CMake helper scripts
synesissoftware Sep 21, 2026
6b044ee
Merge branch 'master' into 'dev'
synesissoftware Sep 22, 2026
27af964
Merge branch 'dev' into 'boilerplate'
synesissoftware Sep 22, 2026
6455ea4
chore(scratch test): **versions** => **test.scratch.version**
synesissoftware Sep 22, 2026
1c9819a
doc(README.md): adding afferent dependencies (**errni**, **rstrip**)
synesissoftware Sep 22, 2026
91c2b4b
feat(cstring): colour prepare_cmake and unify cmake configure
synesissoftware Sep 22, 2026
ad2a143
feat(cstring): force colours via env and -A in prepare_cmake
synesissoftware Sep 22, 2026
b121a6f
refactor(cstring): drive prepare builds with cmake --build
synesissoftware Sep 22, 2026
12078a7
refactor(cstring): drive build_cmake via cmake --build
synesissoftware Sep 22, 2026
e524810
refactor(cstring): drive clean_cmake via cmake --build --target clean
synesissoftware Sep 22, 2026
a078db8
refactor(cstring): align remove_cmake_artefacts with helper dialect
synesissoftware Sep 22, 2026
4f30aba
refactor(cstring): drive ctest_cmake via cmake --build then ctest
synesissoftware Sep 22, 2026
bc54b6e
refactor(cstring): unit/component runners use sis_cmake_build dialect
synesissoftware Sep 22, 2026
aa62ebb
fix(cstring): accept category-only flags; fix CI component runner
synesissoftware Sep 22, 2026
9e5083c
refactor(cstring): drive run_all_examples via cmake --build dialect
synesissoftware Sep 22, 2026
45bb3bb
fix(cstring): gate cstring_vector no-arg demo on SIS_EXAMPLE_SMOKE
synesissoftware Sep 22, 2026
d30ab59
refactor(cstring): drive run_all_scratch via cmake --build dialect
synesissoftware Sep 22, 2026
7e77034
refactor(cstring): native CMD runners for unit, component, examples
synesissoftware Sep 22, 2026
66fd7b4
feat(cstring): add run_all_automated_tests aggregate (.sh/.cmd)
synesissoftware Sep 22, 2026
b54e4c6
refactor(cstring): drive run_all_performance via cmake --build dialect
synesissoftware Sep 22, 2026
b0b25cd
style(cstring): SisClr polish on run_all_automated_tests.sh
synesissoftware Sep 22, 2026
dbf5e80
ci(cstring): exercise prepare/build/clean helpers in CI
synesissoftware Sep 22, 2026
c95dc2d
ci(cstring): dogfood native run_all *.cmd on Windows cells
synesissoftware Sep 22, 2026
7ddfd90
ci(cstring): dogfood prepare/build in cells; order test jobs
synesissoftware Sep 22, 2026
f29cff5
ci(cstring): invoke ctest, remove, and automated helpers
synesissoftware Sep 22, 2026
fed0f53
fix(cstring): harden prepare empty-args and multi-config ctest
synesissoftware Sep 22, 2026
9f62cae
ci(cstring): dogfood run_all_automated_tests.cmd on Windows
synesissoftware Sep 22, 2026
6a622c2
ci(cstring): collapse cell suites into one post-build test job
synesissoftware Sep 22, 2026
57b6486
docs(cstring): target 4.0.16 release for 23 September 2026
synesissoftware Sep 23, 2026
47669c5
feat(cstring): add competitive performance tests for 4.0.17
synesissoftware Sep 23, 2026
205b5e3
test(cstring): time ifstream getline in the file-lines suite
synesissoftware Sep 23, 2026
5608670
test(cstring): pair borrowed_fixed_assign with std::string
synesissoftware Sep 23, 2026
031564c
prep
synesissoftware Sep 23, 2026
fb9b3f8
perf(cstring): copy known lengths with memcpy
synesissoftware Sep 23, 2026
6f7cde6
perf(cstring): grow vector inserts by 3/2
synesissoftware Sep 23, 2026
474547c
refactor(impl): simplification
synesissoftware Sep 23, 2026
836d67a
perf(cstring): free on destroy instead of realloc
synesissoftware Sep 23, 2026
aa357f7
fix(cstring): shift vector elements on insertAt
synesissoftware Sep 23, 2026
7e21244
perf(cstring): skip allocation for empty strings
synesissoftware Sep 23, 2026
c7f0082
perf(cstring): append in place when capacity fits
synesissoftware Sep 23, 2026
a78263f
refactor(impl): added common internal helper `cstring_vector_destroy_…
synesissoftware Sep 23, 2026
3686ada
refactor(impl): added common internal helper `cstring_vector_init_emp…
synesissoftware Sep 23, 2026
ecb49fa
tidying
synesissoftware Sep 26, 2026
d26faab
squash-commit
synesissoftware Sep 26, 2026
14fbc4f
squash-commit
synesissoftware Sep 27, 2026
818eff0
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 27, 2026
8b3e261
Perf tests (#22)
mwsis Sep 27, 2026
cc85bf7
More component tests (#23)
synesissoftware Sep 27, 2026
589c51f
fix
synesissoftware Sep 27, 2026
f17597a
Flags fixes (#24)
synesissoftware Sep 27, 2026
eb9fd45
squash-commit
synesissoftware Sep 27, 2026
7783fc2
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 27, 2026
d0840e6
version
synesissoftware Sep 27, 2026
d302239
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 27, 2026
91e63f1
chore: trivial ordering
synesissoftware Sep 27, 2026
9dd8d4c
TODO.md
synesissoftware Sep 27, 2026
aa0b4e0
TODO.md
synesissoftware Sep 27, 2026
0af6b71
fix
synesissoftware Sep 27, 2026
9da3ff7
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 27, 2026
8606170
fix
synesissoftware Sep 27, 2026
85c52c8
fix(cstring): gate Windows arenas on `_WIN32` for 4.1.0 (#25)
synesissoftware Sep 29, 2026
864bdb5
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 29, 2026
def3924
test(cstring): time Windows global, process-heap, and COM task arenas…
synesissoftware Sep 29, 2026
87eb7f8
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 29, 2026
e460f9f
squash-commit (test.performance.cstring_readline)
synesissoftware Sep 27, 2026
2c16779
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 29, 2026
0de2177
date
synesissoftware Sep 29, 2026
e7be85e
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 29, 2026
218afc4
portability
synesissoftware Sep 29, 2026
36603b0
test(cstring): use auto_buffer in borrowed_fixed_assign harness
synesissoftware Sep 29, 2026
1e0bc91
(fix(performance tests): `scenario_borrowed_fixed_assign()` all ancho…
synesissoftware Sep 29, 2026
e1ff75e
feature(performance tests): added `scenario_borrowed_fixed_construct()`
synesissoftware Sep 29, 2026
e18e915
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 29, 2026
a467c4a
fix(cstring): silence GCC free-nonheap-object in the perf harness
synesissoftware Sep 29, 2026
e057536
misc
synesissoftware Sep 29, 2026
def0488
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 29, 2026
72ef8b8
fix(cstring): initialise COM before Windows task-allocator tests
synesissoftware Sep 29, 2026
06111ac
Internal refac (#35)
synesissoftware Sep 29, 2026
656523b
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 29, 2026
d25a654
misc
synesissoftware Sep 29, 2026
f88daf1
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Sep 30, 2026
13a628d
`cstring_readline()` fix for readonly string (#38)
synesissoftware Oct 3, 2026
8780363
fix: `cstring_readline()` (#37)
synesissoftware Oct 3, 2026
74ece39
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Oct 3, 2026
41319ff
feature(performance tests): added `scenario_append_len_inc8()`
synesissoftware Oct 3, 2026
178d40a
test(cstring): shorten test directories and name cases in `TEST_` for…
synesissoftware Oct 3, 2026
af19397
release
synesissoftware Oct 4, 2026
91d029a
test(cstring): add a C unit suite and shorten example and test names …
synesissoftware Oct 4, 2026
476da2a
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Oct 4, 2026
238590d
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Oct 20, 2026
13240bc
chore(cstring): adopt helper gold 0.6.2 and target 4.1.0-beta1 (#48)
synesissoftware Oct 20, 2026
9ff9460
Merge branch 'dev' into 'perf-optimisations'
synesissoftware Oct 20, 2026
2e04404
tidy
synesissoftware Oct 21, 2026
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
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- rc1
- rc2
- rc3
- hash-review
pull_request:

concurrency:
Expand Down
11 changes: 11 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
# cstring - Changes <!-- omit in toc -->


## 4.1.0-alpha2 - 7th October 2026

* performance optimisations;


## 4.1.0-beta1 - 21st October 2026

* Brought the tip CMake runners up to **misc-dev-scripts** 0.6.2 and merged that gold into **prepare_cmake.sh**, keeping the cstring `-D` flags and `--gap-groups`;
* Defined `CSTRING_VER_RELSTATUS` (`0x81`, beta 1) and aliased `CSTRING_VER_ALPHABETA` to it;


## 4.1.0-alpha1 - 6th October 2026

* Added 64-bit `djb2` hash functions: `cstring_hash_djb2()`, `cstring_hash_djb2_case()`, `cstring_hash_djb2_buf()`, and `cstring_hash_djb2_buf_case()`;
Expand Down
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

PROJECT_NAME = "cstring"
PROJECT_BRIEF = "Extensible C-style strings and vectors of such, for Unix and Windows"
PROJECT_NUMBER = 4.1.0-alpha1
PROJECT_NUMBER = 4.1.1-alpha1

# Prefer SIS_CMAKE_BUILD_DIR-aligned output (same convention as Diagnosticism).
# ./dox/ remains gitignored for legacy/local runs that override OUTPUT_DIRECTORY.
Expand Down
2 changes: 2 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
| Date | News Item | Details |
| ------------------- | ------------------------------------ | ------- |
| Available from [**cstring** project on GitHub](https://synesissoftware.com/cstring): |
| 24th October 2026 | Release of [cstring 4.1.1-alpha1](https://github.com/synesissoftware/cstring/releases/tag/4.1.1-alpha1) | Performance optimisations |
| 21st October 2026 | Release of [cstring 4.1.0-beta1](https://github.com/synesissoftware/cstring/releases/tag/4.1.0-beta1) | helper gold 0.6.2; `CSTRING_VER_RELSTATUS` |
| 6th October 2026 | Release of [cstring 4.1.0-alpha1](https://github.com/synesissoftware/cstring/releases/tag/4.1.0-alpha1) | `djb2`, `FNV-1a`, and `SDBM`; `cstring_equal()` / `cstring_compare()`; `--wide-strings`; counted copies stop at `cch` |
| 4th October 2026 | Release of [cstring 4.0.19](https://github.com/synesissoftware/cstring/releases/tag/4.0.19) | lone CR ends a line; `numRead` includes EOL; readonly truncate; zero-size realloc frees; **test.performance.cstring_readline**; shortened test and example directories; **test.unit.cstring**; README usage modes |
| 29th September 2026 | Release of [cstring 4.0.18](https://github.com/synesissoftware/cstring/releases/tag/4.0.18) | `_WIN32` arena gate; **win.c**; static `CoTaskMem*` (**ole32**) |
Expand Down
6 changes: 3 additions & 3 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
* [x] ~~~Delete Visual Studio 2003+ files~~~ - ✅;
* [x] ~~~discriminate on `_WIN32` in implementation (and maybe also in API)~~~ - ✅;
* [x] ~~~check `CSTRING_USE_WINAPI_`~~~;
* [ ] custom arena(s);
* [ ] wide-string CI;
* [x] ~~~wide-string CI~~~ - ✅;
* [ ] `cstring_vector_readlineEx()` that takes a flag to prevent truncate, thereby allowing client code to add to an existing string;
* [ ] custom arena(s);
* [ ] when go to 5.x, change the name of `cstring_vector_readLines()` to `cstring_vector_readlines()`;
* [ ] when go to 5.x, consider use of SSO;
* [ ] when go to 5.x, consider expanding `cstring_vector_t` to allow it to own the memory of the strings it manages, such that can do a single file read and then break up into strings without allocating payload memory;
Expand Down Expand Up @@ -64,7 +64,7 @@
* [ ] Hash API in cstring/hash.h;
* [ ] Vector API in cstring/vector.h;
* [ ] Umbrella / All API in cstring/cstring.h;
* [-] ~~~Makefiles (legacy build trees removed; CMake-only)~~~ - ❌;
* [x] ~~~Makefiles (legacy build trees removed; CMake-only)~~~ - ❌;
* [ ] Packages:
* [ ] vcpkg;
* [ ] HomeBrew;
Expand Down
17 changes: 12 additions & 5 deletions include/cstring/cstring.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Purpose: Definition of the cstring.core API.
*
* Created: 16th June 1994
* Updated: 6th October 2026
* Updated: 24th October 2026
*
* Home: http://synesis.com.au/software/
*
Expand Down Expand Up @@ -56,7 +56,7 @@
# define CSTRING_VER_CSTRING_H_CSTRING_MAJOR 3
# define CSTRING_VER_CSTRING_H_CSTRING_MINOR 13
# define CSTRING_VER_CSTRING_H_CSTRING_REVISION 3
# define CSTRING_VER_CSTRING_H_CSTRING_EDIT 100
# define CSTRING_VER_CSTRING_H_CSTRING_EDIT 103
#endif /* !CSTRING_DOCUMENTATION_SKIP_SECTION */


Expand Down Expand Up @@ -105,6 +105,8 @@
# define CSTRING_VER_4_0_18 0x040012ff
# define CSTRING_VER_4_0_19 0x040013ff
# define CSTRING_VER_4_1_0_A1 0x04010041
# define CSTRING_VER_4_1_0_A2 0x04010042
# define CSTRING_VER_4_1_1_A1 0x04010141
#endif /* !CSTRING_DOCUMENTATION_SKIP_SECTION */

/** \def CSTRING_VER_MAJOR
Expand All @@ -119,24 +121,29 @@
* The patch version number of **cstring**
*/

/** \def CSTRING_VER_RELSTATUS
* The release-status number of **cstring**
*/

/** \def CSTRING_VER
* The current composite version number of **cstring**
*/

#define CSTRING_VER_MAJOR 4
#define CSTRING_VER_MINOR 1
#define CSTRING_VER_PATCH 0
#define CSTRING_VER_ALPHABETA 0x41
#define CSTRING_VER_PATCH 1
#define CSTRING_VER_RELSTATUS 0x41

#define CSTRING_VER \
(0\
| ( CSTRING_VER_MAJOR << 24 ) \
| ( CSTRING_VER_MINOR << 16 ) \
| ( CSTRING_VER_PATCH << 8 ) \
| ( CSTRING_VER_ALPHABETA << 0 ) \
| ( CSTRING_VER_RELSTATUS << 0 ) \
)

#ifndef CSTRING_DOCUMENTATION_SKIP_SECTION
# define CSTRING_VER_ALPHABETA CSTRING_VER_RELSTATUS
# define CSTRING_VER_REVISION CSTRING_VER_PATCH
#endif /* !CSTRING_DOCUMENTATION_SKIP_SECTION */

Expand Down
2 changes: 1 addition & 1 deletion include/cstring/cstring.vector.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Purpose: Definition of the cstring.vector API.
*
* Created: 21st January 2012
* Updated: 28th September 2026
* Updated: 29th September 2026
*
* Home: http://synesis.com.au/software/
*
Expand Down
18 changes: 13 additions & 5 deletions prepare_cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,24 @@ Configuration=Release
ExamplesDisabled=0
MinGW=$(sis_cmake_is_truey "${SIS_CMAKE_MINGW:-}" && echo 1 || echo 0)
MSVC_MT=0
NO_cxx=0
NO_p99=0
NO_shwild=0
RunMake=0
SisUseColours=0
STLSoftDirGiven=
TestingDisabled=0
VerboseMakefile=0
WideStrings=0

# ##########################################################
# PROJECT-SPECIFIC FLAGS (customise per library; keep marker)
#
# Add project-only options here (e.g. --no-cpp, --stlsoft-root-dir,
# --no-shwild). The common body below must stay aligned with
# misc-dev-scripts/shell-scripts/cmake-helpers/prepare_cmake.sh.


NO_cxx=0
NO_p99=0
NO_shwild=0
STLSoftDirGiven=
WideStrings=0

# ##########################################################
# colours
Expand Down
60 changes: 51 additions & 9 deletions run_all_examples.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ SETLOCAL

SET SCRIPT_DIRECTORY=%~dp0
SET SCRIPT_PATH_DOC=%~n0[%~x0]
SET "ALLOWED_TO_FAIL_FILE=%SCRIPT_DIRECTORY%.sis\ci_examples_allowed_to_fail.txt"
SET "PROGRAM_STATUS=0"

IF DEFINED SIS_CMAKE_BUILD_DIR (

Expand Down Expand Up @@ -45,6 +47,22 @@ Flags/options: ^

displays this help and terminates ^

^

files: ^

^

.sis\ci_examples_allowed_to_fail.txt ^

optional list of example programs ^(one name per line; ^

lines beginning with '#' are ignored^) that are allowed to fail; ^

such a program is still executed, but a non-zero exit is ^

reported as anticipated and does not stop the run ^


EXIT /B 0
) ELSE (
Expand Down Expand Up @@ -78,12 +96,36 @@ SET SIS_EXAMPLE_SMOKE=1

ECHO Running all %ProjectName% example programs

FOR /F "usebackq" %%f IN (`DIR /A:-D /B /S "%CMAKE_DIR%" ^| FINDSTR /I example.*\.exe$`) DO (

ECHO .
ECHO executing %%f
%%f
IF ERRORLEVEL 1 EXIT /B %ERRORLEVEL%
)

ENDLOCAL
FOR /F "usebackq" %%f IN (`DIR /A:-D /B /S "%CMAKE_DIR%" ^| FINDSTR /I example.*\.exe$`) DO CALL :run_program "%%f"

ENDLOCAL & EXIT /B %PROGRAM_STATUS%


REM ##########################################################
REM subroutines

:run_program
IF %PROGRAM_STATUS% NEQ 0 EXIT /B 0
ECHO .
ECHO executing %~1
"%~1"
SET "FAILURE_STATUS=%ERRORLEVEL%"
IF %FAILURE_STATUS% EQU 0 EXIT /B 0
CALL :is_allowed_to_fail "%~1"
IF NOT DEFINED ALLOWED_TO_FAIL GOTO run_program_failed
ECHO anticipated failure: %~1 exited with status %FAILURE_STATUS%; it is listed in .sis\ci_examples_allowed_to_fail.txt
EXIT /B 0
:run_program_failed
SET "PROGRAM_STATUS=%FAILURE_STATUS%"
EXIT /B 0

:is_allowed_to_fail
SET "ALLOWED_TO_FAIL="
IF NOT EXIST "%ALLOWED_TO_FAIL_FILE%" EXIT /B 0
FOR /F "usebackq eol=# tokens=1" %%n IN ("%ALLOWED_TO_FAIL_FILE%") DO CALL :match_allowed "%%n" "%~n1" "%~nx1"
EXIT /B 0

:match_allowed
IF /I "%~1"=="%~2" SET "ALLOWED_TO_FAIL=1"
IF /I "%~1"=="%~3" SET "ALLOWED_TO_FAIL=1"
EXIT /B 0
79 changes: 76 additions & 3 deletions run_all_examples.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")
ScriptPath=$0
AllowedToFailFile="$Dir/.sis/ci_examples_allowed_to_fail.txt"

AlwaysUseColours=${SIS_CMAKE_ALWAYS_USE_COLOURS:-${SIS_ALWAYS_USE_COLOURS:-0}}
ListOnly=0
Expand Down Expand Up @@ -115,6 +116,49 @@ sis_cmake_build() {
cmake "${args[@]}"
}

# Reduces a program path to its (lowercase) name, without any directory or
# .exe suffix.
sis_program_stem() {

local p="${1//\\//}"

p="${p##*/}"

case "$p" in
*.exe|*.EXE) p="${p%.*}" ;;
esac

printf '%s' "$p" | tr '[:upper:]' '[:lower:]'
}

# Succeeds if the program is named (by name or stem, case-insensitively) in
# the optional .sis/ci_examples_allowed_to_fail.txt file; blank lines and
# lines beginning with '#' are ignored.
sis_is_allowed_to_fail() {

local name line

[ -f "$AllowedToFailFile" ] || return 1

name=$(sis_program_stem "$1")

while IFS= read -r line || [ -n "$line" ]; do

line="${line//$'\r'/}"

case "$line" in
''|\#*) continue ;;
esac

if [ "$name" = "$(sis_program_stem "$line")" ]; then

return 0
fi
done < "$AllowedToFailFile"

return 1
}


# ##########################################################
# command-line handling
Expand Down Expand Up @@ -160,6 +204,15 @@ Flags/options:
does not execute a build before running programs


files:

.sis/ci_examples_allowed_to_fail.txt
optional list of example programs (one name per line; blank lines
and lines beginning with '#' are ignored) that are allowed to fail;
such a program is still executed, but a non-zero exit is reported as
anticipated and neither stops the run nor affects the exit status


standard flags:

--help
Expand Down Expand Up @@ -247,7 +300,13 @@ if [ $status -eq 0 ]; then

if [ $ListOnly -ne 0 ]; then

echo "would execute ${fClr}:"
if sis_is_allowed_to_fail "$f"; then

echo "would execute ${fClr} (allowed to fail):"
else

echo "would execute ${fClr}:"
fi

continue
fi
Expand All @@ -260,11 +319,25 @@ if [ $status -eq 0 ]; then
:
else

status=$?
fStatus=$?

if sis_is_allowed_to_fail "$f"; then

echo "${SisClr_Yellow}${SisClr_Bold}anticipated failure${SisClr_None}: ${fClr} exited with status ${fStatus}; it is listed in .sis/ci_examples_allowed_to_fail.txt"

continue
fi

status=$fStatus

break 1
fi
done < <(find "$CMakeDir" -type f \( -name 'example*' ! -name '*.md' \) \( -perm -100 -o -name '*.exe' \) -print0 2>/dev/null | sort -z)
done < <(find "$CMakeDir" -type f \( -name 'example*' ! -name '*.md' \) \
! -path '*/CMakeFiles/*' \
! -name '*.a' \
! -name '*.d' \
! -name '*.lib' \
\( -perm -100 -o -name '*.exe' \) -print0 2>/dev/null | sort -z)

if [ $NumPrograms -eq 0 ]; then

Expand Down
Loading
Loading