Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

69 wiersze
2.4 KiB

  1. -module(rebar_discover_SUITE).
  2. -compile(export_all).
  3. -include_lib("common_test/include/ct.hrl").
  4. -include_lib("eunit/include/eunit.hrl").
  5. all() ->
  6. [empty_app_src, bad_app_src, invalid_app_src].
  7. %% note: invalid .app files without a .app.src also present
  8. %% has rebar3 just ignoring the directory as not OTP-related.
  9. init_per_testcase(_, Config) ->
  10. NewConfig = rebar_test_utils:init_rebar_state(Config, "discover_app_"),
  11. AppDir = ?config(apps, NewConfig),
  12. Name = rebar_test_utils:create_random_name("app1"),
  13. Vsn = rebar_test_utils:create_random_vsn(),
  14. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  15. [{app_names, [Name]}, {vsns, [Vsn]}|NewConfig].
  16. end_per_testcase(_, Config) ->
  17. Config.
  18. empty_app_src() ->
  19. [{doc, "when there's an empty .app.src file, exit with a good error "
  20. "message rather than an uncaught exception"}].
  21. empty_app_src(Config) ->
  22. AppDir = ?config(apps, Config),
  23. [Name] = ?config(app_names, Config),
  24. AppSrc = filename:join([AppDir, "src", Name ++ ".app.src"]),
  25. ok = file:write_file(AppSrc, ""),
  26. ?assertEqual(
  27. {error, {rebar_app_discover, {cannot_read_app_file, AppSrc}}},
  28. rebar_test_utils:run_and_check(Config, [], ["compile"], return)
  29. ),
  30. ok.
  31. bad_app_src() ->
  32. [{doc, "when there's a syntactically invalid "
  33. ".app.src file, exit with a good error "
  34. "message rather than an uncaught exception"}].
  35. bad_app_src(Config) ->
  36. AppDir = ?config(apps, Config),
  37. [Name] = ?config(app_names, Config),
  38. AppSrc = filename:join([AppDir, "src", Name ++ ".app.src"]),
  39. ok = file:write_file(AppSrc, "bad term file :("),
  40. ?assertMatch(
  41. {error, {rebar_app_discover, {bad_term_file, AppSrc, _}}},
  42. rebar_test_utils:run_and_check(Config, [], ["compile"], return)
  43. ),
  44. ok.
  45. invalid_app_src() ->
  46. [{doc, "when there's a syntactically valid but semantically invalid "
  47. ".app.src file, exit with a good error "
  48. "message rather than an uncaught exception"}].
  49. invalid_app_src(Config) ->
  50. AppDir = ?config(apps, Config),
  51. [Name] = ?config(app_names, Config),
  52. AppSrc = filename:join([AppDir, "src", Name ++ ".app.src"]),
  53. ok = file:write_file(AppSrc, "{applications, name_but_no_args}."),
  54. ?assertEqual(
  55. {error, {rebar_app_discover, {cannot_read_app_file, AppSrc}}},
  56. rebar_test_utils:run_and_check(Config, [], ["compile"], return)
  57. ),
  58. ok.