diff options
author | José Valim <[email protected]> | 2012-11-28 13:45:37 +0100 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-01-25 14:57:00 +0100 |
commit | 29231033bfa618e5c4e1c50a5cefba32e02f2708 (patch) | |
tree | ec03896e88eb0adb3a51fd0391f2ba6ac1f6b19f /lib/tools/test/cover_SUITE.erl | |
parent | 907d498ff798345fc8e8b71fc08a1c5b40112037 (diff) | |
download | otp-29231033bfa618e5c4e1c50a5cefba32e02f2708.tar.gz otp-29231033bfa618e5c4e1c50a5cefba32e02f2708.tar.bz2 otp-29231033bfa618e5c4e1c50a5cefba32e02f2708.zip |
cover now relies on the compile info to find file sources
Prior to this commit, cover relied on a simple heuristic that
traverses directory from the beam file to find a source file.
The heuristic was maintained with this patch but, if it fails,
it fallbacks to the source value in the module compile info.
In order to illustrate how it works, one of the tests that
could not find its source now passes successfully (showing the
source lookup is more robust).
Diffstat (limited to 'lib/tools/test/cover_SUITE.erl')
-rw-r--r-- | lib/tools/test/cover_SUITE.erl | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/tools/test/cover_SUITE.erl b/lib/tools/test/cover_SUITE.erl index 57260a3869..2156390244 100644 --- a/lib/tools/test/cover_SUITE.erl +++ b/lib/tools/test/cover_SUITE.erl @@ -277,12 +277,23 @@ analyse(Config) when is_list(Config) -> ?line f:f2(), ?line {ok, "f.COVER.out"} = cover:analyse_to_file(f), - %% Source code cannot be found by analyse_to_file + %% Source code can be found via source ?line {ok,v} = compile:file("compile_beam/v",[debug_info]), ?line code:purge(v), ?line {module,v} = code:load_file(v), ?line {ok,v} = cover:compile_beam(v), - ?line {error,no_source_code_found} = cover:analyse_to_file(v), + {ok,"v.COVER.out"} = cover:analyse_to_file(v), + + %% Source code cannot be found + {ok,_} = file:copy("compile_beam/z.erl", "z.erl"), + {ok,z} = compile:file(z,[debug_info]), + code:purge(z), + {module,z} = code:load_file(z), + {ok,z} = cover:compile_beam(z), + ok = file:delete("z.erl"), + {error,no_source_code_found} = cover:analyse_to_file(z), + code:purge(z), + code:delete(z), ?line {error,{not_cover_compiled,b}} = cover:analyse(b), ?line {error,{not_cover_compiled,g}} = cover:analyse(g), |