Skip to main content
Glama
test_aws_cdk.py4.71 kB
import io from unittest.mock import patch from pytest_mock import MockerFixture from cdk_api_downloader.aws_cdk.aws_cdk import ( find_integ_test_files, find_markdown_files, get_module_name, get_test_name, normalize_output_path, ) def test_find_markdown_files(mocker: MockerFixture): expected_files = [ "repositories/aws-cdk/packages/@aws-cdk/aws-s3/README.md", "repositories/aws-cdk/packages/aws-cdk-lib/aws-lakeformation/README.md", "repositories/aws-cdk/packages/aws-cdk-lib/aws-codeartifact/README.md", ] # glob.globのモックを設定 mocker.patch( "glob.glob", side_effect=[ # @aws-cdk パターン [expected_files[0]], # aws-cdk-lib パターン [expected_files[1], expected_files[2]], ], ) # open関数のモックを設定 mock_file_contents = { expected_files[0]: "# AWS S3\nThis is a readme", expected_files[1]: "# AWS Lakeformation\nThis is a readme", expected_files[2]: "# AWS CodeArtifact\nThis is a readme", } def mock_open_func(file, encoding=None): content = mock_file_contents.get(file, "") return io.StringIO(content) # open関数をモック with patch("builtins.open", mock_open_func): result = list(find_markdown_files("repositories/aws-cdk")) assert sorted(result) == sorted(expected_files) def test_find_markdown_files_excludes_handwritten(mocker: MockerFixture): files = [ "repositories/aws-cdk/packages/aws-cdk-lib/aws-service/README.md", "repositories/aws-cdk/packages/@aws-cdk/aws-other/README.md", ] # glob.globのモックを設定 mocker.patch( "glob.glob", side_effect=[ # @aws-cdk パターン [files[1]], # aws-cdk-lib パターン [files[0]], ], ) # open関数のモックを設定 mock_file_contents = { files[0]: "# AWS Service\nThere are no hand-written examples.", files[1]: "# AWS Other\nThis is a valid readme", } def mock_open_func(file, encoding=None): content = mock_file_contents.get(file, "") return io.StringIO(content) # open関数をモック with patch("builtins.open", mock_open_func): result = list(find_markdown_files("repositories/aws-cdk")) # "There are no hand-written"を含むファイルは除外されるはず assert result == [files[1]] def test_find_integ_test_files(mocker: MockerFixture): expected_files = [ "repositories/aws-cdk/packages/@aws-cdk-testing/framework-integ/test/aws-config/test/integ.rule.ts", "repositories/aws-cdk/packages/@aws-cdk-testing/framework-integ/test/aws-config/test/integ.rule2.ts", ] ignored_files = [ "repositories/aws-cdk/packages/@aws-cdk-testing/framework-integ/test/aws-config/test/hoge.snapshot/integ.rule3.ts", "repositories/aws-cdk/packages/@aws-cdk-testing/framework-integ/test/aws-config/test/assets/integ.rule3.ts", ] mocker.patch( "glob.glob", return_value=expected_files + ignored_files, ) integ_test_files = find_integ_test_files("repositories/aws-cdk") assert list(integ_test_files) == expected_files def test_get_module_name(): module_name = get_module_name( "repositories/aws-cdk/packages/@aws-cdk-testing/framework-integ/test/aws-config/test/integ.rule.ts" ) assert module_name == "aws-config" def test_get_test_name(): test_name = get_test_name( "repositories/aws-cdk/packages/@aws-cdk-testing/framework-integ/test/aws-config/test/integ.rule.ts" ) assert test_name == "rule" def test_normalize_output_path(): # @aws-cdk パッケージのテスト path = "repositories/aws-cdk/packages/@aws-cdk/aws-s3/README.md" normalized = normalize_output_path(path) assert normalized == "constructs/@aws-cdk/aws-s3/README.md" # aws-cdk-lib パッケージのテスト path = "repositories/aws-cdk/packages/aws-cdk-lib/aws-lambda/README.md" normalized = normalize_output_path(path) assert normalized == "constructs/aws-cdk-lib/aws-lambda/README.md" # integ-test ファイルのテスト path = "repositories/aws-cdk/packages/@aws-cdk-testing/framework-integ/test/aws-config/test/integ.rule.ts" normalized = normalize_output_path(path) assert normalized == "constructs/aws-cdk-lib/aws-config/integ.rule.ts" # 不明なパスのテスト path = "repositories/aws-cdk/some/unknown/path/file.md" normalized = normalize_output_path(path) assert normalized == "constructs/unknown/unknown/file.md"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/konokenj/cdk-api-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server