Example #1
0
    def test_produce_triggers_pre_composition(self, signals):
        config = Configuration()
        site = self.factory.make_site()
        director = Director(config, site, [])

        director.produce()

        signals.pre_composition.send.assert_called_once_with(director)
Example #2
0
    def test_produce_triggers_pre_composition(self, signals):
        config = Configuration()
        site = self.factory.make_site()
        director = Director(config, site, [])

        director.produce()

        signals.pre_composition.send.assert_called_once_with(director)
Example #3
0
    def test_process_file_triggers_pre_composition(self, signals):
        config = Configuration()
        site = self.factory.make_site()
        director = Director(config, site, [])
        marker = os.path.join(site.path, 'marker.txt')
        open(marker, 'w').close()

        director.process_file(marker)

        signals.pre_composition.send.assert_called_once_with(director)
Example #4
0
    def test_process_file_triggers_pre_composition(self, signals):
        config = Configuration()
        site = self.factory.make_site()
        director = Director(config, site, [])
        marker = os.path.join(site.path, 'marker.txt')
        open(marker, 'w').close()

        director.process_file(marker)

        signals.pre_composition.send.assert_called_once_with(director)
Example #5
0
    def test_skips_file_with_skip_extension(self):
        config = Configuration()
        site = self.factory.make_site()
        skip = 'to_my_lou.swp'
        open(os.path.join(site.path, skip), 'w').close()
        director = Director(config, site)

        director.produce()

        out_skip = os.path.join(site.output_root, skip)
        self.assertFalse(os.path.exists(out_skip))
Example #6
0
    def test_generates_output_directory(self):
        config = Configuration()
        site = self.factory.make_site()
        another = os.path.join(site.path, 'another')
        os.mkdir(another)
        director = Director(config, site, [])

        director.produce()

        another_out = os.path.join(site.output_root, 'another')
        self.assertTrue(os.path.isdir(another_out))
Example #7
0
    def test_skips_file_in_skip_list(self):
        config = Configuration()
        site = self.factory.make_site()
        skip = Site.CONFIG
        open(os.path.join(site.path, skip), 'w').close()
        director = Director(config, site)

        director.produce()

        out_skip = os.path.join(site.output_root, skip)
        self.assertFalse(os.path.exists(out_skip))
Example #8
0
    def test_skips_templates_directory(self):
        config = Configuration()
        site = self.factory.make_site()
        templates = os.path.join(site.path, 'templates')
        os.mkdir(templates)
        director = Director(config, site, [])

        director.produce()

        out_templates = os.path.join(site.output_root, 'templates')
        self.assertFalse(os.path.exists(out_templates))
Example #9
0
    def test_skips_file_in_skip_list(self):
        config = Configuration()
        site = self.factory.make_site()
        skip = Site.CONFIG
        open(os.path.join(site.path, skip), 'w').close()
        director = Director(config, site, [])

        director.produce()

        out_skip = os.path.join(site.output_root, skip)
        self.assertFalse(os.path.exists(out_skip))
Example #10
0
    def test_skips_file_with_skip_extension(self):
        config = Configuration()
        site = self.factory.make_site()
        skip = 'to_my_lou.swp'
        open(os.path.join(site.path, skip), 'w').close()
        director = Director(config, site, [])

        director.produce()

        out_skip = os.path.join(site.output_root, skip)
        self.assertFalse(os.path.exists(out_skip))
Example #11
0
    def test_skips_templates_directory(self):
        config = Configuration()
        site = self.factory.make_site()
        templates = os.path.join(site.path, 'templates')
        os.mkdir(templates)
        director = Director(config, site)

        director.produce()

        out_templates = os.path.join(site.output_root, 'templates')
        self.assertFalse(os.path.exists(out_templates))
Example #12
0
    def test_generates_output_directory(self):
        config = Configuration()
        site = self.factory.make_site()
        another = os.path.join(site.path, 'another')
        os.mkdir(another)
        director = Director(config, site)

        director.produce()

        another_out = os.path.join(site.output_root, 'another')
        self.assertTrue(os.path.isdir(another_out))
Example #13
0
    def test_skips_directory(self):
        dirnames = ['keep', '.sass-cache', 'another_keeper']
        site = self.factory.make_site()
        config = Configuration()
        director = Director(config, site)

        director.prune_skip_directories(dirnames)

        self.assertEqual(2, len(dirnames))
        self.assertEqual('keep', dirnames[0])
        self.assertEqual('another_keeper', dirnames[1])
Example #14
0
    def test_process_directory_triggers_pre_composition(self, signals):
        config = Configuration()
        site = self.factory.make_site()
        director = Director(config, site, [])
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        directory = os.path.join(site.path, 'directory')
        os.mkdir(directory)

        director.process_directory(directory)

        signals.pre_composition.send.assert_called_once_with(director)
Example #15
0
    def test_generates_with_user_specified_outdir(self):
        config = Configuration()
        config.outdir = tempfile.mkdtemp()
        site = self.factory.make_site()
        marker = 'marker.txt'
        open(os.path.join(site.path, marker), 'w').close()
        director = Director(config, site, [])

        director.produce()

        out_marker = os.path.join(config.outdir, marker)
        self.assertTrue(os.path.exists(out_marker))
Example #16
0
    def test_file_in_source_and_outdir_is_ignored(self):
        """A source file is ignored when the source dir is in the outdir."""
        config = Configuration()
        config.outdir = tempfile.mkdtemp()
        site_path = os.path.join(config.outdir, 'site')
        site = Site(site_path)
        director = Director(config, site, [])
        fake_file = os.path.join(site_path, 'fake')

        is_in_output = director.is_in_output(fake_file)

        self.assertFalse(is_in_output)
Example #17
0
    def test_file_in_source_and_outdir_is_ignored(self):
        """A source file is ignored when the source dir is in the outdir."""
        config = Configuration()
        config.outdir = tempfile.mkdtemp()
        site_path = os.path.join(config.outdir, 'site')
        site = Site(site_path)
        director = Director(config, site, [])
        fake_file = os.path.join(site_path, 'fake')

        is_in_output = director.is_in_output(fake_file)

        self.assertFalse(is_in_output)
Example #18
0
    def test_generates_with_user_specified_outdir(self):
        config = Configuration()
        config.outdir = tempfile.mkdtemp()
        site = self.factory.make_site()
        marker = 'marker.txt'
        open(os.path.join(site.path, marker), 'w').close()
        director = Director(config, site)

        director.produce()

        out_marker = os.path.join(config.outdir, marker)
        self.assertTrue(os.path.exists(out_marker))
Example #19
0
    def test_process_directory_triggers_pre_composition(self, signals):
        config = Configuration()
        site = self.factory.make_site()
        director = Director(config, site, [])
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        directory = os.path.join(site.path, 'directory')
        os.mkdir(directory)

        director.process_directory(directory)

        signals.pre_composition.send.assert_called_once_with(director)
Example #20
0
    def test_process_file_ignores_templates(self):
        config = Configuration()
        site = self.factory.make_site()
        default = os.path.join(site.path, 'template.html')
        open(default, 'w').close()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        director = Director(config, site, [])

        director.process_file(default)

        default_output = os.path.join(config.outdir, 'template.html')
        self.assertFalse(os.path.exists(default_output))
Example #21
0
    def test_does_timing(self):
        mock_time = mock.Mock()
        mock_time.return_value = 42.0  # Return float so that format works.
        site = self.factory.make_site()
        open(os.path.join(site.path, 'fake.md'), 'w').close()
        config = Configuration()
        config.timing = True
        director = Director(config, site)

        with mock.patch('handroll.director.time.time', mock_time):
            director.produce()

        self.assertTrue(mock_time.called)
Example #22
0
    def test_does_timing(self):
        mock_time = mock.Mock()
        mock_time.return_value = 42.0  # Return float so that format works.
        site = self.factory.make_site()
        open(os.path.join(site.path, 'fake.md'), 'w').close()
        config = Configuration()
        config.timing = True
        director = Director(config, site, [])

        with mock.patch('handroll.director.time.time', mock_time):
            director.produce()

        self.assertTrue(mock_time.called)
Example #23
0
    def test_process_file_ignores_templates(self):
        config = Configuration()
        site = self.factory.make_site()
        default = os.path.join(site.path, 'template.html')
        open(default, 'w').close()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        director = Director(config, site, [])

        director.process_file(default)

        default_output = os.path.join(config.outdir, 'template.html')
        self.assertFalse(os.path.exists(default_output))
Example #24
0
    def test_process_directory_ignores_templates(self):
        config = Configuration()
        site = self.factory.make_site()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        director = Director(config, site, [])
        directory = os.path.join(director.catalog.templates_path, 'test')
        os.makedirs(directory)

        director.process_directory(directory)

        directory_output = os.path.join(config.outdir,
                                        director.catalog.TEMPLATES_DIR, 'test')
        self.assertFalse(os.path.exists(directory_output))
Example #25
0
    def test_process_directory_ignores_templates(self):
        config = Configuration()
        site = self.factory.make_site()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        director = Director(config, site, [])
        directory = os.path.join(director.catalog.templates_path, 'test')
        os.makedirs(directory)

        director.process_directory(directory)

        directory_output = os.path.join(
            config.outdir, director.catalog.TEMPLATES_DIR, 'test')
        self.assertFalse(os.path.exists(directory_output))
Example #26
0
    def test_process_directory_ignores_directories_already_in_output(self):
        # Avoid processing directories in output for the same reason that
        # file processing is skipped.
        config = Configuration()
        site = self.factory.make_site()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        directory = os.path.join(config.outdir, 'directory')
        os.mkdir(directory)
        director = Director(config, site, [])

        director.process_directory(directory)

        directory_output = os.path.join(config.outdir, 'outdir', 'directory')
        self.assertFalse(os.path.exists(directory_output))
Example #27
0
    def test_process_directory_ignores_directories_already_in_output(self):
        # Avoid processing directories in output for the same reason that
        # file processing is skipped.
        config = Configuration()
        site = self.factory.make_site()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        directory = os.path.join(config.outdir, 'directory')
        os.mkdir(directory)
        director = Director(config, site, [])

        director.process_directory(directory)

        directory_output = os.path.join(config.outdir, 'outdir', 'directory')
        self.assertFalse(os.path.exists(directory_output))
Example #28
0
def prepare_director(args, site):
    """Prepare the director to produce a site."""
    loader = ExtensionLoader()
    loader.load()
    config = build_config(site.config_file, args)
    extensions = loader.get_active_extensions(config)
    return Director(config, site, extensions)
Example #29
0
    def test_process_file_ignores_files_already_in_output(self):
        # This condition is checked because the output directory can be within
        # the source (e.g., the default of storing results in 'output'). If
        # the watcher is watching for any changes in site source, then
        # processing files in the output directory could lead the watcher into
        # an infinite loop.
        config = Configuration()
        site = self.factory.make_site()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        marker = os.path.join(config.outdir, 'marker.md')
        open(marker, 'w').close()
        director = Director(config, site, [])

        director.process_file(marker)

        marker_output = os.path.join(config.outdir, 'marker.html')
        self.assertFalse(os.path.exists(marker_output))
Example #30
0
    def test_process_file_ignores_files_already_in_output(self):
        # This condition is checked because the output directory can be within
        # the source (e.g., the default of storing results in 'output'). If
        # the watcher is watching for any changes in site source, then
        # processing files in the output directory could lead the watcher into
        # an infinite loop.
        config = Configuration()
        site = self.factory.make_site()
        config.outdir = os.path.join(site.path, 'outdir')
        os.mkdir(config.outdir)
        marker = os.path.join(config.outdir, 'marker.md')
        open(marker, 'w').close()
        director = Director(config, site, [])

        director.process_file(marker)

        marker_output = os.path.join(config.outdir, 'marker.html')
        self.assertFalse(os.path.exists(marker_output))
Example #31
0
def main(argv=sys.argv):
    args = parse_args(argv)

    if args.verbose:
        logger.setLevel(logging.INFO)

    if args.debug:
        logger.setLevel(logging.DEBUG)

    try:
        site = Site(args.site)
        valid, message = site.is_valid()
        if not valid:
            raise AbortError(_('Invalid site source: {0}').format(message))

        config = build_config(site.config_file, args)
        director = Director(config, site)
        director.produce()
        print(_('Complete.'))
    except AbortError as abort:
        logger.error(str(abort))
        sys.exit(_('Incomplete.'))
Example #32
0
 def setUp(self):
     config = Configuration()
     config.outdir = tempfile.mkdtemp()
     self.site = self.factory.make_site()
     self.director = Director(config, self.site, [])
Example #33
0
 def make_director(self):
     config = self.make_configuration()
     site = self.make_site()
     return Director(config, site, [])