All files / src pdk-pipeline-py-project.ts

100% Statements 13/13
100% Branches 2/2
100% Functions 2/2
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62    4x 4x 4x 4x 4x                       4x   4x                 4x 12x     4x   4x       4x   4x                                        
/*! Copyright [Amazon.com](http://amazon.com/), Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0 */
import * as fs from "fs";
import * as path from "path";
import { SampleDir } from "projen";
import { AwsCdkPythonApp, AwsCdkPythonAppOptions } from "projen/lib/awscdk";
import { Pytest } from "projen/lib/python";
 
/**
 * Configuration options for the PDKPipelinePyProject.
 */
export interface PDKPipelinePyProjectOptions extends AwsCdkPythonAppOptions {}
 
/**
 * Synthesizes a Python Project with a CI/CD pipeline.
 *
 * @pjid pdk-pipeline-py
 */
export class PDKPipelinePyProject extends AwsCdkPythonApp {
  constructor(options: PDKPipelinePyProjectOptions) {
    super({
      github: false,
      sample: false,
      pytest: false,
      ...options,
      appEntrypoint:
        options.appEntrypoint || `${options.moduleName}/pipeline.py`,
    });
 
    ["aws_prototyping_sdk", "cdk-nag", "pyhumps"].forEach((dep) =>
      this.addDependency(dep)
    );
 
    this.addDevDependency("pytest");
 
    new SampleDir(this, this.moduleName, {
      sourceDir: path.join(__dirname, "..", "samples", "python", "infra"),
    });
 
    this.pytest = new Pytest(this, options.pytestOptions);
 
    new SampleDir(this, this.testdir, {
      files: {
        "__init__.py": "",
        "test_pipeline.py": fs
          .readFileSync(
            path.join(
              __dirname,
              "..",
              "samples",
              "python",
              "tests",
              "test_pipeline.py"
            )
          )
          .toString()
          .replace("infra.", `${this.moduleName}.`),
      },
    });
  }
}