Skip to content
Open
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
182 changes: 182 additions & 0 deletions specifications/14-constraint-semver-operators.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,78 @@
]
}
]
},
{
"name": "F8.semverMetadataEQ",
"description": "semver",
"enabled": true,
"strategies": [
{
"name": "default",
"parameters": {},
"constraints": [
{
"contextName": "version",
"operator": "SEMVER_EQ",
"value": "1.2.2+metadata"
}
]
}
]
},
{
"name": "F8.semverPreReleaseMetadataEQ",
"description": "semver",
"enabled": true,
"strategies": [
{
"name": "default",
"parameters": {},
"constraints": [
{
"contextName": "version",
"operator": "SEMVER_EQ",
"value": "1.2.2-alpha.1+metadata"
}
]
}
]
},
{
"name": "F8.semverPreReleaseMetadataLT",
"description": "semver",
"enabled": true,
"strategies": [
{
"name": "default",
"parameters": {},
"constraints": [
{
"contextName": "version",
"operator": "SEMVER_LT",
"value": "1.2.2-alpha.1+metadata"
}
]
}
]
},
{
"name": "F8.semverPreReleaseMetadataGT",
"description": "semver",
"enabled": true,
"strategies": [
{
"name": "default",
"parameters": {},
"constraints": [
{
"contextName": "version",
"operator": "SEMVER_GT",
"value": "1.2.2-alpha.1+metadata.1"
}
]
}
]
}
]
},
Expand All @@ -214,6 +286,16 @@
"toggleName": "F8.semverEQ",
"expectedResult": true
},
{
"description": "F8.semverEQ should be enabled for metadata",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"description": "F8.semverEQ should be enabled for metadata",
"description": "F8.semverEQ should ignore metadata and compare only semver",

I understand SemVer 2.0.0 defines precedence (you should ignore metadata for precedence comparison), but it doesn't say anything about equality.

This gives us:

  • version identity/string equality: 1.2.2+foo != 1.2.2
  • SemVer precedence comparison (ignoring metadata): compare(1.2.2+foo, 1.2.2) == 0

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. We do only want the SemVer precedence comparison then is my understanding here? @sighphyre

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gastonfournier with "compare(1.2.2+foo, 1.2.2) == 0" are you suggesting that we do not take metadata into consideration when establishing equality?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is horribly debatable but I agree with Gaston here: 1.1.1+foo == 1.1.1

For no other reason than if you force an exact match here then you can get into a weird place where two semantic versions do not satisfy any of A >= B, A > B, A == B, A < B or A <=B... which... is weird

No idea how SDKs are going to handle this, so should be funnn to roll this out

"context": {
"properties": {
"version": "1.2.2+metadata"
}
},
"toggleName": "F8.semverEQ",
"expectedResult": true
},
{
"description": "F8.semverEQ should be disabled",
"context": {
Expand Down Expand Up @@ -244,6 +326,16 @@
"toggleName": "F8.semverGT",
"expectedResult": false
},
{
"description": "F8.semverGT should be disabled if only metadata differs",
"context": {
"properties": {
"version": "1.2.2+metadata"
}
},
"toggleName": "F8.semverGT",
"expectedResult": true
},
{
"description": "F8.semverGTE should be enabled",
"context": {
Expand Down Expand Up @@ -294,6 +386,16 @@
"toggleName": "F8.semverLT",
"expectedResult": false
},
{
"description": "F8.semverLT should be disabled if only metadata differs",
"context": {
"properties": {
"version": "1.2.2+metadata"
}
},
"toggleName": "F8.semverLT",
"expectedResult": false
},
{
"description": "F8.semverLTE should be enabled",
"context": {
Expand Down Expand Up @@ -453,6 +555,86 @@
},
"toggleName": "F8.invalidSemverWithLeadingV",
"expectedResult": false
},
{
"description": "F8.semverMetadataEQ should be enabled if only metadata differs",
"context": {
"properties": {
"version": "1.2.2"
}
},
"toggleName": "F8.semverMetadataEQ",
"expectedResult": true
},
{
"description": "F8.semverMetadataEQ should be enabled if only metadata differs and contains a dot",
"context": {
"properties": {
"version": "1.2.2+metadata.1"
}
},
"toggleName": "F8.semverMetadataEQ",
"expectedResult": true
},
{
"description": "F8.semverMetadataEQ should be enabled if metadata matches",
"context": {
"properties": {
"version": "1.2.2+metadata"
}
},
"toggleName": "F8.semverMetadataEQ",
"expectedResult": true
},
{
"description": "F8.semverPreReleaseMetadataEQ should be enabled if only metadata differs",
"context": {
"properties": {
"version": "1.2.2-alpha.1"
}
},
"toggleName": "F8.semverPreReleaseMetadataEQ",
"expectedResult": true
},
{
"description": "F8.semverPreReleaseMetadataEQ should be enabled if only metadata differs and contains a dot",
"context": {
"properties": {
"version": "1.2.2-alpha.1+metadata.1"
}
},
"toggleName": "F8.semverPreReleaseMetadataEQ",
"expectedResult": true
},
{
"description": "F8.semverPreReleaseMetadataEQ should be enabled if only metadata differs",
"context": {
"properties": {
"version": "1.2.2-alpha.1+metadata"
}
},
"toggleName": "F8.semverPreReleaseMetadataEQ",
"expectedResult": true
},
{
"description": "F8.semverPreReleaseMetadataLT should be disabled as both are equal after discarding metadata",
"context": {
"properties": {
"version": "1.2.2-alpha.1"
}
},
"toggleName": "F8.semverPreReleaseMetadataLT",
"expectedResult": false
},
{
"description": "F8.semverPreReleaseMetadataGT should be disabled for higher metadata cause metadata is ignored and both are equal",
"context": {
"properties": {
"version": "1.2.2-alpha.1+metadata.2"
}
},
"toggleName": "F8.semverPreReleaseMetadataGT",
"expectedResult": false
}
]
}
Loading