diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml new file mode 100644 index 0000000..4bea2fa --- /dev/null +++ b/.github/workflows/integration-test.yml @@ -0,0 +1,14 @@ +name: integration-test + +on: [push, pull_request] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + + - name: integration-test + run: ./integration-test.sh diff --git a/init.lua b/init.lua index f04fc0f..6c61c45 100644 --- a/init.lua +++ b/init.lua @@ -27,3 +27,7 @@ dofile(MP .. "/delete.lua") dofile(MP .. "/chat.lua") dofile(MP .. "/globalstep.lua") dofile(MP .. "/journal.lua") + +if minetest.settings:get_bool("enable_mapcleaner_integration_test") then + dofile(MP.."/integration_test.lua") +end diff --git a/integration-test.sh b/integration-test.sh new file mode 100755 index 0000000..e80213f --- /dev/null +++ b/integration-test.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# simple integration test + +CFG=/tmp/minetest.conf +MTDIR=/tmp/mt +WORLDDIR=${MTDIR}/worlds/world + +cat < ${CFG} + enable_mapcleaner_integration_test = true +EOF + +mkdir -p ${WORLDDIR} +chmod 777 ${MTDIR} -R +docker run --rm -i \ + -v ${CFG}:/etc/minetest/minetest.conf:ro \ + -v ${MTDIR}:/var/lib/minetest/.minetest \ + -v $(pwd):/var/lib/minetest/.minetest/worlds/world/worldmods/mapcleaner \ + registry.gitlab.com/minetest/minetest/server:5.2.0 + +test -f ${WORLDDIR}/integration_test.json && exit 0 || exit 1 diff --git a/integration_test.lua b/integration_test.lua new file mode 100644 index 0000000..931ff8f --- /dev/null +++ b/integration_test.lua @@ -0,0 +1,34 @@ + +minetest.log("warning", "[TEST] integration-test enabled!") + +local function after_emerge() + local data = minetest.write_json({ success = true }, true); + local file = io.open(minetest.get_worldpath().."/integration_test.json", "w" ); + if file then + file:write(data) + file:close() + end + + minetest.log("warning", "[TEST] integration tests done!") + minetest.request_shutdown("success") +end + +local function emerge() + minetest.emerge_area({ + x = 0, + y = 0, + z = 0, + }, { + x = 120, + y = 120, + z = 120 + }, function(_, _, calls_remaining) + if calls_remaining == 0 then + after_emerge() + end + end) +end + +minetest.register_on_mods_loaded(function() + minetest.after(1, emerge) +end) diff --git a/readme.md b/readme.md index 8e8e993..9ae6780 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,8 @@ mapcleaner A mod for [minetest](http://www.minetest.net) -![](https://github.com/thomasrudin-mt/mapcleaner/workflows/luacheck/badge.svg) +![](https://github.com/BuckarooBanzay/mapcleaner/workflows/luacheck/badge.svg) +![](https://github.com/BuckarooBanzay/mapcleaner/workflows/integration-test/badge.svg) # Overview