예제 #1
0
    def test_get_package(self):
        package_a = MyPackage(self.TMP_DIR, "packagea")

        SetupCfg(package_a.full_name).write(package_a.package_dir)
        with chdir(self.TMP_DIR):
            Package(package_name=package_a.full_name)
            Package(package_dir=package_a.package_dir)
예제 #2
0
    def test_no_changed_packages(self):
        with chdir(self.TMP_DIR):
            parent_branch = detect_changed_packages.get_parent_branch()
            changed_files = detect_changed_packages.get_changed_files(
                parent_branch)

        self.assertEqual(changed_files, [], parent_branch)
예제 #3
0
    def test_install_with_packages_created(self):
        cmd = ["scream", "new", "com.packagea"]

        with chdir(self.TMP_DIR):
            # Add a package.
            with mock.patch.object(sys, "argv", cmd):
                with self.assertRaises(SystemExit) as err:
                    scream.Scream()
                self.assertEqual(err.exception.code, 0)

            subprocess.call(["git", "add", "."])

        with chdir(self.TMP_DIR):
            with mock.patch.object(sys, "argv", self.cmd):
                with self.assertRaises(SystemExit) as err:
                    scream.Scream()
                self.assertEqual(err.exception.code, 0)
예제 #4
0
    def test_get_configs(self):
        package_a = MyPackage(self.TMP_DIR, "packagea")

        with chdir(self.TMP_DIR):
            os.mkdir(package_a.name)
            SetupCfg(package_a.full_name).write(package_a.package_dir)

            self.assertIsInstance(MockPackage().get_cfg(package_a.package_dir),
                                  configparser.ConfigParser)
예제 #5
0
파일: test_test.py 프로젝트: Eagerod/scream
    def setUp(cls):
        super(TestPackages, cls).setUp()
        # Create a fake package that's available to test.
        with chdir(cls.TMP_DIR):
            package_a = MyPackage(d=cls.TMP_DIR, name="packagea")

            os.mkdir(package_a.name)
            SetupCfg(package_a.full_name).write(package_a.package_dir)

            subprocess.call(["git", "add", "."])
예제 #6
0
    def test_test_no_packages_created(self):

        cmds = [self.test, self.test_package, self.test_all, self.test_dry]

        with chdir(self.TMP_DIR):
            for cmd in cmds:
                with mock.patch.object(sys, "argv", cmd):
                    with self.assertRaises(SystemExit) as err:
                        scream.Scream()
                    self.assertEqual(err.exception.code, 0)
예제 #7
0
 def test_get_package_doesnt_exist(self):
     """Test both ways to initialize
     """
     package_a = MyPackage(self.TMP_DIR, "packagea")
     with chdir(self.TMP_DIR):
         with self.assertRaises(PackageDoesNotExistException):
             Package(package_name=package_a.full_name).get_dependents(
                 package_a.package_dir)
         with self.assertRaises(PackageDoesNotExistException):
             Package(package_dir=package_a.package_dir).get_dependents(
                 package_a.package_dir)
예제 #8
0
    def test_resolve_dependencies_depends_on_itself(self):
        package_a = MyPackage(self.TMP_DIR, "packagea")

        SetupCfg(package_a.full_name,
                 dependencies=[package_a.full_name
                               ]).write(package_a.package_dir)

        with chdir(self.TMP_DIR):
            with self.assertRaises(SystemExit) as err:
                Package(package_name=package_a.full_name).get_dependents(
                    package_a.package_dir)
            self.assertTrue('is dependent on itself' in err.exception.args[0])
예제 #9
0
        def setUp(cls):
            super(Base.TestNewMonorepoGitInit, cls).setUp()
            with chdir(cls.TMP_DIR):
                scream.init_monorepo(
                    cls.TMP_DIR
                )  # This is tested directly in integration_tests/test_cli.py
                # The user is required to setup git to get the most out of `scream test` and `scream build`.
                subprocess.call(
                    ["git", "config", "user.email", "*****@*****.**"])
                subprocess.call(["git", "config", "user.name", "Ryan Kelly"])

                subprocess.call(["git", "add", "."])
                subprocess.call(["git", "commit", "-m", "init monorepo!"])
예제 #10
0
    def test_cmd_b4_init_monorepo(self):
        test_command = ["scream", "test"]
        new_command = ["scream", "new", "company.packagea"]
        install_command = ["scream", "install", "company_packagea"]

        cmds = [test_command, new_command, install_command]

        with chdir(self.TMP_DIR):
            for cmd in cmds:
                with mock.patch.object(sys, "argv", cmd):
                    with self.assertRaises(SystemExit) as err:
                        scream.Scream()
                    self.assertEqual(err.exception.code, 1)
예제 #11
0
    def test_changed_packages_ignore_changes(self):
        input_changes = [["A", "packagea/README.md"]]
        expected_changes = {}

        with chdir(self.TMP_DIR):
            _dir = "packagea"
            file_name = "README.md"
            File(file_name, "# New readme change!").write(_dir)

            subprocess.call(["git", "add", "."])

            changed_packages = detect_changed_packages.get_unique_changed_packages(
                input_changes)

        self.assertEqual(changed_packages, expected_changes)
예제 #12
0
    def test_changed_files(self):
        expected_changes = [['A', 'packagea/setup.cfg']]

        with chdir(self.TMP_DIR):
            package_a = MyPackage(d=self.TMP_DIR, name="packagea")

            os.mkdir(package_a.name)
            SetupCfg(package_a.full_name).write(package_a.package_dir)

            subprocess.call(["git", "add", "."])

            parent_branch = detect_changed_packages.get_parent_branch()
            changed_files = detect_changed_packages.get_changed_files(
                parent_branch)

        self.assertEqual(changed_files, expected_changes, parent_branch)
예제 #13
0
    def test_resolve_circular_dependencies(self):
        package_b = MyPackage(self.TMP_DIR, "packageb")
        package_a = MyPackage(self.TMP_DIR, "packagea")

        SetupCfg(package_a.full_name,
                 dependencies=[package_b.full_name
                               ]).write(package_a.package_dir)
        SetupCfg(package_b.full_name,
                 dependencies=[package_a.full_name
                               ]).write(package_b.package_dir)

        with chdir(self.TMP_DIR):
            with self.assertRaises(SystemExit) as err:
                Package(package_name=package_a.full_name).get_dependents(
                    package_a.package_dir)
            self.assertTrue(
                "Circular dependency detected!" in err.exception.args[0])
예제 #14
0
    def test_changed_packages(self):
        input_changes = [["A", "packagea/module.py"]]
        expected_changes = "company_packagea"

        with chdir(self.TMP_DIR):
            package_a = MyPackage(d=self.TMP_DIR, name="packagea")

            os.mkdir(package_a.name)
            SetupCfg(package_a.full_name).write(package_a.package_dir)

            subprocess.call(["git", "add", "."])

            changed_packages = detect_changed_packages.get_unique_changed_packages(
                input_changes)
            changed_package = list(changed_packages.keys())[0]

        self.assertEqual(changed_package, expected_changes)
예제 #15
0
파일: test_test.py 프로젝트: Eagerod/scream
 def test_test_commands(self):
     cmds_and_expected_output = [({
         "package_name": None
     }, ['tox', '-e', 'py36-company_packagea']),
                                 ({
                                     "package_name": None,
                                     "dry_run": True
                                 }, None), ({
                                     "all": True
                                 }, ['tox']),
                                 ({
                                     "package_name": "packagea"
                                 }, ['tox', '-e', 'packagea']),
                                 ({
                                     "package_name": "packagea",
                                     "all": True
                                 }, ['tox', '-e', 'packagea'])]
     with chdir(self.TMP_DIR):
         for cmd, expected in cmds_and_expected_output:
             test_cmd = build_test_cmd(**cmd)
             self.assertEqual(test_cmd, expected)
예제 #16
0
    def new(self):
        parser = argparse.ArgumentParser()
        parser.add_argument('package_name')
        args = parser.parse_args(sys.argv[2:])

        try:
            namespaces, package_name = validate_package_name(args.package_name)
        except PackageNamingException as err:
            sys.exit(err)

        d = os.path.join(self.monorepo.root_dir, package_name)
        if os.path.exists(d):
            logging.info('Directory `{}` already exists.'.format(d))
            sys.exit(1)

        os.makedirs(d)
        with utils.chdir(d, cwd=self.monorepo.root_dir):
            new_package(d, namespaces, package_name)
            logging.info('Created project `{}`'.format(args.package_name))

        self.monorepo.sync()
예제 #17
0
    def test_resolve_dependencies(self):
        package_c = MyPackage(self.TMP_DIR, "packagec")
        package_b = MyPackage(self.TMP_DIR, "packageb")
        package_a = MyPackage(self.TMP_DIR, "packagea")

        SetupCfg(package_a.full_name,
                 dependencies=[package_b.full_name, package_c.full_name
                               ]).write(package_a.package_dir)
        SetupCfg(package_b.full_name,
                 dependencies=[package_c.full_name
                               ]).write(package_b.package_dir)
        SetupCfg(package_c.full_name).write(package_c.package_dir)

        with chdir(self.TMP_DIR):
            a_dependencies = Package(
                package_name=package_a.full_name).get_dependents(
                    package_a.package_dir)
            self.assertEqual(a_dependencies[0].package_name,
                             "company_packageb")
            self.assertEqual(a_dependencies[1].package_name,
                             "company_packagec")
예제 #18
0
 def test_get_parent_no_parent(self):
     with chdir(self.TMP_DIR):
         self.assertEqual(detect_changed_packages.get_parent_branch(),
                          "master")
예제 #19
0
 def test_scream_test_gracefully_handle_no_git(self):
     with chdir(self.TMP_DIR):
         with mock.patch.object(sys, "argv", ["scream", "test"]):
             with self.assertRaises(SystemExit):
                 scream.Scream()
예제 #20
0
 def test_init_monorepo(self):
     with chdir(self.TMP_DIR):
         with mock.patch.object(sys, "argv", ["scream", "init"]):
             with self.assertRaises(SystemExit) as err:
                 scream.Scream()
             self.assertEqual(err.exception.code, 0)
예제 #21
0
 def test_new_package(self):
     with chdir(self.TMP_DIR):
         with mock.patch.object(sys, "argv", self.cmd):
             with self.assertRaises(SystemExit) as err:
                 scream.Scream()
             self.assertEqual(err.exception.code, 0)
예제 #22
0
 def test_get_parent_branch(self):
     with chdir(self.TMP_DIR):
         subprocess.call(["git", "checkout", "-b", "otherbranch"])
         self.assertEqual(detect_changed_packages.get_parent_branch(),
                          "master")