diff options
Diffstat (limited to 'test/core_upgrade.mk')
-rw-r--r-- | test/core_upgrade.mk | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/test/core_upgrade.mk b/test/core_upgrade.mk new file mode 100644 index 0000000..ec49a9f --- /dev/null +++ b/test/core_upgrade.mk @@ -0,0 +1,124 @@ +# Core: Erlang.mk upgrade. + +CORE_UPGRADE_CASES = custom-build-dir custom-config custom-repo no-config renamed-config +CORE_UPGRADE_TARGETS = $(addprefix core-upgrade-,$(CORE_UPGRADE_CASES)) +CORE_UPGRADE_CLEAN_TARGETS = $(addprefix clean-,$(CORE_UPGRADE_TARGETS)) + +.PHONY: core-upgrade $(CORE_UPGRADE_TARGETS) clean-core-upgrade $(CORE_UPGRADE_CLEAN_TARGETS) + +clean-core-upgrade: $(CORE_UPGRADE_CLEAN_TARGETS) + +$(CORE_UPGRADE_CLEAN_TARGETS): + $t rm -rf $(APP_TO_CLEAN)/ + +core-upgrade: $(CORE_UPGRADE_TARGETS) + +core-upgrade-custom-build-dir: build clean-core-upgrade-custom-build-dir + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Append a rule to the Erlang.mk file for testing purposes" + $t echo "erlang_mk_upgrade_test_rule: ; @echo FAIL" >> $(APP)/erlang.mk + + $i "Check that the test rule works as intended" + $t test "FAIL" = "`$(MAKE) -C $(APP) --no-print-directory erlang_mk_upgrade_test_rule V=0`" + + $i "Create the custom build directory" + $t mkdir $(APP)/custom/ + $t test -d $(APP)/custom/ + + $i "Upgrade Erlang.mk with a custom build directory" + $t ERLANG_MK_BUILD_DIR=custom $(MAKE) -C $(APP) erlang-mk $v + + $i "Check that the rule is gone" + $t if $(MAKE) -C $(APP) erlang_mk_upgrade_test_rule $v; then false; fi + + $i "Check that the custom build directory is gone" + $t test ! -d $(APP)/custom/ + +core-upgrade-custom-config: build clean-core-upgrade-custom-config + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Create a custom build.config file without plugins" + $t echo "core/*" > $(APP)/build.config + + $i "Upgrade Erlang.mk" + $t $(MAKE) -C $(APP) erlang-mk $v + + $i "Check that the bootstrap plugin is gone" + $t if $(MAKE) -C $(APP) list-templates $v; then false; fi + +core-upgrade-custom-repo: build clean-core-upgrade-custom-repo + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Fork erlang.mk locally and modify it" + $t git clone -q https://github.com/ninenines/erlang.mk $(APP)/alt-erlangmk-repo + $t sed -i.bak '1i\ +# Copyright (c) erlang.mk Testsuite!\ +' $(APP)/alt-erlangmk-repo/core/core.mk + $t (cd $(APP)/alt-erlangmk-repo && \ + git checkout -q -b test-copyright && \ + git config user.email "[email protected]" && \ + git config user.name "test suite" && \ + git commit -q -a -m 'Add Testsuite copyright') + + $i "Point application to an alternate erlang.mk repository" + $t sed -i.bak '2i\ +ERLANG_MK_REPO = file://$(abspath $(APP)/alt-erlangmk-repo)\ +ERLANG_MK_COMMIT = test-copyright\ +' $(APP)/Makefile + + $i "Update erlang.mk" + $t $(MAKE) -C $(APP) erlang-mk $v + + $i "Check our modification is there" + $t grep -q "# Copyright (c) erlang.mk Testsuite!" $(APP)/erlang.mk + +core-upgrade-no-config: build clean-core-upgrade-no-config + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Append a rule to the Erlang.mk file for testing purposes" + $t echo "erlang_mk_upgrade_test_rule: ; @echo FAIL" >> $(APP)/erlang.mk + + $i "Check that the test rule works as intended" + $t test "FAIL" = "`$(MAKE) -C $(APP) --no-print-directory erlang_mk_upgrade_test_rule V=0`" + + $i "Upgrade Erlang.mk" + $t $(MAKE) -C $(APP) erlang-mk $v + + $i "Check that the rule is gone" + $t if $(MAKE) -C $(APP) erlang_mk_upgrade_test_rule $v; then false; fi + +core-upgrade-renamed-config: build clean-core-upgrade-renamed-config + + $i "Bootstrap a new OTP library named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v + + $i "Create a custom build.config file without plugins; name it my.build.config" + $t echo "core/*" > $(APP)/my.build.config + + $i "Set ERLANG_MK_BUILD_CONFIG=my.build.config in the Makefile" + $t echo "ERLANG_MK_BUILD_CONFIG = my.build.config" >> $(APP)/Makefile + + $i "Upgrade Erlang.mk" + $t $(MAKE) -C $(APP) erlang-mk $v + + $i "Check that the bootstrap plugin is gone" + $t if $(MAKE) -C $(APP) list-templates $v; then false; fi |