Skip to content

Conversation

@TristanSpeakEasy
Copy link
Member

@TristanSpeakEasy TristanSpeakEasy commented Aug 22, 2025

🎯 Overview

This PR removes CLI command stuttering by changing from openapi openapi validate to openapi spec validate and includes comprehensive enhancements to CLI functionality, bug fixes, and CI pipeline optimization.

🚀 Major Changes

✅ CLI Restructuring

  • Removed command stuttering: Changed from openapi openapi validate to openapi spec validate
  • Updated CLI structure: Modified cmd/openapi/main.go to use "spec" as the command name
  • Comprehensive documentation: Updated all README files with complete command coverage

🔧 Bug Fixes and Enhancements

  • Fixed join command path resolution: Now uses relative paths from main document directory instead of absolute filesystem paths
  • Enhanced inline command: Preserves security schemes referenced by global security requirements
  • Improved path handling: Proper CLI argument parsing using filepath.Rel() for consistent relative paths

🧪 Testing Infrastructure

  • Added comprehensive CLI integration test suite: New mise-tasks/test-cli script tests all CLI commands
  • Complete command coverage: Tests validate, upgrade, inline, bundle, join, bootstrap, arazzo, and overlay commands
  • Error case testing: Validates proper handling of invalid files and edge conditions
  • Output validation: Ensures all generated files pass OpenAPI validation

⚡ CI Pipeline Optimization

  • Enhanced mise CI: Added CLI integration testing to local CI pipeline
  • Parallelized GitHub Actions: Split workflow into independent parallel jobs:
    • lint: Fast linting and format checks (runs first)
    • test: Unit tests with coverage (Ubuntu + Windows matrix)
    • cli-tests: CLI integration tests (Linux-only, parallel)
    • build-ubuntu: Ubuntu build (parallel)
    • build-windows: Windows build (parallel)
  • Reduced CI time: Parallel execution significantly improves workflow performance
  • Platform-specific optimizations: CLI tests run only on Linux for consistency

📋 Updated Commands

# OpenAPI Specification Commands
openapi spec validate <file>     # Validate OpenAPI specifications
openapi spec upgrade <file>      # Upgrade OpenAPI versions (3.0.x → 3.1.0)
openapi spec inline <file>       # Inline all references into self-contained document
openapi spec bundle <file>       # Bundle external references into components
openapi spec join <files...>     # Join multiple documents with conflict resolution
openapi spec bootstrap [file]    # Generate basic OpenAPI template

# Arazzo Workflow Commands
openapi arazzo validate <file>   # Validate Arazzo workflow documents

# Overlay Commands
openapi overlay validate <file>  # Validate overlay documents
openapi overlay apply <overlay> <spec>  # Apply overlay to specification
openapi overlay compare <spec1> <spec2> # Generate overlay from differences

🔍 Technical Details

Path Resolution Fix

  • Issue: Join command was generating absolute filesystem paths in output
  • Solution: Updated openapi/cmd/join.go to use filepath.Rel() for proper relative path calculation
  • Impact: Generated files now contain clean relative paths suitable for distribution

Security Scheme Preservation

  • Issue: Inline command was removing security schemes referenced by global security requirements
  • Solution: Enhanced removeUnusedComponents() in openapi/inline.go to preserve referenced security schemes
  • Impact: Inlined documents maintain proper security configuration

Test Data Updates

  • Updated test expectations: Modified test data to reflect proper path handling and security scheme preservation
  • Reorganized test structure: Moved test files to appropriate subdirectories for better path testing
  • Enhanced validation: All test outputs now pass strict OpenAPI validation

✅ Quality Assurance

  • All unit tests passing: 298 OpenAPI tests pass
  • All integration tests passing: Complete CLI test suite validates all functionality
  • Linting compliance: All code changes pass golangci-lint
  • Documentation complete: All commands documented with examples and usage
  • Validation compliance: All generated files pass OpenAPI validation
  • Backward compatibility: All changes maintain existing API compatibility

🎯 Benefits

  1. Improved UX: Cleaner CLI interface without command stuttering
  2. Better reliability: Fixed path resolution and component preservation bugs
  3. Comprehensive testing: Full CLI integration test coverage
  4. Faster CI: Parallel execution reduces workflow time
  5. Enhanced documentation: Complete command reference and examples

📊 Files Changed

  • cmd/openapi/main.go: CLI command structure update
  • openapi/cmd/join.go: Path resolution fix
  • openapi/inline.go: Security scheme preservation enhancement
  • openapi/testdata/: Updated test data and expectations
  • mise-tasks/ci: Added CLI integration testing
  • mise-tasks/test-cli: New comprehensive CLI test suite
  • .github/workflows/ci.yaml: Parallelized workflow optimization
  • Documentation files: Complete command coverage updates

All changes maintain backward compatibility while significantly improving CLI functionality and reliability.

- Change CLI command from 'openapi openapi' to 'openapi spec'
- Add comprehensive documentation for all 6 OpenAPI commands
- Add table of contents to all README files for better navigation
- Update all examples and help text throughout codebase
- Improve CLI user experience by removing redundant command naming
@TristanSpeakEasy TristanSpeakEasy added documentation Improvements or additions to documentation enhancement New feature or request labels Aug 22, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Aug 22, 2025

📊 Test Coverage Report

Current Coverage: 63.7%
Main Branch Coverage: 63.7%

Coverage Change: ✅ No change

Coverage by Package

github.com/speakeasy-api/openapi/arazzo/arazzo.go:55:					WithSkipValidation				100.0%
github.com/speakeasy-api/openapi/arazzo/arazzo.go:63:					Unmarshal					91.7%
github.com/speakeasy-api/openapi/arazzo/arazzo.go:86:					Marshal						100.0%
github.com/speakeasy-api/openapi/arazzo/arazzo.go:91:					Sync						0.0%
github.com/speakeasy-api/openapi/arazzo/arazzo.go:99:					Validate					88.0%
github.com/speakeasy-api/openapi/arazzo/cmd/root.go:6:					Apply						0.0%
github.com/speakeasy-api/openapi/arazzo/cmd/validate.go:29:				runValidate					0.0%
github.com/speakeasy-api/openapi/arazzo/cmd/validate.go:39:				validateArazzo					0.0%
github.com/speakeasy-api/openapi/arazzo/cmd/validate.go:69:				GetValidateCommand				0.0%
github.com/speakeasy-api/openapi/arazzo/components.go:41:				Validate					86.2%
github.com/speakeasy-api/openapi/arazzo/core/criterion.go:33:				Unmarshal					80.0%
github.com/speakeasy-api/openapi/arazzo/core/criterion.go:73:				SyncChanges					0.0%
github.com/speakeasy-api/openapi/arazzo/core/factory_registration.go:11:		init						50.0%
github.com/speakeasy-api/openapi/arazzo/core/reusable.go:27:				Unmarshal					0.0%
github.com/speakeasy-api/openapi/arazzo/core/reusable.go:60:				SyncChanges					0.0%
github.com/speakeasy-api/openapi/arazzo/criterion/condition.go:41:			newCondition					87.5%
github.com/speakeasy-api/openapi/arazzo/criterion/condition.go:80:			Validate					0.0%
github.com/speakeasy-api/openapi/arazzo/criterion/condition.go:106:			handleQuotedString				100.0%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:53:			Validate					0.0%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:84:			IsTypeProvided					66.7%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:104:			GetCore						0.0%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:109:			IsTypeProvided					66.7%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:118:			GetType						60.0%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:131:			GetVersion					0.0%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:139:			Populate					0.0%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:175:			Sync						66.7%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:183:			GetCondition					0.0%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:188:			Validate					66.7%
github.com/speakeasy-api/openapi/arazzo/criterion/criterion.go:228:			validateCondition				53.3%
github.com/speakeasy-api/openapi/arazzo/criterion/factory_registration.go:6:		init						50.0%
github.com/speakeasy-api/openapi/arazzo/factory_registration.go:12:			init						92.9%
github.com/speakeasy-api/openapi/arazzo/failureaction.go:57:				Validate					58.3%
github.com/speakeasy-api/openapi/arazzo/info.go:32:					Validate					75.0%
github.com/speakeasy-api/openapi/arazzo/parameter.go:48:				Validate					81.5%
github.com/speakeasy-api/openapi/arazzo/payloadreplacement.go:30:			Validate					76.5%
github.com/speakeasy-api/openapi/arazzo/requestbody.go:32:				Validate					93.3%
github.com/speakeasy-api/openapi/arazzo/reusable.go:41:					Get						0.0%
github.com/speakeasy-api/openapi/arazzo/reusable.go:49:					IsReference					0.0%
github.com/speakeasy-api/openapi/arazzo/reusable.go:53:					GetReferencedObject				0.0%
github.com/speakeasy-api/openapi/arazzo/reusable.go:101:				Validate					87.5%
github.com/speakeasy-api/openapi/arazzo/reusable.go:135:				validateReference				71.4%
github.com/speakeasy-api/openapi/arazzo/reusable.go:203:				validateComponentReference			62.5%
github.com/speakeasy-api/openapi/arazzo/reusable.go:226:				typeToComponentType				75.0%
github.com/speakeasy-api/openapi/arazzo/reusable.go:240:				componentTypeToReusableType			0.0%
github.com/speakeasy-api/openapi/arazzo/sourcedescription.go:19:			Find						75.0%
github.com/speakeasy-api/openapi/arazzo/sourcedescription.go:55:			Validate					76.9%
github.com/speakeasy-api/openapi/arazzo/step.go:23:					Find						75.0%
github.com/speakeasy-api/openapi/arazzo/step.go:69:					Validate					80.8%
github.com/speakeasy-api/openapi/arazzo/successaction.go:52:				Validate					75.0%
github.com/speakeasy-api/openapi/arazzo/successaction.go:117:				validationActionWorkflowIDAndStepID		77.8%
github.com/speakeasy-api/openapi/arazzo/walk.go:51:					Walk						100.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:60:					walk						69.2%
github.com/speakeasy-api/openapi/arazzo/walk.go:91:					walkInfo					66.7%
github.com/speakeasy-api/openapi/arazzo/walk.go:106:					walkSourceDescriptions				88.9%
github.com/speakeasy-api/openapi/arazzo/walk.go:125:					walkSourceDescription				66.7%
github.com/speakeasy-api/openapi/arazzo/walk.go:140:					walkWorkflows					100.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:159:					walkWorkflow					62.5%
github.com/speakeasy-api/openapi/arazzo/walk.go:199:					walkReusableParameters				88.9%
github.com/speakeasy-api/openapi/arazzo/walk.go:218:					walkReusableParameter				66.7%
github.com/speakeasy-api/openapi/arazzo/walk.go:234:					walkJSONSchema					87.5%
github.com/speakeasy-api/openapi/arazzo/walk.go:254:					convertSchemaMatchFunc				100.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:268:					convertSchemaLocation				100.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:286:					walkSteps					88.9%
github.com/speakeasy-api/openapi/arazzo/walk.go:305:					walkStep					66.7%
github.com/speakeasy-api/openapi/arazzo/walk.go:335:					walkReusableSuccessActions			22.2%
github.com/speakeasy-api/openapi/arazzo/walk.go:354:					walkReusableSuccessAction			0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:370:					walkReusableFailureActions			22.2%
github.com/speakeasy-api/openapi/arazzo/walk.go:389:					walkReusableFailureAction			0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:405:					walkComponents					14.3%
github.com/speakeasy-api/openapi/arazzo/walk.go:440:					walkComponentInputs				0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:459:					walkComponentParameters				0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:478:					walkParameter					0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:493:					walkComponentSuccessActions			0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:512:					walkSuccessAction				0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:527:					walkComponentFailureActions			0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:546:					walkFailureAction				0.0%
github.com/speakeasy-api/openapi/arazzo/walk.go:610:					getMatchFunc					55.0%
github.com/speakeasy-api/openapi/arazzo/workflow.go:21:					Find						75.0%
github.com/speakeasy-api/openapi/arazzo/workflow.go:64:					Validate					62.2%
github.com/speakeasy-api/openapi/cache/manager.go:23:					ClearAllCaches					100.0%
github.com/speakeasy-api/openapi/cache/manager.go:31:					ClearURLCache					100.0%
github.com/speakeasy-api/openapi/cache/manager.go:38:					ClearReferenceCache				100.0%
github.com/speakeasy-api/openapi/cache/manager.go:45:					ClearFieldCache					100.0%
github.com/speakeasy-api/openapi/cache/manager.go:57:					GetAllCacheStats				100.0%
github.com/speakeasy-api/openapi/cmd/openapi/main.go:22:				getVersionInfo					0.0%
github.com/speakeasy-api/openapi/cmd/openapi/main.go:117:				init						0.0%
github.com/speakeasy-api/openapi/cmd/openapi/main.go:156:				main						0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:31:			main						0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:38:			updateExamples					0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:54:			processPackage					0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:89:			parseExamplesFile				0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:115:			extractExample					0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:159:			parseDocComment					0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:191:			generateTitleFromName				0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:207:			extractOutputComment				0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:234:			generateReadmeContent				0.0%
github.com/speakeasy-api/openapi/cmd/update-examples/main.go:255:			updateReadmeFile				0.0%
github.com/speakeasy-api/openapi/errors/errors.go:16:					Error						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:21:					Is						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:26:					As						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:36:					Wrap						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:45:					Error						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:52:					Is						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:56:					As						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:60:					Unwrap						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:67:					Is						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:72:					As						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:77:					New						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:82:					Join						0.0%
github.com/speakeasy-api/openapi/errors/errors.go:90:					UnwrapErrors					0.0%
github.com/speakeasy-api/openapi/expression/expression.go:83:				String						0.0%
github.com/speakeasy-api/openapi/expression/expression.go:88:				Validate					100.0%
github.com/speakeasy-api/openapi/expression/expression.go:186:				IsExpression					83.3%
github.com/speakeasy-api/openapi/expression/expression.go:214:				GetType						100.0%
github.com/speakeasy-api/openapi/expression/expression.go:220:				GetParts					91.7%
github.com/speakeasy-api/openapi/expression/expression.go:242:				GetJSONPointer					100.0%
github.com/speakeasy-api/openapi/expression/expression.go:247:				getType						100.0%
github.com/speakeasy-api/openapi/expression/expression.go:262:				validateName					100.0%
github.com/speakeasy-api/openapi/expression/expressions.go:4:				ExtractExpressions				100.0%
github.com/speakeasy-api/openapi/expression/factory_registration.go:8:			init						50.0%
github.com/speakeasy-api/openapi/expression/value.go:11:				GetValueOrExpressionValue			0.0%
github.com/speakeasy-api/openapi/extensions/core/extensions.go:16:			UnmarshalExtensionModel				75.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:29:				NewElem						0.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:43:				New						75.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:55:				Init						100.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:59:				SetCore						75.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:68:				GetCore						0.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:72:				Populate					0.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:90:				UnmarshalExtensionModel				66.7%
github.com/speakeasy-api/openapi/extensions/extensions.go:115:				GetExtensionValue				70.0%
github.com/speakeasy-api/openapi/extensions/extensions.go:137:				IsEqual						100.0%
github.com/speakeasy-api/openapi/extensions/factory_registration.go:6:			init						75.0%
github.com/speakeasy-api/openapi/hashing/hashing.go:15:					Hash						100.0%
github.com/speakeasy-api/openapi/hashing/hashing.go:27:					toHashableString				91.7%
github.com/speakeasy-api/openapi/hashing/hashing.go:106:				structToHashableString				95.7%
github.com/speakeasy-api/openapi/hashing/hashing.go:155:				yamlNodeToHashableString			0.0%
github.com/speakeasy-api/openapi/hashing/hashing.go:179:				sequencedMapToHashableString			92.9%
github.com/speakeasy-api/openapi/internal/interfaces/interfaces.go:41:			ImplementsInterface				0.0%
github.com/speakeasy-api/openapi/internal/testutils/utils.go:14:			CreateStringYamlNode				0.0%
github.com/speakeasy-api/openapi/internal/testutils/utils.go:24:			CreateIntYamlNode				0.0%
github.com/speakeasy-api/openapi/internal/testutils/utils.go:34:			CreateBoolYamlNode				0.0%
github.com/speakeasy-api/openapi/internal/testutils/utils.go:44:			CreateMapYamlNode				0.0%
github.com/speakeasy-api/openapi/internal/testutils/utils.go:61:			isInterfaceNil					0.0%
github.com/speakeasy-api/openapi/internal/testutils/utils.go:74:			AssertEqualSequencedMap				0.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:33:			ClassifyReference				100.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:100:			IsURL						100.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:109:			IsFilePath					100.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:118:			IsFragment					100.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:130:			JoinWith					92.9%
github.com/speakeasy-api/openapi/internal/utils/references.go:164:			joinURL						66.7%
github.com/speakeasy-api/openapi/internal/utils/references.go:188:			joinFilePath					100.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:224:			getWindowsDir					80.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:235:			joinWindowsPaths				100.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:269:			isWindowsAbsolutePath				80.0%
github.com/speakeasy-api/openapi/internal/utils/references.go:283:			JoinReference					100.0%
github.com/speakeasy-api/openapi/internal/utils/slices.go:3:				MapSlice					0.0%
github.com/speakeasy-api/openapi/internal/utils/string_builder.go:19:			BuildAbsoluteReference				100.0%
github.com/speakeasy-api/openapi/internal/utils/string_builder.go:28:			BuildString					0.0%
github.com/speakeasy-api/openapi/internal/utils/string_builder.go:50:			JoinWithSeparator				100.0%
github.com/speakeasy-api/openapi/internal/utils/url_cache.go:18:			ParseURLCached					100.0%
github.com/speakeasy-api/openapi/internal/utils/url_cache.go:25:			Parse						100.0%
github.com/speakeasy-api/openapi/internal/utils/url_cache.go:49:			Clear						100.0%
github.com/speakeasy-api/openapi/internal/utils/url_cache.go:62:			GetURLCacheStats				100.0%
github.com/speakeasy-api/openapi/internal/utils/url_cache.go:72:			ClearGlobalURLCache				100.0%
github.com/speakeasy-api/openapi/internal/utils/versions.go:9:				ParseVersion					100.0%
github.com/speakeasy-api/openapi/json/json.go:17:					YAMLToJSON					0.0%
github.com/speakeasy-api/openapi/json/json.go:29:					handleYAMLNode					0.0%
github.com/speakeasy-api/openapi/json/json.go:46:					handleMappingNode				0.0%
github.com/speakeasy-api/openapi/json/json.go:77:					handleSequenceNode				0.0%
github.com/speakeasy-api/openapi/json/json.go:97:					handleScalarNode				0.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:37:				WithStructTags					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:43:				getOptions					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:58:				String						0.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:63:				Validate					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:74:				GetTarget					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:91:				PartsToJSONPointer				0.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:100:			getCurrentStackTarget				100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:120:			getTarget					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:148:			getMapTarget					76.2%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:191:			getSliceTarget					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:226:			getStructTarget					86.4%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:274:			getKeyBasedStructTarget				100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:322:			getIndexBasedStructTarget			87.5%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:338:			getNavigableWithKeyTarget			80.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:358:			getNavigableWithIndexTarget			80.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:378:			getNavigableNoderTarget				77.8%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:396:			buildPath					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:407:			EscapeString					100.0%
github.com/speakeasy-api/openapi/jsonpointer/jsonpointer.go:411:			escape						100.0%
github.com/speakeasy-api/openapi/jsonpointer/models.go:16:				navigateModel					88.9%
github.com/speakeasy-api/openapi/jsonpointer/navigation.go:23:				unescapeValue					100.0%
github.com/speakeasy-api/openapi/jsonpointer/navigation.go:29:				getIndex					100.0%
github.com/speakeasy-api/openapi/jsonpointer/navigation.go:39:				getNavigationStack				100.0%
github.com/speakeasy-api/openapi/jsonpointer/yamlnode.go:10:				getYamlNodeTarget				61.1%
github.com/speakeasy-api/openapi/jsonpointer/yamlnode.go:51:				getYamlDocumentTarget				66.7%
github.com/speakeasy-api/openapi/jsonpointer/yamlnode.go:60:				getYamlMappingTarget				89.7%
github.com/speakeasy-api/openapi/jsonpointer/yamlnode.go:121:				getYamlSequenceTarget				90.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/core/factory_registration.go:9:	init						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/discriminator.go:29:			GetPropertyName					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/discriminator.go:37:			GetMapping					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/discriminator.go:45:			GetExtensions					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/discriminator.go:53:			Validate					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/discriminator.go:69:			IsEqual						42.9%
github.com/speakeasy-api/openapi/jsonschema/oas3/externaldoc.go:30:			GetDescription					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/externaldoc.go:38:			GetURL						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/externaldoc.go:46:			GetExtensions					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/externaldoc.go:54:			IsEqual						53.8%
github.com/speakeasy-api/openapi/jsonschema/oas3/externaldoc.go:83:			Validate					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/factory_registration.go:12:		init						86.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:35:				increment					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:162:				Inline						96.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:224:				analyzeReferences				75.3%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:404:				inlineRecursive					72.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:628:				getAbsRef					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:641:				inlineSchemaInPlace				81.8%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:664:				removeUnusedDefs				94.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:703:				generateUniqueDefName				25.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:719:				rewriteExternalReference			50.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/inline.go:799:				consolidateDefinitions				81.5%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:43:			NewJSONSchemaFromSchema				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:52:			NewJSONSchemaFromReference			0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:63:			NewJSONSchemaFromBool				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:73:			NewReferencedScheme				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:106:			GetExtensions					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:123:			GetParent					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:139:			GetTopLevelParent				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:152:			SetParent					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:165:			SetTopLevelParent				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:173:			IsEqual						60.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:188:			Validate					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:216:			ConcreteToReferenceable				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:224:			ReferenceableToConcrete				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:229:			ShallowCopy					88.9%
github.com/speakeasy-api/openapi/jsonschema/oas3/jsonschema.go:256:			PopulateWithParent				88.9%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:22:			IsResolved					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:30:			IsReference					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:38:			GetRef						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:46:			GetAbsRef					83.3%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:61:			Resolve						100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:73:			GetResolvedSchema				88.2%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:112:			MustGetResolvedSchema				66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:124:			resolve						97.6%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:217:			joinReferenceChain				60.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:228:			resolveJSONSchemaWithTracking			95.2%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:275:			resolveDefsReference				77.8%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:319:			tryResolveDefsUsingJSONPointerNavigation	0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:365:			getParentJSONPointer				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/resolution.go:379:			unmarshaller					71.4%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:86:				ShallowCopy					72.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:187:				GetRef						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:195:				IsReference					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:203:				GetExclusiveMaximum				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:211:				GetExclusiveMinimum				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:219:				GetType						57.1%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:236:				GetAllOf					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:244:				GetOneOf					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:252:				GetAnyOf					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:260:				GetDiscriminator				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:268:				GetExamples					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:276:				GetPrefixItems					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:284:				GetContains					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:292:				GetMinContains					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:300:				GetMaxContains					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:308:				GetIf						0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:316:				GetElse						0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:324:				GetThen						0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:332:				GetDependentSchemas				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:340:				GetPatternProperties				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:348:				GetPropertyNames				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:356:				GetUnevaluatedItems				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:364:				GetUnevaluatedProperties			0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:372:				GetItems					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:380:				GetAnchor					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:388:				GetNot						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:396:				GetProperties					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:404:				GetDefs						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:412:				GetTitle					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:420:				GetMultipleOf					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:428:				GetMaximum					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:436:				GetMinimum					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:444:				GetMaxLength					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:452:				GetMinLength					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:460:				GetPattern					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:468:				GetFormat					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:476:				GetMaxItems					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:484:				GetMinItems					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:492:				GetUniqueItems					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:500:				GetMaxProperties				66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:508:				GetMinProperties				66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:516:				GetRequired					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:524:				GetEnum						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:532:				GetAdditionalProperties				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:540:				GetDescription					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:548:				GetDefault					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:556:				GetConst					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:564:				GetNullable					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:572:				GetReadOnly					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:580:				GetWriteOnly					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:588:				GetExternalDocs					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:596:				GetExample					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:604:				GetDeprecated					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:612:				GetSchema					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:620:				GetXML						0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:628:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:638:				IsEqual						60.3%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:881:				GetParent					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:890:				SetParent					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:898:				PopulateWithParent				75.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:928:				equalJSONSchemas				80.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:938:				equalJSONSchemaSlices				25.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:954:				equalSequencedMaps				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:983:				equalStringSlices				87.5%
github.com/speakeasy-api/openapi/jsonschema/oas3/schema.go:999:				equalValueSlices				87.5%
github.com/speakeasy-api/openapi/jsonschema/oas3/tests/remote_server.go:25:		startRemoteServer				52.6%
github.com/speakeasy-api/openapi/jsonschema/oas3/tests/remote_server.go:147:		GetBaseURL					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/tests/remote_server.go:152:		Stop						0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/tests/remote_server.go:165:		GetExpectedURL					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/tests/remote_server.go:170:		GetActualURL					0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/tests/remote_server.go:175:		GetHTTPClient					100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/tests/remote_server.go:191:		RoundTrip					88.9%
github.com/speakeasy-api/openapi/jsonschema/oas3/validation.go:33:			Validate					60.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/validation.go:45:			Validate					82.4%
github.com/speakeasy-api/openapi/jsonschema/oas3/validation.go:82:			getRootCauses					72.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/validation.go:129:			initValidation					76.5%
github.com/speakeasy-api/openapi/jsonschema/oas3/value.go:16:				NewExclusiveMaximumFromBool			0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/value.go:22:				NewExclusiveMaximumFromFloat64			0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/value.go:28:				NewExclusiveMinimumFromBool			0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/value.go:34:				NewExclusiveMinimumFromFloat64			0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/value.go:40:				NewTypeFromArray				0.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/value.go:47:				NewTypeFromString				100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/walk.go:35:				WalkExternalDocs				75.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/walk.go:46:				Walk						100.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/walk.go:55:				walkSchema					44.4%
github.com/speakeasy-api/openapi/jsonschema/oas3/walk.go:223:				walkExternalDocs				83.3%
github.com/speakeasy-api/openapi/jsonschema/oas3/walk.go:259:				getSchemaMatchFunc				60.0%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:36:				GetName						66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:44:				GetNamespace					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:52:				GetPrefix					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:60:				GetAttribute					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:68:				GetWrapped					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:76:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:84:				IsEqual						47.4%
github.com/speakeasy-api/openapi/jsonschema/oas3/xml.go:120:				Validate					100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:38:				GetRootNode					100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:42:				GetRootNodeLine					0.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:49:				SetRootNode					100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:53:				GetValid					0.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:57:				GetValidYaml					0.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:61:				DetermineValidity				85.7%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:76:				SetValid					100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:81:				SetConfig					100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:85:				GetConfig					100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:92:				GetJSONPointer					87.5%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:115:				GetJSONPath					100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:137:				Marshal						75.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:165:				resetNodeStylesForYAML				100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:170:				resetNodeStylesForYAMLRecursive			73.3%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:212:				findNodePath					85.7%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:246:				findNodePathInMapping				86.7%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:281:				findNodePathInSequence				83.3%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:297:				resolveAlias					60.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:311:				getNodeKeyString				66.7%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:326:				buildJSONPointer				100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:342:				escapeJSONPointerToken				100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:350:				buildJSONPath					94.4%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:385:				needsBracketNotation				100.0%
github.com/speakeasy-api/openapi/marshaller/coremodel.go:399:				escapeJSONPathProperty				100.0%
github.com/speakeasy-api/openapi/marshaller/extensions.go:35:				UnmarshalExtension				78.6%
github.com/speakeasy-api/openapi/marshaller/extensions.go:70:				syncExtensions					84.9%
github.com/speakeasy-api/openapi/marshaller/factory.go:43:				RegisterType					87.5%
github.com/speakeasy-api/openapi/marshaller/factory.go:63:				CreateInstance					87.5%
github.com/speakeasy-api/openapi/marshaller/factory.go:82:				IsRegistered					0.0%
github.com/speakeasy-api/openapi/marshaller/factory.go:92:				isTesting					100.0%
github.com/speakeasy-api/openapi/marshaller/factory.go:97:				init						58.0%
github.com/speakeasy-api/openapi/marshaller/factory.go:160:				buildFieldCacheForType				89.2%
github.com/speakeasy-api/openapi/marshaller/factory.go:255:				getFieldMapCached				100.0%
github.com/speakeasy-api/openapi/marshaller/factory.go:272:				ClearGlobalFieldCache				0.0%
github.com/speakeasy-api/openapi/marshaller/factory.go:285:				GetFieldCacheStats				0.0%
github.com/speakeasy-api/openapi/marshaller/marshal.go:26:				Marshal						66.7%
github.com/speakeasy-api/openapi/marshaller/marshal.go:48:				Sync						71.4%
github.com/speakeasy-api/openapi/marshaller/model.go:58:				GetCore						66.7%
github.com/speakeasy-api/openapi/marshaller/model.go:68:				GetCoreAny					0.0%
github.com/speakeasy-api/openapi/marshaller/model.go:89:				GetRootNode					60.0%
github.com/speakeasy-api/openapi/marshaller/model.go:100:				GetRootNodeLine					0.0%
github.com/speakeasy-api/openapi/marshaller/model.go:107:				GetRootNodeColumn				0.0%
github.com/speakeasy-api/openapi/marshaller/model.go:114:				GetPropertyLine					92.9%
github.com/speakeasy-api/openapi/marshaller/model.go:148:				SetCore						100.0%
github.com/speakeasy-api/openapi/marshaller/model.go:155:				SetCoreAny					100.0%
github.com/speakeasy-api/openapi/marshaller/model.go:163:				GetCachedReferencedObject			0.0%
github.com/speakeasy-api/openapi/marshaller/model.go:170:				StoreReferencedObjectInCache			0.0%
github.com/speakeasy-api/openapi/marshaller/model.go:174:				GetCachedReferenceDocument			0.0%
github.com/speakeasy-api/openapi/marshaller/model.go:186:				StoreReferenceDocumentInCache			0.0%
github.com/speakeasy-api/openapi/marshaller/model.go:190:				InitCache					0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:35:					Unmarshal					100.0%
github.com/speakeasy-api/openapi/marshaller/node.go:50:					GetValue					100.0%
github.com/speakeasy-api/openapi/marshaller/node.go:54:					GetValueType					100.0%
github.com/speakeasy-api/openapi/marshaller/node.go:58:					SyncValue					85.7%
github.com/speakeasy-api/openapi/marshaller/node.go:72:					SetPresent					100.0%
github.com/speakeasy-api/openapi/marshaller/node.go:76:					GetKeyNode					100.0%
github.com/speakeasy-api/openapi/marshaller/node.go:80:					GetKeyNodeOrRoot				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:87:					GetKeyNodeOrRootLine				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:95:					GetValueNode					0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:99:					GetValueNodeOrRoot				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:106:				GetValueNodeOrRootLine				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:115:				GetSliceValueNodeOrRoot				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:133:				GetMapKeyNodeOrRoot				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:152:				GetMapKeyNodeOrRootLine				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:161:				GetMapValueNodeOrRoot				0.0%
github.com/speakeasy-api/openapi/marshaller/node.go:180:				GetNavigableNode				0.0%
github.com/speakeasy-api/openapi/marshaller/populator.go:33:				Populate					47.4%
github.com/speakeasy-api/openapi/marshaller/populator.go:70:				PopulateWithParent				47.4%
github.com/speakeasy-api/openapi/marshaller/populator.go:107:				PopulateModel					81.4%
github.com/speakeasy-api/openapi/marshaller/populator.go:213:				populateValueWithParent				73.6%
github.com/speakeasy-api/openapi/marshaller/populator.go:324:				getSequencedMapInterface			81.8%
github.com/speakeasy-api/openapi/marshaller/populator.go:372:				getSourceForPopulation				66.7%
github.com/speakeasy-api/openapi/marshaller/populator.go:391:				isEmbeddedSequencedMapType			100.0%
github.com/speakeasy-api/openapi/marshaller/sequencedmap.go:24:				unmarshalSequencedMap				88.1%
github.com/speakeasy-api/openapi/marshaller/sequencedmap.go:115:			populateSequencedMap				78.1%
github.com/speakeasy-api/openapi/marshaller/sequencedmap.go:187:			syncSequencedMapChanges				80.9%
github.com/speakeasy-api/openapi/marshaller/syncer.go:20:				SyncValue					85.7%
github.com/speakeasy-api/openapi/marshaller/syncer.go:100:				syncChanges					79.6%
github.com/speakeasy-api/openapi/marshaller/syncer.go:272:				syncArraySlice					86.4%
github.com/speakeasy-api/openapi/marshaller/syncer.go:372:				reorderArrayElements				73.5%
github.com/speakeasy-api/openapi/marshaller/syncer.go:471:				dereferenceAndInitializeIfNeededToLastPtr	100.0%
github.com/speakeasy-api/openapi/marshaller/syncer.go:490:				dereferenceToLastPtr				100.0%
github.com/speakeasy-api/openapi/marshaller/syncer.go:498:				getUnderlyingValue				100.0%
github.com/speakeasy-api/openapi/marshaller/syncer.go:506:				initializeAndGetSequencedMapInterface		100.0%
github.com/speakeasy-api/openapi/marshaller/syncer.go:547:				getSourceInterface				71.4%
github.com/speakeasy-api/openapi/marshaller/syncer.go:563:				dereferenceType					100.0%
github.com/speakeasy-api/openapi/marshaller/tests/core/factory_registration.go:10:	init						0.0%
github.com/speakeasy-api/openapi/marshaller/tests/core/models.go:103:			Unmarshal					0.0%
github.com/speakeasy-api/openapi/marshaller/tests/factory_registration.go:9:		init						0.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:33:				Unmarshal					78.6%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:64:				UnmarshalNode					77.8%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:83:				UnmarshalCore					80.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:103:			UnmarshalModel					100.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:107:			UnmarshalKeyValuePair				100.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:124:			DecodeNode					0.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:128:			unmarshal					78.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:230:			unmarshalMapping				75.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:255:			unmarshalModel					86.6%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:442:			unmarshalStruct					100.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:446:			decodeNode					80.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:469:			unmarshalSequence				82.6%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:513:			unmarshalNode					66.7%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:564:			implementsInterface				75.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:585:			isEmbeddedSequencedMap				100.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:590:			isStructType					100.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:595:			isSliceType					100.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:600:			isMapType					100.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:605:			validateNodeKind				85.7%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:621:			isTypeMismatchError				75.0%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:632:			initializeEmbeddedSequencedMap			66.7%
github.com/speakeasy-api/openapi/marshaller/unmarshaller.go:659:			getOptionalParentName				100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:14:				Bootstrap					100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:31:				createBootstrapInfo				100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:50:				createBootstrapServers				100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:64:				createBootstrapTags				100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:78:				createBootstrapPaths				100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:121:				createUserResponses				100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:130:				createBootstrapComponents			100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:139:				createBootstrapSchemas				100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:196:				createBootstrapResponses			100.0%
github.com/speakeasy-api/openapi/openapi/bootstrap.go:232:				createBootstrapSecuritySchemes			100.0%
github.com/speakeasy-api/openapi/openapi/bundle.go:116:					Bundle						84.8%
github.com/speakeasy-api/openapi/openapi/bundle.go:195:					bundleSchema					88.5%
github.com/speakeasy-api/openapi/openapi/bundle.go:259:					processNestedExternalReferences			73.3%
github.com/speakeasy-api/openapi/openapi/bundle.go:297:					rewriteRefsInBundledSchemas			80.0%
github.com/speakeasy-api/openapi/openapi/bundle.go:309:					rewriteRefsInSchema				90.5%
github.com/speakeasy-api/openapi/openapi/bundle.go:352:					bundleReference					41.2%
github.com/speakeasy-api/openapi/openapi/bundle.go:398:					generateComponentName				75.0%
github.com/speakeasy-api/openapi/openapi/bundle.go:410:					generateComponentNameWithHashConflictResolution	91.7%
github.com/speakeasy-api/openapi/openapi/bundle.go:459:					generateFilePathBasedNameWithConflictResolution	59.1%
github.com/speakeasy-api/openapi/openapi/bundle.go:503:					generateFilePathBasedName			84.0%
github.com/speakeasy-api/openapi/openapi/bundle.go:556:					generateCounterBasedName			66.7%
github.com/speakeasy-api/openapi/openapi/bundle.go:602:					updateReferencesToComponents			69.2%
github.com/speakeasy-api/openapi/openapi/bundle.go:665:					updateReference					71.4%
github.com/speakeasy-api/openapi/openapi/bundle.go:680:					addSchemasToComponents				75.0%
github.com/speakeasy-api/openapi/openapi/callbacks.go:29:				NewCallback					0.0%
github.com/speakeasy-api/openapi/openapi/callbacks.go:36:				GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/callbacks.go:43:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/cmd/bootstrap.go:43:				runBootstrap					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/bootstrap.go:52:				createBootstrapDocument				0.0%
github.com/speakeasy-api/openapi/openapi/cmd/bundle.go:49:				init						0.0%
github.com/speakeasy-api/openapi/openapi/cmd/bundle.go:54:				runBundleCommand				0.0%
github.com/speakeasy-api/openapi/openapi/cmd/inline.go:48:				init						0.0%
github.com/speakeasy-api/openapi/openapi/cmd/inline.go:52:				runInline					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/inline.go:73:				inlineOpenAPI					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/inline.go:106:				GetInlineCommand				0.0%
github.com/speakeasy-api/openapi/openapi/cmd/join.go:57:				init						0.0%
github.com/speakeasy-api/openapi/openapi/cmd/join.go:62:				runJoinCommand					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/root.go:6:					Apply						0.0%
github.com/speakeasy-api/openapi/openapi/cmd/shared.go:22:				NewOpenAPIProcessor				0.0%
github.com/speakeasy-api/openapi/openapi/cmd/shared.go:42:				LoadDocument					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/shared.go:70:				ReportValidationErrors				0.0%
github.com/speakeasy-api/openapi/openapi/cmd/shared.go:81:				WriteDocument					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/shared.go:105:				PrintSuccess					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/shared.go:112:				PrintInfo					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/upgrade.go:42:				init						0.0%
github.com/speakeasy-api/openapi/openapi/cmd/upgrade.go:47:				runUpgrade					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/upgrade.go:68:				upgradeOpenAPI					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/upgrade.go:109:				GetUpgradeCommand				0.0%
github.com/speakeasy-api/openapi/openapi/cmd/validate.go:28:				runValidate					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/validate.go:38:				validateOpenAPI					0.0%
github.com/speakeasy-api/openapi/openapi/cmd/validate.go:68:				GetValidateCommand				0.0%
github.com/speakeasy-api/openapi/openapi/components.go:47:				GetSchemas					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:55:				GetResponses					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:63:				GetParameters					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:71:				GetExamples					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:79:				GetRequestBodies				66.7%
github.com/speakeasy-api/openapi/openapi/components.go:87:				GetHeaders					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:95:				GetSecuritySchemes				66.7%
github.com/speakeasy-api/openapi/openapi/components.go:103:				GetLinks					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:111:				GetCallbacks					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:119:				GetPathItems					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:127:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/components.go:135:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/core/factory_registration.go:11:		init						0.0%
github.com/speakeasy-api/openapi/openapi/core/paths.go:16:				NewPaths					0.0%
github.com/speakeasy-api/openapi/openapi/core/paths.go:35:				NewPathItem					0.0%
github.com/speakeasy-api/openapi/openapi/core/reference.go:28:				Unmarshal					0.0%
github.com/speakeasy-api/openapi/openapi/core/reference.go:57:				SyncChanges					0.0%
github.com/speakeasy-api/openapi/openapi/core/security.go:29:				GetMapKeyNodeOrRoot				0.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:42:				GetContentType					0.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:69:				GetContentTypeValue				100.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:77:				GetStyle					100.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:86:				GetExplode					100.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:94:				GetAllowReserved				100.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:102:				GetHeaders					0.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:110:				GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/encoding.go:118:				Validate					94.4%
github.com/speakeasy-api/openapi/openapi/examples.go:34:				GetSummary					66.7%
github.com/speakeasy-api/openapi/openapi/examples.go:42:				GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/examples.go:50:				GetValue					66.7%
github.com/speakeasy-api/openapi/openapi/examples.go:58:				GetExternalValue				66.7%
github.com/speakeasy-api/openapi/openapi/examples.go:66:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/examples.go:74:				ResolveExternalValue				0.0%
github.com/speakeasy-api/openapi/openapi/examples.go:80:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/factory_registration.go:13:			init						94.6%
github.com/speakeasy-api/openapi/openapi/header.go:47:					GetSchema					66.7%
github.com/speakeasy-api/openapi/openapi/header.go:55:					GetRequired					0.0%
github.com/speakeasy-api/openapi/openapi/header.go:63:					GetDeprecated					0.0%
github.com/speakeasy-api/openapi/openapi/header.go:71:					GetStyle					0.0%
github.com/speakeasy-api/openapi/openapi/header.go:79:					GetExplode					0.0%
github.com/speakeasy-api/openapi/openapi/header.go:87:					GetContent					0.0%
github.com/speakeasy-api/openapi/openapi/header.go:95:					GetExample					0.0%
github.com/speakeasy-api/openapi/openapi/header.go:103:					GetExamples					0.0%
github.com/speakeasy-api/openapi/openapi/header.go:111:					GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/header.go:119:					GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/header.go:127:					Validate					92.9%
github.com/speakeasy-api/openapi/openapi/info.go:40:					GetTitle					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:48:					GetVersion					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:56:					GetSummary					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:64:					GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:72:					GetTermsOfService				66.7%
github.com/speakeasy-api/openapi/openapi/info.go:80:					GetContact					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:88:					GetLicense					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:96:					GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:104:					Validate					100.0%
github.com/speakeasy-api/openapi/openapi/info.go:151:					GetName						66.7%
github.com/speakeasy-api/openapi/openapi/info.go:159:					GetURL						66.7%
github.com/speakeasy-api/openapi/openapi/info.go:167:					GetEmail					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:175:					GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:183:					Validate					100.0%
github.com/speakeasy-api/openapi/openapi/info.go:221:					GetName						66.7%
github.com/speakeasy-api/openapi/openapi/info.go:229:					GetIdentifier					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:237:					GetURL						66.7%
github.com/speakeasy-api/openapi/openapi/info.go:245:					GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/info.go:253:					Validate					100.0%
github.com/speakeasy-api/openapi/openapi/inline.go:135:					Inline						89.2%
github.com/speakeasy-api/openapi/openapi/inline.go:310:					inlineReference					80.0%
github.com/speakeasy-api/openapi/openapi/inline.go:345:					rewriteRefsWithMapping				65.0%
github.com/speakeasy-api/openapi/openapi/inline.go:384:					removeUnusedComponents				91.3%
github.com/speakeasy-api/openapi/openapi/join.go:66:					Join						94.1%
github.com/speakeasy-api/openapi/openapi/join.go:102:					initializeUsedNames				74.5%
github.com/speakeasy-api/openapi/openapi/join.go:195:					joinSingleDocument				80.0%
github.com/speakeasy-api/openapi/openapi/join.go:225:					joinPaths					81.8%
github.com/speakeasy-api/openapi/openapi/join.go:251:					generateConflictPath				100.0%
github.com/speakeasy-api/openapi/openapi/join.go:267:					joinWebhooks					83.3%
github.com/speakeasy-api/openapi/openapi/join.go:285:					joinComponents					62.5%
github.com/speakeasy-api/openapi/openapi/join.go:307:					joinSchemas					89.5%
github.com/speakeasy-api/openapi/openapi/join.go:348:					joinOtherComponents				50.3%
github.com/speakeasy-api/openapi/openapi/join.go:589:					generateJoinComponentName			75.0%
github.com/speakeasy-api/openapi/openapi/join.go:601:					generateJoinFilePathBasedName			84.6%
github.com/speakeasy-api/openapi/openapi/join.go:629:					generateJoinCounterBasedName			100.0%
github.com/speakeasy-api/openapi/openapi/join.go:641:					updateReferencesInDocument			79.2%
github.com/speakeasy-api/openapi/openapi/join.go:700:					updateComponentReference			20.0%
github.com/speakeasy-api/openapi/openapi/join.go:719:					joinTags					100.0%
github.com/speakeasy-api/openapi/openapi/join.go:742:					joinServersAndSecurity				100.0%
github.com/speakeasy-api/openapi/openapi/join.go:769:					areServersIdentical				85.7%
github.com/speakeasy-api/openapi/openapi/join.go:788:					areSecurityIdentical				100.0%
github.com/speakeasy-api/openapi/openapi/join.go:804:					applyGlobalServersSecurityToOperations		83.3%
github.com/speakeasy-api/openapi/openapi/links.go:40:					GetOperationID					100.0%
github.com/speakeasy-api/openapi/openapi/links.go:48:					GetOperationRef					100.0%
github.com/speakeasy-api/openapi/openapi/links.go:56:					GetDescription					100.0%
github.com/speakeasy-api/openapi/openapi/links.go:64:					GetParameters					66.7%
github.com/speakeasy-api/openapi/openapi/links.go:72:					GetRequestBody					0.0%
github.com/speakeasy-api/openapi/openapi/links.go:80:					GetServer					0.0%
github.com/speakeasy-api/openapi/openapi/links.go:88:					GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/links.go:95:					ResolveOperation				0.0%
github.com/speakeasy-api/openapi/openapi/links.go:100:					Validate					92.9%
github.com/speakeasy-api/openapi/openapi/marshalling.go:19:				WithSkipValidation				100.0%
github.com/speakeasy-api/openapi/openapi/marshalling.go:27:				Unmarshal					92.9%
github.com/speakeasy-api/openapi/openapi/marshalling.go:54:				Marshal						100.0%
github.com/speakeasy-api/openapi/openapi/marshalling.go:60:				Sync						0.0%
github.com/speakeasy-api/openapi/openapi/mediatype.go:33:				GetSchema					66.7%
github.com/speakeasy-api/openapi/openapi/mediatype.go:41:				GetEncoding					66.7%
github.com/speakeasy-api/openapi/openapi/mediatype.go:49:				GetExamples					66.7%
github.com/speakeasy-api/openapi/openapi/mediatype.go:57:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/mediatype.go:65:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/mediatype.go:87:				GetExample					66.7%
github.com/speakeasy-api/openapi/openapi/openapi.go:64:					GetOpenAPI					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:72:					GetInfo						0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:80:					GetExternalDocs					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:88:					GetTags						0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:96:					GetServers					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:104:				GetSecurity					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:112:				GetPaths					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:120:				GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:128:				GetWebhooks					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:136:				GetComponents					0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:144:				GetJSONSchemaDialect				0.0%
github.com/speakeasy-api/openapi/openapi/openapi.go:152:				Validate					94.3%
github.com/speakeasy-api/openapi/openapi/operation.go:53:				GetOperationID					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:61:				GetSummary					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:69:				GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:77:				GetDeprecated					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:85:				GetTags						66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:93:				GetServers					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:101:				GetSecurity					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:109:				GetParameters					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:117:				GetRequestBody					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:125:				GetResponses					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:133:				GetCallbacks					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:141:				GetExternalDocs					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:149:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/operation.go:158:				IsDeprecated					0.0%
github.com/speakeasy-api/openapi/openapi/operation.go:163:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/parameter.go:24:				String						0.0%
github.com/speakeasy-api/openapi/openapi/parameter.go:76:				GetName						66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:84:				GetIn						66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:92:				GetSchema					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:100:				GetRequired					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:108:				GetDeprecated					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:116:				GetAllowEmptyValue				66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:130:				GetStyle					28.6%
github.com/speakeasy-api/openapi/openapi/parameter.go:147:				GetExplode					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:155:				GetContent					0.0%
github.com/speakeasy-api/openapi/openapi/parameter.go:163:				GetExample					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:171:				GetExamples					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:179:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:187:				GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:195:				GetAllowReserved				66.7%
github.com/speakeasy-api/openapi/openapi/parameter.go:203:				Validate					64.7%
github.com/speakeasy-api/openapi/openapi/paths.go:28:					NewPaths					100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:35:					GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/paths.go:43:					Validate					100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:77:					Is						0.0%
github.com/speakeasy-api/openapi/openapi/paths.go:104:					NewPathItem					100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:111:					GetOperation					66.7%
github.com/speakeasy-api/openapi/openapi/paths.go:125:					Get						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:130:					Put						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:135:					Post						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:140:					Delete						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:145:					Options						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:150:					Head						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:155:					Patch						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:160:					Trace						100.0%
github.com/speakeasy-api/openapi/openapi/paths.go:165:					GetSummary					66.7%
github.com/speakeasy-api/openapi/openapi/paths.go:173:					GetServers					0.0%
github.com/speakeasy-api/openapi/openapi/paths.go:181:					GetParameters					0.0%
github.com/speakeasy-api/openapi/openapi/paths.go:189:					GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/paths.go:197:					GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/paths.go:205:					Validate					100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:41:				NewReferencedPathItemFromRef			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:48:				NewReferencedPathItemFromPathItem		0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:55:				NewReferencedExampleFromRef			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:62:				NewReferencedExampleFromExample			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:69:				NewReferencedParameterFromRef			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:76:				NewReferencedParameterFromParameter		0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:83:				NewReferencedHeaderFromRef			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:90:				NewReferencedHeaderFromHeader			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:97:				NewReferencedRequestBodyFromRef			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:104:				NewReferencedRequestBodyFromRequestBody		100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:111:				NewReferencedResponseFromRef			100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:118:				NewReferencedResponseFromResponse		0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:125:				NewReferencedCallbackFromRef			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:132:				NewReferencedCallbackFromCallback		0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:139:				NewReferencedLinkFromRef			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:146:				NewReferencedLinkFromLink			0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:153:				NewReferencedSecuritySchemeFromRef		0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:160:				NewReferencedSecuritySchemeFromSecurityScheme	0.0%
github.com/speakeasy-api/openapi/openapi/reference.go:216:				Resolve						66.7%
github.com/speakeasy-api/openapi/openapi/reference.go:232:				IsReference					100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:240:				IsResolved					75.0%
github.com/speakeasy-api/openapi/openapi/reference.go:256:				GetReference					100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:264:				GetObject					81.8%
github.com/speakeasy-api/openapi/openapi/reference.go:287:				MustGetObject					66.7%
github.com/speakeasy-api/openapi/openapi/reference.go:300:				GetSummary					100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:308:				GetDescription					100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:324:				GetParent					100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:340:				GetTopLevelParent				100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:353:				SetParent					100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:366:				SetTopLevelParent				100.0%
github.com/speakeasy-api/openapi/openapi/reference.go:374:				Validate					93.8%
github.com/speakeasy-api/openapi/openapi/reference.go:404:				Populate					84.6%
github.com/speakeasy-api/openapi/openapi/reference.go:430:				GetNavigableNode				33.3%
github.com/speakeasy-api/openapi/openapi/reference.go:442:				resolve						82.8%
github.com/speakeasy-api/openapi/openapi/reference.go:497:				resolveObjectWithTracking			92.5%
github.com/speakeasy-api/openapi/openapi/reference.go:574:				joinReferenceChain				75.0%
github.com/speakeasy-api/openapi/openapi/reference.go:589:				unmarshaller					75.0%
github.com/speakeasy-api/openapi/openapi/reference.go:605:				ensureMutex					100.0%
github.com/speakeasy-api/openapi/openapi/requests.go:31:				GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/requests.go:39:				GetContent					66.7%
github.com/speakeasy-api/openapi/openapi/requests.go:47:				GetRequired					66.7%
github.com/speakeasy-api/openapi/openapi/requests.go:55:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/responses.go:29:				NewResponses					100.0%
github.com/speakeasy-api/openapi/openapi/responses.go:36:				GetDefault					66.7%
github.com/speakeasy-api/openapi/openapi/responses.go:44:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/responses.go:51:				Populate					84.0%
github.com/speakeasy-api/openapi/openapi/responses.go:100:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/responses.go:141:				GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/responses.go:149:				GetHeaders					66.7%
github.com/speakeasy-api/openapi/openapi/responses.go:157:				GetContent					66.7%
github.com/speakeasy-api/openapi/openapi/responses.go:165:				GetLinks					66.7%
github.com/speakeasy-api/openapi/openapi/responses.go:173:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/responses.go:181:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/security.go:22:				String						100.0%
github.com/speakeasy-api/openapi/openapi/security.go:38:				String						100.0%
github.com/speakeasy-api/openapi/openapi/security.go:74:				GetType						66.7%
github.com/speakeasy-api/openapi/openapi/security.go:82:				GetDescription					0.0%
github.com/speakeasy-api/openapi/openapi/security.go:90:				GetName						66.7%
github.com/speakeasy-api/openapi/openapi/security.go:98:				GetIn						66.7%
github.com/speakeasy-api/openapi/openapi/security.go:106:				GetScheme					0.0%
github.com/speakeasy-api/openapi/openapi/security.go:114:				GetBearerFormat					0.0%
github.com/speakeasy-api/openapi/openapi/security.go:122:				GetFlows					0.0%
github.com/speakeasy-api/openapi/openapi/security.go:130:				GetOpenIdConnectUrl				0.0%
github.com/speakeasy-api/openapi/openapi/security.go:138:				GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/security.go:146:				Validate					95.5%
github.com/speakeasy-api/openapi/openapi/security.go:208:				NewSecurityRequirement				100.0%
github.com/speakeasy-api/openapi/openapi/security.go:214:				Populate					93.8%
github.com/speakeasy-api/openapi/openapi/security.go:249:				Validate					90.9%
github.com/speakeasy-api/openapi/openapi/security.go:300:				GetImplicit					66.7%
github.com/speakeasy-api/openapi/openapi/security.go:308:				GetPassword					66.7%
github.com/speakeasy-api/openapi/openapi/security.go:316:				GetClientCredentials				66.7%
github.com/speakeasy-api/openapi/openapi/security.go:324:				GetAuthorizationCode				66.7%
github.com/speakeasy-api/openapi/openapi/security.go:332:				GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/security.go:340:				Validate					100.0%
github.com/speakeasy-api/openapi/openapi/security.go:381:				GetAuthorizationURL				66.7%
github.com/speakeasy-api/openapi/openapi/security.go:389:				GetTokenURL					66.7%
github.com/speakeasy-api/openapi/openapi/security.go:397:				GetRefreshURL					66.7%
github.com/speakeasy-api/openapi/openapi/security.go:405:				GetScopes					66.7%
github.com/speakeasy-api/openapi/openapi/security.go:413:				GetExtensions					0.0%
github.com/speakeasy-api/openapi/openapi/security.go:421:				Validate					79.4%
github.com/speakeasy-api/openapi/openapi/serialization.go:10:				String						0.0%
github.com/speakeasy-api/openapi/openapi/server.go:41:					GetURL						66.7%
github.com/speakeasy-api/openapi/openapi/server.go:49:					GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/server.go:57:					GetVariables					66.7%
github.com/speakeasy-api/openapi/openapi/server.go:65:					GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/server.go:73:					Validate					93.3%
github.com/speakeasy-api/openapi/openapi/server.go:121:					GetDefault					66.7%
github.com/speakeasy-api/openapi/openapi/server.go:129:					GetEnum						66.7%
github.com/speakeasy-api/openapi/openapi/server.go:137:					GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/server.go:145:					Validate					100.0%
github.com/speakeasy-api/openapi/openapi/server.go:164:					resolveServerVariables				93.8%
github.com/speakeasy-api/openapi/openapi/tag.go:32:					GetName						66.7%
github.com/speakeasy-api/openapi/openapi/tag.go:40:					GetDescription					66.7%
github.com/speakeasy-api/openapi/openapi/tag.go:48:					GetExternalDocs					66.7%
github.com/speakeasy-api/openapi/openapi/tag.go:56:					GetExtensions					66.7%
github.com/speakeasy-api/openapi/openapi/tag.go:64:					Validate					100.0%
github.com/speakeasy-api/openapi/openapi/upgrade.go:18:					WithUpgradeSamePatchVersion			100.0%
github.com/speakeasy-api/openapi/openapi/upgrade.go:26:					Upgrade						93.3%
github.com/speakeasy-api/openapi/openapi/upgrade.go:66:					upgradeSchema					100.0%
github.com/speakeasy-api/openapi/openapi/upgrade.go:78:					upgradeExample					100.0%
github.com/speakeasy-api/openapi/openapi/upgrade.go:91:					upgradeExclusiveMinMax				100.0%
github.com/speakeasy-api/openapi/openapi/upgrade.go:111:				upgradeNullableSchema				66.7%
github.com/speakeasy-api/openapi/openapi/upgrade.go:143:				createNullSchema				100.0%
github.com/speakeasy-api/openapi/openapi/utils.go:25:					ResolveAllReferences				100.0%
github.com/speakeasy-api/openapi/openapi/utils.go:90:					resolveAny					88.2%
github.com/speakeasy-api/openapi/openapi/walk.go:20:					Walk						75.0%
github.com/speakeasy-api/openapi/openapi/walk.go:29:					walk						85.7%
github.com/speakeasy-api/openapi/openapi/walk.go:76:					walkInfo					86.4%
github.com/speakeasy-api/openapi/openapi/walk.go:124:					walkPaths					100.0%
github.com/speakeasy-api/openapi/openapi/walk.go:146:					walkReferencedPathItem				62.5%
github.com/speakeasy-api/openapi/openapi/walk.go:166:					walkPathItem					70.0%
github.com/speakeasy-api/openapi/openapi/walk.go:193:					walkOperation					70.0%
github.com/speakeasy-api/openapi/openapi/walk.go:244:					walkReferencedParameters			88.9%
github.com/speakeasy-api/openapi/openapi/walk.go:264:					walkReferencedParameter				75.0%
github.com/speakeasy-api/openapi/openapi/walk.go:284:					walkParameter					55.6%
github.com/speakeasy-api/openapi/openapi/walk.go:309:					walkReferencedRequestBody			87.5%
github.com/speakeasy-api/openapi/openapi/walk.go:329:					walkRequestBody					80.0%
github.com/speakeasy-api/openapi/openapi/walk.go:344:					walkResponses					81.8%
github.com/speakeasy-api/openapi/openapi/walk.go:372:					walkReferencedResponse				87.5%
github.com/speakeasy-api/openapi/openapi/walk.go:392:					walkResponse					55.6%
github.com/speakeasy-api/openapi/openapi/walk.go:417:					walkMediaTypes					100.0%
github.com/speakeasy-api/openapi/openapi/walk.go:437:					walkMediaType					66.7%
github.com/speakeasy-api/openapi/openapi/walk.go:468:					walkEncodings					88.9%
github.com/speakeasy-api/openapi/openapi/walk.go:488:					walkEncoding					62.5%
github.com/speakeasy-api/openapi/openapi/walk.go:509:					walkReferencedHeaders				88.9%
github.com/speakeasy-api/openapi/openapi/walk.go:529:					walkReferencedHeader				75.0%
github.com/speakeasy-api/openapi/openapi/walk.go:549:					walkHeader					55.6%
github.com/speakeasy-api/openapi/openapi/walk.go:574:					walkReferencedExamples				88.9%
github.com/speakeasy-api/openapi/openapi/walk.go:594:					walkReferencedExample				75.0%
github.com/speakeasy-api/openapi/openapi/walk.go:614:					walkExample					66.7%
github.com/speakeasy-api/openapi/openapi/walk_components.go:12:				walkComponents					69.2%
github.com/speakeasy-api/openapi/openapi/walk_components.go:78:				walkComponentSchemas				88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:98:				walkComponentResponses				88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:118:			walkComponentParameters				88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:138:			walkComponentExamples				88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:158:			walkComponentRequestBodies			88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:178:			walkComponentHeaders				88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:198:			walkComponentSecuritySchemes			100.0%
github.com/speakeasy-api/openapi/openapi/walk_components.go:218:			walkComponentLinks				88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:238:			walkComponentCallbacks				88.9%
github.com/speakeasy-api/openapi/openapi/walk_components.go:258:			walkComponentPathItems				88.9%
github.com/speakeasy-api/openapi/openapi/walk_matching.go:152:				geMatchFunc					83.3%
github.com/speakeasy-api/openapi/openapi/walk_schema.go:11:				walkSchema					87.5%
github.com/speakeasy-api/openapi/openapi/walk_schema.go:31:				convertSchemaMatchFunc				100.0%
github.com/speakeasy-api/openapi/openapi/walk_schema.go:45:				convertSchemaLocation				100.0%
github.com/speakeasy-api/openapi/openapi/walk_schema.go:63:				walkExternalDocs				87.5%
github.com/speakeasy-api/openapi/openapi/walk_security.go:10:				walkSecurity					100.0%
github.com/speakeasy-api/openapi/openapi/walk_security.go:30:				walkSecurityRequirement				75.0%
github.com/speakeasy-api/openapi/openapi/walk_security.go:41:				walkReferencedSecurityScheme			75.0%
github.com/speakeasy-api/openapi/openapi/walk_security.go:61:				walkSecurityScheme				80.0%
github.com/speakeasy-api/openapi/openapi/walk_security.go:76:				walkOAuthFlows					71.4%
github.com/speakeasy-api/openapi/openapi/walk_security.go:109:				walkOAuthFlow					66.7%
github.com/speakeasy-api/openapi/openapi/walk_tags_servers.go:10:			walkTags					85.7%
github.com/speakeasy-api/openapi/openapi/walk_tags_servers.go:25:			walkTag						62.5%
github.com/speakeasy-api/openapi/openapi/walk_tags_servers.go:44:			walkServers					100.0%
github.com/speakeasy-api/openapi/openapi/walk_tags_servers.go:59:			walkServer					87.5%
github.com/speakeasy-api/openapi/openapi/walk_tags_servers.go:77:			walkVariables					100.0%
github.com/speakeasy-api/openapi/openapi/walk_tags_servers.go:91:			walkVariable					100.0%
github.com/speakeasy-api/openapi/openapi/walk_webhooks_callbacks.go:11:			walkWebhooks					88.9%
github.com/speakeasy-api/openapi/openapi/walk_webhooks_callbacks.go:31:			walkReferencedLinks				88.9%
github.com/speakeasy-api/openapi/openapi/walk_webhooks_callbacks.go:51:			walkReferencedLink				75.0%
github.com/speakeasy-api/openapi/openapi/walk_webhooks_callbacks.go:71:			walkLink					60.0%
github.com/speakeasy-api/openapi/openapi/walk_webhooks_callbacks.go:86:			walkReferencedCallbacks				88.9%
github.com/speakeasy-api/openapi/openapi/walk_webhooks_callbacks.go:106:		walkReferencedCallback				75.0%
github.com/speakeasy-api/openapi/openapi/walk_webhooks_callbacks.go:126:		walkCallback					66.7%
github.com/speakeasy-api/openapi/overlay/apply.go:14:					ApplyTo						87.5%
github.com/speakeasy-api/openapi/overlay/apply.go:31:					ApplyToStrict					96.2%
github.com/speakeasy-api/openapi/overlay/apply.go:74:					validateSelectorHasAtLeastOneTarget		88.9%
github.com/speakeasy-api/openapi/overlay/apply.go:93:					applyRemoveAction				90.0%
github.com/speakeasy-api/openapi/overlay/apply.go:114:					removeNode					91.7%
github.com/speakeasy-api/openapi/overlay/apply.go:140:					applyUpdateAction				78.6%
github.com/speakeasy-api/openapi/overlay/apply.go:167:					updateNode					100.0%
github.com/speakeasy-api/openapi/overlay/apply.go:171:					mergeNode					100.0%
github.com/speakeasy-api/openapi/overlay/apply.go:190:					mergeMappingNode				100.0%
github.com/speakeasy-api/openapi/overlay/apply.go:212:					mergeSequenceNode				100.0%
github.com/speakeasy-api/openapi/overlay/apply.go:217:					clone						87.5%
github.com/speakeasy-api/openapi/overlay/cmd/apply.go:20:				RunApply					0.0%
github.com/speakeasy-api/openapi/overlay/cmd/compare.go:21:				RunCompare					0.0%
github.com/speakeasy-api/openapi/overlay/cmd/root.go:5:					Apply						0.0%
github.com/speakeasy-api/openapi/overlay/cmd/shared.go:8:				Dief						0.0%
github.com/speakeasy-api/openapi/overlay/cmd/shared.go:13:				Die						0.0%
github.com/speakeasy-api/openapi/overlay/cmd/validate.go:19:				RunValidateOverlay				0.0%
github.com/speakeasy-api/openapi/overlay/compare.go:14:					Compare						75.0%
github.com/speakeasy-api/openapi/overlay/compare.go:37:					intPart						100.0%
github.com/speakeasy-api/openapi/overlay/compare.go:43:					keyPart						100.0%
github.com/speakeasy-api/openapi/overlay/compare.go:50:					String						66.7%
github.com/speakeasy-api/openapi/overlay/compare.go:57:					KeyString					0.0%
github.com/speakeasy-api/openapi/overlay/compare.go:66:					WithIndex					100.0%
github.com/speakeasy-api/openapi/overlay/compare.go:70:					WithKey						100.0%
github.com/speakeasy-api/openapi/overlay/compare.go:74:					ToJSONPath					100.0%
github.com/speakeasy-api/openapi/overlay/compare.go:83:					Dir						100.0%
github.com/speakeasy-api/openapi/overlay/compare.go:87:					Base						0.0%
github.com/speakeasy-api/openapi/overlay/compare.go:91:					walkTreesAndCollectActions			88.9%
github.com/speakeasy-api/openapi/overlay/compare.go:156:				yamlEquals					85.7%
github.com/speakeasy-api/openapi/overlay/compare.go:178:				walkSequenceNode				93.8%
github.com/speakeasy-api/openapi/overlay/compare.go:207:				walkMappingNode					92.0%
github.com/speakeasy-api/openapi/overlay/jsonpath.go:20:				Query						75.0%
github.com/speakeasy-api/openapi/overlay/jsonpath.go:29:				NewPath						100.0%
github.com/speakeasy-api/openapi/overlay/jsonpath.go:42:				UsesRFC9535					100.0%
github.com/speakeasy-api/openapi/overlay/jsonpath.go:46:				mustExecute					100.0%
github.com/speakeasy-api/openapi/overlay/loader/overlay.go:11:				LoadOverlay					0.0%
github.com/speakeasy-api/openapi/overlay/loader/spec.go:17:				GetOverlayExtendsPath				0.0%
github.com/speakeasy-api/openapi/overlay/loader/spec.go:37:				LoadExtendsSpecification			0.0%
github.com/speakeasy-api/openapi/overlay/loader/spec.go:47:				LoadSpecification				0.0%
github.com/speakeasy-api/openapi/overlay/loader/spec.go:66:				LoadEitherSpecification				0.0%
github.com/speakeasy-api/openapi/overlay/parents.go:8:					newParentIndex					100.0%
github.com/speakeasy-api/openapi/overlay/parents.go:14:					indexNodeRecursively				100.0%
github.com/speakeasy-api/openapi/overlay/parents.go:21:					getParent					100.0%
github.com/speakeasy-api/openapi/overlay/parse.go:13:					Parse						76.9%
github.com/speakeasy-api/openapi/overlay/parse.go:37:					Format						0.0%
github.com/speakeasy-api/openapi/overlay/parse.go:55:					Format						0.0%
github.com/speakeasy-api/openapi/overlay/schema.go:33:					ToString					100.0%
github.com/speakeasy-api/openapi/overlay/utils.go:9:					NewTargetSelector				0.0%
github.com/speakeasy-api/openapi/overlay/utils.go:13:					NewUpdateAction					0.0%
github.com/speakeasy-api/openapi/overlay/validate.go:12:				Error						100.0%
github.com/speakeasy-api/openapi/overlay/validate.go:20:				Return						66.7%
github.com/speakeasy-api/openapi/overlay/validate.go:27:				Validate					57.9%
github.com/speakeasy-api/openapi/pointer/pointer.go:5:					From						0.0%
github.com/speakeasy-api/openapi/pointer/pointer.go:10:					Value						0.0%
github.com/speakeasy-api/openapi/references/factory_registration.go:8:			init						50.0%
github.com/speakeasy-api/openapi/references/reference.go:16:				GetURI						75.0%
github.com/speakeasy-api/openapi/references/reference.go:25:				HasJSONPointer					100.0%
github.com/speakeasy-api/openapi/references/reference.go:29:				GetJSONPointer					100.0%
github.com/speakeasy-api/openapi/references/reference.go:46:				Validate					100.0%
github.com/speakeasy-api/openapi/references/reference.go:73:				String						0.0%
github.com/speakeasy-api/openapi/references/resolution.go:39:				ResolveAbsoluteReference			100.0%
github.com/speakeasy-api/openapi/references/resolution.go:73:				Resolve						92.7%
github.com/speakeasy-api/openapi/references/resolution.go:196:				resolveAgainstURL				90.0%
github.com/speakeasy-api/openapi/references/resolution.go:217:				resolveAgainstFilePath				100.0%
github.com/speakeasy-api/openapi/references/resolution.go:227:				resolveAgainstDocument				80.0%
github.com/speakeasy-api/openapi/references/resolution.go:247:				resolveAgainstData				69.2%
github.com/speakeasy-api/openapi/references/resolution.go:295:				cast						33.3%
github.com/speakeasy-api/openapi/references/resolution_cache.go:26:			ResolveAbsoluteReferenceCached			100.0%
github.com/speakeasy-api/openapi/references/resolution_cache.go:33:			Resolve						90.0%
github.com/speakeasy-api/openapi/references/resolution_cache.go:64:			resolveAbsoluteReferenceUncached		86.4%
github.com/speakeasy-api/openapi/references/resolution_cache.go:113:			Clear						100.0%
github.com/speakeasy-api/openapi/references/resolution_cache.go:126:			GetStats					100.0%
github.com/speakeasy-api/openapi/references/resolution_cache.go:136:			GetRefCacheStats				100.0%
github.com/speakeasy-api/openapi/references/resolution_cache.go:141:			ClearGlobalRefCache				100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:41:				NewElem						100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:49:				GetKey						0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:58:				GetValue					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:75:				New						100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:80:				NewWithCapacity					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:84:				newMap						80.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:117:				Init						100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:125:				IsInitialized					66.7%
github.com/speakeasy-api/openapi/sequencedmap/map.go:133:				Len						66.7%
github.com/speakeasy-api/openapi/sequencedmap/map.go:141:				Set						100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:159:				Add						100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:182:				SetAny						0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:195:				AddAny						100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:208:				GetAny						0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:218:				DeleteAny					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:228:				KeysAny						0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:252:				SetUntyped					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:271:				Get						85.7%
github.com/speakeasy-api/openapi/sequencedmap/map.go:288:				GetUntyped					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:308:				GetOrZero					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:323:				Has						75.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:333:				Delete						85.7%
github.com/speakeasy-api/openapi/sequencedmap/map.go:350:				First						0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:359:				Last						0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:368:				At						0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:382:				All						88.9%
github.com/speakeasy-api/openapi/sequencedmap/map.go:407:				AllOrdered					96.8%
github.com/speakeasy-api/openapi/sequencedmap/map.go:479:				AllUntyped					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:502:				Keys						77.8%
github.com/speakeasy-api/openapi/sequencedmap/map.go:525:				Values						77.8%
github.com/speakeasy-api/openapi/sequencedmap/map.go:547:				GetKeyType					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:553:				GetValueType					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:560:				NavigateWithKey					81.2%
github.com/speakeasy-api/openapi/sequencedmap/map.go:592:				MarshalJSON					0.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:628:				UnmarshalYAML					89.5%
github.com/speakeasy-api/openapi/sequencedmap/map.go:673:				MarshalYAML					75.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:695:				compareKeys					85.7%
github.com/speakeasy-api/openapi/sequencedmap/map.go:711:				IsEqual						100.0%
github.com/speakeasy-api/openapi/sequencedmap/map.go:752:				IsEqualFunc					94.7%
github.com/speakeasy-api/openapi/sequencedmap/utils.go:6:				Len						0.0%
github.com/speakeasy-api/openapi/sequencedmap/utils.go:14:				From						0.0%
github.com/speakeasy-api/openapi/system/filesystem.go:16:				Open						0.0%
github.com/speakeasy-api/openapi/validation/errors.go:18:				Error						0.0%
github.com/speakeasy-api/openapi/validation/errors.go:22:				Unwrap						0.0%
github.com/speakeasy-api/openapi/validation/errors.go:26:				GetLineNumber					0.0%
github.com/speakeasy-api/openapi/validation/errors.go:33:				GetColumnNumber					0.0%
github.com/speakeasy-api/openapi/validation/errors.go:56:				NewValidationError				0.0%
github.com/speakeasy-api/openapi/validation/errors.go:67:				NewValueError					0.0%
github.com/speakeasy-api/openapi/validation/errors.go:85:				NewSliceError					0.0%
github.com/speakeasy-api/openapi/validation/errors.go:103:				NewMapKeyError					0.0%
github.com/speakeasy-api/openapi/validation/errors.go:121:				NewMapValueError				0.0%
github.com/speakeasy-api/openapi/validation/errors.go:145:				NewTypeMismatchError				0.0%
github.com/speakeasy-api/openapi/validation/errors.go:155:				Error						0.0%
github.com/speakeasy-api/openapi/validation/errors.go:165:				NewMissingFieldError				0.0%
github.com/speakeasy-api/openapi/validation/errors.go:171:				Error						0.0%
github.com/speakeasy-api/openapi/validation/errors.go:181:				NewMissingValueError				0.0%
github.com/speakeasy-api/openapi/validation/errors.go:187:				Error						0.0%
github.com/speakeasy-api/openapi/validation/errors.go:197:				NewValueValidationError				0.0%
github.com/speakeasy-api/openapi/validation/errors.go:207:				Error						0.0%
github.com/speakeasy-api/openapi/validation/options.go:13:				WithContextObject				0.0%
github.com/speakeasy-api/openapi/validation/options.go:19:				NewOptions					0.0%
github.com/speakeasy-api/openapi/validation/options.go:29:				GetContextObject				0.0%
github.com/speakeasy-api/openapi/validation/utils.go:9:					SortValidationErrors				0.0%
github.com/speakeasy-api/openapi/values/core/eithervalue.go:27:				Unmarshal					57.7%
github.com/speakeasy-api/openapi/values/core/eithervalue.go:79:				hasTypeMismatchErrors				66.7%
github.com/speakeasy-api/openapi/values/core/eithervalue.go:98:				SyncChanges					62.2%
github.com/speakeasy-api/openapi/values/core/eithervalue.go:169:			GetNavigableNode				0.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:29:				IsLeft						100.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:40:				GetLeft						100.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:52:				LeftValue					100.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:63:				IsRight						100.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:74:				GetRight					100.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:86:				RightValue					100.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:95:				PopulateWithParent				69.2%
github.com/speakeasy-api/openapi/values/eithervalue.go:125:				GetNavigableNode				100.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:138:				IsEqual						0.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:161:				equalWithIsEqualMethod				0.0%
github.com/speakeasy-api/openapi/values/eithervalue.go:201:				isEmptyCollection				0.0%
github.com/speakeasy-api/openapi/walk/locations.go:30:					ToJSONPointer					0.0%
github.com/speakeasy-api/openapi/yml/config.go:12:					String						0.0%
github.com/speakeasy-api/openapi/yml/config.go:40:					ContextWithConfig				0.0%
github.com/speakeasy-api/openapi/yml/config.go:48:					GetConfigFromContext				0.0%
github.com/speakeasy-api/openapi/yml/config.go:64:					GetConfigFromDoc				0.0%
github.com/speakeasy-api/openapi/yml/config.go:79:					inspectData					0.0%
github.com/speakeasy-api/openapi/yml/config.go:116:					getGlobalStringStyle				0.0%
github.com/speakeasy-api/openapi/yml/nodekind.go:8:					NodeKindToString				100.0%
github.com/speakeasy-api/openapi/yml/walk.go:21:					Walk						0.0%
github.com/speakeasy-api/openapi/yml/walk.go:33:					walkNode					0.0%
github.com/speakeasy-api/openapi/yml/walk.go:56:					walkDocumentNode				0.0%
github.com/speakeasy-api/openapi/yml/walk.go:66:					walkMappingNode					0.0%
github.com/speakeasy-api/openapi/yml/walk.go:83:					walkSequenceNode				0.0%
github.com/speakeasy-api/openapi/yml/walk.go:93:					walkAliasNode					0.0%
github.com/speakeasy-api/openapi/yml/yml.go:10:						CreateOrUpdateKeyNode				0.0%
github.com/speakeasy-api/openapi/yml/yml.go:31:						CreateOrUpdateScalarNode			0.0%
github.com/speakeasy-api/openapi/yml/yml.go:54:						CreateOrUpdateMapNodeElement			0.0%
github.com/speakeasy-api/openapi/yml/yml.go:84:						CreateStringNode				0.0%
github.com/speakeasy-api/openapi/yml/yml.go:92:						CreateIntNode					0.0%
github.com/speakeasy-api/openapi/yml/yml.go:100:					CreateFloatNode					0.0%
github.com/speakeasy-api/openapi/yml/yml.go:108:					CreateBoolNode					0.0%
github.com/speakeasy-api/openapi/yml/yml.go:116:					CreateMapNode					0.0%
github.com/speakeasy-api/openapi/yml/yml.go:124:					DeleteMapNodeElement				0.0%
github.com/speakeasy-api/openapi/yml/yml.go:144:					CreateOrUpdateSliceNode				0.0%
github.com/speakeasy-api/openapi/yml/yml.go:158:					GetMapElementNodes				0.0%
github.com/speakeasy-api/openapi/yml/yml.go:183:					ResolveAlias					0.0%
github.com/speakeasy-api/openapi/yml/yml.go:198:					EqualNodes					0.0%
total:											(statements)					63.7%
  • 🧪 All tests passed
  • 📈 Full coverage report available in workflow artifacts

Generated by GitHub Actions

Major improvements:
- Fix join command path resolution to use relative paths from main document directory
- Enhance inline command to preserve security schemes referenced by global security requirements
- Add comprehensive CLI integration test suite (mise-tasks/test-cli)
- Update mise CI pipeline to include CLI integration tests
- Optimize GitHub Actions workflow with parallel execution for builds and CLI tests

Technical changes:
- openapi/cmd/join.go: Fix path resolution using filepath.Rel() for proper relative paths
- openapi/inline.go: Enhanced removeUnusedComponents() to preserve security schemes
- openapi/testdata/: Updated test data to reflect proper path handling and security schemes
- mise-tasks/ci: Added CLI integration testing step
- .github/workflows/ci.yaml: Parallelized build jobs and CLI tests for faster CI execution

All changes maintain backward compatibility and improve overall CLI reliability.
@TristanSpeakEasy TristanSpeakEasy merged commit 0179954 into main Aug 22, 2025
10 checks passed
@TristanSpeakEasy TristanSpeakEasy deleted the feat/cli-remove-command-stuttering branch August 22, 2025 01:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants