packages feed

amazonka-codebuild-2.0: gen/Amazonka/CodeBuild/Types/CodeCoverage.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CodeBuild.Types.CodeCoverage
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CodeBuild.Types.CodeCoverage where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Contains code coverage report information.
--
-- Line coverage measures how many statements your tests cover. A statement
-- is a single instruction, not including comments, conditionals, etc.
--
-- Branch coverage determines if your tests cover every possible branch of
-- a control structure, such as an @if@ or @case@ statement.
--
-- /See:/ 'newCodeCoverage' smart constructor.
data CodeCoverage = CodeCoverage'
  { -- | The percentage of branches that are covered by your tests.
    branchCoveragePercentage :: Prelude.Maybe Prelude.Double,
    -- | The number of conditional branches that are covered by your tests.
    branchesCovered :: Prelude.Maybe Prelude.Natural,
    -- | The number of conditional branches that are not covered by your tests.
    branchesMissed :: Prelude.Maybe Prelude.Natural,
    -- | The date and time that the tests were run.
    expired :: Prelude.Maybe Data.POSIX,
    -- | The path of the test report file.
    filePath :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the code coverage report.
    id :: Prelude.Maybe Prelude.Text,
    -- | The percentage of lines that are covered by your tests.
    lineCoveragePercentage :: Prelude.Maybe Prelude.Double,
    -- | The number of lines that are covered by your tests.
    linesCovered :: Prelude.Maybe Prelude.Natural,
    -- | The number of lines that are not covered by your tests.
    linesMissed :: Prelude.Maybe Prelude.Natural,
    -- | The ARN of the report.
    reportARN :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CodeCoverage' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'branchCoveragePercentage', 'codeCoverage_branchCoveragePercentage' - The percentage of branches that are covered by your tests.
--
-- 'branchesCovered', 'codeCoverage_branchesCovered' - The number of conditional branches that are covered by your tests.
--
-- 'branchesMissed', 'codeCoverage_branchesMissed' - The number of conditional branches that are not covered by your tests.
--
-- 'expired', 'codeCoverage_expired' - The date and time that the tests were run.
--
-- 'filePath', 'codeCoverage_filePath' - The path of the test report file.
--
-- 'id', 'codeCoverage_id' - The identifier of the code coverage report.
--
-- 'lineCoveragePercentage', 'codeCoverage_lineCoveragePercentage' - The percentage of lines that are covered by your tests.
--
-- 'linesCovered', 'codeCoverage_linesCovered' - The number of lines that are covered by your tests.
--
-- 'linesMissed', 'codeCoverage_linesMissed' - The number of lines that are not covered by your tests.
--
-- 'reportARN', 'codeCoverage_reportARN' - The ARN of the report.
newCodeCoverage ::
  CodeCoverage
newCodeCoverage =
  CodeCoverage'
    { branchCoveragePercentage =
        Prelude.Nothing,
      branchesCovered = Prelude.Nothing,
      branchesMissed = Prelude.Nothing,
      expired = Prelude.Nothing,
      filePath = Prelude.Nothing,
      id = Prelude.Nothing,
      lineCoveragePercentage = Prelude.Nothing,
      linesCovered = Prelude.Nothing,
      linesMissed = Prelude.Nothing,
      reportARN = Prelude.Nothing
    }

-- | The percentage of branches that are covered by your tests.
codeCoverage_branchCoveragePercentage :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Double)
codeCoverage_branchCoveragePercentage = Lens.lens (\CodeCoverage' {branchCoveragePercentage} -> branchCoveragePercentage) (\s@CodeCoverage' {} a -> s {branchCoveragePercentage = a} :: CodeCoverage)

-- | The number of conditional branches that are covered by your tests.
codeCoverage_branchesCovered :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Natural)
codeCoverage_branchesCovered = Lens.lens (\CodeCoverage' {branchesCovered} -> branchesCovered) (\s@CodeCoverage' {} a -> s {branchesCovered = a} :: CodeCoverage)

-- | The number of conditional branches that are not covered by your tests.
codeCoverage_branchesMissed :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Natural)
codeCoverage_branchesMissed = Lens.lens (\CodeCoverage' {branchesMissed} -> branchesMissed) (\s@CodeCoverage' {} a -> s {branchesMissed = a} :: CodeCoverage)

-- | The date and time that the tests were run.
codeCoverage_expired :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.UTCTime)
codeCoverage_expired = Lens.lens (\CodeCoverage' {expired} -> expired) (\s@CodeCoverage' {} a -> s {expired = a} :: CodeCoverage) Prelude.. Lens.mapping Data._Time

-- | The path of the test report file.
codeCoverage_filePath :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Text)
codeCoverage_filePath = Lens.lens (\CodeCoverage' {filePath} -> filePath) (\s@CodeCoverage' {} a -> s {filePath = a} :: CodeCoverage)

-- | The identifier of the code coverage report.
codeCoverage_id :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Text)
codeCoverage_id = Lens.lens (\CodeCoverage' {id} -> id) (\s@CodeCoverage' {} a -> s {id = a} :: CodeCoverage)

-- | The percentage of lines that are covered by your tests.
codeCoverage_lineCoveragePercentage :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Double)
codeCoverage_lineCoveragePercentage = Lens.lens (\CodeCoverage' {lineCoveragePercentage} -> lineCoveragePercentage) (\s@CodeCoverage' {} a -> s {lineCoveragePercentage = a} :: CodeCoverage)

-- | The number of lines that are covered by your tests.
codeCoverage_linesCovered :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Natural)
codeCoverage_linesCovered = Lens.lens (\CodeCoverage' {linesCovered} -> linesCovered) (\s@CodeCoverage' {} a -> s {linesCovered = a} :: CodeCoverage)

-- | The number of lines that are not covered by your tests.
codeCoverage_linesMissed :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Natural)
codeCoverage_linesMissed = Lens.lens (\CodeCoverage' {linesMissed} -> linesMissed) (\s@CodeCoverage' {} a -> s {linesMissed = a} :: CodeCoverage)

-- | The ARN of the report.
codeCoverage_reportARN :: Lens.Lens' CodeCoverage (Prelude.Maybe Prelude.Text)
codeCoverage_reportARN = Lens.lens (\CodeCoverage' {reportARN} -> reportARN) (\s@CodeCoverage' {} a -> s {reportARN = a} :: CodeCoverage)

instance Data.FromJSON CodeCoverage where
  parseJSON =
    Data.withObject
      "CodeCoverage"
      ( \x ->
          CodeCoverage'
            Prelude.<$> (x Data..:? "branchCoveragePercentage")
            Prelude.<*> (x Data..:? "branchesCovered")
            Prelude.<*> (x Data..:? "branchesMissed")
            Prelude.<*> (x Data..:? "expired")
            Prelude.<*> (x Data..:? "filePath")
            Prelude.<*> (x Data..:? "id")
            Prelude.<*> (x Data..:? "lineCoveragePercentage")
            Prelude.<*> (x Data..:? "linesCovered")
            Prelude.<*> (x Data..:? "linesMissed")
            Prelude.<*> (x Data..:? "reportARN")
      )

instance Prelude.Hashable CodeCoverage where
  hashWithSalt _salt CodeCoverage' {..} =
    _salt
      `Prelude.hashWithSalt` branchCoveragePercentage
      `Prelude.hashWithSalt` branchesCovered
      `Prelude.hashWithSalt` branchesMissed
      `Prelude.hashWithSalt` expired
      `Prelude.hashWithSalt` filePath
      `Prelude.hashWithSalt` id
      `Prelude.hashWithSalt` lineCoveragePercentage
      `Prelude.hashWithSalt` linesCovered
      `Prelude.hashWithSalt` linesMissed
      `Prelude.hashWithSalt` reportARN

instance Prelude.NFData CodeCoverage where
  rnf CodeCoverage' {..} =
    Prelude.rnf branchCoveragePercentage
      `Prelude.seq` Prelude.rnf branchesCovered
      `Prelude.seq` Prelude.rnf branchesMissed
      `Prelude.seq` Prelude.rnf expired
      `Prelude.seq` Prelude.rnf filePath
      `Prelude.seq` Prelude.rnf id
      `Prelude.seq` Prelude.rnf lineCoveragePercentage
      `Prelude.seq` Prelude.rnf linesCovered
      `Prelude.seq` Prelude.rnf linesMissed
      `Prelude.seq` Prelude.rnf reportARN