Esempio n. 1
0
 def test_git_subdir_is_dirty_modified_outside(self):
     with open(join(REPODIR, 'ignored_in_root.txt'), 'a') as f:
         f.write("\nmore content\n")
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 2
0
 def test_git_is_dirty_modified(self):
     with open(join(REPODIR, 'subdir/to_be_kept.txt'), 'a') as f:
         f.write("\nmore content\n")
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertTrue(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertFalse(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 3
0
 def test_git_subdir_is_dirty_added_outside(self):
     makefile('added.txt', 'this will be added')
     self._git_add(['added.txt'])
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertTrue(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
 def snapshot(self) -> Tuple[Optional[str], Optional[str]]:
     if self.compute_hash:
         h = hashtree.generate_sha_signature(self.rsrcdir,
                                             self.local_path,
                                             ignore=self.ignore,
                                             verbose=self.workspace.verbose)
     else:
         h = hashtree.generate_size_signature(
             self.rsrcdir,
             self.local_path,
             ignore=self.ignore,
             verbose=self.workspace.verbose)
     assert os.path.exists(os.path.join(self.rsrcdir, h))
     if isinstance(self.workspace, git_backend.Workspace):
         workspace_path = self.workspace.get_workspace_local_path_if_any()
         assert workspace_path is not None
         if is_git_staging_dirty(
                 workspace_path,
                 subdir=_relative_rsrc_dir_for_git_workspace(
                     self.role, self.name)):
             call_subprocess(
                 [
                     GIT_EXE_PATH,
                     "commit",
                     "-m",
                     "Add snapshot hash files for resource %s" % self.name,
                 ],
                 cwd=workspace_path,
                 verbose=self.workspace.verbose,
             )
     return (h, None)
 def test_commit_filename_with_spaces(self):
     """See issue #79 (https://github.com/data-workspaces/data-workspaces-core/issues/79)
     Files with spaces returned by git status --porcelain are in quotes!
     """
     os.mkdir(join(REPODIR, 'subdir'))
     makefile('subdir/to_be_deleted.txt', 'this file will be deleted')
     makefile('subdir/to_be_left_alone.txt', 'this file to be left alone')
     makefile('subdir/to be modified.txt', 'this file to be modified')
     makefile('root_file1.txt', 'this should not be changed')
     self._git_add([
         'subdir/to_be_deleted.txt', 'subdir/to_be_left_alone.txt',
         'subdir/to be modified.txt', 'root_file1.txt'
     ])
     self._run(['commit', '-m', 'initial version'])
     os.remove(join(REPODIR, 'subdir/to_be_deleted.txt'))
     with open(join(REPODIR, 'subdir/to be modified.txt'), 'a') as f:
         f.write("Adding another line to file!\n")
     makefile('subdir/to_be_added.txt', 'this file was added')
     commit_changes_in_repo_subdir(REPODIR,
                                   'subdir',
                                   'testing applied changes',
                                   verbose=True)
     self.assertFalse(is_git_dirty(REPODIR),
                      "Git still dirty after commit!")
     self.assert_file_exists('subdir/to_be_left_alone.txt')
     self.assert_file_exists('subdir/to be modified.txt')
     self.assert_file_exists('subdir/to_be_added.txt')
     self.assert_file_not_exists('subdir/to_be_deleted.txt')
     self.assert_file_exists('root_file1.txt')
     # verify that staged files outside of the subdir are not changed
     makefile('staged_but_not_committed.txt',
              'should be staged but not committed')
     self._git_add(['staged_but_not_committed.txt'])
     commit_changes_in_repo_subdir(REPODIR,
                                   'subdir',
                                   'testing not committing',
                                   verbose=True)
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertTrue(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 6
0
 def test_commit(self):
     os.mkdir(join(REPODIR, 'subdir'))
     makefile('subdir/to_be_deleted.txt', 'this file will be deleted')
     makefile('subdir/to_be_left_alone.txt', 'this file to be left alone')
     makefile('subdir/to_be_modified.txt', 'this file to be modified')
     makefile('root_file1.txt', 'this should not be changed')
     self._git_add([
         'subdir/to_be_deleted.txt', 'subdir/to_be_left_alone.txt',
         'subdir/to_be_modified.txt', 'root_file1.txt'
     ])
     self._run(['commit', '-m', 'initial version'])
     os.remove(join(REPODIR, 'subdir/to_be_deleted.txt'))
     with open(join(REPODIR, 'subdir/to_be_modified.txt'), 'a') as f:
         f.write("Adding another line to file!\n")
     makefile('subdir/to_be_added.txt', 'this file was added')
     commit_changes_in_repo_subdir(REPODIR,
                                   'subdir',
                                   'testing applied changes',
                                   verbose=True)
     self.assertFalse(is_git_dirty(REPODIR),
                      "Git still dirty after commit!")
     self.assert_file_exists('subdir/to_be_left_alone.txt')
     self.assert_file_exists('subdir/to_be_modified.txt')
     self.assert_file_exists('subdir/to_be_added.txt')
     self.assert_file_not_exists('subdir/to_be_deleted.txt')
     self.assert_file_exists('root_file1.txt')
     # verify that staged files outside of the subdir are not changed
     makefile('staged_but_not_committed.txt',
              'should be staged but not committed')
     self._git_add(['staged_but_not_committed.txt'])
     commit_changes_in_repo_subdir(REPODIR,
                                   'subdir',
                                   'testing not committing',
                                   verbose=True)
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertTrue(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 7
0
 def test_git_is_dirty_clean(self):
     self.assertFalse(is_git_dirty(REPODIR))
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertFalse(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 8
0
 def test_git_subdir_is_dirty_deleted_in_staging_outside(self):
     self._run(['rm', 'ignored_in_root.txt'])
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertTrue(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 9
0
 def test_git_subdir_is_dirty_deleted_outside(self):
     os.remove(join(REPODIR, 'ignored_in_root.txt'))
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 10
0
 def test_git_subdir_is_dirty_untracked_outside(self):
     makefile('untracked.txt', 'this is untracked')
     self.assertFalse(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 11
0
 def test_git_is_dirty_deleted_in_staging(self):
     self._run(['rm', 'subdir/to_be_deleted.txt'])
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertTrue(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertTrue(is_git_staging_dirty(REPODIR))
     self.assertTrue(is_git_staging_dirty(REPODIR, 'subdir'))
Esempio n. 12
0
 def test_git_is_dirty_deleted(self):
     os.remove(join(REPODIR, 'subdir/to_be_deleted.txt'))
     self.assertTrue(is_git_dirty(REPODIR))
     self.assertTrue(is_git_subdir_dirty(REPODIR, 'subdir'))
     self.assertFalse(is_git_staging_dirty(REPODIR))
     self.assertFalse(is_git_staging_dirty(REPODIR, 'subdir'))