approvals / ApprovalTests.cpp

Native ApprovalTests for C++ on Linux, Mac and Windows
https://approvaltestscpp.readthedocs.io/en/latest/
Apache License 2.0
310 stars 50 forks source link

Ninja + Catch2 + mingw64 #195

Open Bktero opened 2 years ago

Bktero commented 2 years ago

Hello

I am sorry to open yet another bug about Ninja. I had a look at the very long https://github.com/approvals/ApprovalTests.cpp/pull/79 and https://github.com/approvals/ApprovalTests.cpp/issues/74 and I understood that Ninja is a problem, but also that this problem have been solved.

Sadly I still get errors in this the following configuration :

My project structure:

image

My preset:

{
  "version": 3,
  "configurePresets": [
    {
      "name": "with-gcc",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/cmake-build-gcc",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_C_COMPILER": "gcc.exe",
        "CMAKE_CXX_COMPILER": "g++.exe"
      }
    }
  ],
  "buildPresets": [
    {
      "name": "with-gcc",
      "configurePreset": "with-gcc"
    }
  ]
}

tests.cpp =

#include <iostream>
#include "ApprovalTests.hpp"
#include "catch2/catch.hpp"

TEST_CASE("MyTestCase") {
    std::cout << "__FILE__ == " << __FILE__ << '\n';
    ApprovalTests::Approvals::verify("something");
}

main.cpp =

#define APPROVALS_CATCH

#include "ApprovalTests.hpp"

//auto directoryDisposer = ApprovalTests::Approvals::useApprovalsSubdirectory("approval_tests");

Like this I get the following error:

__FILE__ == C:/Users/z19100018/CLionProjects/ninja_approvaltests/tests.cpp

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ninja_approvaltests.exe is a Catch v2.13.7 host application.
Run with -? for options

-------------------------------------------------------------------------------
MyTestCase
-------------------------------------------------------------------------------
C:/Users/z19100018/CLionProjects/ninja_approvaltests/tests.cpp:5
...............................................................................

C:/Users/z19100018/CLionProjects/ninja_approvaltests/tests.cpp:5: FAILED:
due to unexpected exception with message:
  Unable to create directory:

===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed

Process finished with exit code 1

If I uncomment the line with useApprovalsSubdirectory(), it works:

__FILE__ == C:/Users/z19100018/CLionProjects/ninja_approvaltests/tests.cpp
===============================================================================
All tests passed (1 assertion in 1 test case)

Process finished with exit code 0

Here, we can see that the path provided by Ninja in __FILE__ is absolute. The issues linked above say that the problem is supposed to come from relative paths.

Any thoughts on this?

Thanks a lot!