@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/06/08/000-pester-powershell-test-maintenance/#article>
    schema:about <https://comcomponent.com/knowledge/pester/>, <https://comcomponent.com/knowledge/powershell/> ;
    schema:mentions <https://comcomponent.com/knowledge/pester-testdrive/>, <https://comcomponent.com/knowledge/pester-mock/>, <https://comcomponent.com/knowledge/supportsshouldprocess/>, <https://comcomponent.com/knowledge/pester-tag/>, <https://comcomponent.com/knowledge/pester-code-coverage/>, <https://comcomponent.com/knowledge/github-actions/>, <https://comcomponent.com/knowledge/azure-pipelines/>, <https://comcomponent.com/knowledge/install-module-powershellgallery/>, <https://comcomponent.com/knowledge/windows-bundled-pester-legacy/>, <https://comcomponent.com/knowledge/corporate-proxy-module-install-blocker/>, <https://comcomponent.com/knowledge/destructive-operation-powershell/>, <https://comcomponent.com/knowledge/target-selection-function/>, <https://comcomponent.com/knowledge/date-argument-injection/>, <https://comcomponent.com/knowledge/test-flakiness/>, <https://comcomponent.com/knowledge/closed-network/> .

<https://comcomponent.com/knowledge/pester/> a skos:Concept ;
    skos:prefLabel "Pester"@ja ;
    skos:definition "PowerShellスクリプトの自動テストを書くためのテストフレームワーク。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/powershell/> ;
    ks:uses <https://comcomponent.com/knowledge/pester-testdrive/> ;
    ks:uses <https://comcomponent.com/knowledge/pester-mock/> ;
    ks:uses <https://comcomponent.com/knowledge/pester-tag/> ;
    ks:uses <https://comcomponent.com/knowledge/pester-code-coverage/> .

<https://comcomponent.com/knowledge/powershell/> a skos:Concept ;
    skos:prefLabel "PowerShell"@ja ;
    skos:definition "オブジェクトパイプラインとエラー処理機構を持つ、Microsoftが最も堅牢で最新のWindows自動化に推奨するコマンドラインシェル兼スクリプト言語。"@ja ;
    skos:altLabel "Windows PowerShell" ;
    skos:altLabel "pwsh" ;
    skos:altLabel "PowerShell 7" .

<https://comcomponent.com/knowledge/pester-testdrive/> a skos:Concept ;
    skos:prefLabel "$TestDrive"@ja ;
    skos:definition "Pesterがテストごとに用意する、テスト終了時に自動的に削除される一時フォルダーを指す変数。"@ja ;
    skos:altLabel "TestDrive" ;
    ks:mitigates <https://comcomponent.com/knowledge/destructive-operation-powershell/> .

<https://comcomponent.com/knowledge/pester-mock/> a skos:Concept ;
    skos:prefLabel "Pesterのモック(Mock)"@ja ;
    skos:definition "Pesterが提供する、実際のコマンドの呼び出しをテスト用の代替実装に差し替える機能。"@ja ;
    skos:altLabel "Mock" ;
    skos:altLabel "Should -Invoke" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/destructive-operation-powershell/> .

<https://comcomponent.com/knowledge/pester-tag/> a skos:Concept ;
    skos:prefLabel "Pesterのタグ(Tag)"@ja ;
    skos:definition "Describe/Context/Itに付与し、TagFilter/ExcludeTagFilterで実行するテストを絞り込めるPesterの分類機構。"@ja ;
    skos:altLabel "-Tag" ;
    skos:altLabel "-TagFilter" ;
    skos:altLabel "-ExcludeTagFilter" .

<https://comcomponent.com/knowledge/pester-code-coverage/> a skos:Concept ;
    skos:prefLabel "PesterのCode Coverage"@ja ;
    skos:definition "New-PesterConfigurationのCodeCoverage設定で、テスト対象スクリプトのどの行が実行されたかを計測するPesterの機能。"@ja ;
    skos:altLabel "CodeCoverage" ;
    skos:altLabel "JaCoCo" .

<https://comcomponent.com/knowledge/supportsshouldprocess/> a skos:Concept ;
    skos:prefLabel "SupportsShouldProcess(-WhatIf)"@ja ;
    skos:definition "PowerShellの関数に-WhatIf/-Confirmパラメーターを持たせ、実行前に何が行われるかを予行確認できるようにするCmdletBindingの機構。"@ja ;
    skos:altLabel "ShouldProcess" ;
    skos:altLabel "-WhatIf" ;
    skos:altLabel "-Confirm" ;
    ks:mitigates <https://comcomponent.com/knowledge/destructive-operation-powershell/> .

<https://comcomponent.com/knowledge/destructive-operation-powershell/> a skos:Concept ;
    skos:prefLabel "危険操作(削除・移動・上書きなど)"@ja ;
    skos:definition "削除・移動・上書き・サービス再起動・権限変更のような、少しの条件ミスが事故につながるPowerShellの変更操作。"@ja ;
    skos:altLabel "危険な変更操作"@ja ;
    skos:altLabel "破壊的操作"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/pester-mock/> .

<https://comcomponent.com/knowledge/github-actions/> a skos:Concept ;
    skos:prefLabel "GitHub Actions"@ja ;
    skos:definition "GitHubが提供する、リポジトリのイベントをトリガーにワークフローを実行するCI/CDサービス。"@ja ;
    skos:altLabel "GitHub Actions workflow" ;
    ks:automates <https://comcomponent.com/knowledge/pester/> .

<https://comcomponent.com/knowledge/azure-pipelines/> a skos:Concept ;
    skos:prefLabel "Azure Pipelines"@ja ;
    skos:definition "Microsoftが提供する、ビルド・テスト・デプロイのパイプラインを実行するCI/CDサービス。"@ja ;
    skos:altLabel "Azure DevOps Pipelines" ;
    ks:automates <https://comcomponent.com/knowledge/pester/> .

<https://comcomponent.com/knowledge/corporate-proxy-module-install-blocker/> a skos:Concept ;
    skos:prefLabel "社内プロキシ/TLSによるモジュール導入の阻害"@ja ;
    skos:definition "社内プロキシ未設定・TLS 1.2未有効・NuGetプロバイダー未導入などが重なり、社内端末からのInstall-ModuleがPowerShell Galleryに到達できず失敗する状態。"@ja ;
    skos:altLabel "プロキシ環境でのInstall-Module失敗"@ja ;
    skos:altLabel "TLS 1.2未設定"@ja .

<https://comcomponent.com/knowledge/install-module-powershellgallery/> a skos:Concept ;
    skos:prefLabel "Install-ModuleによるPowerShell Galleryからの導入"@ja ;
    skos:definition "PowerShell Galleryが公開するモジュールを、Install-Moduleコマンドレットでローカルにインストールする手段。"@ja ;
    skos:altLabel "Install-Module" ;
    skos:altLabel "PowerShell Gallery" ;
    ks:requires <https://comcomponent.com/knowledge/powershell/> .

<https://comcomponent.com/knowledge/closed-network/> a skos:Concept ;
    skos:prefLabel "閉域ネットワーク"@ja ;
    skos:definition "インターネットに接続せずに運用する隔離されたネットワーク。"@ja ;
    skos:altLabel "オフライン環境"@ja ;
    skos:altLabel "切断環境"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/install-module-powershellgallery/> .

<https://comcomponent.com/knowledge/target-selection-function/> a skos:Concept ;
    skos:prefLabel "対象選定を切り出した関数"@ja ;
    skos:definition "削除・移動などの変更処理から、対象を選ぶロジックだけを独立した関数として切り出す設計。戻り値をテストで確認しやすくする。"@ja ;
    skos:altLabel "対象選定関数"@ja ;
    skos:altLabel "対象選定と変更処理の分離"@ja ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/destructive-operation-powershell/> .

<https://comcomponent.com/knowledge/date-argument-injection/> a skos:Concept ;
    skos:prefLabel "日付の引数化(Now引数)"@ja ;
    skos:definition "関数内でGet-Dateを直接使わず、日時を引数として外部から渡せるようにする設計。テストで日付を固定できるようにする。"@ja ;
    skos:altLabel "-Now引数"@ja ;
    skos:altLabel "日付の固定"@ja .

<https://comcomponent.com/knowledge/test-flakiness/> a skos:Concept ;
    skos:prefLabel "テストの不安定性(flaky test)"@ja ;
    skos:definition "同じテストが実行環境や実行日時によって成功したり失敗したりする不安定な状態。"@ja ;
    skos:altLabel "flaky test" ;
    skos:altLabel "日によって結果が変わるテスト"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pester/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/powershell/> ;
    schema:description "PesterはPowerShellスクリプトを検証するために書かれたPowerShell用のテストフレームワークである"@ja ;
    ks:evidence <https://pester.dev/docs/quick-start> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pester/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/pester-testdrive/> ;
    schema:description "Pesterはテストごとに$TestDriveという一時フォルダーを用意し、本物のファイルを使わずにファイル操作を検証できるようにする"@ja ;
    ks:evidence <https://pester.dev/docs/usage/testdrive> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pester/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/pester-mock/> ;
    schema:description "Pesterは実際のコマンド呼び出しをMockで置き換え、呼ばれた回数や引数を検証できるようにする"@ja ;
    ks:evidence <https://pester.dev/docs/usage/mocking> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pester/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/pester-tag/> ;
    schema:description "PesterはDescribe/Context/Itにタグを付け、TagFilter/ExcludeTagFilterで実行対象を絞り込める"@ja ;
    ks:evidence <https://pester.dev/docs/usage/tags> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pester/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/pester-code-coverage/> ;
    schema:description "Pesterはテスト対象スクリプトの実行済み行を計測するCode Coverage機能を持つ"@ja ;
    ks:evidence <https://pester.dev/docs/usage/code-coverage> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/supportsshouldprocess/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/destructive-operation-powershell/> ;
    schema:description "SupportsShouldProcessを付けると-WhatIfで危険操作を予行でき、実行前に対象を確認できるため事故のリスクを軽減する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions_cmdletbindingattribute> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pester-mock/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/destructive-operation-powershell/> ;
    schema:description "削除・移動・Web API呼び出し・通知のような実行してはいけない処理はMockで置き換えるのが実務での推奨である"@ja ;
    ks:evidence <https://pester.dev/docs/usage/mocking> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pester-testdrive/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/destructive-operation-powershell/> ;
    schema:description "$TestDriveを使う習慣をつけると、危険操作のテストで本物のファイルを誤って消すような事故を防げる"@ja ;
    ks:evidence <https://pester.dev/docs/usage/testdrive> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/github-actions/> ;
    rdf:predicate ks:automates ;
    rdf:object <https://comcomponent.com/knowledge/pester/> ;
    schema:description "GitHub Actionsのワークフローは、Pester v5をInstall-Moduleで明示的に入れたうえでInvoke-Pesterの実行をコミット・プルリクエストごとに自動化する"@ja ;
    ks:evidence <https://docs.github.com/en/actions> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/azure-pipelines/> ;
    rdf:predicate ks:automates ;
    rdf:object <https://comcomponent.com/knowledge/pester/> ;
    schema:description "Azure PipelinesのPowerShell@2タスクは、Pesterのインストールと実行用スクリプトの呼び出しをパイプラインとして自動化する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/azure/devops/pipelines/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/corporate-proxy-module-install-blocker/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/install-module-powershellgallery/> ;
    schema:description "社内プロキシ・TLS 1.2未設定・NuGetプロバイダー未導入が重なる環境では、Install-ModuleによるPowerShell Galleryからの導入は成立しない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/gallery/powershellget/install-powershellget> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/closed-network/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/install-module-powershellgallery/> ;
    schema:description "閉域ネットワークでは外部のPowerShell Galleryに直接到達できないため、Install-ModuleではなくSave-Moduleでの持ち込みや社内リポジトリ登録が必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/gallery/powershellget/install-powershellget> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/destructive-operation-powershell/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/pester-mock/> ;
    schema:description "削除・移動などの危険操作を実際に実行せず、Mockで呼ばれるべき場面で呼ばれたか・呼ばれてはいけない場面で呼ばれていないかを確認できる"@ja ;
    ks:evidence <https://pester.dev/docs/usage/mocking> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/github-actions/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/pester-tag/> ;
    schema:description "PesterでPowerShellのテストを実行するCIでは、環境依存や遅いテストを除外し、TagFilterで絞ったUnitタグのテストを標準実行するのが実務的である"@ja ;
    ks:evidence <https://pester.dev/docs/usage/tags> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/install-module-powershellgallery/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/powershell/> ;
    schema:description "Install-ModuleはPowerShellのコマンドレットであり、PowerShell Galleryからモジュールを取得する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/module/powershellget/install-module> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/target-selection-function/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/destructive-operation-powershell/> ;
    schema:description "危険な処理を実装・テストする前に、対象を選ぶ判断のロジックを独立した関数として切り出し、先にテストで固めておくべきである"@ja ;
    ks:evidence <https://pester.dev/docs/quick-start> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/date-argument-injection/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/test-flakiness/> ;
    schema:description "日時を-Nowのような引数として外から渡せるようにすると、実行日によって結果が変わるという原因に限り、テストの不安定さを防げる(タイミング依存や外部サービスなど実行日時以外が原因の不安定さには別の対策が要る)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/target-selection-function/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/date-argument-injection/> ;
    schema:description "現在時刻を選定条件に使う場合、対象選定関数(記事の例ではGet-OldLogFile)は$Nowをテストしやすくするために引数として受け取り、関数内でGet-Dateを直接使わないことでテスト実行日に依存しない対象選定を可能にしている"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
