diff options
author | Loïc Hoguin <essen@ninenines.eu> | 2018-11-26 13:22:17 +0100 |
---|---|---|
committer | Loïc Hoguin <essen@ninenines.eu> | 2018-11-26 13:22:17 +0100 |
commit | 6eaf07deb49f3a9adb6e2efcba44a8bfce3fd87c (patch) | |
tree | da8336a91765bd5963a97332d93547fc5f204a1a | |
parent | 5498bec3a1e3868258803382a92d31b4bc8014fa (diff) | |
download | erlang.mk-6eaf07deb49f3a9adb6e2efcba44a8bfce3fd87c.tar.gz erlang.mk-6eaf07deb49f3a9adb6e2efcba44a8bfce3fd87c.tar.bz2 erlang.mk-6eaf07deb49f3a9adb6e2efcba44a8bfce3fd87c.zip |
Fix propagation of SP in sub-apps
And some refactor and additional testing for overriding.
Turns out we can override some variables even if ?= is not used,
so nothing had to be done to support overriding.
-rw-r--r-- | plugins/bootstrap.mk | 18 | ||||
-rw-r--r-- | test/plugin_bootstrap.mk | 64 |
2 files changed, 70 insertions, 12 deletions
diff --git a/plugins/bootstrap.mk b/plugins/bootstrap.mk index 84f168e..52ff72f 100644 --- a/plugins/bootstrap.mk +++ b/plugins/bootstrap.mk @@ -51,30 +51,24 @@ endef # To prevent autocompletion issues with ZSH, we add "include erlang.mk" # separately during the actual bootstrap. -ifdef SP define bs_Makefile PROJECT = $p PROJECT_DESCRIPTION = New project PROJECT_VERSION = 0.1.0 - +$(if $(SP), # Whitespace to be used when creating files from templates. SP = $(SP) - -endef -else -define bs_Makefile -PROJECT = $p -PROJECT_DESCRIPTION = New project -PROJECT_VERSION = 0.1.0 - +) endef -endif define bs_apps_Makefile PROJECT = $p PROJECT_DESCRIPTION = New project PROJECT_VERSION = 0.1.0 - +$(if $(SP), +# Whitespace to be used when creating files from templates. +SP = $(SP) +) # Make sure we know where the applications are located. ROOT_DIR ?= $(call core_relpath,$(dir $(ERLANG_MK_FILENAME)),$(APPS_DIR)/app) APPS_DIR ?= .. diff --git a/test/plugin_bootstrap.mk b/test/plugin_bootstrap.mk index 8692609..1b2915c 100644 --- a/test/plugin_bootstrap.mk +++ b/test/plugin_bootstrap.mk @@ -130,6 +130,70 @@ endif {ok, []} = application:get_key($(APP), modules), \ halt()" +bootstrap-new-app-sp: build clean + + $i "Bootstrap a new OTP application named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap SP=2 $v + + $i "Create a new application my_app" + $t $(MAKE) -C $(APP) new-app in=my_app $v + + $i "Check that SP is included in the new Makefile" + $t grep -q "SP = 2" $(APP)/apps/my_app/Makefile + + $i "Check that bootstrapped files have no tabs" +ifdef LEGACY + $t test -z "`awk -F "\t" 'NF > 1' $(APP)/apps/my_app/src/my_app.app.src`" +endif + $t test -z "`awk -F "\t" 'NF > 1' $(APP)/apps/my_app/src/my_app_app.erl`" + $t test -z "`awk -F "\t" 'NF > 1' $(APP)/apps/my_app/src/my_app_sup.erl`" + +# Everything looks OK, but let's compile the application to make sure. + $i "Build the application" + $t $(MAKE) -C $(APP) $v + + $i "Check that all compiled files exist" + $t test -f $(APP)/ebin/$(APP).app + $t test -f $(APP)/ebin/$(APP)_app.beam + $t test -f $(APP)/ebin/$(APP)_sup.beam + $t test -f $(APP)/apps/my_app/ebin/my_app.app + $t test -f $(APP)/apps/my_app/ebin/my_app_app.beam + $t test -f $(APP)/apps/my_app/ebin/my_app_sup.beam + +bootstrap-new-app-sp-override: build clean + + $i "Bootstrap a new OTP application named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap SP=2 $v + + $i "Create a new application my_app" + $t $(MAKE) -C $(APP) new-app in=my_app SP=8 $v + + $i "Check that the SP we provided is included in the new Makefile" + $t grep -q "SP = 8" $(APP)/apps/my_app/Makefile + + $i "Check that bootstrapped files have no tabs" +ifdef LEGACY + $t test -z "`awk -F "\t" 'NF > 1' $(APP)/apps/my_app/src/my_app.app.src`" +endif + $t test -z "`awk -F "\t" 'NF > 1' $(APP)/apps/my_app/src/my_app_app.erl`" + $t test -z "`awk -F "\t" 'NF > 1' $(APP)/apps/my_app/src/my_app_sup.erl`" + +# Everything looks OK, but let's compile the application to make sure. + $i "Build the application" + $t $(MAKE) -C $(APP) $v + + $i "Check that all compiled files exist" + $t test -f $(APP)/ebin/$(APP).app + $t test -f $(APP)/ebin/$(APP)_app.beam + $t test -f $(APP)/ebin/$(APP)_sup.beam + $t test -f $(APP)/apps/my_app/ebin/my_app.app + $t test -f $(APP)/apps/my_app/ebin/my_app_app.beam + $t test -f $(APP)/apps/my_app/ebin/my_app_sup.beam + bootstrap-rel: build clean $i "Bootstrap a new release-enabled OTP application named $(APP)" |