xmake.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package("fakeit")
  2. set_kind("library", {headeronly = true})
  3. set_homepage("https://github.com/eranpeer/FakeIt")
  4. set_description("C++ mocking made easy. A simple yet very expressive, headers only library for c++ mocking.")
  5. set_license("MIT")
  6. add_urls("https://github.com/eranpeer/FakeIt/archive/refs/tags/$(version).tar.gz",
  7. "https://github.com/eranpeer/FakeIt.git")
  8. add_versions("2.4.0", "eb79459ad6a97a5c985e3301b0d44538bdce2ba26115afe040f3874688edefb5")
  9. local test_frameworks = {
  10. "gtest",
  11. "mstest",
  12. "boost",
  13. "catch",
  14. "tpunit",
  15. "mettle",
  16. "qtest",
  17. "nunit",
  18. "cute",
  19. "doctest",
  20. "standalone",
  21. }
  22. add_configs("framework", {description = "Choose test library to use", default = "standalone", type = "string", values = test_frameworks})
  23. on_load(function (package)
  24. local framework = package:config("framework")
  25. if framework == "gtest" then
  26. package:add("deps", "gtest")
  27. elseif framework == "boost" then
  28. package:add("deps", "boost", {configs = {test = true}})
  29. elseif framework == "catch" then
  30. package:add("deps", "catch2")
  31. elseif framework == "doctest" then
  32. package:add("deps", "doctest")
  33. end
  34. end)
  35. on_install(function (package)
  36. os.vcp(path.join("single_header", package:config("framework"), "*"), package:installdir("include"))
  37. end)
  38. on_test(function (package)
  39. assert(package:check_cxxsnippets({test = [[
  40. struct SomeInterface {
  41. virtual int foo(int) = 0;
  42. };
  43. void test() {
  44. fakeit::Mock<SomeInterface> mock;
  45. }
  46. ]]}, {configs = {languages = "c++11"}, includes = "fakeit.hpp"}))
  47. end)