t / t5614-clone-submodules.shon commit Merge branch 'js/perf-rebase-i' (7b02771)
   1#!/bin/sh
   2
   3test_description='Test shallow cloning of repos with submodules'
   4
   5. ./test-lib.sh
   6
   7pwd=$(pwd)
   8
   9test_expect_success 'setup' '
  10        git checkout -b master &&
  11        test_commit commit1 &&
  12        test_commit commit2 &&
  13        mkdir sub &&
  14        (
  15                cd sub &&
  16                git init &&
  17                test_commit subcommit1 &&
  18                test_commit subcommit2 &&
  19                test_commit subcommit3
  20        ) &&
  21        git submodule add "file://$pwd/sub" sub &&
  22        git commit -m "add submodule"
  23'
  24
  25test_expect_success 'nonshallow clone implies nonshallow submodule' '
  26        test_when_finished "rm -rf super_clone" &&
  27        git clone --recurse-submodules "file://$pwd/." super_clone &&
  28        (
  29                cd super_clone &&
  30                git log --oneline >lines &&
  31                test_line_count = 3 lines
  32        ) &&
  33        (
  34                cd super_clone/sub &&
  35                git log --oneline >lines &&
  36                test_line_count = 3 lines
  37        )
  38'
  39
  40test_expect_success 'shallow clone implies shallow submodule' '
  41        test_when_finished "rm -rf super_clone" &&
  42        git clone --recurse-submodules --depth 2 "file://$pwd/." super_clone &&
  43        (
  44                cd super_clone &&
  45                git log --oneline >lines &&
  46                test_line_count = 2 lines
  47        ) &&
  48        (
  49                cd super_clone/sub &&
  50                git log --oneline >lines &&
  51                test_line_count = 1 lines
  52        )
  53'
  54
  55test_expect_success 'shallow clone with non shallow submodule' '
  56        test_when_finished "rm -rf super_clone" &&
  57        git clone --recurse-submodules --depth 2 --no-shallow-submodules "file://$pwd/." super_clone &&
  58        (
  59                cd super_clone &&
  60                git log --oneline >lines &&
  61                test_line_count = 2 lines
  62        ) &&
  63        (
  64                cd super_clone/sub &&
  65                git log --oneline >lines &&
  66                test_line_count = 3 lines
  67        )
  68'
  69
  70test_expect_success 'non shallow clone with shallow submodule' '
  71        test_when_finished "rm -rf super_clone" &&
  72        git clone --recurse-submodules --no-local --shallow-submodules "file://$pwd/." super_clone &&
  73        (
  74                cd super_clone &&
  75                git log --oneline >lines &&
  76                test_line_count = 3 lines
  77        ) &&
  78        (
  79                cd super_clone/sub &&
  80                git log --oneline >lines &&
  81                test_line_count = 1 lines
  82        )
  83'
  84
  85test_done