Bläddra i källkod

add MIB deps handling test

pull/2373/head
Fred Hebert 4 år sedan
förälder
incheckning
8de300813d
1 ändrade filer med 110 tillägg och 1 borttagningar
  1. +110
    -1
      test/rebar_compile_SUITE.erl

+ 110
- 1
test/rebar_compile_SUITE.erl Visa fil

@ -26,7 +26,8 @@ all() ->
delete_beam_if_source_deleted, delete_beam_if_source_deleted,
deps_in_path, checkout_priority, highest_version_of_pkg_dep, deps_in_path, checkout_priority, highest_version_of_pkg_dep,
parse_transform_test, erl_first_files_test, mib_test, parse_transform_test, erl_first_files_test, mib_test,
umbrella_mib_first_test, only_default_transitive_deps, clean_all,
umbrella_mib_first_test, deps_mib_test,
only_default_transitive_deps, clean_all,
clean_specific, profile_deps, deps_build_in_prod, only_deps, clean_specific, profile_deps, deps_build_in_prod, only_deps,
override_deps, git_subdir_deps, override_add_deps, override_del_deps, override_deps, git_subdir_deps, override_add_deps, override_del_deps,
override_del_pkg_deps, override_opts, override_add_opts, override_del_opts, override_del_pkg_deps, override_opts, override_add_opts, override_del_opts,
@ -1465,6 +1466,114 @@ umbrella_mib_first_test(Config) ->
%% check the mibs dir was linked into the _build dir %% check the mibs dir was linked into the _build dir
true = filelib:is_dir(filename:join([AppsDir, "_build", "default", "lib", Name, "mibs"])). true = filelib:is_dir(filename:join([AppsDir, "_build", "default", "lib", Name, "mibs"])).
deps_mib_test() ->
[{doc, "reproduces the dependency handling required for the issue "
"reported in https://github.com/erlang/rebar3/issues/2372"}].
deps_mib_test(Config) ->
Priv = ?config(priv_dir, Config),
CliLvl2Mib =
"---\n"
"---\n"
"---\n"
"LVL2-MIB DEFINITIONS ::= BEGIN\n"
"IMPORTS\n"
" MODULE-IDENTITY, OBJECT-TYPE\n"
" FROM SNMPv2-SMI\n"
" lvlModules, lvlApplications\n"
" FROM LVL0-REG\n"
" LvlFoo\n"
" FROM LVL0-TC\n"
" ;\n"
"\n"
"lvl2Module MODULE-IDENTITY\n"
" LAST-UPDATED \"202009261630Z\"\n"
" ORGANIZATION \"'some org'\"\n"
" CONTACT-INFO \"'Contact: some contact'\"\n"
" DESCRIPTION\n"
" \" \"\n"
" ::= { lvlModules 3 }\n"
"\n\n\n"
"END",
CpiLvl0Mib1 =
" \n"
"---\n"
"---\n\n"
"LVL0-TC DEFINITIONS ::= BEGIN\n"
"IMPORTS\n"
" lvlModules\n"
" FROM LVL0-REG\n"
" MODULE-IDENTITY\n"
" FROM SNMPv2-SMI\n"
" TEXTUAL-CONVENTION\n"
" FROM SNMPv2-TC\n"
" ;\n\n"
"lvlTcModule MODULE-IDENTITY\n"
" LAST-UPDATED \"202009261630Z\"\n"
" ORGANIZATION \"'some org'\"\n"
" CONTACT-INFO \"'Contact: some contact'\"\n"
" DESCRIPTION\n"
" \" This MIB is part of the LVL MIB. It defines common\n"
" Textual Conventions used in other LVL mib modules.\"\n"
" ::= { lvlModules 2 }\n\n\n"
"LvlFoo ::= TEXTUAL-CONVENTION\n"
" DISPLAY-HINT \"512a\"\n"
" STATUS current\n"
" DESCRIPTION \"\"\n"
" SYNTAX OCTET STRING (SIZE (1..512))\n\n"
"LvlEnum ::= TEXTUAL-CONVENTION\n"
" STATUS current\n"
" DESCRIPTION \"\"\n"
" SYNTAX INTEGER { foo(1), bar(2), baz(3) }\n\n"
"END\n",
CpiLvl0Mib2 =
"---\n---\n---\n\n"
"LVL0-REG DEFINITIONS ::= BEGIN\n"
"\n"
"IMPORTS\n"
" MODULE-IDENTITY, enterprises\n"
" FROM SNMPv2-SMI\n"
" ;\n\n"
"lvlRegModule MODULE-IDENTITY\n"
" LAST-UPDATED \"202009261630Z\"\n"
" ORGANIZATION \"'some org'\"\n"
" CONTACT-INFO \"'Contact: some contact'\"\n"
" DESCRIPTION\n"
" \"The root MIB module for LVL\"\n"
" ::= { lvlModules 1 }\n\n"
"-- Example Enterprise Number for Documentation use\n"
"example OBJECT IDENTIFIER ::= { enterprises 32473 }\n"
"\n"
"lvl OBJECT IDENTIFIER ::= { example 1 }\n\n"
"-- sub-tree for registrations (Modules information)\n"
"lvlReg OBJECT IDENTIFIER ::= { lvl 1 }\n"
"lvlModules OBJECT IDENTIFIER ::= { lvlReg 1 }\n"
"\n"
"-- the application subtree\n"
"lvlApplications OBJECT IDENTIFIER ::= { lvl 2 }\n"
"END\n",
CliLvl2Path = filename:join([Priv, "deps_mib", "cli_lvl2", "mibs", "LVL2-MIB.mib"]),
CpiLvl0Path1 = filename:join([Priv, "deps_mib", "cpi_lvl0", "mibs", "LVL0-TC.mib"]),
CpiLvl0Path2 = filename:join([Priv, "deps_mib", "cpi_lvl0", "mibs", "LVL0-REG.mib"]),
NprLvl1Path = filename:join([Priv, "deps_mib", "npr_lvl1", "mibs"]), % no mibs dir
FakeLvl1Path = filename:join([Priv, "deps_mib", "fake_lvl1", "mibs", "no_file"]), % no mibs file
ok = filelib:ensure_dir(CliLvl2Path),
ok = filelib:ensure_dir(CpiLvl0Path1), % CpiLvl0Path2 is the same dir
ok = filelib:ensure_dir(NprLvl1Path),
ok = filelib:ensure_dir(FakeLvl1Path),
ok = file:write_file(CliLvl2Path, CliLvl2Mib),
ok = file:write_file(CpiLvl0Path1, CpiLvl0Mib1),
ok = file:write_file(CpiLvl0Path2, CpiLvl0Mib2),
Res = rebar_compiler_mib:dependencies(
CliLvl2Path,
filename:dirname(CliLvl2Path),
[filename:dirname(CliLvl2Path),
filename:dirname(CpiLvl0Path1),
NprLvl1Path,
filename:dirname(FakeLvl1Path)]
),
?assertEqual(lists:sort([CpiLvl0Path1, CpiLvl0Path2]),
lists:sort(Res)),
ok.
only_default_transitive_deps(Config) -> only_default_transitive_deps(Config) ->
AppDir = ?config(apps, Config), AppDir = ?config(apps, Config),

Laddar…
Avbryt
Spara