)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"bf5faff377ee3dbf2aa30252ec34eae0d1e48a04","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ddc89e57_17249b3b","updated":"2024-02-21 09:16:03.000000000","message":"Feature ACK. I like having the possibility to run tests only when needed/possible.","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"c8ecad6889039f9dd0662af0c04639e55c39c5b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e1645e97_3d2d04b1","updated":"2024-02-28 10:01:20.000000000","message":"I think this is a useful patch but there seems to be a bit of friction to overcome :-)","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"65ff90cb50f82475061e2848cbe9bc99b3b7bc8f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d9634123_15efe81a","updated":"2024-03-06 09:57:55.000000000","message":"Took me longer than expected after v4, but I do have some more wishes... (thanks for bearing with me)","commit_id":"cb47044ebf7686018f7f0be7f6a17a10b51200a8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ebae9f4370f150343971896a808144f928435ca2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e4693847_e2aa9c28","in_reply_to":"d9634123_15efe81a","updated":"2024-03-06 13:55:06.000000000","message":"Acknowledged","commit_id":"cb47044ebf7686018f7f0be7f6a17a10b51200a8"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"122422d48aac1070c68738aca6a56f2b0ac52f25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5baae56c_75335892","updated":"2024-03-08 10:27:55.000000000","message":"thanks.  t_client looks good, ntlm test we agreed on taking as it is and maybe someone will come up with good ideas how to improve later on.","commit_id":"ccc4f3800aa950f621c151e4e6eb50cb89cfcab8"}],"src/openvpn/error.h":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"c8ecad6889039f9dd0662af0c04639e55c39c5b8","unresolved":true,"context_lines":[{"line_number":36,"context_line":"#else"},{"line_number":37,"context_line":"/* for _exit() */"},{"line_number":38,"context_line":"#include \u003cunistd.h\u003e"},{"line_number":39,"context_line":"#endif"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"/* #define ABORT_ON_ERROR */"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"509f59c6_11cebc44","line":39,"updated":"2024-02-28 10:01:20.000000000","message":"I don\u0027t like this, for two reasons - we protect unistd.h via `HAVE_UNISTD_H`, not via \"not windows\", and also this is really a separate project, moving out includes from `\"syshead.h\"` to the parent C file because some compilers complain.","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ad99fb584c3955d724e411edc20982143c03027d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"#else"},{"line_number":37,"context_line":"/* for _exit() */"},{"line_number":38,"context_line":"#include \u003cunistd.h\u003e"},{"line_number":39,"context_line":"#endif"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"/* #define ABORT_ON_ERROR */"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"79ea4054_64ee021d","line":39,"in_reply_to":"509f59c6_11cebc44","updated":"2024-02-28 13:36:12.000000000","message":"Acknowledged","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"}],"tests/Makefile.am":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"65ff90cb50f82475061e2848cbe9bc99b3b7bc8f","unresolved":true,"context_lines":[{"line_number":42,"context_line":"ntlm_support_CFLAGS  \u003d -I$(top_srcdir)/src/openvpn -I$(top_srcdir)/src/compat -I$(top_srcdir)/tests/unit_tests/openvpn -DNO_CMOCKA @TEST_CFLAGS@"},{"line_number":43,"context_line":"ntlm_support_LDFLAGS \u003d @TEST_LDFLAGS@ -L$(top_srcdir)/src/openvpn $(OPTIONAL_CRYPTO_LIBS)"},{"line_number":44,"context_line":"ntlm_support_SOURCES \u003d ntlm_support.c \\"},{"line_number":45,"context_line":"\tunit_tests/openvpn/mock_msg.c unit_tests/openvpn/mock_msg.h \\"},{"line_number":46,"context_line":"\t$(top_srcdir)/src/openvpn/buffer.c \\"},{"line_number":47,"context_line":"\t$(top_srcdir)/src/openvpn/crypto.c \\"},{"line_number":48,"context_line":"\t$(top_srcdir)/src/openvpn/crypto_openssl.c \\"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"aabb9cc6_e1155271","line":45,"updated":"2024-03-06 09:57:55.000000000","message":"OK, so now I do better understand the -DNO_CMOCKA code in unit_tests/openvpn/mock_msg.c - but I\u0027m none the happier.  Unit test code is unit test code, and shouldn\u0027t be used by something else (\u003d so when trying to understand code in unit_tests/ I don\u0027t really want to consider \"oh, wait, this is also used by some other piece of code\").\n\nBut I can\u0027t really can come up with a nice alternative that will not boil down to \"just add another copy of `msg()` mocking into ntlm_support.c\" (because `crypto_load_provider()` needs it).","commit_id":"cb47044ebf7686018f7f0be7f6a17a10b51200a8"}],"tests/t_client.rc-sample":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"65ff90cb50f82475061e2848cbe9bc99b3b7bc8f","unresolved":true,"context_lines":[{"line_number":64,"context_line":"#"},{"line_number":65,"context_line":"# hook test options:"},{"line_number":66,"context_line":"#"},{"line_number":67,"context_line":"# SKIP_x            \u003d \"commands to execute before openvpn, skip test on failure\""},{"line_number":68,"context_line":"# PREPARE_x         \u003d \"commands to execute before openvpn\""},{"line_number":69,"context_line":"# POSTINIT_CMD_x    \u003d \"commands to execute after openvpn but before ping\""},{"line_number":70,"context_line":"# CLEANUP_x         \u003d \"commands to execute after the test\""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"7c7d3b68_b8417006","line":67,"updated":"2024-03-06 09:57:55.000000000","message":"TBH, I do not like `SKIP_x` because it just tells me \"well, yes, skip this test\".\n\nI\u0027d suggest to rename it to something like `SKIP_CONDITIONAL_x` or `PRE_TEST_x` or so which better transports the message \"ah, this is a command to run, and depending on the outcome, things will be skipped\".","commit_id":"cb47044ebf7686018f7f0be7f6a17a10b51200a8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ef6ff124155d7007dbc4a918e1ec7b9f20e65861","unresolved":true,"context_lines":[{"line_number":64,"context_line":"#"},{"line_number":65,"context_line":"# hook test options:"},{"line_number":66,"context_line":"#"},{"line_number":67,"context_line":"# SKIP_x            \u003d \"commands to execute before openvpn, skip test on failure\""},{"line_number":68,"context_line":"# PREPARE_x         \u003d \"commands to execute before openvpn\""},{"line_number":69,"context_line":"# POSTINIT_CMD_x    \u003d \"commands to execute after openvpn but before ping\""},{"line_number":70,"context_line":"# CLEANUP_x         \u003d \"commands to execute after the test\""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"fe9c7617_bd6d46f5","line":67,"in_reply_to":"7c7d3b68_b8417006","updated":"2024-03-06 13:54:26.000000000","message":"Changed to CHECK_SKIP","commit_id":"cb47044ebf7686018f7f0be7f6a17a10b51200a8"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"65ff90cb50f82475061e2848cbe9bc99b3b7bc8f","unresolved":true,"context_lines":[{"line_number":67,"context_line":"# SKIP_x            \u003d \"commands to execute before openvpn, skip test on failure\""},{"line_number":68,"context_line":"# PREPARE_x         \u003d \"commands to execute before openvpn\""},{"line_number":69,"context_line":"# POSTINIT_CMD_x    \u003d \"commands to execute after openvpn but before ping\""},{"line_number":70,"context_line":"# CLEANUP_x         \u003d \"commands to execute after the test\""},{"line_number":71,"context_line":"#"},{"line_number":72,"context_line":"# Note: all hooks are \"eval\"ed, so run in the original shell of the t_client.sh"},{"line_number":73,"context_line":"# script, not a child process."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"34ed3c96_6462fbf2","line":70,"updated":"2024-03-06 09:57:55.000000000","message":"this is a very welcome addition to the last options that I forgot to properly document.  Thanks ;-)","commit_id":"cb47044ebf7686018f7f0be7f6a17a10b51200a8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ef6ff124155d7007dbc4a918e1ec7b9f20e65861","unresolved":false,"context_lines":[{"line_number":67,"context_line":"# SKIP_x            \u003d \"commands to execute before openvpn, skip test on failure\""},{"line_number":68,"context_line":"# PREPARE_x         \u003d \"commands to execute before openvpn\""},{"line_number":69,"context_line":"# POSTINIT_CMD_x    \u003d \"commands to execute after openvpn but before ping\""},{"line_number":70,"context_line":"# CLEANUP_x         \u003d \"commands to execute after the test\""},{"line_number":71,"context_line":"#"},{"line_number":72,"context_line":"# Note: all hooks are \"eval\"ed, so run in the original shell of the t_client.sh"},{"line_number":73,"context_line":"# script, not a child process."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"70edeb0f_bee08576","line":70,"in_reply_to":"34ed3c96_6462fbf2","updated":"2024-03-06 13:54:26.000000000","message":"Acknowledged","commit_id":"cb47044ebf7686018f7f0be7f6a17a10b51200a8"}],"tests/t_client.sh.in":[{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"bf5faff377ee3dbf2aa30252ec34eae0d1e48a04","unresolved":true,"context_lines":[{"line_number":298,"context_line":"do"},{"line_number":299,"context_line":"    # get config variables"},{"line_number":300,"context_line":"    eval test_prep\u003d\\\"\\$PREPARE_$SUF\\\""},{"line_number":301,"context_line":"    eval test_check_skip\u003d\\\"\\$SKIP_$SUF\\\""},{"line_number":302,"context_line":"    eval test_postinit\u003d\\\"\\$POSTINIT_CMD_$SUF\\\""},{"line_number":303,"context_line":"    eval test_cleanup\u003d\\\"\\$CLEANUP_$SUF\\\""},{"line_number":304,"context_line":"    eval test_run_title\u003d\\\"\\$RUN_TITLE_$SUF\\\""}],"source_content_type":"text/x-properties","patch_set":2,"id":"d0f81f67_ff0f5ae9","line":301,"range":{"start_line":301,"start_character":29,"end_line":301,"end_character":34},"updated":"2024-02-21 09:16:03.000000000","message":"I am probably clueless about this, but where is $SKIP filled?","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ad99fb584c3955d724e411edc20982143c03027d","unresolved":false,"context_lines":[{"line_number":298,"context_line":"do"},{"line_number":299,"context_line":"    # get config variables"},{"line_number":300,"context_line":"    eval test_prep\u003d\\\"\\$PREPARE_$SUF\\\""},{"line_number":301,"context_line":"    eval test_check_skip\u003d\\\"\\$SKIP_$SUF\\\""},{"line_number":302,"context_line":"    eval test_postinit\u003d\\\"\\$POSTINIT_CMD_$SUF\\\""},{"line_number":303,"context_line":"    eval test_cleanup\u003d\\\"\\$CLEANUP_$SUF\\\""},{"line_number":304,"context_line":"    eval test_run_title\u003d\\\"\\$RUN_TITLE_$SUF\\\""}],"source_content_type":"text/x-properties","patch_set":2,"id":"d9c095ee_2955765a","line":301,"range":{"start_line":301,"start_character":29,"end_line":301,"end_character":34},"in_reply_to":"4d712547_a890cc8a","updated":"2024-02-28 13:36:12.000000000","message":"Acknowledged","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"c8ecad6889039f9dd0662af0c04639e55c39c5b8","unresolved":true,"context_lines":[{"line_number":298,"context_line":"do"},{"line_number":299,"context_line":"    # get config variables"},{"line_number":300,"context_line":"    eval test_prep\u003d\\\"\\$PREPARE_$SUF\\\""},{"line_number":301,"context_line":"    eval test_check_skip\u003d\\\"\\$SKIP_$SUF\\\""},{"line_number":302,"context_line":"    eval test_postinit\u003d\\\"\\$POSTINIT_CMD_$SUF\\\""},{"line_number":303,"context_line":"    eval test_cleanup\u003d\\\"\\$CLEANUP_$SUF\\\""},{"line_number":304,"context_line":"    eval test_run_title\u003d\\\"\\$RUN_TITLE_$SUF\\\""}],"source_content_type":"text/x-properties","patch_set":2,"id":"4d712547_a890cc8a","line":301,"range":{"start_line":301,"start_character":29,"end_line":301,"end_character":34},"in_reply_to":"c1be2335_8f5e8256","updated":"2024-02-28 10:01:20.000000000","message":"Having an example would certainly help people setting this up for their first time.","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"b0832391cc375a49746dfd31a8fcda7437c869e1","unresolved":true,"context_lines":[{"line_number":298,"context_line":"do"},{"line_number":299,"context_line":"    # get config variables"},{"line_number":300,"context_line":"    eval test_prep\u003d\\\"\\$PREPARE_$SUF\\\""},{"line_number":301,"context_line":"    eval test_check_skip\u003d\\\"\\$SKIP_$SUF\\\""},{"line_number":302,"context_line":"    eval test_postinit\u003d\\\"\\$POSTINIT_CMD_$SUF\\\""},{"line_number":303,"context_line":"    eval test_cleanup\u003d\\\"\\$CLEANUP_$SUF\\\""},{"line_number":304,"context_line":"    eval test_run_title\u003d\\\"\\$RUN_TITLE_$SUF\\\""}],"source_content_type":"text/x-properties","patch_set":2,"id":"c1be2335_8f5e8256","line":301,"range":{"start_line":301,"start_character":29,"end_line":301,"end_character":34},"in_reply_to":"d0f81f67_ff0f5ae9","updated":"2024-02-21 10:47:39.000000000","message":"Like all the other test settings this is defined in the t_client.rc. I can add an example to t_client.rc-sample","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"c8ecad6889039f9dd0662af0c04639e55c39c5b8","unresolved":true,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    if [ -n \"$test_check_skip\" ]; then"},{"line_number":324,"context_line":"        output \"check whether we need to skip: \u0027$test_check_skip\u0027\""},{"line_number":325,"context_line":"        eval $test_check_skip || {"},{"line_number":326,"context_line":"            output \"skip check failed, SKIP test $SUF.\""},{"line_number":327,"context_line":"\t    SUMMARY_SKIP\u003d\"$SUMMARY_SKIP $SUF\""},{"line_number":328,"context_line":"\t    echo -e \"$outbuf\" ; continue"}],"source_content_type":"text/x-properties","patch_set":2,"id":"71a3de91_936dd75e","line":325,"updated":"2024-02-28 10:01:20.000000000","message":"while this certainly works, the `|| {` style is quite different from the very traditional `if/then/fi` style of the rest of the script.  So I\u0027m a bit undecided what to think about it.\n\n```\n    if eval $test_check_skip ; then : \n    else\n        output ...\n        ...\n    fi\n```\nis not as compact, but might be easier to grok?","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ad99fb584c3955d724e411edc20982143c03027d","unresolved":false,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    if [ -n \"$test_check_skip\" ]; then"},{"line_number":324,"context_line":"        output \"check whether we need to skip: \u0027$test_check_skip\u0027\""},{"line_number":325,"context_line":"        eval $test_check_skip || {"},{"line_number":326,"context_line":"            output \"skip check failed, SKIP test $SUF.\""},{"line_number":327,"context_line":"\t    SUMMARY_SKIP\u003d\"$SUMMARY_SKIP $SUF\""},{"line_number":328,"context_line":"\t    echo -e \"$outbuf\" ; continue"}],"source_content_type":"text/x-properties","patch_set":2,"id":"df742960_4d92cd9b","line":325,"in_reply_to":"71a3de91_936dd75e","updated":"2024-02-28 13:36:12.000000000","message":"Acknowledged","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"}],"tests/unit_tests/openvpn/mock_msg.c":[{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"bf5faff377ee3dbf2aa30252ec34eae0d1e48a04","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    msg(M_FATAL, \"Assertion failed at %s:%d (%s)\", filename, line, condition ? condition : \"\");"},{"line_number":92,"context_line":"    _exit(1);"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":"#endif"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"/*"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9ff035ac_ffa92d48","line":94,"range":{"start_line":94,"start_character":1,"end_line":94,"end_character":6},"updated":"2024-02-21 09:16:03.000000000","message":"I wonder if mock_msg.c is the right place for assert_failed(). Maybe it should just be moved somewhere else. opinions?","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"c8ecad6889039f9dd0662af0c04639e55c39c5b8","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    msg(M_FATAL, \"Assertion failed at %s:%d (%s)\", filename, line, condition ? condition : \"\");"},{"line_number":92,"context_line":"    _exit(1);"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":"#endif"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"/*"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"4daebdcf_1d3501b2","line":94,"range":{"start_line":94,"start_character":1,"end_line":94,"end_character":6},"in_reply_to":"0cb16f2d_9efcdae7","updated":"2024-02-28 10:01:20.000000000","message":"Not sure I understand why we have cmocka specific .c files with #ifdef NO_CMOCKA?  Is this ever used outside the unit test context?","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ad99fb584c3955d724e411edc20982143c03027d","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    msg(M_FATAL, \"Assertion failed at %s:%d (%s)\", filename, line, condition ? condition : \"\");"},{"line_number":92,"context_line":"    _exit(1);"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":"#endif"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"/*"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"91fc1e95_73420afd","line":94,"range":{"start_line":94,"start_character":1,"end_line":94,"end_character":6},"in_reply_to":"4daebdcf_1d3501b2","updated":"2024-02-28 13:36:12.000000000","message":"Yes, in this PR it is now used in t_client context, which is not a unit test context","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"ef6ff124155d7007dbc4a918e1ec7b9f20e65861","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    msg(M_FATAL, \"Assertion failed at %s:%d (%s)\", filename, line, condition ? condition : \"\");"},{"line_number":92,"context_line":"    _exit(1);"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":"#endif"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"/*"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"aeaf2450_604a1484","line":94,"range":{"start_line":94,"start_character":1,"end_line":94,"end_character":6},"in_reply_to":"91fc1e95_73420afd","updated":"2024-03-06 13:54:26.000000000","message":"Acknowledged","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"b0832391cc375a49746dfd31a8fcda7437c869e1","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    msg(M_FATAL, \"Assertion failed at %s:%d (%s)\", filename, line, condition ? condition : \"\");"},{"line_number":92,"context_line":"    _exit(1);"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":"#endif"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"/*"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"0cb16f2d_9efcdae7","line":94,"range":{"start_line":94,"start_character":1,"end_line":94,"end_character":6},"in_reply_to":"9ff035ac_ffa92d48","updated":"2024-02-21 10:47:39.000000000","message":"assert_failed is defined in error.c like all the other functions mocked here, so it seems like a natural place.\n\nThe alternatives I saw for my patch were:\n- duplicate mock_msg.c outside of unit_tests/openvpn. But except for assert_failed this works perfectly fine.\n- try to use original error.c. But that pulls in a lot of platform code. We could look into split out all the complex msg stuff from error.c into its own msg.c. Then we could use error.c in the tests and mock less stuff here.\n- move assert_failed to its own mock_assert.c. The current solution seems slightly simpler. But that would obviously be a possible alternative if we don\u0027t like the NO_CMOCKA define.","commit_id":"02ed9fb870d815d0c0220bd260956fced0d99798"}]}
