Tool that generates unit test by C/C++ source code, trying to reach all branches and maximize code coverage

Related tags

CLI UTBotCpp
Overview

What is UTBotCpp?

UTBotCpp generates test cases by code, trying to cover maximum statements and execution paths. We treat source code as source of truth assuming that behavior is correct and corresponds to initial user demand. Generated tests are placed in so-called regression suite. Thus, we fixate current behavior by generated test cases. Using UTBotCpp developers obtain full control of their code. No future change can break the code without being noticed once it's covered with tests generated by UTBot. This way, modifications made by developers to an existing code are much safer. Hence, with the help of generated unit tests, UTBot provides dramatic code quality improvement.

How to install and use UTBot

For now, you can only use UTBot under Ubuntu. UTBot has been tested under Ubuntu 14, 16, and 18. Navigate to the Releases GitHub page and download any version of UTBot. UTBot is distrbuted as an archive that contains

  1. A pack utbot_distr.tar.gz that contains UTBot binary and its dependencies;
  2. UTBot plugin for Visual Studio code — utbot_plugin.vsix;
  3. A version version.txt;
  4. A run script unpack_and_run_utbot.sh.

To launch UTBot, unzip the archive and run the chmod +x unpack_and_run_utbot.sh && ./unpack_and_run_utbot.sh command (we recommend doing it in a fresh directory to make UTBot removing easier). To remove UTBot, simply delete this directory.

To install UTBot VSCode plugin, use VSCode Install from VSIX command.

How to contribute to UTBot

See DEVNOTE.md.

Comments
  • [BUG] Bear doesn't work when only python3 is installed

    [BUG] Bear doesn't work when only python3 is installed

    Steps to reproduce the behavior:

    1. Complete instruction with installation Ubuntu 18.04 on WSL - https://github.com/UnitTestBot/UTBotCpp/wiki/docker-free-wsl2.
    2. As result only python3 is installed and python is undefined
    3. Try to run ~/utbotcpp/utbot_distr/bear/bin/bear

    Expected behavior bear executed

    Actual behavior It fails /usr/bin/env: ‘python’: No such file or directory, so later it cannot be used by UTBot

    bug invalid 
    opened by tyuldashev 5
  • Fields on 'Server Setup' page of wizard are misaligned

    Fields on 'Server Setup' page of wizard are misaligned

    To Reproduce Steps to reproduce the behavior:

    1. Start 'Run UTBot: Quickstart` wizard
    2. Proceed to Server setup page

    Actual behavior Fields and labels are misaligned

    image

    Expected behavior

    • Host, GRPC port and SFTP port are start at the same horizontal position. Now it seems that port settings are more to the right than Host
    • Input fields for Host, GRPC port and SFTP port are start at the same horizontal position no matter of the length of label
    • Messages Successfully pinged... are the same vertical position as ports labels, now they are more the top than labels
    bug vscode-plugin verified 
    opened by tyuldashev 4
  • [BUG] UTBot server dies on specific project with custom build script

    [BUG] UTBot server dies on specific project with custom build script

    Description

    To Reproduce Steps to reproduce the behavior:

    1. Clone https://github.com/libbpf/libbpf project
    2. Unpack and add attached utbot_build.sh to the root of the project utbot_build.zip
    3. Unpack and replace Makefile from src with attached one Makefile.zip
    4. Configure UTbot so it successfully configures on the project
    5. Try to generate tests for any 'C' file in src folder

    Expected behavior Tests are generated.

    Actual behavior Generation fails with an error image

    Server process exited without any logs.

    Additional information I've added utbot_build.sh file which enters src folder and starts make. Also Makefile was modified, so it outputs to build directory

    bug verified 
    opened by tyuldashev 4
  • Better structure fields initialization in generated tests

    Better structure fields initialization in generated tests

    We need the option to transform initialization from initialization-list-based way

        {0, 0, 
          {1, 2}, 
          {1, 2, 3}, 
          0, 0, 0, 
          {4,5,{3,3}}}
    

    to struct-field-based:

    structA.x = 0;
    structA.y = 0;
    structA.subStru.m = 1;
    structA.subStru.n = 2;
    ...
    

    Seems like it should be a UI option in the formatting settings.

    enhancement customer 
    opened by alexey-utkin 4
  • Test runner in batch mode failed

    Test runner in batch mode failed

    Steps to reproduce:

    1. Configure project libbacktrace
    2. Generate tests for file elf.c
    3. Run any regression test individually, it must be passed and an icon showed up
    4. Run all tests in file at once, no icons showed
    5. Check logs
    2022-04-11 10:42:20.166 [utbot-64TK      ]        GTestLogger.cpp:10    INFO| Running main() from /utbot_distr/gtest/googletest/src/gtest_main.cc
    Note: Google Test filter = *.elf_zlib_inflate_table_test_1
    [==========] Running 1 test from 1 test suite.
    [----------] Global test environment set-up.
    [----------] 1 test from error
    [ RUN      ] error.elf_zlib_inflate_table_test_1
    AddressSanitizer:DEADLYSIGNAL
    =================================================================
    ==11372==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x000000000000 bp 0x000000000000 sp 0x7fffffffdee0 T0)
    ==11372==Hint: pc points to the zero page.
    ==11372==The signal is caused by a READ memory access.
    ==11372==Hint: address points to the zero page.
        #0 0x0  (<unknown module>)
        #1 0x7ffff7bc697f  (/lib/x86_64-linux-gnu/libpthread.so.0+0x1297f)
    
    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: SEGV (<unknown module>) 
    ==11372==ABORTING
    /home/utbot/projects/libbacktrace/build/utbot/make/elf.mk:79: recipe for target 'run' failed
    make: *** [run] Error 1
    
    2022-04-11 10:42:20.166 [utbot-64TK      ]         TestRunner.cpp:154      1| All run commands were executed
    2022-04-11 10:42:20.167 [utbot-64TK      ]   LlvmCoverageTool.cpp:69    WARN| All profraw files are empty: /home/utbot/tmp/utbot-64TK/libbacktrace/coverage/lcov/elf_zlib_inflate_table_test_1.profraw
    2022-04-11 10:42:20.167 [utbot-64TK      ]ServerCoverageAndResult:24    INFO| Creating coverage response.
    2022-04-11 10:42:20.167 [utbot-64TK      ]ServerCoverageAndResult:58    INFO| Coverage response generated
    2022-04-11 10:42:20.167 [utbot-64TK      ] TimeExecStatistics.cpp:117      1| Time execution statistic report:
     | __________________________________________________ | ____________ | _______________ | ____________ | 
     |                                           Function | % of overall | Total time (ms) | Times called | 
     | __________________________________________________ | ____________ | _______________ | ____________ | 
     | CoverageAndResultsGenerator.cpp:37        generate |       100.00 |             227 |            1 | 
     | TestRunner.cpp:159                            init |        56.83 |             129 |            1 | 
     | TestRunner.cpp:135                        runTests |        42.73 |              97 |            1 | 
     | LlvmCoverageTool.cpp:54        getCoverageCommands |         0.00 |               0 |            1 | 
     | CoverageAndResultsGenerator.cpp:86 collectCoverage |         0.00 |               0 |            1 | 
     | __________________________________________________ | ____________ | _______________ | ____________ |
    
    bug duplicate need to check 
    opened by operasfantom 4
  • Add interactive mode

    Add interactive mode

    Now interactive mode doesn't work on generation tests for project or folder, but for file all are fine. For file linked-list.cpp generation time equals 52s for 1 parallel process, 36s - for 5 and 20s - for 10. For other files it's impossible to see difference because number of functions in files are small

    opened by sava-cska 4
  • "Couldn't link any file" error when generating tests for project

    Version v1.0.31-alpha Test project

    Steps to reproduce:

    1. Select lib folder
    2. Right click -> UTbot: Generate Tests for Project

    Actual -> FAILED_PRECONDITION: Couldn't link any files LinkError LinkError0 Expected -> Test should be generated

    bug 
    opened by asolqa 4
  • [BUG] Tests run on outdated code

    [BUG] Tests run on outdated code

    Version: 2022.8.233

    Description If user generates tests, runs them and updates code then next running still uses 'old' code.

    To Reproduce Steps to reproduce the behavior:

    1. Write a function like that
    short min_short(short a, short b) {
        if (a < b) {
            return a;
        }
        return b;
    }
    
    1. Generate tests for the file
    2. Run tests with coverage - both passed
    3. Update condition from a < b to a > b and save the file
    4. Run generated tests again - both test passed again. Expected that one test fails.

    I've checked that code is actually updated on the remote server. It doesn't happen if user skips step 3 and run only modified code.

    bug verified 
    opened by tyuldashev 3
  • Tests are generated with misaligned addresses for pointers

    Tests are generated with misaligned addresses for pointers

    Steps to reproduce

    1. Open and configure project coreutils
    2. Choose target libcoreutils.a
    3. Generate tests for file gnulib/lib/di-set.c
    4. See tests

    Test

    TEST(error, di_set_lookup_test_2)
    {
        struct di_set dis = {NULL, NULL, (struct di_ent *) 0xff};
        di_set_lookup(&dis, 0UL, 0UL);
        struct di_set expected_dis = {NULL, NULL, NULL};
    }
    

    Note

    (struct di_ent *) 0xff has a misaligned address but requires 8 byte alignment

    klee top focus 
    opened by operasfantom 3
  • [KLEE] Assertion in lazy instantiation failed

    [KLEE] Assertion in lazy instantiation failed

    Steps to reproduce:

    1. Configure project libbacktrace
    2. Generate tests for function elf_zlib_inflate_table in file dwarf.c
    3. Find errors in logs
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   KLEE: ERROR: elf.c:1268: memory error: out of bound pointer
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   KLEE: NOTE: now ignoring this error at this location
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   utbot: ../lib/Core/Executor.cpp:4880: klee::ObjectPair klee::Executor::lazyInstantiateVariable(klee::ExecutionState &, ref<klee::Expr>, klee::KInstruction *, uint64_t): Assertion `!isa<ConstantExpr>(address)' failed.
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   linux-gnu/libpthread.so.0+0x12980)
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .    #4 0x00007ffff46fae87 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3ee87)
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .    #5 0x00007ffff46fc7f1 abort (/lib/x86_64-linux-gnu/libc.so.6+0x407f1)
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .    #6 0x00007ffff46ec3fa (/lib/x86_64-linux-gnu/libc.so.6+0x303fa)
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .    #7 0x00007ffff46ec472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .    #8 0x00000000032a5062 klee::Executor::lazyInstantiateVariable(klee::ExecutionState&, klee::ref<klee::Expr>, klee::KInstruction*, unsigned long) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Core/Executor.cpp:0:3
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .    #9 0x00000000032968be klee::Executor::executeMemoryOperation(klee::ExecutionState&, klee::Executor::MemoryOperation, klee::ref<klee::Expr>, klee::ref<klee::Expr>, klee::KInstruction*) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Core/Executor.cpp:0:0
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #10 0x000000000329911f klee::ref<klee::Expr>::dec() const /home/utbot/UTBotCpp/submodules/klee/build/../include/klee/ADT/Ref.h:98:9
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #11 0x000000000329911f klee::ref<klee::Expr>::~ref() /home/utbot/UTBotCpp/submodules/klee/build/../include/klee/ADT/Ref.h:89:13
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #12 0x000000000329911f klee::Executor::executeInstruction(klee::ExecutionState&, klee::KInstruction*) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Core/Executor.cpp:2845:5
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #13 0x00000000032a1d45 klee::Executor::executeStep(klee::ExecutionState&) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Core/Executor.cpp:3874:3
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #14 0x00000000032a27db klee::Executor::guidedRun(klee::ExecutionState&) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Core/Executor.cpp:4011:13
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #15 0x00000000032a2516 std::enable_if<__and_<std::__not_<std::__is_tuple_like<klee::PTree*> >, std::is_move_constructible<klee::PTree*>, std::is_move_assignable<klee::PTree*> >::value, void>::type std::swap<klee::PTree*>(klee::PTree*&, klee::PTree*&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h:193:19
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #16 0x00000000032a2516 std::unique_ptr<klee::PTree, std::default_delete<klee::PTree> >::reset(klee::PTree*) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:400:2
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #17 0x00000000032a2516 std::unique_ptr<klee::PTree, std::default_delete<klee::PTree> >::operator=(std::nullptr_t) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:336:2
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #18 0x00000000032a2516 klee::Executor::runGuided(klee::ExecutionState&, klee::KFunction*) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Core/Executor.cpp:3855:15
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #19 0x00000000032a71e9 klee::Executor::runMainAsGuided(llvm::Function*, int, char**, char**) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Core/Executor.cpp:5163:1
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #20 0x000000000327f0b8 __gnu_cxx::__normal_iterator<KTest* const*, std::vector<KTest*, std::allocator<KTest*> > >::__normal_iterator(KTest* const* const&) /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_iterator.h:804:20
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #21 0x000000000327f0b8 std::vector<KTest*, std::allocator<KTest*> >::begin() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:818:16
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #22 0x000000000327f0b8 std::vector<KTest*, std::allocator<KTest*> >::empty() const /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1005:16
    2022-04-11 10:30:54.839 [utbot-64TK      ]        RunKleeTask.cpp:66       1| .   .   #23 0x000000000327f0b8 run_klee_on_function(int, char**, char**, std::unique_ptr<KleeHandler, std::default_delete<KleeHandler> >&, std::unique_ptr<klee::Interpreter, std::default_delete<klee::Interpreter> >&, llvm::Module*, std::vector<bool, std::allocator<bool> >&, std::vector<std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> >, std::allocator<std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> > > >&) /home/utbot/UTBotCpp/submodules/klee/build/../lib/Runner/run_klee.cpp:1554:19
    
    bug klee 
    opened by operasfantom 3
  • Possible UI/UX improvements of UTBot Wizard #494

    Possible UI/UX improvements of UTBot Wizard #494

    • check presence of SFTP and SARIF plugins
    • configure SFTP by writing sftp.json
    • runs SFTP sync for project with server copy

    Signed-off-by: Alexey Utkin [email protected]

    opened by alexey-utkin 2
  • Error to find compile_commands.json on projects with Makefile.

    Error to find compile_commands.json on projects with Makefile.

    Description When trying to use utbot on libbpf project run falls with next error:

    image

    To Reproduce

    1. Follow issue 490 to configure the project.
    2. Try to generate tests for any C file.

    Additional information Due to absence of cmake in this project, compile_commands.json is as follows:

    image

    Now utbot cannot parse it.

    bug 
    opened by kichunya 0
  • Allow to use different options to store SFTP passwords

    Allow to use different options to store SFTP passwords

    Description After fixing #546 it's possible to use different passwords, but only if they are stored as plain text in sftp.json. While user may prefer to use other authentication abilities of SFTP plugin.

    To Reproduce Steps to reproduce the behavior:

    1. Assuming utbot user on remote server has non default password (other than utbot).
    2. Configure SFTP plugin but do not specify password in the sftp.json config file.
    3. Sync 'Local->Remote', SFTP just asks password on the fly and does not store it in the file.
    4. Try to configure UTBot through wizard, on Server Setup page enter SFTP port and try to click Next button.

    Expected behavior UTBot uses SFTP functionality to sync using stored in memory password or asks to enter password. But don't stores it in the file.

    Actual behavior 'SFTP connection' error happens, user cannot pass this wizard page.

    Additional context Besides interactive login, user also may use SSH to configure synchronization.

    enhancement vscode-plugin 
    opened by tyuldashev 0
  • Auto target does not work for project as expected

    Auto target does not work for project as expected

    Description When auto target is chosen for project generation, it is expected that for each source file in project the exact target would be chosen. However, currently this functionality is unavailable. Instead, when auto target is selected for project then only one target would be chosen and tests for sources included into this target would be generated.

    Also there exists some confusing pieces of code that should be either removed or fixed to support the auto target for project generation. Those are the following.

    1. TargetBuildDatabase constructor in TargetBuildDatabase.cpp file. isAutoTarget flag assignment is incorrect. Until this commit the flag assignment used to be the following. image In fact this assignment is the same as isAutoTarget = false because before line 22: isAutoTarget = target == GrpcUtils::UTBOT_AUTO_TARGET_PATH target is assigned as a real path to a target and this comparison always fails. By PR fixing auto target for files and lines this line was removed and flag was set to be always false.

    2. The bigger issue is in Linker.cpp, function linkForProject. Here we try to link the targets one by one calling linkWholeTarget function. image Moving to this function we can notice that in line 126 we change target and at the end of the function (line 158) we change the target back. However, if we take a look at setTargetPath method, we'll find out that target will be changed only once. The reason of such behavior is that when entering this function the first time, if isAutoTarget is true, then we proceed to if's body and change target path. However, for new target set flag will be false as path to a target is set manually, so calling this function for the second time will do nothing. image

    To conclude, I suppose this issue needs further investigation. Also tests for correct behavior should be definitely added. This can be, for example, project with multiple targets not included to one big target. In this case tests for all source files should be generated.

    Environment UTBot main at 94d79a3731e45ba00b0d0850beb003f8a3dcd1b8. Release 2022.10.4.

    bug 
    opened by Lana243 0
  • `jq` project: UTBot cannot generate tests, KLEE internal errors, Plugin cannot re-connect to the server

    `jq` project: UTBot cannot generate tests, KLEE internal errors, Plugin cannot re-connect to the server

    Description In most cases when tests are generated for jq project it results in error like 'function is too complex', 'syntax is not supported' or 'KLEE internal error'. Also after generation tests for one of the files plugin cannot re-connect to the server anymore

    To Reproduce Steps to reproduce the behavior:

    1. Clone and configure https://github.com/stedolan/jq project:
    git clone https://github.com/stedolan/jq
    cd jq
    git submodule update --init
    
    autoreconf -fi
    cd build
    ../configure --with-oniguruma=builtin
    
    1. Add utbot_build.sh file with following content to project root:
    cd build
    make
    
    1. Configure UTBot through the wizard, so code is copied to the server

    2. Make utbot_build.sh executable on the server

    3. Re-configure UTBot once again if needed, so project targets appear in UTBot toolwindow

    4. Select jq target

    5. Generate and run tests for static jv type_error(jv bad, const char* msg) function in src/builtin.c file:

    Expected behavior Tests without errors generated and executed

    Actual behavior Generated tests contain following errors:

    // Some tests for function 'type_error' were skipped, as execution of function leads KLEE to the internal error. See console log for more details.
    

    Execution fails with error:

    /home/utbot/remote/jq/tests/makefiles/src/../../../tests/src/builtin_dot_c_test.cpp:9:27: error: aggregate ‘OnigEncodingTypeST OnigEncodingUTF8’ has incomplete type and cannot be defined
        9 | struct OnigEncodingTypeST OnigEncodingUTF8;
          |                           ^~~~~~~~~~~~~~~~
    /home/utbot/remote/jq/tests/makefiles/src/../../../tests/src/builtin_dot_c_test.cpp:10:1: error: ‘OnigSyntaxType’ does not name a type
       10 | OnigSyntaxType OnigSyntaxPerl_NG;
          | ^~~~~~~~~~~~~~
    
    1. Generate and run tests for file src/builtin.c:

    Expected behavior Tests are generated and run

    Actual behavior Execution fails with following errors:

    /home/utbot/remote/jq/tests/makefiles/src/../../../tests/src/compile_dot_c_test.cpp: In member function ‘virtual void UTBot::error_block_join_test_6_Test::TestBody()’:
    /home/utbot/remote/jq/tests/makefiles/src/../../../tests/src/compile_dot_c_test.cpp:4366:21: error: using typedef-name ‘UTBot::opcode’ after ‘enum’
     4366 |         .op = (enum opcode)(139711720),
          |                     ^~~~~~
    In file included from /home/utbot/remote/jq/tests/makefiles/src/../../../tests/src/compile_dot_c_test.cpp:5:
    /home/utbot/remote/jq/tests/makefiles/src/../../../tests/src/compile_dot_c_test.h:732:3: note: ‘UTBot::opcode’ has a previous declaration here
      732 | } opcode;
          |   ^~~~~~
    
    1. I didn't find exec steps to reproduce but most often hang happens on tests generation for whole file src/builtin.c or src/compile.c, after several executions generation hangs, after canceling when user tries to invoke generation error happens: image If user closes and opens project without restarting server then UTBot works again.
    bug wrong generation 
    opened by tyuldashev 0
  • `curl` project configuration failure

    `curl` project configuration failure

    Description When trying to use UTBot for testing curl project it fails during configuration phase. It seems that it's result of conflict between utbot distribution libraries and system libraries.

    To Reproduce Steps to reproduce the behavior:

    1. Ping me to get preconfigured project or
    2. Clone https://github.com/curl/curl
    3. Run buildconf
    4. Run configure --without-ssl to simplify project configuration
    5. Try to start UTBot test generation for any of C-files.

    Expected behavior Tests are supposed to be generated.

    Actual behavior Configuration fails, logs contains following errors:

    utbot@07c8870522cb:~/remote/curl/build$ cat /home/utbot/distr/2022.11.307/utbot_distr/logs/t00814305-RZT7/curl/2022-12-01T13-12-27360.log | grep error
    /home/utbot/remote/curl/lib/easy_lock.h:80:9: error: address argument to atomic operation must be a pointer to a trivially-copyable type ('_Atomic(int) *' invalid)
    /home/utbot/remote/curl/lib/easy_lock.h:80:8: error: invalid argument type 'typeof (*__atomic_exchange_ptr)' (aka '_Atomic(int)') to unary expression
    /home/utbot/remote/curl/lib/easy_lock.h:83:11: error: address argument to atomic operation must be a pointer to a trivially-copyable type ('_Atomic(int) *' invalid)
    /home/utbot/remote/curl/lib/easy_lock.h:83:5: error: statement requires expression of scalar type ('typeof (*__atomic_load_ptr)' (aka '_Atomic(int)') invalid)
    /home/utbot/remote/curl/lib/easy_lock.h:98:3: error: address argument to atomic operation must be a pointer to a trivially-copyable type ('_Atomic(int) *' invalid)
    /home/utbot/remote/curl/lib/easy_lock.h:80:9: error: address argument to atomic operation must be a pointer to a trivially-copyable type ('_Atomic(int) *' invalid)
    /home/utbot/remote/curl/lib/easy_lock.h:80:8: error: invalid argument type 'typeof (*__atomic_exchange_ptr)' (aka '_Atomic(int)') to unary expression
    /home/utbot/remote/curl/lib/easy_lock.h:83:11: error: address argument to atomic operation must be a pointer to a trivially-copyable type ('_Atomic(int) *' invalid)
    /home/utbot/remote/curl/lib/easy_lock.h:83:5: error: statement requires expression of scalar type ('typeof (*__atomic_load_ptr)' (aka '_Atomic(int)') invalid)
    :In file included from  /home/utbot/distr/2022.11.307/utbot_distr/debs-install/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.herror:: 34address argument to atomic operation must be a pointer to a trivially-copyable type ('_Atomic(int) *' invalid):
    

    I assume that's result of the mix of libraries and header files of utbot-distribution and system.

    Additional context

    • There is no any problems when I invoke cmake manualy
    • configure --with-openssl results in the same errors
    bug 
    opened by tyuldashev 0
Releases(2022.12.0)
  • 2022.12.0(Dec 28, 2022)

    What's Changed

    • Fixes for #533, #530, #529 (partially), #528 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/537
    • Fix unclickable SFTP and SARIF links in vscode plugin warnings (Bug #461) by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/539
    • Add source file in UTBot test`s Makefiles dependencies by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/542
    • Refresh wrappers after modifying source files. by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/545
    • Update bear tag by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/550
    • External variables support (closes #514) by @Lana243 in https://github.com/UnitTestBot/UTBotCpp/pull/522
    • Add counter of read/write bytes in files by @sava-cska in https://github.com/UnitTestBot/UTBotCpp/pull/524
    • Dont fail error suites by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/540
    • Add rvalue support by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/551
    • Fix target selection for files and lines (closes #557) by @Lana243 in https://github.com/UnitTestBot/UTBotCpp/pull/561
    • Changes for using UTBotCPP on scalapack project. by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/560
    • Fix wizard bugs by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/566
    • Fix problem with stdin-read variable in klee and add test for launchi… by @sava-cska in https://github.com/UnitTestBot/UTBotCpp/pull/563
    • Fix stubs for function pointers (closes #462) by @Lana243 in https://github.com/UnitTestBot/UTBotCpp/pull/565
    • Fix Server log in vs-plugin. by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/571
    • Fix server fall. by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/568
    • Fix test and server logs in vs-code. by @kichunya in https://github.com/UnitTestBot/UTBotCpp/pull/572

    New Contributors

    • @olganaumenko made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/558

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.10.7...2022.12.0

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.12.0.zip(508.25 MB)
  • 2022.10.6(Nov 5, 2022)

  • 2022.10.5(Oct 11, 2022)

  • 2022.10.4(Oct 10, 2022)

    What's Changed

    • Unnecessary "utbot_abs_error" constant added to the test #405 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/431
    • Added math header for lazy instantiated objects if required. Increased time limit for bcov by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/433
    • Unnamed bit fields fix by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/435
    • Fixed test generation for 32 bits projects #442 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/445
    • Added regression test for pointers. Updated KLEE by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/446
    • Implemented support for custom build script inside CI Action on Github #451 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/455
    • Fixed initialization of anonymous unions 'from_bytes' for some cases #447 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/467
    • Update KLEE, fix small bugs by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/466
    • Reformat build structure by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/457
    • Little UI improvements: combined logs and targets tool windows into one, removed verbose widget by @vol0n in https://github.com/UnitTestBot/UTBotCpp/pull/456
    • UTBot don't decorate struct field [BUG] #465 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/470
    • Filed Segmentation Fault in user project #473 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/474
    • Minor version of plugin and server is not properly set #471 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/480
    • Fix generation for coreutils #487 by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/487

    New Contributors

    • @getN1ght made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/433

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.9.0...2022.10.4

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.10.4.zip(499.05 MB)
  • 2022.10.3(Oct 2, 2022)

    What's Changed

    • Unnecessary "utbot_abs_error" constant added to the test #405 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/431
    • Added math header for lazy instantiated objects if required. Increased time limit for bcov by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/433
    • Unnamed bit fields fix by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/435
    • Fixed test generation for 32 bits projects #442 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/445
    • Added regression test for pointers. Updated KLEE by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/446
    • Implemented support for custom build script inside CI Action on Github #451 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/455
    • Fixed initialization of anonymous unions 'from_bytes' for some cases #447 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/467
    • Update KLEE, fix small bugs by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/466
    • Reformat build structure by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/457
    • Little UI improvements: combined logs and targets tool windows into one, removed verbose widget by @vol0n in https://github.com/UnitTestBot/UTBotCpp/pull/456
    • UTBot don't decorate struct field [BUG] #465 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/470
    • Filed Segmentation Fault in user project #473 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/474
    • Minor version of plugin and server is not properly set #471 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/480

    New Contributors

    • @getN1ght made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/433

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.9.0...2022.10.3

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.10.3.zip(498.81 MB)
  • 2022.10.0(Sep 28, 2022)

    What's Changed

    • Unnecessary "utbot_abs_error" constant added to the test #405 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/431
    • Added math header for lazy instantiated objects if required. Increased time limit for bcov by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/433
    • Unnamed bit fields fix by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/435
    • Fixed test generation for 32 bits projects #442 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/445
    • Added regression test for pointers. Updated KLEE by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/446
    • Implemented support for custom build script inside CI Action on Github #451 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/455
    • Fixed initialization of anonymous unions 'from_bytes' for some cases #447 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/467
    • Update KLEE, fix small bugs by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/466
    • Reformat build structure by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/457
    • Little UI improvements: combined logs and targets tool windows into one, removed verbose widget by @vol0n in https://github.com/UnitTestBot/UTBotCpp/pull/456
    • UTBot don't decorate struct field [BUG] #465 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/470
    • Filed Segmentation Fault in user project #473 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/474

    New Contributors

    • @getN1ght made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/433

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.9.0...2022.10.0

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.10.0.zip(498.80 MB)
  • 2022.9.1(Sep 20, 2022)

    What's Changed

    • [BUG] Unnecessary "utbot_abs_error" constant added to the test #405 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/431
    • Added math header for lazy instantiated objects if required. Increased time limit for bcov by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/433
    • unnamed bit fields fix by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/435
    • [BUG] Cannot run generated test for 32 bits projects #442 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/445
    • Added regression test for pointers. Updated KLEE by @getN1ght in https://github.com/UnitTestBot/UTBotCpp/pull/446
    • Implement support for custom build script inside CI Action on Github #451 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/455
    • Implement support for custom build script inside CI Action on Github Part 2 (Command line) #458 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/459
    • Disable auto add issue to project management by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/460
    • fetcher & tests minor fixes by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/454
    • [BUG] Anonymous union initialized using 'from_bytes' in some cases #447 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/467
    • Fail run test for function sumSignArray [BUG] #464 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/468
    • Update KLEE, fix small bugs by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/466

    New Contributors

    • @getN1ght made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/433

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.9.0...2022.9.1

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.9.1.zip(498.75 MB)
  • 2022.9.0(Sep 2, 2022)

    What's Changed

    • Portable tests by @antipeon in https://github.com/UnitTestBot/UTBotCpp/pull/158
    • Add support symbolic input/output for C by @sava-cska in https://github.com/UnitTestBot/UTBotCpp/pull/315
    • #332 Use UTBotCpp as static analyzer and report results in SARIF by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/333
    • [BUG] CLI_Test.Generate_Project_Tests fails on some PCs #347 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/348
    • Add generation statistics report by @Lana243 in https://github.com/UnitTestBot/UTBotCpp/pull/329
    • supported examples added by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/339
    • vscode plugin shortcuts, comments missing whitespace fix by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/356
    • #216 UTBotCpp does not support test generation for 32bit projects by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/373
    • [BUG] Bad path entry in unittestbot.paths.sourceDirectories parameter on Windows OS #376 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/377
    • Clion plugin for UTBot (#369) by @vol0n in https://github.com/UnitTestBot/UTBotCpp/pull/369
    • Switch to klee 2.3 by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/392
    • Not support anonymous union in struct #317 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/391
    • Fixing generations for files that included in two targets by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/258
    • bit-fields support added by @belous-dp in https://github.com/UnitTestBot/UTBotCpp/pull/383

    New Contributors

    • @belous-dp made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/339
    • @pavponn made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/411

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.7.0...2022.9.0

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.9.0.zip(498.66 MB)
  • 2022.7.3(Jul 27, 2022)

  • 2022.7.2(Jul 26, 2022)

    What's Changed

    • [BUG] SARIF report is not generated for server on local host #340 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/344
    • [BUG] CLI_Test.Generate_Project_Tests fails on some PCs #347 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/348

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.7.1...2022.7.2

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.7.2.zip(475.93 MB)
  • 2022.7.1(Jul 21, 2022)

    What's Changed

    • Portable tests by @antipeon in https://github.com/UnitTestBot/UTBotCpp/pull/158
    • Add support symbolic input/output for C by @sava-cska in https://github.com/UnitTestBot/UTBotCpp/pull/315
    • Use UTBotCpp as static analyzer and report results in SARIF by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/333

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/2022.7.0...2022.7.1

    Source code(tar.gz)
    Source code(zip)
  • 2022.7.0(Jul 4, 2022)

    work on ubuntu 18.04, 20.04

    What's Changed

    • UTBotCpp-253 Better structure fields initialization in generated tests #253 by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/263
    • Use klee_assume(s[N - 1] == '\0') call for the last element of string by @operasfantom in https://github.com/UnitTestBot/UTBotCpp/pull/279
    • #246 Support (or ignore) gcc-specific switches while analyzing in clang toolchain by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/282
    • Build ByteCode by make instead of shellExec by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/285
    • Don't print empty test files by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/288
    • Fix disable stubs by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/289
    • Add coverage and results statistics report by @Lana243 in https://github.com/UnitTestBot/UTBotCpp/pull/261
    • #284 Optimization of VC UTBot Quickstart wizard by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/302
    • #231 Compile database may content response files by @alexey-utkin in https://github.com/UnitTestBot/UTBotCpp/pull/305
    • Version unification for docker, server and plugin by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/306
    • Fix generate for folder by @ladisgin in https://github.com/UnitTestBot/UTBotCpp/pull/307

    New Contributors

    • @victoriafomina made their first contribution in https://github.com/UnitTestBot/UTBotCpp/pull/296

    Full Changelog: https://github.com/UnitTestBot/UTBotCpp/compare/v1.0.167...2022.7.0

    Source code(tar.gz)
    Source code(zip)
    utbot-release-2022.7.0.zip(474.73 MB)
  • v1.0.167(May 20, 2022)

  • v1.0.93(Feb 10, 2022)

Owner
null
Boiler plate template for C++ projects, with CMake, Doctest, Travis CI, Appveyor, Github Actions and coverage reports.

Boiler plate for C++ projects This is a boiler plate for C++ projects. What you get: Sources, headers and mains separated in distinct folders Use of m

Bendik Samseth 521 Jan 3, 2023
A command-line tool to generate Linux manual pages from C source code.

mangen A command-line tool to generate Linux manual pages from C source code. Description mangen is, as said above, a program to generate Linux manual

null 2 Nov 15, 2021
This is the massive repository for all code for the class CIS3250 Fall Semester.

========================================== Transforming Shapes Through Matrix Multiplication ========================================== Description o

null 4 Nov 25, 2021
The new Windows Terminal and the original Windows console host, all in the same place!

The new Windows Terminal and the original Windows console host, all in the same place!

Microsoft 86.8k Dec 29, 2022
Toybox: all-in-one Linux command line.

Toybox: all-in-one Linux command line.

Rob Landley 1.8k Dec 27, 2022
nicegraf-shaderc is a command-line tool that transforms HLSL code into shaders for various graphics APIs.

User Manual Table of Contents Introduction Project Status Obtaining the Source Code and Building Running Defining Techniques Generated Header File Pip

nicebyte 94 Dec 8, 2022
CodeCompactor is an open source program designed for reducing the size of your code!

CodeCompacter An exciting, new and open source program for reducing the length of your code! Usage: ./CodeCompacter {ARGUMENTS} Arguments: -L {languag

Henry Dewsnap 1 Nov 28, 2021
This repository contains the source code of the project(StereoCraft) that we have developed for the Mixed Reality Hackathon organized by Microsoft using StereoKit SDK

StereoCraft - A block-building like experience built using StereoKit This repository contains the source code of the project that we have developed fo

G Bhanuteja 2 Dec 23, 2021
Bootloader recovery and updater tool for StarFive JH17x0 SoCs.

JH71xx-tools Bootloader recovery and updater tool for StarFive JH7100 SoCs.

Kali Prasad 12 May 1, 2022
A command line tool for numerically computing Out-of-time-ordered correlations for N=4 supersymmetric Yang-Mills theory and Beta deformed N=4 SYM.

A command line tool to compute OTOC for N=4 supersymmetric Yang–Mills theory This is a command line tool to numerically compute Out-of-time-ordered co

Gaoli Chen 1 Oct 16, 2021
CfgManipulator is a fast and powerful tool for working with configuration files for the C++ language

CfgManipulator is a fast and powerful tool for working with configuration files for the C++ language. It can read, create strings and sections, change the value of a string and much more.

Sanya 2 Jan 28, 2022
FastReport.Cloud console tool for Linux and perhaps some other OSes

FastReport Cloud console shell This is a simple console shell to FastReport Cloud service. Prerequests GNU packages for build shell: curl-development

Aleksey Mandrykin 2 Feb 10, 2022
Real time crypto monitoring tool

Real-time Crypto Currency Monitor This monitor is a command line dashboard, it uses ncurses, in combination with the Binance API where it fetches all

Edgar Hernandez 40 Dec 21, 2022
pbr2gltf2 is a command line tool for converting PBR images to a glTF 2.0 material.

pbr2gltf2 is a command line tool for converting PBR images to a glTF 2.0 material. The tool is detecting depending on the filename, which PBR information is stored. It swizzles the images and does reassign the channels to a glTF 2.0 image. The tool stores the images plus a minimal, valid glTF 2.0 file containing the required material, textures and images.

UX3D GmbH 23 Jul 31, 2022
A command-line tool to display colorful distro information.

sjfetch A command-line tool to display colorful distro information.

Fikret Musk 6 Apr 6, 2022
Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Ferhat Geçdoğan 3 Jun 11, 2021
Simple command line tool that processes image files using the FidelityFX Super Resolution (FSR) or Contrast Adaptive Sharpening (CAS) shader systems.

Simple command line tool that processes image files using the FidelityFX Super Resolution (FSR) or Contrast Adaptive Sharpening (CAS) shader systems.

GPUOpen Effects 190 Dec 12, 2022
A command line tool with no external dependencies to print information about an X server instance.

xinfo A command line tool with no external dependencies to print information about an X server instance. Building and running To build the code in thi

Jean-Michel Gorius 6 Jan 13, 2022
A C++ console tool to tracker baby actions.

BabyTracker This is a C++ console tool to tracker baby actions. Currently it supports adding Sleep Sessions Breast Feed Sessions Bottle Feed Sessions

YuchenPersonal 1 Oct 17, 2021