changeset 853:8e17f8a16269

tests: add further tests for gitlink <-> symlink and rename detection There weren't any bugs here, but this is good to test.
author Siddharth Agarwal <sid0@fb.com>
date Tue, 30 Dec 2014 14:07:39 -0800
parents e22ffc47337d
children 89bfb9994732
files tests/test-git-submodules.t
diffstat 1 files changed, 187 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-git-submodules.t
+++ b/tests/test-git-submodules.t
@@ -87,6 +87,79 @@
    2 files changed, 4 insertions(+), 1 deletion(-)
    mode change 100644 => 160000 alpha
 
+  $ ln -s foo foolink
+  $ git add foolink
+  $ git commit -m 'add symlink'
+  [master 2d1c135] add symlink
+   1 file changed, 1 insertion(+)
+   create mode 120000 foolink
+
+replace symlink with subrepo
+
+  $ git rm foolink
+  rm 'foolink'
+  $ git submodule add ../gitsubrepo foolink 2>&1 | python -c "$rmpwd" | sed "$clonefilt" | egrep -v '^done\.$'
+  Initialized empty Git repository in ...
+  
+  $ git commit -m 'replace symlink with subrepo' | sed 's/, 0 deletions(-)//' | sed 's/, 0 insertions(+)//'
+  [master e3288fa] replace symlink with subrepo
+   2 files changed, 4 insertions(+), 1 deletion(-)
+   mode change 120000 => 160000 foolink
+
+replace subrepo with symlink
+
+  $ cat > .gitmodules <<EOF
+  > [submodule "subrepo2"]
+  > 	path = subrepo2
+  > 	url = ../gitsubrepo
+  > [submodule "alpha"]
+  > 	path = alpha
+  > 	url = ../gitsubrepo
+  > EOF
+  $ git add .gitmodules
+  $ git rm --cached foolink
+  rm 'foolink'
+  $ rm -rf foolink
+  $ ln -s foo foolink
+  $ git add foolink
+  $ git commit -m 'replace subrepo with symlink' | sed 's/, 0 deletions(-)//' | sed 's/, 0 insertions(+)//'
+  [master d283640] replace subrepo with symlink
+   2 files changed, 1 insertion(+), 4 deletions(-)
+   mode change 160000 => 120000 foolink
+  $ git show
+  commit d28364013fe1a0fde56c0e1921e49ecdeee8571d
+  Author: test <test@example.org>
+  Date:   Mon Jan 1 00:00:12 2007 +0000
+  
+      replace subrepo with symlink
+  
+  diff --git a/.gitmodules b/.gitmodules
+  index b511494..813e20b 100644
+  --- a/.gitmodules
+  +++ b/.gitmodules
+  @@ -4,6 +4,3 @@
+   [submodule "alpha"]
+   	path = alpha
+   	url = ../gitsubrepo
+  -[submodule "foolink"]
+  -	path = foolink
+  -	url = ../gitsubrepo
+  diff --git a/foolink b/foolink
+  deleted file mode 160000
+  index 6e4ad8d..0000000
+  --- a/foolink
+  +++ /dev/null
+  @@ -1 +0,0 @@
+  -Subproject commit 6e4ad8da50204560c00fa25e4987eb2e239029ba
+  diff --git a/foolink b/foolink
+  new file mode 120000
+  index 0000000..1910281
+  --- /dev/null
+  +++ b/foolink
+  @@ -0,0 +1 @@
+  +foo
+  \ No newline at end of file
+
   $ git rm --cached subrepo2
   rm 'subrepo2'
   $ git rm --cached alpha
@@ -94,14 +167,17 @@
   $ git rm .gitmodules
   rm '.gitmodules'
   $ git commit -m 'remove all subrepos' | sed 's/, 0 deletions(-)//' | sed 's/, 0 insertions(+)//'
-  [master d3c4728] remove all subrepos
+  [master 15ba949] remove all subrepos
    3 files changed, 8 deletions(-)
    delete mode 100644 .gitmodules
    delete mode 160000 alpha
    delete mode 160000 subrepo2
 
   $ git log --pretty=oneline
-  d3c472800f9d11baa6615971a3179fd441869173 remove all subrepos
+  15ba94929481c654814178aac1dbca06ae688718 remove all subrepos
+  d28364013fe1a0fde56c0e1921e49ecdeee8571d replace subrepo with symlink
+  e3288fa737d429a60637b3b6782cb25b8298bc00 replace symlink with subrepo
+  2d1c135447d11df4dfe96dd5d4f37926dc5c821d add symlink
   88171163bf4795b5570924e51d5f8ede33f8bc28 replace file with subrepo
   f6436a472da00f581d8d257e9bbaf3c358a5e88c replace subrepo with file
   6e219527869fa40eb6ffbdd013cd86d576b26b01 add another subrepo
@@ -113,16 +189,31 @@
 
   $ hg clone gitrepo2 hgrepo | grep -v '^updating'
   importing git objects into hg
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd hgrepo
   $ hg log --graph  | grep -v ': *master'
-  @  changeset:   6:b52cbe4c3ffe
+  @  changeset:   9:9c3929c04f22
   |  tag:         default/master
   |  tag:         tip
   |  user:        test <test@example.org>
   |  date:        Mon Jan 01 00:00:12 2007 +0000
   |  summary:     remove all subrepos
   |
+  o  changeset:   8:1b71dd3e6033
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     replace subrepo with symlink
+  |
+  o  changeset:   7:e338dc0b9f64
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     replace symlink with subrepo
+  |
+  o  changeset:   6:db94aa767571
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     add symlink
+  |
   o  changeset:   5:87bae50d72cb
   |  user:        test <test@example.org>
   |  date:        Mon Jan 01 00:00:12 2007 +0000
@@ -154,7 +245,7 @@
      summary:     add alpha
   
   $ hg book
-   * master                    6:b52cbe4c3ffe
+   * master                    9:9c3929c04f22
 
 (add subrepo)
   $ hg cat -r 1 .hgsubstate
@@ -211,23 +302,108 @@
   $ hg gverify -r 5
   verifying rev 87bae50d72cb against git commit 88171163bf4795b5570924e51d5f8ede33f8bc28
 
+(replace symlink with subrepo)
+  $ hg cat -r 7 .hgsub .hgsubstate
+  subrepo2 = [git]../gitsubrepo
+  alpha = [git]../gitsubrepo
+  foolink = [git]../gitsubrepo
+  6e4ad8da50204560c00fa25e4987eb2e239029ba alpha
+  6e4ad8da50204560c00fa25e4987eb2e239029ba foolink
+  6e4ad8da50204560c00fa25e4987eb2e239029ba subrepo2
+  $ hg gverify -r 7
+  verifying rev e338dc0b9f64 against git commit e3288fa737d429a60637b3b6782cb25b8298bc00
+
+(replace subrepo with symlink)
+  $ hg cat -r 8 .hgsub .hgsubstate
+  subrepo2 = [git]../gitsubrepo
+  alpha = [git]../gitsubrepo
+  6e4ad8da50204560c00fa25e4987eb2e239029ba alpha
+  6e4ad8da50204560c00fa25e4987eb2e239029ba subrepo2
+
+  $ hg gverify -r 8
+  verifying rev 1b71dd3e6033 against git commit d28364013fe1a0fde56c0e1921e49ecdeee8571d
+
 (remove all subrepos)
-  $ hg cat -r 6 .hgsub .hgsubstate
-  .hgsub: no such file in rev b52cbe4c3ffe
-  .hgsubstate: no such file in rev b52cbe4c3ffe
+  $ hg cat -r 9 .hgsub .hgsubstate
+  .hgsub: no such file in rev 9c3929c04f22
+  .hgsubstate: no such file in rev 9c3929c04f22
   [1]
-  $ hg gverify -r 6
-  verifying rev b52cbe4c3ffe against git commit d3c472800f9d11baa6615971a3179fd441869173
+  $ hg gverify -r 9
+  verifying rev 9c3929c04f22 against git commit 15ba94929481c654814178aac1dbca06ae688718
 
   $ hg gclear
   clearing out the git cache data
   $ hg gexport
   $ cd .hg/git
   $ git log --pretty=oneline
-  d3c472800f9d11baa6615971a3179fd441869173 remove all subrepos
+  15ba94929481c654814178aac1dbca06ae688718 remove all subrepos
+  d28364013fe1a0fde56c0e1921e49ecdeee8571d replace subrepo with symlink
+  e3288fa737d429a60637b3b6782cb25b8298bc00 replace symlink with subrepo
+  2d1c135447d11df4dfe96dd5d4f37926dc5c821d add symlink
   88171163bf4795b5570924e51d5f8ede33f8bc28 replace file with subrepo
   f6436a472da00f581d8d257e9bbaf3c358a5e88c replace subrepo with file
   6e219527869fa40eb6ffbdd013cd86d576b26b01 add another subrepo
   a000567ceefbd9a2ce364e0dea6e298010b02b6d change subrepo commit
   e42b08b3cb7069b4594a4ee1d9cb641ee47b2355 add subrepo
   7eeab2ea75ec1ac0ff3d500b5b6f8a3447dd7c03 add alpha
+
+test with rename detection enabled -- simply checking that the Mercurial hashes
+are the same is enough
+  $ cd ../../..
+  $ hg --config git.similarity=100 clone gitrepo2 hgreporenames | grep -v '^updating'
+  importing git objects into hg
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd hgreporenames
+  $ hg log --graph | grep -v ': *master'
+  @  changeset:   9:9c3929c04f22
+  |  tag:         default/master
+  |  tag:         tip
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     remove all subrepos
+  |
+  o  changeset:   8:1b71dd3e6033
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     replace subrepo with symlink
+  |
+  o  changeset:   7:e338dc0b9f64
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     replace symlink with subrepo
+  |
+  o  changeset:   6:db94aa767571
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     add symlink
+  |
+  o  changeset:   5:87bae50d72cb
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     replace file with subrepo
+  |
+  o  changeset:   4:33729ae46d57
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     replace subrepo with file
+  |
+  o  changeset:   3:4d2f0f4fb53d
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     add another subrepo
+  |
+  o  changeset:   2:620c9d5e9a98
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:12 2007 +0000
+  |  summary:     change subrepo commit
+  |
+  o  changeset:   1:f20b40ad6da1
+  |  user:        test <test@example.org>
+  |  date:        Mon Jan 01 00:00:11 2007 +0000
+  |  summary:     add subrepo
+  |
+  o  changeset:   0:ff7a2f2d8d70
+     user:        test <test@example.org>
+     date:        Mon Jan 01 00:00:10 2007 +0000
+     summary:     add alpha
+