Example #1
0
 def test_command_line_replace(self):
     """Check simple replacement via command line."""
     file_base_name = os.path.basename(self.file_name)
     massedit.command_line(
         [
             "massedit.py",
             "-w",
             "-e",
             "re.sub('Dutch', 'Guido', line)",
             "-w",
             "-s",
             self.workspace.top_dir,
             file_base_name,
         ]
     )
     with io.open(self.file_name, "r") as new_file:
         new_lines = new_file.readlines()
     original_lines = zen.splitlines(True)
     self.assertEqual(len(new_lines), len(original_lines))
     n_lines = len(new_lines)
     for line in range(n_lines):
         if line != 16:
             self.assertEqual(new_lines[line - 1], original_lines[line - 1])
         else:
             expected_line_16 = "Although that way may not be obvious " + "at first unless you're Guido.\n"
             self.assertEqual(new_lines[line - 1], expected_line_16)
Example #2
0
    def test_preserve_permissions(self):
        """Test that the exec bit is preserved when processing file."""
        import stat

        def is_executable(file_name):
            """Check if the file has the exec bit set."""
            return stat.S_IXUSR & os.stat(file_name)[stat.ST_MODE] > 0

        self.assertFalse(is_executable(self.file_name))
        mode = os.stat(self.file_name)[stat.ST_MODE] | stat.S_IEXEC
        # Windows supports READ and WRITE, but not EXEC bit.
        os.chmod(self.file_name, mode)
        self.assertTrue(is_executable(self.file_name))
        file_base_name = os.path.basename(self.file_name)
        massedit.command_line(
            [
                "massedit.py",
                "-w",
                "-e",
                "re.sub('Dutch', 'Guido', line)",
                "-w",
                "-s",
                self.workspace.top_dir,
                file_base_name,
            ]
        )
        statinfo = os.stat(self.file_name)
        self.assertEqual(statinfo.st_mode, mode)
Example #3
0
    def test_preserve_permissions(self):
        """Test that the exec bit is preserved when processing file."""
        import stat

        def is_executable(file_name):
            """Check if the file has the exec bit set."""
            return stat.S_IXUSR & os.stat(file_name)[stat.ST_MODE] > 0

        self.assertFalse(is_executable(self.file_name))
        mode = os.stat(self.file_name)[stat.ST_MODE] | stat.S_IEXEC
        # Windows supports READ and WRITE, but not EXEC bit.
        os.chmod(self.file_name, mode)
        self.assertTrue(is_executable(self.file_name))
        file_base_name = os.path.basename(self.file_name)
        massedit.command_line(
            [
                "massedit.py",
                "-w",
                "-e",
                "re.sub('Dutch', 'Guido', line)",
                "-w",
                "-s",
                self.workspace.top_dir,
                file_base_name,
            ]
        )
        statinfo = os.stat(self.file_name)
        self.assertEqual(statinfo.st_mode, mode)
Example #4
0
 def test_command_line_replace(self):
     """Check simple replacement via command line."""
     file_base_name = os.path.basename(self.file_name)
     massedit.command_line(
         [
             "massedit.py",
             "-w",
             "-e",
             "re.sub('Dutch', 'Guido', line)",
             "-w",
             "-s",
             self.workspace.top_dir,
             file_base_name,
         ]
     )
     with io.open(self.file_name, "r") as new_file:
         new_lines = new_file.readlines()
     original_lines = zen.splitlines(True)
     self.assertEqual(len(new_lines), len(original_lines))
     n_lines = len(new_lines)
     for line in range(n_lines):
         if line != 16:
             self.assertEqual(new_lines[line - 1], original_lines[line - 1])
         else:
             expected_line_16 = (
                 "Although that way may not be obvious "
                 + "at first unless you're Guido.\n"
             )
             self.assertEqual(new_lines[line - 1], expected_line_16)
Example #5
0
 def test_process_subdirectory(self):
     """Check that the editor works correctly in subdirectories."""
     arguments = ["-r", "-s", self.workspace.top_dir, "-w", "-e", "re.sub('text', 'blah blah', line)", "*.txt"]
     processed_files = massedit.command_line(arguments)
     self.assertEqual(processed_files, [self.file_name])
     with io.open(self.file_name) as fh:
         new_lines = fh.readlines()
     self.assertEqual(new_lines, ["some blah blah"])
Example #6
0
 def test_maxdepth_one(self):
     """Check that specifying -m 1 prevents modifiction to subdir."""
     arguments = ['-r', '-s', self.directory, '-i',
                  '-e', "re.sub('text', 'blah blah', line)",
                  '-m', '0', '*.txt']
     processed_files = massedit.command_line(arguments)
     self.assertEqual(processed_files, [])
     with open(self.file_name) as fh:
         new_lines = fh.readlines()
     self.assertEqual(new_lines, ['some text'])
Example #7
0
 def test_process_subdirectory(self):
     """Check that the editor works correctly in subdirectories."""
     arguments = ["-r", "-s", self.workspace.top_dir, "-w",
                  "-e", "re.sub('text', 'blah blah', line)",
                  "*.txt"]
     processed_files = massedit.command_line(arguments)
     self.assertEqual(processed_files, [self.file_name])
     with io.open(self.file_name) as fh:
         new_lines = fh.readlines()
     self.assertEqual(new_lines, ["some blah blah"])
Example #8
0
 def test_process_subdirectory(self):
     """Check that the editor works correctly in subdirectories."""
     arguments = ['-r', '-s', self.directory, '-i',
                  '-e', "re.sub('text', 'blah blah', line)",
                  '*.txt']
     processed_files = massedit.command_line(arguments)
     self.assertEqual(processed_files, [self.file_name])
     with open(self.file_name) as fh:
         new_lines = fh.readlines()
     self.assertEqual(new_lines, ['some blah blah'])
Example #9
0
 def test_maxdepth_one(self):
     """Check that specifying -m 1 prevents modifiction to subdir."""
     arguments = ["-r", "-s", self.workspace.top_dir, "-w",
                  "-e", "re.sub('text', 'blah blah', line)",
                  "-m", "0", "*.txt"]
     processed_files = massedit.command_line(arguments)
     self.assertEqual(processed_files, [])
     with io.open(self.file_name) as fh:
         new_lines = fh.readlines()
     self.assertEqual(new_lines, ["some text"])
Example #10
0
 def test_maxdepth_one(self):
     """Checks that specifying -m 1 prevents modifiction to subdir."""
     arguments = ["-r", "-s", self.directory, "-w",
                  "-e",  "re.sub('text', 'blah blah', line)",
                  "-m", "0", "*.txt"]
     processed_files = massedit.command_line(arguments)
     self.assertEqual(processed_files, [])
     with open(self.file_name) as fh:
         new_lines = fh.readlines()
     self.assertEqual(new_lines, ["some text"])
Example #11
0
 def test_maxdepth_one(self):
     """Check that specifying -m 1 prevents modifiction to subdir."""
     arguments = ["-r", "-s", self.workspace.top_dir, "-w",
                  "-e", "re.sub('text', 'blah blah', line)",
                  "-m", "0", "*.txt"]
     processed_files = massedit.command_line(arguments)
     self.assertEqual(processed_files, [])
     for ii, file_name in enumerate(self.file_names):
         with io.open(file_name) as fh:
             new_lines = fh.readlines()
         self.assertEqual(new_lines, ["some text " + unicode(ii)])
Example #12
0
 def test_command_line_replace(self):
     """Check simple replacement via command line."""
     file_base_name = os.path.basename(self.file_name)
     massedit.command_line(['massedit.py', '-i', '-e',
                            "re.sub('Dutch', 'Guido', line)",
                            '-i', '-s', self.start_directory,
                            file_base_name])
     with open(self.file_name, 'r') as new_file:
         new_lines = new_file.readlines()
     original_lines = self.text.splitlines(True)
     self.assertEqual(len(new_lines), len(original_lines))
     n_lines = len(new_lines)
     for line in range(n_lines):
         if line != 16:
             self.assertEqual(new_lines[line - 1],
                              original_lines[line - 1])
         else:
             expected_line_16 = \
                 'Although that way may not be obvious ' + \
                 "at first unless you're Guido.\n"
             self.assertEqual(new_lines[line - 1], expected_line_16)
Example #13
0
 def test_absolute_path_arg(self):
     """Check dry run via command line with single file name argument."""
     out_file_name = self.workspace.get_file()
     arguments = ["massedit.py", "-e", "re.sub('Dutch', 'Guido', line)", "-o", out_file_name, self.file_name]
     processed = massedit.command_line(arguments)
     self.assertEqual(processed, [os.path.abspath(self.file_name)])
     with io.open(self.file_name, "r") as updated_file:
         new_lines = updated_file.readlines()
     original_lines = zen.splitlines(True)
     self.assertEqual(original_lines, new_lines)
     self.assertTrue(os.path.exists(out_file_name))
     os.unlink(out_file_name)
Example #14
0
 def test_absolute_path_arg(self):
     """Check dry run via command line with single file name argument."""
     out_file_name = tempfile.mktemp()
     arguments = ['massedit.py', '-e', "re.sub('Dutch', 'Guido', line)",
                  '-o', out_file_name, self.file_name]
     processed = massedit.command_line(arguments)
     self.assertEqual(processed,
                      [os.path.abspath(self.file_name)])
     with open(self.file_name, 'r') as updated_file:
         new_lines = updated_file.readlines()
     original_lines = self.text.splitlines(True)
     self.assertEqual(original_lines, new_lines)
     self.assertTrue(os.path.exists(out_file_name))
     os.unlink(out_file_name)
Example #15
0
 def test_absolute_path_arg(self):
     """Check dry run via command line with single file name argument."""
     out_file_name = self.workspace.get_file()
     arguments = ["massedit.py", "-e", "re.sub('Dutch', 'Guido', line)",
                  "-o", out_file_name,
                  self.file_name]
     processed = massedit.command_line(arguments)
     self.assertEqual(processed, [os.path.abspath(self.file_name)])
     with io.open(self.file_name, "r") as updated_file:
         new_lines = updated_file.readlines()
     original_lines = zen.splitlines(True)
     self.assertEqual(original_lines, new_lines)
     self.assertTrue(os.path.exists(out_file_name))
     os.unlink(out_file_name)
Example #16
0
 def test_command_line_check(self):
     """Check dry run via command line with start directory option."""
     out_file_name = tempfile.mktemp()
     basename = os.path.basename(self.file_name)
     arguments = ['test', '-e', "re.sub('Dutch', 'Guido', line)",
                  '-o', out_file_name, '-s', self.start_directory,
                  basename]
     processed = massedit.command_line(arguments)
     self.assertEqual(processed,
                      [os.path.abspath(self.file_name)])
     with open(self.file_name, 'r') as updated_file:
         new_lines = updated_file.readlines()
     original_lines = self.text.splitlines(True)
     self.assertEqual(original_lines, new_lines)
     self.assertTrue(os.path.exists(out_file_name))
     os.unlink(out_file_name)
Example #17
0
 def test_command_line_check(self):
     """Check dry run via command line with start workspace option."""
     out_file_name = self.workspace.get_file()
     basename = os.path.basename(self.file_name)
     arguments = ["test", "-e", "re.sub('Dutch', 'Guido', line)",
                  "-o", out_file_name,
                  "-s", self.workspace.top_dir,
                  basename]
     processed = massedit.command_line(arguments)
     self.assertEqual(processed, [os.path.abspath(self.file_name)])
     with io.open(self.file_name, "r") as updated_file:
         new_lines = updated_file.readlines()
     original_lines = zen.splitlines(True)
     self.assertEqual(original_lines, new_lines)
     self.assertTrue(os.path.exists(out_file_name))
     os.unlink(out_file_name)
Example #18
0
 def test_command_line_check(self):
     """Check dry run via command line with start workspace option."""
     out_file_name = self.workspace.get_file()
     basename = os.path.basename(self.file_name)
     arguments = ["test", "-e", "re.sub('Dutch', 'Guido', line)",
                  "-o", out_file_name,
                  "-s", self.workspace.top_dir,
                  basename]
     processed = massedit.command_line(arguments)
     self.assertEqual(processed, [os.path.abspath(self.file_name)])
     with io.open(self.file_name, "r") as updated_file:
         new_lines = updated_file.readlines()
     original_lines = zen.splitlines(True)
     self.assertEqual(original_lines, new_lines)
     self.assertTrue(os.path.exists(out_file_name))
     os.unlink(out_file_name)
Example #19
0
 def test_process_subdirectory(self):
     """Check that the editor works correctly in subdirectories."""
     arguments = [
         "-r",
         "-s",
         self.workspace.top_dir,
         "-w",
         "-e",
         "re.sub('text', 'blah blah', line)",
         "*.txt",
     ]
     processed_files = massedit.command_line(arguments)
     self.assertEqual(sorted(processed_files), sorted(self.file_names))
     for ii, file_name in enumerate(self.file_names):
         with io.open(file_name) as fh:
             new_lines = fh.readlines()
         self.assertEqual(new_lines, ["some blah blah " + unicode(ii)])
Example #20
0
 def test_generate_fixer(self, mock_open):
     """Generate a fixer template file with --generate option."""
     cmd = 'massedit.py --generate fixer.py'
     massedit.command_line(cmd.split())
     mock_open.assert_called_with('fixer.py', 'w+')
     mock_open().write.assert_called_with(massedit.fixer_template)
Example #21
0
 def test_generate_fixer(self, mock_open):
     """Generate a fixer template file with --generate option."""
     cmd = 'massedit.py --generate fixer.py'
     massedit.command_line(cmd.split())
     mock_open.assert_called_with('fixer.py', 'w+')
     mock_open().write.assert_called_with(massedit.fixer_template)
Example #22
0
 def test_from_stdin(self, stdout_, _):
     """A simple dash reads input test from stdin."""
     # Note that double quotes will be interpreted by Python below.
     cmd = """massedit.py -e line.replace("text","test") -w -"""
     massedit.command_line(cmd.split())
     self.assertEqual("some example test", stdout_.getvalue())