Example #1
0
    def test_write(self):
        a = self.repo.get_root()['a.txt']
        a.inode['mode'] = 0100755
        a.inode['uid'] = 1000

        repo2 = GitStorage(self.repo_path)
        a_2 = repo2.get_root()['a.txt']
        self.assertEqual(a_2.inode['mode'], 0100755)
        self.assertEqual(a_2.inode['uid'], 1000)
Example #2
0
    def test_write(self):
        a = self.repo.get_root()['a.txt']
        a.inode['mode'] = 0100755
        a.inode['uid'] = 1000

        repo2 = GitStorage(self.repo_path)
        a_2 = repo2.get_root()['a.txt']
        self.assertEqual(a_2.inode['mode'], 0100755)
        self.assertEqual(a_2.inode['uid'], 1000)
Example #3
0
    def test_make_directory(self):
        c = self.repo.get_root()['b']['c']
        x = c.create_directory('x')
        self.assertEqual(set(c.keys()), set(['d.txt', 'e.txt', 'x']))

        repo2 = GitStorage(self.repo_path)
        c_2 = repo2.get_root()['b']['c']
        self.assertEqual(set(c_2.keys()), set(['d.txt', 'e.txt', 'x']))

        y = x.create_file('y')
        y.write_data('ydata', 0)
        self.assertEqual(set(x.keys()), set(['y']))
        self.assertEqual(y._read_all_data(), 'ydata')

        repo3 = GitStorage(self.repo_path)
        c_3 = repo3.get_root()['b']['c']
        self.assertEqual(set(c_3.keys()), set(['d.txt', 'e.txt', 'x']))
        x_3 = c_3['x']
        self.assertEqual(set(x_3.keys()), set(['y']))
        y_3 = x_3['y']
        self.assertEqual(y_3._read_all_data(), 'ydata')

        x.unlink()

        repo4 = GitStorage(self.repo_path)
        c_4 = repo4.get_root()['b']['c']
        self.assertEqual(set(c_4.keys()), set(['d.txt', 'e.txt']))
Example #4
0
    def test_remove_file(self):
        c = self.repo.get_root()['b']['c']
        self.assertEqual(set(c.keys()), set(['d.txt', 'e.txt']))

        d_txt = c['d.txt']
        d_txt.unlink()
        self.assertEqual(set(c.keys()), set(['e.txt']))

        repo2 = GitStorage(self.repo_path)
        c_2 = repo2.get_root()['b']['c']
        self.assertEqual(set(c_2.keys()), set(['e.txt']))
Example #5
0
    def test_remove_file(self):
        c = self.repo.get_root()['b']['c']
        self.assertEqual(set(c.keys()), set(['d.txt', 'e.txt']))

        d_txt = c['d.txt']
        d_txt.unlink()
        self.assertEqual(set(c.keys()), set(['e.txt']))

        repo2 = GitStorage(self.repo_path)
        c_2 = repo2.get_root()['b']['c']
        self.assertEqual(set(c_2.keys()), set(['e.txt']))
Example #6
0
    def test_30_files(self):
        b = self.repo.get_root()['b']
        g = b.create_directory('g')
        for c in xrange(30):
            f = g.create_file('f_%d' % c)
            f.write_data('file contents %d' % c, 0)

        repo2 = GitStorage(self.repo_path)
        g2 = repo2.get_root()['b']['g']
        for c in xrange(30):
            f2 = g2['f_%d' % c]
            self.assertEqual(f2._read_all_data(), 'file contents %d' % c)
Example #7
0
    def test_30_files(self):
        b = self.repo.get_root()['b']
        g = b.create_directory('g')
        for c in xrange(30):
            f = g.create_file('f_%d' % c)
            f.write_data('file contents %d' % c, 0)

        repo2 = GitStorage(self.repo_path)
        g2 = repo2.get_root()['b']['g']
        for c in xrange(30):
            f2 = g2['f_%d' % c]
            self.assertEqual(f2._read_all_data(), 'file contents %d' % c)
Example #8
0
    def test_create_file(self):
        b = self.repo.get_root()['b']
        g_txt = b.create_file('g.txt')
        self.assertFalse(g_txt.is_dir)
        self.assertEqual(g_txt.size, 0)
        self.assertEqual(g_txt._read_all_data(), '')
        self.assertEqual(g_txt.name, 'g.txt')

        repo2 = GitStorage(self.repo_path)
        g_txt_2 = repo2.get_root()['b']['g.txt']
        self.assertFalse(g_txt_2.is_dir)
        self.assertEqual(g_txt_2.size, 0)
        self.assertEqual(g_txt_2._read_all_data(), '')
        self.assertEqual(g_txt_2.name, 'g.txt')
Example #9
0
    def test_create_file(self):
        b = self.repo.get_root()['b']
        g_txt = b.create_file('g.txt')
        self.assertFalse(g_txt.is_dir)
        self.assertEqual(g_txt.size, 0)
        self.assertEqual(g_txt._read_all_data(), '')
        self.assertEqual(g_txt.name, 'g.txt')

        repo2 = GitStorage(self.repo_path)
        g_txt_2 = repo2.get_root()['b']['g.txt']
        self.assertFalse(g_txt_2.is_dir)
        self.assertEqual(g_txt_2.size, 0)
        self.assertEqual(g_txt_2._read_all_data(), '')
        self.assertEqual(g_txt_2.name, 'g.txt')
Example #10
0
    def test_make_directory(self):
        c = self.repo.get_root()['b']['c']
        x = c.create_directory('x')
        self.assertEqual(set(c.keys()), set(['d.txt', 'e.txt', 'x']))

        repo2 = GitStorage(self.repo_path)
        c_2 = repo2.get_root()['b']['c']
        self.assertEqual(set(c_2.keys()), set(['d.txt', 'e.txt', 'x']))

        y = x.create_file('y')
        y.write_data('ydata', 0)
        self.assertEqual(set(x.keys()), set(['y']))
        self.assertEqual(y._read_all_data(), 'ydata')

        repo3 = GitStorage(self.repo_path)
        c_3 = repo3.get_root()['b']['c']
        self.assertEqual(set(c_3.keys()), set(['d.txt', 'e.txt', 'x']))
        x_3 = c_3['x']
        self.assertEqual(set(x_3.keys()), set(['y']))
        y_3 = x_3['y']
        self.assertEqual(y_3._read_all_data(), 'ydata')

        x.unlink()

        repo4 = GitStorage(self.repo_path)
        c_4 = repo4.get_root()['b']['c']
        self.assertEqual(set(c_4.keys()), set(['d.txt', 'e.txt']))
Example #11
0
    def test_create_first_objects(self):
        repo = GitStorage.create(self.repo_path)
        root = repo.get_root()

        root.create_directory('some_folder')
        repo.commit('created "some folder"')
        repo2 = GitStorage(self.repo_path)
        self.assertEqual(set(repo2.get_root().keys()), set(['some_folder']))
        self.assertEqual(set(repo2.get_root()['some_folder'].keys()), set())

        f = root.create_file('some_file')
        self.assertEqual(f.inode.name, 'i1')
        f.write_data('xy', 0)
        repo.commit('created "some file"')
        repo2 = GitStorage(self.repo_path)
        self.assertEqual(set(repo2.get_root().keys()),
                         set(['some_folder', 'some_file']))
        self.assertEqual(repo2.get_root()['some_file']._read_all_data(), 'xy')
Example #12
0
    def test_hardlink(self):
        root = self.repo.get_root()
        a = root['a.txt']
        self.assertEqual(a.inode['nlink'], 1)

        linked_a = root['b'].link_file('linked_a.txt', a)
        self.assertTrue(
            id(a.inode) == id(linked_a.inode),
            "different inodes for `a` and `linked_a`")
        self.assertEqual(a.inode['nlink'], 2)

        a.write_data('new data for text file "a"', 0)
        self.assertEqual(linked_a._read_all_data(),
                         'new data for text file "a"')

        repo2 = GitStorage(self.repo_path)
        a_2 = repo2.get_root()['a.txt']
        linked_a_2 = repo2.get_root()['b']['linked_a.txt']
        self.assertTrue(id(a_2.inode) == id(linked_a_2.inode))
        self.assertEqual(a_2.inode['nlink'], 2)
        self.assertEqual(linked_a_2._read_all_data(),
                         'new data for text file "a"')

        a.unlink()
        self.assertEqual(linked_a.inode['nlink'], 1)

        inode_name = linked_a.inode.name
        inodes_tt = treetree.TreeTree(self.repo.eg.root['inodes'], prefix='it')
        self.assertTrue(inode_name[1:] in inodes_tt)
        try:
            self.repo.get_inode(inode_name)
        except KeyError:
            self.fail()

        linked_a.unlink()
        self.assertFalse(inode_name in self.repo.eg.root['inodes'])
        self.assertRaises(KeyError, self.repo.get_inode, inode_name)
Example #13
0
    def test_hardlink(self):
        root = self.repo.get_root()
        a = root['a.txt']
        self.assertEqual(a.inode['nlink'], 1)

        linked_a = root['b'].link_file('linked_a.txt', a)
        self.assertTrue(id(a.inode) == id(linked_a.inode),
                        "different inodes for `a` and `linked_a`")
        self.assertEqual(a.inode['nlink'], 2)

        a.write_data('new data for text file "a"', 0)
        self.assertEqual(linked_a._read_all_data(),
                         'new data for text file "a"')

        repo2 = GitStorage(self.repo_path)
        a_2 = repo2.get_root()['a.txt']
        linked_a_2 = repo2.get_root()['b']['linked_a.txt']
        self.assertTrue(id(a_2.inode) == id(linked_a_2.inode))
        self.assertEqual(a_2.inode['nlink'], 2)
        self.assertEqual(linked_a_2._read_all_data(),
                         'new data for text file "a"')

        a.unlink()
        self.assertEqual(linked_a.inode['nlink'], 1)

        inode_name = linked_a.inode.name
        inodes_tt = treetree.TreeTree(self.repo.eg.root['inodes'], prefix='it')
        self.assertTrue(inode_name[1:] in inodes_tt)
        try:
            self.repo.get_inode(inode_name)
        except KeyError:
            self.fail()

        linked_a.unlink()
        self.assertFalse(inode_name in self.repo.eg.root['inodes'])
        self.assertRaises(KeyError, self.repo.get_inode, inode_name)
Example #14
0
    def test_create_repo(self):
        repo = GitStorage.create(self.repo_path)

        git = dulwich.repo.Repo(self.repo_path)
        commit_tree = git.tree(git.commit(git.head()).tree)
        self.assertEqual(len(commit_tree.entries()), 4)

        inodes_tree = git.tree(commit_tree['inodes'][1])
        self.assertEqual(len(inodes_tree), 0)

        root_ls_blob = git.get_blob(commit_tree['root.ls'][1])
        self.assertEqual(root_ls_blob.data, '')

        root_sub_tree = git.tree(commit_tree['root.sub'][1])
        self.assertEqual(len(root_sub_tree.entries()), 0)

        features_blob = git.get_blob(commit_tree['features'][1])
        features_dict = json.loads(features_blob.data)
        self.assertEqual(features_dict['next_inode_number'], 1)
Example #15
0
    def test_create_repo(self):
        repo = GitStorage.create(self.repo_path)

        git = dulwich.repo.Repo(self.repo_path)
        commit_tree = git.tree(git.commit(git.head()).tree)
        self.assertEqual(len(commit_tree.entries()), 4)

        inodes_tree = git.tree(commit_tree['inodes'][1])
        self.assertEqual(len(inodes_tree), 0)

        root_ls_blob = git.get_blob(commit_tree['root.ls'][1])
        self.assertEqual(root_ls_blob.data, '')

        root_sub_tree = git.tree(commit_tree['root.sub'][1])
        self.assertEqual(len(root_sub_tree.entries()), 0)

        features_blob = git.get_blob(commit_tree['features'][1])
        features_dict = json.loads(features_blob.data)
        self.assertEqual(features_dict['next_inode_number'], 1)
Example #16
0
    def test_create_first_objects(self):
        repo = GitStorage.create(self.repo_path)
        root = repo.get_root()

        root.create_directory('some_folder')
        repo.commit('created "some folder"')
        repo2 = GitStorage(self.repo_path)
        self.assertEqual(set(repo2.get_root().keys()),
                         set(['some_folder']))
        self.assertEqual(set(repo2.get_root()['some_folder'].keys()), set())

        f = root.create_file('some_file')
        self.assertEqual(f.inode.name, 'i1')
        f.write_data('xy', 0)
        repo.commit('created "some file"')
        repo2 = GitStorage(self.repo_path)
        self.assertEqual(set(repo2.get_root().keys()),
                         set(['some_folder', 'some_file']))
        self.assertEqual(repo2.get_root()['some_file']._read_all_data(), 'xy')
Example #17
0
 def assert_git_contents(data):
     repo2 = GitStorage(self.repo_path)
     h_txt_2 = repo2.get_root()['b']['h.txt']
     self.assertEqual(h_txt_2.size, len(data))
     self.assertEqual(h_txt_2._read_all_data(), data)
Example #18
0
 def assert_file_contents(self, reference):
     repo2 = GitStorage(self.repo_path)
     f = repo2.get_root()['b']['f']
     self.assertEqual(f._read_all_data(), reference,
                      '`f._read_all_data()` and `reference` do not match')
Example #19
0
 def assert_git_contents(data):
     repo2 = GitStorage(self.repo_path)
     h_txt_2 = repo2.get_root()['b']['h.txt']
     self.assertEqual(h_txt_2.size, len(data))
     self.assertEqual(h_txt_2._read_all_data(), data)
Example #20
0
 def assert_file_contents(self, reference):
     repo2 = GitStorage(self.repo_path)
     f = repo2.get_root()['b']['f']
     self.assertEqual(f._read_all_data(), reference,
                      '`f._read_all_data()` and `reference` do not match')