xmake.lua 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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.1", "f5234a36d42363cb7ccd2cf99c8a754c832d9092035d984ad40aafa5371d0e95")
  9. add_versions("2.4.0", "eb79459ad6a97a5c985e3301b0d44538bdce2ba26115afe040f3874688edefb5")
  10. local test_frameworks = {
  11. "gtest",
  12. "mstest",
  13. "boost",
  14. "catch",
  15. "tpunit",
  16. "mettle",
  17. "qtest",
  18. "nunit",
  19. "cute",
  20. "doctest",
  21. "standalone",
  22. }
  23. add_configs("framework", {description = "Choose test library to use", default = "standalone", type = "string", values = test_frameworks})
  24. on_load(function (package)
  25. local framework = package:config("framework")
  26. if framework == "gtest" then
  27. package:add("deps", "gtest")
  28. elseif framework == "boost" then
  29. package:add("deps", "boost", {configs = {test = true}})
  30. elseif framework == "catch" then
  31. package:add("deps", "catch2")
  32. elseif framework == "doctest" then
  33. package:add("deps", "doctest")
  34. end
  35. end)
  36. on_install(function (package)
  37. os.vcp(path.join("single_header", package:config("framework"), "*"), package:installdir("include"))
  38. end)
  39. on_test(function (package)
  40. assert(package:check_cxxsnippets({test = [[
  41. struct SomeInterface {
  42. virtual int foo(int) = 0;
  43. };
  44. void test() {
  45. fakeit::Mock<SomeInterface> mock;
  46. }
  47. ]]}, {configs = {languages = "c++11"}, includes = "fakeit.hpp"}))
  48. end)