Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions actions/version/tests/post-version.test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
uses: ./actions/version
id: version
with:
version: "0.4.13.post0"

after:
- shell: bash
run: |
VERSION_OUTPUT='${{ steps.version.outputs.version }}'
if [[ -z "$VERSION_OUTPUT" ]]; then
echo "fail:Version output is empty" >> "$TEST_OUTPUT"
else
echo "success:Version output: $VERSION_OUTPUT" >> "$TEST_OUTPUT"
fi

VERSION_VALUE=$(echo "$VERSION_OUTPUT" | jq -r '.version')
IS_DEV=$(echo "$VERSION_OUTPUT" | jq -r '.is_dev')
POST=$(echo "$VERSION_OUTPUT" | jq -r '.post')
NEXT=$(echo "$VERSION_OUTPUT" | jq -r '.next')

if [[ "$VERSION_VALUE" != "0.4.13.post0" ]]; then
echo "fail:Expected version '0.4.13.post0', got '$VERSION_VALUE'" >> "$TEST_OUTPUT"
else
echo "success:Version value is correct: $VERSION_VALUE" >> "$TEST_OUTPUT"
fi

if [[ "$IS_DEV" != "false" ]]; then
echo "fail:Expected is_dev 'false', got '$IS_DEV'" >> "$TEST_OUTPUT"
else
echo "success:is_dev flag is correct: $IS_DEV" >> "$TEST_OUTPUT"
fi

if [[ "$POST" != "0" ]]; then
echo "fail:Expected post '0', got '$POST'" >> "$TEST_OUTPUT"
else
echo "success:post value is correct: $POST" >> "$TEST_OUTPUT"
fi

if [[ "$NEXT" != "0.4.13.post1-dev" ]]; then
echo "fail:Expected next '0.4.13.post1-dev', got '$NEXT'" >> "$TEST_OUTPUT"
else
echo "success:next value is correct: $NEXT" >> "$TEST_OUTPUT"
fi
1 change: 1 addition & 0 deletions jq/tests/utils/version-dev.test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ expected:
major: 1
minor: 2
patch: 3
post: null
next: "1.2.3"
14 changes: 14 additions & 0 deletions jq/tests/utils/version-post-bump.test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: utils::version bumps post release version

input: "1.2.3.post7"

module: utils::version

expected:
version: "1.2.3.post7"
is_dev: false
major: 1
minor: 2
patch: 3
post: 7
next: "1.2.3.post8-dev"
14 changes: 14 additions & 0 deletions jq/tests/utils/version-post-dev.test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: utils::version parses post development version

input: "0.4.13.post0-dev"

module: utils::version

expected:
version: "0.4.13.post0-dev"
is_dev: true
major: 0
minor: 4
patch: 13
post: 0
next: "0.4.13.post0"
14 changes: 14 additions & 0 deletions jq/tests/utils/version-post-release.test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: utils::version parses post release version

input: "0.4.13.post0"

module: utils::version

expected:
version: "0.4.13.post0"
is_dev: false
major: 0
minor: 4
patch: 13
post: 0
next: "0.4.13.post1-dev"
1 change: 1 addition & 0 deletions jq/tests/utils/version-release.test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ expected:
major: 1
minor: 2
patch: 3
post: null
next: "1.2.4-dev"
25 changes: 17 additions & 8 deletions jq/utils.jq
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,27 @@ def bytesize:
;

def version:
.
. as $input
| endswith("-dev") as $is_dev
| (. | split("-") | .[0] | split(".") | map(tonumber)) as $parts
| (if $is_dev then "\($parts[0]).\($parts[1]).\($parts[2])"
else "\($parts[0]).\($parts[1]).\($parts[2] + 1)-dev"
| ($input | split("-") | .[0]) as $base
| ($base
| capture("^(?<maj>[0-9]+)\\.(?<min>[0-9]+)\\.(?<pat>[0-9]+)(\\.post(?<post>[0-9]+))?$")
// error("utils::version: unsupported version string: \($input)")) as $match
| ($match.maj | tonumber) as $major
| ($match.min | tonumber) as $minor
| ($match.pat | tonumber) as $patch
| ($match.post | if . == null then null else tonumber end) as $post
| (if $is_dev then $base
elif $post != null then "\($major).\($minor).\($patch).post\($post + 1)-dev"
else "\($major).\($minor).\($patch + 1)-dev"
end) as $next
| {
version: .,
version: $input,
is_dev: $is_dev,
major: $parts[0],
minor: $parts[1],
patch: $parts[2],
major: $major,
minor: $minor,
patch: $patch,
post: $post,
next: $next
}
;