view tests/test_externals.py @ 174:f80132c5fea5

Convert svn:externals properties into a .hgsvnexternals file
author Patrick Mezard <pmezard@gmail.com>
date Fri, 02 Jan 2009 15:54:05 -0600
parents
children 2412800b1258
line wrap: on
line source

import cStringIO
import os
import shutil
import sys
import tempfile
import unittest

from mercurial import hg
from mercurial import ui
from mercurial import node

import fetch_command
import svnexternals
import test_util


class TestFetchExternals(test_util.TestBase):
    def test_externalsfile(self):
        f = svnexternals.externalsfile()
        f['t1'] = 'dir1 -r10 svn://foobar'
        f['t 2'] = 'dir2 -r10 svn://foobar'
        f['t3'] = ['dir31 -r10 svn://foobar', 'dir32 -r10 svn://foobar']
        
        refext = """\
[t 2]
 dir2 -r10 svn://foobar
[t1]
 dir1 -r10 svn://foobar
[t3]
 dir31 -r10 svn://foobar
 dir32 -r10 svn://foobar
"""
        value = f.write()
        self.assertEqual(refext, value)

        f2 = svnexternals.externalsfile()
        f2.read(value)
        self.assertEqual(sorted(f), sorted(f2))
        for t in f:
            self.assertEqual(f[t], f2[t])

    def test_externals(self, stupid=False):
        repo = self._load_fixture_and_fetch('externals.svndump', stupid=stupid)

        ref0 = """\
[.]
 ../externals/project1 deps/project1
"""
        self.assertEqual(ref0, repo[0]['.hgsvnexternals'].data())
        ref1 = """\
[.]
 ../externals/project1 deps/project1
 ../externals/project2 deps/project2
"""
        self.assertEqual(ref1, repo[1]['.hgsvnexternals'].data())

        ref2 = """\
[.]
 ../externals/project2 deps/project2
[subdir]
 ../externals/project1 deps/project1
[subdir2]
 ../externals/project1 deps/project1
"""
        self.assertEqual(ref2, repo[2]['.hgsvnexternals'].data())

        ref3 = """\
[.]
 ../externals/project2 deps/project2
[subdir2]
 ../externals/project1 deps/project1
"""
        self.assertEqual(ref3, repo[3]['.hgsvnexternals'].data())

        ref4 = """\
[.]
 ../externals/project2 deps/project2
"""
        self.assertEqual(ref4, repo[4]['.hgsvnexternals'].data())

    def test_externals_stupid(self):
        self.test_externals(True)

def suite():
    all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchExternals),
          ]
    return unittest.TestSuite(all)