aboutsummaryrefslogtreecommitdiffstats
path: root/test/core_upgrade.mk
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2015-09-10 20:32:59 +0200
committerLoïc Hoguin <[email protected]>2015-09-10 20:32:59 +0200
commit2ee412b50664ac662cd86a526f4e2ec905f3cabb (patch)
tree2610c267d463252121dc14b0edf166e3d2a72ba5 /test/core_upgrade.mk
parent3f0443a2c7bec17abfe957233a8351c0fd6e90fe (diff)
downloaderlang.mk-2ee412b50664ac662cd86a526f4e2ec905f3cabb.tar.gz
erlang.mk-2ee412b50664ac662cd86a526f4e2ec905f3cabb.tar.bz2
erlang.mk-2ee412b50664ac662cd86a526f4e2ec905f3cabb.zip
Reorganize the test suite
Use one file per topic, except for "uncategorizable" tests.
Diffstat (limited to 'test/core_upgrade.mk')
-rw-r--r--test/core_upgrade.mk124
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