From 6ae8c45bc156ceeb1d421e9b217cfc0c7ba5828d Mon Sep 17 00:00:00 2001 From: Yann Hamon Date: Sat, 18 Nov 2023 18:08:18 +0100 Subject: [PATCH] openapi2jsonschema.py now correctly fails if no FILE is passed (#244) * openapi2jsonschema.py now correctly fails if no FILE is passed * Update acceptance tests --- acceptance.bats | 8 ++-- fixtures/valid.json | 74 +++++++++++++++-------------------- scripts/acceptance.bats | 7 ++++ scripts/openapi2jsonschema.py | 4 +- 4 files changed, 44 insertions(+), 49 deletions(-) diff --git a/acceptance.bats b/acceptance.bats index ca49c6f..a9d3bcd 100755 --- a/acceptance.bats +++ b/acceptance.bats @@ -36,7 +36,7 @@ resetCacheFolder() { } @test "Pass when parsing a valid Kubernetes config JSON file" { - run bin/kubeconform -kubernetes-version 1.17.1 -summary fixtures/valid.json + run bin/kubeconform -kubernetes-version 1.20.0 -summary fixtures/valid.json [ "$status" -eq 0 ] [ "$output" = "Summary: 1 resource found in 1 file - Valid: 1, Invalid: 0, Errors: 0, Skipped: 0" ] } @@ -134,17 +134,17 @@ resetCacheFolder() { } @test "Fail when parsing a config with additional properties and strict set" { - run bin/kubeconform -strict -kubernetes-version 1.16.0 fixtures/extra_property.yaml + run bin/kubeconform -strict -kubernetes-version 1.20.0 fixtures/extra_property.yaml [ "$status" -eq 1 ] } @test "Fail when parsing a config with duplicate properties and strict set" { - run bin/kubeconform -strict -kubernetes-version 1.16.0 fixtures/duplicate_property.yaml + run bin/kubeconform -strict -kubernetes-version 1.20.0 fixtures/duplicate_property.yaml [ "$status" -eq 1 ] } @test "Pass when parsing a config with duplicate properties and strict NOT set" { - run bin/kubeconform -kubernetes-version 1.16.0 fixtures/duplicate_property.yaml + run bin/kubeconform -kubernetes-version 1.20.0 fixtures/duplicate_property.yaml [ "$status" -eq 0 ] } diff --git a/fixtures/valid.json b/fixtures/valid.json index deb3101..e7a5dcb 100644 --- a/fixtures/valid.json +++ b/fixtures/valid.json @@ -1,46 +1,34 @@ { - "apiVersion": "apps/v1beta1", - "kind": "Deployment", - "metadata": { - "name": "nginx-deployment", - "namespace": "default" - }, - "spec": { - "replicas": 2, - "template": { - "spec": { - "affinity": { }, - "containers": [ - { - "args": [ ], - "command": [ ], - "env": [ ], - "envFrom": [ ], - "image": "nginx:1.7.9", - "lifecycle": { }, - "livenessProbe": { }, - "name": "nginx", - "ports": [ - { - "containerPort": 80, - "name": "http" - } - ], - "readinessProbe": { }, - "resources": { }, - "securityContext": { }, - "volumeMounts": [ ] - } - ], - "hostMappings": [ ], - "imagePullSecrets": [ ], - "initContainers": [ ], - "nodeSelector": { }, - "securityContext": { }, - "tolerations": [ ], - "volumes": [ ] - } + "apiVersion": "v1", + "kind": "ReplicationController", + "metadata": { + "name": "bob" + }, + "spec": { + "replicas": 2, + "selector": { + "app": "nginx" + }, + "template": { + "metadata": { + "name": "nginx", + "labels": { + "app": "nginx" + } + }, + "spec": { + "containers": [ + { + "name": "nginx", + "image": "nginx", + "ports": [ + { + "containerPort": 80 + } + ] + } + ] } - }, - "status": { } + } + } } diff --git a/scripts/acceptance.bats b/scripts/acceptance.bats index c210d45..4398c4e 100644 --- a/scripts/acceptance.bats +++ b/scripts/acceptance.bats @@ -72,3 +72,10 @@ setup() { run diff prometheus_v1.json ./fixtures/prometheus_v1-denyRootAdditionalProperties.json [ "$status" -eq 0 ] } + +@test "Should output an error if no file is passed" { + run ./openapi2jsonschema.py + [ "$status" -eq 1 ] + [ "${lines[0]}" == 'Missing FILE parameter.' ] + [ "${lines[1]}" == 'Usage: ./openapi2jsonschema.py [FILE]' ] +} diff --git a/scripts/openapi2jsonschema.py b/scripts/openapi2jsonschema.py index 9d981b4..6cda017 100755 --- a/scripts/openapi2jsonschema.py +++ b/scripts/openapi2jsonschema.py @@ -122,8 +122,8 @@ def construct_value(load, node): if __name__ == "__main__": - if len(sys.argv) == 0: - print("missing file") + if len(sys.argv) < 2: + print('Missing FILE parameter.\nUsage: %s [FILE]' % sys.argv[0]) exit(1) for crdFile in sys.argv[1:]: