Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
a4734c7
fix: create JMESPATH flattenIfPossible functions for Lists (#1169)
0marperez Dec 16, 2024
7911a94
chore: release 1.3.30
aws-sdk-kotlin-ci Dec 16, 2024
7085c8a
chore: bump snapshot version to 1.3.31-SNAPSHOT
aws-sdk-kotlin-ci Dec 16, 2024
4575023
misc: enhance support for replayable instances of `InputStream` (#1197)
lauzadis Dec 18, 2024
b0a4bac
chore: release 1.3.31
aws-sdk-kotlin-ci Dec 18, 2024
80f4538
chore: bump snapshot version to 1.3.32-SNAPSHOT
aws-sdk-kotlin-ci Dec 18, 2024
e9d16a9
fix: CBOR protocol test assertions / blob serialization (#1198)
lauzadis Dec 18, 2024
48849a1
fix: correctly serialize subset of shape's members when configured (#…
lauzadis Jan 6, 2025
ded3a4b
chore: release 1.3.32
aws-sdk-kotlin-ci Jan 6, 2025
d97e8ba
chore: bump snapshot version to 1.3.33-SNAPSHOT
aws-sdk-kotlin-ci Jan 6, 2025
78f17f3
chore: add *-main to branch workflows (#1209)
ianbotsf Jan 8, 2025
d06ee0a
chore: add .kotlin/ to .gitignore (#1208)
ianbotsf Jan 8, 2025
d2e7c91
chore: smithy version bump (#1213)
0marperez Jan 10, 2025
5a2df8f
chore: release 1.3.33
aws-sdk-kotlin-ci Jan 10, 2025
003633b
chore: bump snapshot version to 1.3.34-SNAPSHOT
aws-sdk-kotlin-ci Jan 10, 2025
5f5ec8f
feat: add `AuthTokenGenerator` (#1212)
lauzadis Jan 10, 2025
3fe1b5e
chore: release 1.3.34
aws-sdk-kotlin-ci Jan 10, 2025
0bba308
chore: bump snapshot version to 1.3.35-SNAPSHOT
aws-sdk-kotlin-ci Jan 10, 2025
52e4439
misc: merge v1.4 into main (#1218)
0marperez Jan 15, 2025
e0c25d6
feat: support default checksums (#1191)
0marperez Jan 15, 2025
14e0958
chore: release 1.4.0
aws-sdk-kotlin-ci Jan 15, 2025
ed95d7b
chore: bump snapshot version to 1.4.1-SNAPSHOT
aws-sdk-kotlin-ci Jan 15, 2025
a4ace35
fix: add 0.9.x aws-crt-kotlin transform (#1220)
lauzadis Jan 16, 2025
15e5f0c
fix: Ensure `Host` header is included when signing auth tokens (#1222)
lauzadis Jan 16, 2025
447ac10
chore: release 1.4.1
aws-sdk-kotlin-ci Jan 16, 2025
0f8db44
chore: bump snapshot version to 1.4.2-SNAPSHOT
aws-sdk-kotlin-ci Jan 16, 2025
8b33693
fix: address various failing protocol tests (#1223)
lauzadis Jan 23, 2025
03badf9
misc: re-enable `kotlinWarningsAsErrors=true` (#1224)
lauzadis Jan 23, 2025
9f44cdb
fix: ignore hop-by-hop headers when signing requests (#1227)
ianbotsf Jan 28, 2025
97ac447
chore: release 1.4.2
aws-sdk-kotlin-ci Jan 28, 2025
b7e50e3
chore: bump snapshot version to 1.4.3-SNAPSHOT
aws-sdk-kotlin-ci Jan 28, 2025
e6357f9
misc: add telemetry configuration to DefaultAwsSigner (#1226)
xinsong-cui Jan 30, 2025
9d6857b
misc: gradle mirror (#1204)
0marperez Feb 4, 2025
5323882
fix: correctly check equality for CaseInsensitiveMap (#1235)
ianbotsf Feb 6, 2025
1af0e82
misc: gradle version bump (#1236)
0marperez Feb 7, 2025
120768c
fix: correct hash code calculation for case-insensitive map entries (…
ianbotsf Feb 8, 2025
d7e3603
misc: bump build plugin version (#1239)
lauzadis Feb 12, 2025
c1bcb04
fix: favor endpointUrl over endpoint discovery when provided (#1240)
ianbotsf Feb 13, 2025
4223bfa
chore: release 1.4.3
aws-sdk-kotlin-ci Feb 13, 2025
cea7b1f
chore: bump snapshot version to 1.4.4-SNAPSHOT
aws-sdk-kotlin-ci Feb 13, 2025
ad4d2a3
misc: test union member name same as union (#1241)
0marperez Feb 14, 2025
a0be9e4
fix: unions with member names matching auto-imported Kotlin symbols (…
0marperez Feb 14, 2025
00500f2
fix: bump maximum event stream message length to 24MB (#1243)
lauzadis Feb 18, 2025
7329212
chore: release 1.4.4
aws-sdk-kotlin-ci Feb 18, 2025
612c39b
chore: bump snapshot version to 1.4.5-SNAPSHOT
aws-sdk-kotlin-ci Feb 18, 2025
283ca31
misc: Remove Elastic Inference SDK ID test (#1247)
0marperez Feb 24, 2025
82b9ffe
feat: Kotlin implementation of SigV4a signing (#1246)
lauzadis Feb 24, 2025
0df4e42
chore: release 1.4.5
aws-sdk-kotlin-ci Feb 24, 2025
7430722
chore: bump snapshot version to 1.4.6-SNAPSHOT
aws-sdk-kotlin-ci Feb 24, 2025
80d395b
fix: account ID based endpoints (#1245)
0marperez Feb 25, 2025
5dbc684
chore: release 1.4.6
aws-sdk-kotlin-ci Feb 25, 2025
dc6b646
chore: bump snapshot version to 1.4.7-SNAPSHOT
aws-sdk-kotlin-ci Feb 25, 2025
09838a7
fix: replace `Span.makeCurrent()` with `Span.asContextElement()` (#1237)
lauzadis Feb 25, 2025
d06ccf3
chore: release 1.4.7
aws-sdk-kotlin-ci Feb 25, 2025
03a8e62
chore: bump snapshot version to 1.4.8-SNAPSHOT
aws-sdk-kotlin-ci Feb 25, 2025
aae827c
fix: idempotency tokens being code-generated for nested structures (#…
0marperez Feb 27, 2025
c498b42
chore: release 1.4.8
aws-sdk-kotlin-ci Feb 27, 2025
462967b
chore: bump snapshot version to 1.4.9-SNAPSHOT
aws-sdk-kotlin-ci Feb 27, 2025
72155f7
fix: correctly codegen paginators for types which require fully-quali…
ianbotsf Feb 27, 2025
0e4a7cb
chore: bump Ktor dependency (#1250)
ianbotsf Feb 27, 2025
aa02ac4
chore: release 1.4.9
aws-sdk-kotlin-ci Feb 27, 2025
8178808
chore: bump snapshot version to 1.4.10-SNAPSHOT
aws-sdk-kotlin-ci Feb 27, 2025
4b0df67
misc: remove `@InternalApi` from `SdkClientOption` extension function…
lauzadis Mar 3, 2025
6f94c6a
fix: correctly handle sequential calls to `SingleFlightGroup` (#1251)
ianbotsf Mar 3, 2025
667161b
chore: release 1.4.10
aws-sdk-kotlin-ci Mar 6, 2025
f1d5f6b
chore: bump snapshot version to 1.4.11-SNAPSHOT
aws-sdk-kotlin-ci Mar 6, 2025
bf9a200
feat: main to feature branches merge (#1254)
0marperez Mar 12, 2025
6e10c01
feat: emit accountId metrics (#1255)
xinsong-cui Mar 14, 2025
1caac30
chore: release 1.4.11
aws-sdk-kotlin-ci Mar 14, 2025
0a29a00
chore: bump snapshot version to 1.4.12-SNAPSHOT
aws-sdk-kotlin-ci Mar 14, 2025
3e307f7
misc: run merge main on push to main (#1261)
0marperez Apr 1, 2025
f6557ba
feat: sync mirror (#1260)
0marperez Apr 1, 2025
5d8d7fd
chore: reintegrate E2E smoke tests into the top-level Gradle build; m…
ianbotsf Apr 2, 2025
2109a72
misc: include `aws-crt-kotlin` as a composite build (#1263)
lauzadis Apr 3, 2025
b092fd6
chore: release 1.4.12
aws-sdk-kotlin-ci Apr 4, 2025
ce7c62d
chore: bump snapshot version to 1.4.13-SNAPSHOT
aws-sdk-kotlin-ci Apr 4, 2025
fc3837b
misc: prepare codegen packages for internal import (#1266)
lauzadis Apr 9, 2025
a5e1874
chore: release 1.4.13
aws-sdk-kotlin-ci Apr 10, 2025
f6e959c
chore: bump snapshot version to 1.4.14-SNAPSHOT
aws-sdk-kotlin-ci Apr 10, 2025
9621ad1
misc: use aws-kotlin-repo-tools show-results action (#1268)
lauzadis Apr 11, 2025
286474a
chore: upgrade aws-kotlin-repo-tools (#1270)
ianbotsf Apr 14, 2025
482c3e7
Merge branch 'main' of github.com:smithy-lang/smithy-kotlin into kn-m…
lauzadis Apr 14, 2025
6d29431
CI
lauzadis Apr 14, 2025
b7f690a
Upgrade to latest aws-kotlin-repo-tools
lauzadis Apr 14, 2025
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
25 changes: 19 additions & 6 deletions .brazil.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,40 @@
"aws.sdk.kotlin.crt:aws-crt-kotlin:0.9.*": "AwsCrtKotlin-0.9.x",
"aws.sdk.kotlin.crt:aws-crt-kotlin:0.8.*": "AwsCrtKotlin-0.8.x",
"com.squareup.okhttp3:okhttp:4.*": "OkHttp3-4.x",
"org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.*": "KotlinxDatetimeJvm-0.x"
"org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.*": "KotlinxDatetimeJvm-0.x",

"software.amazon.smithy:smithy-aws-traits:1.*": "Maven-software-amazon-smithy_smithy-aws-traits-1.x",
"software.amazon.smithy:smithy-aws-iam-traits:1.*": "Maven-software-amazon-smithy_smithy-aws-iam-traits-1.x",
"software.amazon.smithy:smithy-aws-cloudformation-traits:1.*": "Maven-software-amazon-smithy_smithy-aws-cloudformation-traits-1.x",
"software.amazon.smithy:smithy-protocol-test-traits:1.*": "Maven-software-amazon-smithy_smithy-protocol-test-traits-1.x",
"software.amazon.smithy:smithy-protocol-traits:1.*": "Maven-software-amazon-smithy_smithy-protocol-traits-1.x",
"software.amazon.smithy:smithy-aws-endpoints:1.*": "Maven-software-amazon-smithy_smithy-aws-endpoints-1.x",
"software.amazon.smithy:smithy-codegen-core:1.*": "Maven-software-amazon-smithy_smithy-codegen-core-1.x",
"software.amazon.smithy:smithy-waiters:1.*": "Maven-software-amazon-smithy_smithy-waiters-1.x",
"software.amazon.smithy:smithy-rules-engine:1.*": "Maven-software-amazon-smithy_smithy-rules-engine-1.x",
"software.amazon.smithy:smithy-smoke-test-traits:1.*": "Maven-software-amazon-smithy_smithy-smoke-test-traits-1.x",
"org.jsoup:jsoup:1.19.*": "Maven-jsoup-1.19.x"
},
"packageHandlingRules": {
"versioning": {
"defaultVersionLayout": "{MAJOR}.0.x",
"overrides": {
"software.amazon.smithy.kotlin:smithy-kotlin-codegen": "{MAJOR}.{MINOR}.x",
"software.amazon.smithy.kotlin:smithy-kotlin-codegen-testutils": "{MAJOR}.{MINOR}.x"
"software.amazon.smithy.kotlin:smithy-aws-kotlin-codegen": "{MAJOR}.x",
"software.amazon.smithy.kotlin:smithy-kotlin-codegen": "{MAJOR}.x"
}
},
"rename": {
"software.amazon.smithy.kotlin:smithy-kotlin-codegen": "SmithyKotlinCodegen",
"software.amazon.smithy.kotlin:smithy-kotlin-codegen-testutils": "SmithyKotlinCodegenTestUtils"
"software.amazon.smithy.kotlin:smithy-aws-kotlin-codegen": "AwsSmithyAwsKotlinCodegen",
"software.amazon.smithy.kotlin:smithy-kotlin-codegen": "AwsSmithyKotlinCodegen"
},
"ignore": [
"aws.smithy.kotlin:http-test",
"aws.smithy.kotlin:smithy-test",
"aws.smithy.kotlin:telemetry-provider-micrometer",
"aws.smithy.kotlin:testing",
"aws.smithy.kotlin:bom",
"aws.smithy.kotlin:version-catalog"
"aws.smithy.kotlin:version-catalog",
"software.amazon.smithy.kotlin:smithy-kotlin-codegen-testutils"
],
"resolvesConflictDependencies": {
"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.*": [
Expand Down
50 changes: 1 addition & 49 deletions .github/workflows/artifact-size-metrics.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,55 +65,7 @@ jobs:
run: ./gradlew analyzeArtifactSizeMetrics

- name: Show Results
uses: actions/github-script@v7
with:
script: |
const getComments =
`query {
repository(owner:"${context.repo.owner}", name:"${context.repo.repo}"){
pullRequest(number: ${context.issue.number}) {
id
comments(last:100) {
nodes {
id
body
author {
login
}
isMinimized
}
}
}
}
}`

const response = await github.graphql(getComments)
const comments = response.repository.pullRequest.comments.nodes

const mutations = comments
.filter(comment => comment.author.login == 'github-actions' && !comment.isMinimized && comment.body.startsWith('Affected Artifacts'))
.map(comment =>
github.graphql(
`mutation {
minimizeComment(input:{subjectId:"${comment.id}", classifier:OUTDATED}){
clientMutationId
}
}`
)
)
await Promise.all(mutations)

const fs = require('node:fs')
const comment = fs.readFileSync('build/reports/metrics/artifact-analysis.md', 'utf8')

const writeComment =
`mutation {
addComment(input:{body:"""${comment}""", subjectId:"${response.repository.pullRequest.id}"}){
clientMutationId
}
}`

await github.graphql(writeComment)
uses: awslabs/aws-kotlin-repo-tools/.github/actions/artifact-size-metrics/show-results@main

- name: Evaluate
if: ${{ !contains(github.event.pull_request.labels.*.name, 'acknowledge-artifact-size-increase') }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/merge-main.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
name: Merge main
on:
schedule:
- cron: "0 7 * * 1-5" # At 07:00 UTC (00:00 PST, 03:00 EST), Monday through Friday
push:
branches: [ main ]
workflow_dispatch:

jobs:
test:
merge:
runs-on: ubuntu-latest
steps:
- name: Merge main
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/sync-mirror.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Sync Mirror

on:
push:
branches: [ main ]
workflow_dispatch:

jobs:
git-sync:
# Only sync when pushing to source repo
if: github.repository == 'smithy-lang/smithy-kotlin'
runs-on: ubuntu-latest
steps:
- name: git-sync
uses: wei/git-sync@v3
with:
source_repo: "https://aws-sdk-kotlin-ci:${{ secrets.CI_USER_PAT }}@github.com/smithy-lang/smithy-kotlin.git"
source_branch: "main"
destination_repo: "https://aws-sdk-kotlin-ci:${{ secrets.CI_USER_PAT }}@github.com/smithy-lang/private-smithy-kotlin-staging.git"
destination_branch: "main"
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## [1.4.13] - 04/10/2025

## [1.4.12] - 04/04/2025

## [1.4.11] - 03/14/2025

## [1.4.10] - 03/06/2025
Expand Down
6 changes: 1 addition & 5 deletions codegen/smithy-aws-kotlin-codegen/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,11 @@ plugins {
}

val codegenVersion: String by project
description = "Codegen support for AWS protocols"
description = "Smithy codegen support for AWS protocols"
group = "software.amazon.smithy.kotlin"
version = codegenVersion

val sdkVersion: String by project

dependencies {

implementation(libs.kotlin.stdlib.jdk8)
api(project(":codegen:smithy-kotlin-codegen"))

api(libs.smithy.aws.traits)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ object RuntimeTypes {
}

object SmokeTests : RuntimeTypePackage(KotlinDependency.CORE, "smoketests") {
val DefaultPrinter = symbol("DefaultPrinter")
val exitProcess = symbol("exitProcess")
val printExceptionStackTrace = symbol("printExceptionStackTrace")
val SmokeTestsException = symbol("SmokeTestsException")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ object KotlinTypes {
}

object Text : RuntimeTypePackage(KotlinDependency.KOTLIN_STDLIB, "text") {
val Appendable = stdlibSymbol("Appendable")
val encodeToByteArray = stdlibSymbol("encodeToByteArray")
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import software.amazon.smithy.codegen.core.Symbol
import software.amazon.smithy.kotlin.codegen.core.*
import software.amazon.smithy.kotlin.codegen.integration.SectionId
import software.amazon.smithy.kotlin.codegen.integration.SectionKey
import software.amazon.smithy.kotlin.codegen.lang.KotlinTypes
import software.amazon.smithy.kotlin.codegen.model.getTrait
import software.amazon.smithy.kotlin.codegen.model.hasTrait
import software.amazon.smithy.kotlin.codegen.rendering.ShapeValueGenerator
Expand All @@ -17,8 +18,8 @@ import software.amazon.smithy.kotlin.codegen.rendering.util.format
import software.amazon.smithy.kotlin.codegen.utils.dq
import software.amazon.smithy.kotlin.codegen.utils.toCamelCase
import software.amazon.smithy.kotlin.codegen.utils.topDownOperations
import software.amazon.smithy.model.node.*
import software.amazon.smithy.model.shapes.*
import software.amazon.smithy.model.node.Node
import software.amazon.smithy.model.shapes.OperationShape
import software.amazon.smithy.smoketests.traits.SmokeTestCase
import software.amazon.smithy.smoketests.traits.SmokeTestsTrait
import kotlin.jvm.optionals.getOrNull
Expand Down Expand Up @@ -61,25 +62,47 @@ class SmokeTestsRunnerGenerator(
) {
internal fun render() {
writer.declareSection(SmokeTestSectionIds.SmokeTestsFile) {
writer.write("private var exitCode = 0")
write("")

withBlock("public suspend fun main() {", "}") {
write("val success = SmokeTestRunner().runAllTests()")
withBlock("if (!success) {", "}") {
write("#T(1)", RuntimeTypes.Core.SmokeTests.exitProcess)
}
}
write("")
renderRunnerClass()
}
}

private fun renderRunnerClass() {
writer.withBlock(
"public class SmokeTestRunner(private val platform: #1T = #1T.System, private val printer: #2T = #3T) {",
"}",
RuntimeTypes.Core.Utils.PlatformProvider,
KotlinTypes.Text.Appendable,
RuntimeTypes.Core.SmokeTests.DefaultPrinter,
) {
renderEnvironmentVariables()
writer.declareSection(SmokeTestSectionIds.AdditionalEnvironmentVariables)
writer.write("")
writer.withBlock("public suspend fun main() {", "}") {
renderFunctionCalls()
write("#T(exitCode)", RuntimeTypes.Core.SmokeTests.exitProcess)
declareSection(SmokeTestSectionIds.AdditionalEnvironmentVariables)
write("")

withBlock("public suspend fun runAllTests(): Boolean =", "") {
withBlock("listOf<suspend () -> Boolean>(", ")") {
renderFunctionReferences()
}
indent()
write(".map { it() }")
write(".all { it }")
dedent()
}
writer.write("")
renderFunctions()
}
}

private fun renderEnvironmentVariables() {
// Skip tags
writer.writeInline(
"private val skipTags = #T.System.getenv(",
RuntimeTypes.Core.Utils.PlatformProvider,
)
writer.writeInline("private val skipTags = platform.getenv(")
writer.declareSection(SmokeTestSectionIds.SkipTags) {
writer.writeInline("#S", SKIP_TAGS)
}
Expand All @@ -89,10 +112,7 @@ class SmokeTestsRunnerGenerator(
)

// Service filter
writer.writeInline(
"private val serviceFilter = #T.System.getenv(",
RuntimeTypes.Core.Utils.PlatformProvider,
)
writer.writeInline("private val serviceFilter = platform.getenv(")
writer.declareSection(SmokeTestSectionIds.ServiceFilter) {
writer.writeInline("#S", SERVICE_FILTER)
}
Expand All @@ -102,10 +122,10 @@ class SmokeTestsRunnerGenerator(
)
}

private fun renderFunctionCalls() {
private fun renderFunctionReferences() {
operations.forEach { operation ->
operation.getTrait<SmokeTestsTrait>()?.testCases?.forEach { testCase ->
writer.write("${testCase.functionName}()")
writer.write("::${testCase.functionName},")
}
}
}
Expand All @@ -120,7 +140,7 @@ class SmokeTestsRunnerGenerator(
}

private fun renderFunction(operation: OperationShape, testCase: SmokeTestCase) {
writer.withBlock("private suspend fun ${testCase.functionName}() {", "}") {
writer.withBlock("private suspend fun ${testCase.functionName}(): Boolean {", "}") {
write("val tags = setOf<String>(${testCase.tags.joinToString(",") { it.dq()} })")
writer.withBlock("if ((serviceFilter.isNotEmpty() && #S !in serviceFilter) || tags.any { it in skipTags }) {", "}", sdkId) {
printTestResult(
Expand All @@ -131,10 +151,10 @@ class SmokeTestsRunnerGenerator(
"ok",
"# skip",
)
writer.write("return")
writer.write("return true")
}
write("")
withInlineBlock("try {", "} ") {
withInlineBlock("return try {", "} ") {
renderTestCase(operation, testCase)
}
withBlock("catch (exception: Exception) {", "}") {
Expand All @@ -149,6 +169,8 @@ class SmokeTestsRunnerGenerator(
closeAndOpenBlock("}.#T { client ->", RuntimeTypes.Core.IO.use)
renderOperation(operation, testCase)
}
writer.write("")
writer.write("error(#S)", "Unexpectedly completed smoke test operation without throwing exception")
}

private fun renderClientConfig(testCase: SmokeTestCase) {
Expand Down Expand Up @@ -212,9 +234,11 @@ class SmokeTestsRunnerGenerator(
)

writer.withBlock("if (!success) {", "}") {
write("#T(exception)", RuntimeTypes.Core.SmokeTests.printExceptionStackTrace)
write("exitCode = 1")
write("printer.appendLine(exception.stackTraceToString().prependIndent(#S))", "# ")
}

writer.write("")
writer.write("success")
}

// Helpers
Expand All @@ -241,7 +265,7 @@ class SmokeTestsRunnerGenerator(
val expectation = if (errorExpected) "error expected from service" else "no error expected from service"
val status = statusOverride ?: "\$status"
val testResult = "$status $service $testCase - $expectation $directive"
writer.write("println(#S)", testResult)
writer.write("printer.appendLine(#S)", testResult)
}

/**
Expand All @@ -250,18 +274,6 @@ class SmokeTestsRunnerGenerator(
private val SmokeTestCase.functionName: String
get() = this.id.toCamelCase()

/**
* Get the operation parameters for a [SmokeTestCase]
*/
private val SmokeTestCase.operationParameters: Map<StringNode, Node>
get() = this.params.get().members

/**
* Checks if there are operation parameters for a [SmokeTestCase]
*/
private val SmokeTestCase.hasOperationParameters: Boolean
get() = this.params.isPresent

/**
* Check if a [SmokeTestCase] is expecting a specific error
*/
Expand Down
Loading
Loading