aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2020-11-24 13:02:46 +0100
committerLoïc Hoguin <[email protected]>2020-11-24 13:02:46 +0100
commit0cae9fc7047307a82b6820e018b98af631008ea4 (patch)
tree5472a7e9d724da08e1300f8ea85c4a5c3fc89c90
parentc8f8ff0ccac5c379ce44428d7c1fc272f21d8578 (diff)
downloaderlang.mk-0cae9fc7047307a82b6820e018b98af631008ea4.tar.gz
erlang.mk-0cae9fc7047307a82b6820e018b98af631008ea4.tar.bz2
erlang.mk-0cae9fc7047307a82b6820e018b98af631008ea4.zip
Initial tests against a local Hex
-rw-r--r--plugins/hex.mk1
-rw-r--r--test/plugin_hex.mk244
2 files changed, 245 insertions, 0 deletions
diff --git a/plugins/hex.mk b/plugins/hex.mk
index 3a584b0..4319b01 100644
--- a/plugins/hex.mk
+++ b/plugins/hex.mk
@@ -79,6 +79,7 @@ hex-key-add: hex-core
HEX_TARBALL_EXTRA_METADATA ?=
# @todo Check that we can += files
+# @todo Probably better if we sort the core_find results.
HEX_TARBALL_FILES ?= \
$(wildcard early-plugins.mk) \
$(wildcard ebin/$(PROJECT).app) \
diff --git a/test/plugin_hex.mk b/test/plugin_hex.mk
new file mode 100644
index 0000000..f1bdef6
--- /dev/null
+++ b/test/plugin_hex.mk
@@ -0,0 +1,244 @@
+# Hex plugin.
+#
+# In order to run these tests, a local Hex.pm instance must
+# be started and available on port 4000, and the HEX=1 variable
+# must be set.
+
+HEX_TARGETS = $(call list_targets,hex)
+
+.PHONY: hex $(HEX_TARGETS)
+
+hex: $(HEX_TARGETS)
+
+ifeq ($(shell netcat -z localhost 4000 && echo ok),ok)
+hex-user-create: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Check that the user exists"
+ $t curl -sf http://localhost:4000/api/users/$(APP) >/dev/null
+
+#hex-user-create-password-with-dollar-sign: init
+#
+# $i "Bootstrap a new OTP application named $(APP)"
+# $t mkdir $(APP)/
+# $t cp ../erlang.mk $(APP)/
+# $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+#
+# $i "Configure a local Hex provider"
+# $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+#
+# $i "Create a Hex user"
+# $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="123$$567" HEX_EMAIL=$(APP)@noone.nope $v
+#
+# $i "Check that the user exists"
+# $t curl --user "$(APP):123$$567" -sf http://localhost:4000/api/users/$(APP) >/dev/null
+
+#hex-user-create-password-with-backslash: init
+#
+# $i "Bootstrap a new OTP application named $(APP)"
+# $t mkdir $(APP)/
+# $t cp ../erlang.mk $(APP)/
+# $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+#
+# $i "Configure a local Hex provider"
+# $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+#
+# $i "Create a Hex user"
+# $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="123\\567" HEX_EMAIL=$(APP)@noone.nope $v
+#
+# $i "Check that the user exists"
+# $t curl --user "$(APP):123\\567" -sf http://localhost:4000/api/users/$(APP) >/dev/null
+
+hex-user-create-password-with-space: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="123 567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Check that the user exists"
+ $t curl --user "$(APP):123 567" -sf http://localhost:4000/api/users/$(APP) >/dev/null
+
+hex-key-add: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Create a key for that user"
+ $t $(MAKE) -C $(APP) hex-key-add HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" $v
+
+ $i "Check that the key exists"
+ $t curl --user $(APP):1234567 -sf http://localhost:4000/api/keys/$(shell hostname)-erlang-mk >/dev/null
+
+# @todo hex-tarball-create
+# @todo hex-tarball-create-with-deps
+
+hex-release-publish: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Add extra Hex metadata"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_TARBALL_EXTRA_METADATA\n#{licenses => [<<\"ISC\">>]}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Create a key for that user"
+ $t $(MAKE) -C $(APP) hex-key-add HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" | grep Secret: | cut -f2 -d" " > $(APP)/hex.key
+
+ $i "Publish the release"
+ $t $(MAKE) -C $(APP) hex-release-publish HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Check that the release exists"
+ $t curl -sf http://localhost:4000/api/packages/$(APP)/releases/0.1.0 >/dev/null
+
+# @todo hex-release-publish-with-deps
+
+hex-release-replace: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Add extra Hex metadata"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_TARBALL_EXTRA_METADATA\n#{licenses => [<<\"ISC\">>]}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Create a key for that user"
+ $t $(MAKE) -C $(APP) hex-key-add HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" | grep Secret: | cut -f2 -d" " > $(APP)/hex.key
+
+ $i "Publish the release"
+ $t $(MAKE) -C $(APP) hex-release-publish HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Update the project description"
+ $t sed -i.bak s/"PROJECT_DESCRIPTION = New project"/"PROJECT_DESCRIPTION = Best project"/ $(APP)/Makefile
+
+ $i "Publish the release again, replacing the existing one"
+ $t $(MAKE) -C $(APP) hex-release-replace HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Check that the release was replaced"
+ $t curl -sf http://localhost:4000/api/packages/$(APP) | grep -q "Best project"
+
+hex-release-delete: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Add extra Hex metadata"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_TARBALL_EXTRA_METADATA\n#{licenses => [<<\"ISC\">>]}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Create a key for that user"
+ $t $(MAKE) -C $(APP) hex-key-add HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" | grep Secret: | cut -f2 -d" " > $(APP)/hex.key
+
+ $i "Publish the release"
+ $t $(MAKE) -C $(APP) hex-release-publish HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Delete the release"
+ $t $(MAKE) -C $(APP) hex-release-delete HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Check that the release was deleted"
+ $t ! curl -sf http://localhost:4000/api/packages/$(APP)/releases/0.1.0 >/dev/null
+
+hex-release-retire: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Add extra Hex metadata"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_TARBALL_EXTRA_METADATA\n#{licenses => [<<\"ISC\">>]}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Create a key for that user"
+ $t $(MAKE) -C $(APP) hex-key-add HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" | grep Secret: | cut -f2 -d" " > $(APP)/hex.key
+
+ $i "Publish the release"
+ $t $(MAKE) -C $(APP) hex-release-publish HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Retire the release"
+ $t $(MAKE) -C $(APP) hex-release-retire HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Check that the release was retired"
+ $t ! curl -sf http://localhost:4000/api/packages/$(APP)/releases/0.1.0 | grep -q \"retirement\":null
+
+hex-release-unretire: init
+
+ $i "Bootstrap a new OTP application named $(APP)"
+ $t mkdir $(APP)/
+ $t cp ../erlang.mk $(APP)/
+ $t $(MAKE) -C $(APP) -f erlang.mk bootstrap $v
+
+ $i "Configure a local Hex provider"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_CONFIG\n#{api_url => <<\"http://localhost:4000/api\">>}\nendef\n"}' $(APP)/Makefile
+
+ $i "Add extra Hex metadata"
+ $t perl -ni.bak -e 'print;if ($$.==1) {print "define HEX_TARBALL_EXTRA_METADATA\n#{licenses => [<<\"ISC\">>]}\nendef\n"}' $(APP)/Makefile
+
+ $i "Create a Hex user"
+ $t $(MAKE) -C $(APP) hex-user-create HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" HEX_EMAIL=$(APP)@noone.nope $v
+
+ $i "Create a key for that user"
+ $t $(MAKE) -C $(APP) hex-key-add HEX_USERNAME=$(APP) HEX_PASSWORD="1234567" | grep Secret: | cut -f2 -d" " > $(APP)/hex.key
+
+ $i "Publish the release"
+ $t $(MAKE) -C $(APP) hex-release-publish HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Retire the release"
+ $t $(MAKE) -C $(APP) hex-release-retire HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Unretire the release"
+ $t $(MAKE) -C $(APP) hex-release-unretire HEX_SECRET=`cat $(APP)/hex.key` $v
+
+ $i "Check that the release is no longer retired"
+ $t curl -sf http://localhost:4000/api/packages/$(APP)/releases/0.1.0 | grep -q \"retirement\":null
+endif