erlang/otp — pull request #147 by schlagert (2013-11-22 15:46:58+00:00)
Title: Fix appup files for a minimal release created with `reltool`.

This patch adds and fixes a whole bunch of broken outdated appup files.

Motivation is to be able to create a relup using `systools` at least for a minimal release created with `reltool` default settings (`{incl_cond, derived}`) and the applications `kernel`, `stdlib` and `sasl`. Almost all automatically included library applications didn't have __any__ appup clauses and thus `systools` refuses to generate a `relup` file. I also noticed that some of the regular expressions in appup files were broken (not matching). Some appup files were completely malformed.

For library applications I chose `restart_application` as update instruction since it is the easiest way to swap all code of an application. Additionally, I restructured the appup files to reflect which `R` release contains a respective
version. I hope this increases the maintainability since this will always be a manual task. I discovered the existing versions of an application by combining the information of the release notes and `git diff TAG1 TAG2 -- lib//vsn.mk`.

I also added a utility test method in the `test_server|sup` modules similar to the `app_test` utility. It checks a given list of versions for the availability of up/down clauses. Furthermore, it verifies the upgrade instructions. This is
done based on code moved from the respective `inets` and `snmp` tests (someone else already did a good job checking upgrade instructions).

I made a test case for every touched appup file. The touched applications that had no tests before, now have an initial test suite containing at least a check for the `.app` and `.appup` file.

All touched files have trailing whitespace removed. This patch obsoletes the pull requests #144 and #145 and I will therefore close them.

The following test cases should covers all changes:
```erlang
ts:run(asn1, asn1_app_test, [batch]).
ts:run(asn1, asn1_appup_test, [batch]).
ts:run(compiler, compile_SUITE, app_test, [batch]).
ts:run(compiler, compile_SUITE, appup_test, [batch]).
ts:run(crypto, crypto_SUITE, app, [batch]).
ts:run(crypto, crypto_SUITE, appup, [batch]).
ts:run(edoc, edoc_SUITE, app, [batch]).
ts:run(edoc, edoc_SUITE, appup, [batch]).
ts:run(et, et_SUITE, [batch]).
ts:run(gs, gs_SUITE, [batch]).
ts:run(hipe, hipe_SUITE, [batch]).
ts:run(inets, inets_app_test, [batch]).
ts:run(inets, inets_appup_test, [batch]).
ts:run(mnesia, mnesia_SUITE, app, [batch]).
ts:run(mnesia, mnesia_SUITE, appup, [batch]).
ts:run(observer, observer_SUITE, [batch]).
ts:run(public_key, public_key_SUITE, app, [batch]).
ts:run(public_key, public_key_SUITE, appup, [batch]).
ts:run(runtime_tools, runtime_tools_SUITE, [batch]).
ts:run(snmp, snmp_appup_test, [batch]).
ts:run(ssl, ssl_basic_SUITE, app, [batch]).
ts:run(ssl, ssl_basic_SUITE, appup, [batch]).
ts:run(syntax_tools, syntax_tools_SUITE, app, [batch]).
ts:run(syntax_tools, syntax_tools_SUITE, appup, [batch]).
ts:run(tools, tools_SUITE, [batch]).
ts:run(webtool, webtool_SUITE, [batch]).
ts:run(wx, wx_app_SUITE, [batch]).
ts:run(xmerl, xmerl_app_test, [batch]).
ts:run(xmerl, xmerl_appup_test, [batch]).
ts:run(os_mon, os_mon_SUITE, [batch]).
```