diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index b3ed4c9..93f4fb0 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -15,5 +15,4 @@ jobs: env: DEFOLD_USER: bjorn.ritzl@gmail.com DEFOLD_AUTH: foobar - DEFOLD_BOOSTRAP_COLLECTION: /test/test.collectionc run: ./.test/run.sh diff --git a/.gitignore b/.gitignore index 679a5cf..9f3cb61 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ build builtins .internal luacov.report.out +/.editor_settings +manifest.private.der +manifest.public.der diff --git a/.test/run.sh b/.test/run.sh index 019272d..f63286e 100755 --- a/.test/run.sh +++ b/.test/run.sh @@ -5,7 +5,6 @@ else PLATFORM="$1" fi - echo "${PLATFORM}" # {"version": "1.2.89", "sha1": "5ca3dd134cc960c35ecefe12f6dc81a48f212d40"} @@ -16,26 +15,28 @@ echo "Using Defold dmengine_headless version ${SHA1}" # Create dmengine_headless and bob.jar URLs DMENGINE_URL="http://d.defold.com/archive/${SHA1}/engine/${PLATFORM}/dmengine_headless" BOB_URL="http://d.defold.com/archive/${SHA1}/bob/bob.jar" +DMENGINE_FILE=dmengine_headless_${SHA1} +BOB_FILE=bob_${SHA1}.jar # Download dmengine_headless -echo "Downloading ${DMENGINE_URL}" -curl -L -o dmengine_headless ${DMENGINE_URL} -chmod +x dmengine_headless +if ! [ -f ${DMENGINE_FILE} ]; then + echo "Downloading ${DMENGINE_URL} to ${DMENGINE_FILE}" + curl -L -o ${DMENGINE_FILE} ${DMENGINE_URL} + chmod +x ${DMENGINE_FILE} +fi # Download bob.jar -echo "Downloading ${BOB_URL}" -curl -L -o bob.jar ${BOB_URL} +if ! [ -f ${BOB_FILE} ]; then + echo "Downloading ${BOB_URL} to ${BOB_FILE}" + curl -L -o ${BOB_FILE} ${BOB_URL} +fi # Fetch libraries -echo "Running bob.jar - resolving dependencies" -java -jar bob.jar --auth "foobar" --email "john@doe.com" resolve +echo "Running ${BOB_FILE} - resolving dependencies" +java -jar ${BOB_FILE} --auth "foobar" --email "john@doe.com" resolve -echo "Running bob.jar - building" -java -jar bob.jar --debug build --keep-unused +echo "Running ${BOB_FILE} - building" +java -jar ${BOB_FILE} --debug build --settings=test.settings -echo "Starting dmengine_headless" -if [ -n "${DEFOLD_BOOSTRAP_COLLECTION}" ]; then - ./dmengine_headless --config=bootstrap.main_collection=${DEFOLD_BOOSTRAP_COLLECTION} -else - ./dmengine_headless -fi +echo "Starting ${DMENGINE_FILE}" +./${DMENGINE_FILE} diff --git a/test.settings b/test.settings new file mode 100644 index 0000000..826bebc --- /dev/null +++ b/test.settings @@ -0,0 +1,2 @@ +[bootstrap] +main_collection = /test/test.collectionc \ No newline at end of file diff --git a/test/msg.lua b/test/msg.lua index 3b77025..11e29c6 100644 --- a/test/msg.lua +++ b/test/msg.lua @@ -64,5 +64,17 @@ function M.last(url) return messages[#messages] end +function M.filter(url, fn) + local t = {} + local messages = M.messages(url) + for i=1,#messages do + local message = messages[i] + if fn(message) then + t[#t + 1] = message + end + end + return t +end + return M \ No newline at end of file diff --git a/test/test_monarch.lua b/test/test_monarch.lua index 9beae8f..d145265 100644 --- a/test/test_monarch.lua +++ b/test/test_monarch.lua @@ -418,43 +418,37 @@ return function() monarch.show(SCREEN1) assert(wait_until_not_busy()) - assert(mock_msg.messages(URL1)[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) - assert(mock_msg.messages(URL1)[1].message.screen == SCREEN1) - assert(mock_msg.messages(URL2)[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) - assert(mock_msg.messages(URL2)[1].message.screen == SCREEN1) - assert(mock_msg.messages(URL1)[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) - assert(mock_msg.messages(URL1)[2].message.screen == SCREEN1) - assert(mock_msg.messages(URL2)[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) - assert(mock_msg.messages(URL2)[2].message.screen == SCREEN1) monarch.remove_listener(URL2) monarch.show(SCREEN2) assert(wait_until_not_busy()) - assert(#mock_msg.messages(URL1) == 6) - assert(#mock_msg.messages(URL2) == 2) - assert(mock_msg.messages(URL1)[3].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) - assert(mock_msg.messages(URL1)[3].message.screen == SCREEN2) - assert(mock_msg.messages(URL1)[4].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) - assert(mock_msg.messages(URL1)[4].message.screen == SCREEN1) - assert(mock_msg.messages(URL1)[5].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) - assert(mock_msg.messages(URL1)[5].message.screen == SCREEN2) - assert(mock_msg.messages(URL1)[6].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED) - assert(mock_msg.messages(URL1)[6].message.screen == SCREEN1) - monarch.back() assert(wait_until_not_busy()) - assert(#mock_msg.messages(URL1) == 10) - assert(#mock_msg.messages(URL2) == 2) - assert(mock_msg.messages(URL1)[7].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) - assert(mock_msg.messages(URL1)[7].message.screen == SCREEN1) - assert(mock_msg.messages(URL1)[8].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) - assert(mock_msg.messages(URL1)[8].message.screen == SCREEN2) - assert(mock_msg.messages(URL1)[9].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) - assert(mock_msg.messages(URL1)[9].message.screen == SCREEN1) - assert(mock_msg.messages(URL1)[10].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED) - assert(mock_msg.messages(URL1)[10].message.screen == SCREEN2) + local messages = mock_msg.filter(URL1, function(m) + return m.message.screen == SCREEN1 + end) + assert(messages[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) + assert(messages[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) + assert(messages[3].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) + assert(messages[4].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED) + assert(messages[5].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) + assert(messages[6].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) + + messages = mock_msg.filter(URL2, function(m) + return m.message.screen == SCREEN1 + end) + assert(messages[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) + assert(messages[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) + + messages = mock_msg.filter(URL1, function(m) + return m.message.screen == SCREEN2 + end) + assert(messages[1].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) + assert(messages[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) + assert(messages[3].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) + assert(messages[4].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED) end) it("should be able to show a screen even while it is preloading", function()