ApprovalTests.cpp icon indicating copy to clipboard operation
ApprovalTests.cpp copied to clipboard

Ninja + Catch2 + mingw64

Open Bktero opened this issue 3 years ago • 0 comments

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 :

  • Windows 10
  • Ninja 1.10.2
  • Catch 2.13.7
  • ApprovalTests 10.12.2
  • GCC 11.2.0 (from MSYS/mingw64)

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!

Bktero avatar Mar 29 '22 13:03 Bktero