Commit c352e5617ac56feec258e9a094460aa4da6e00ec

Edward Thomson 2019-01-19T01:34:21

Merge pull request #4943 from libgit2/ethomson/ci ci: only run invasive tests in nightly

diff --git a/azure-pipelines/coverity.yml b/azure-pipelines/coverity.yml
new file mode 100644
index 0000000..36efdbe
--- /dev/null
+++ b/azure-pipelines/coverity.yml
@@ -0,0 +1,21 @@
+resources:
+- repo: self
+
+- job: coverity
+  displayName: 'Coverity'
+  pool:
+    vmImage: 'Ubuntu 16.04'
+  steps:
+  - task: Docker@0
+    displayName: Build
+    inputs:
+      action: 'Run an image'
+      imageName: 'libgit2/trusty-openssl:latest'
+      volumes: |
+       $(Build.SourcesDirectory):/src
+       $(Build.BinariesDirectory):/build
+      envVars: |
+       COVERITY_TOKEN=$(COVERITY_TOKEN)
+      workDir: '/build'
+      containerCommand: '/src/ci/coverity.sh'
+      detached: false
diff --git a/azure-pipelines/nightly.yml b/azure-pipelines/nightly.yml
index 5de949a..d88d8c0 100644
--- a/azure-pipelines/nightly.yml
+++ b/azure-pipelines/nightly.yml
@@ -14,6 +14,7 @@ jobs:
        CC=gcc
        CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL
        LEAK_CHECK=valgrind
+       RUN_INVASIVE_TESTS=true
 
 - job: linux_amd64_trusty_gcc_mbedtls
   displayName: 'Linux (amd64; Trusty; GCC; mbedTLS)'
@@ -27,6 +28,7 @@ jobs:
        CC=gcc
        CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
        LEAK_CHECK=valgrind
+       RUN_INVASIVE_TESTS=true
 
 - job: linux_amd64_trusty_clang_openssl
   displayName: 'Linux (amd64; Trusty; Clang; OpenSSL)'
@@ -40,6 +42,7 @@ jobs:
        CC=clang
        CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL
        LEAK_CHECK=valgrind
+       RUN_INVASIVE_TESTS=true
 
 - job: linux_amd64_trusty_clang_mbedtls
   displayName: 'Linux (amd64; Trusty; Clang; mbedTLS)'
@@ -53,6 +56,7 @@ jobs:
        CC=clang
        CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS
        LEAK_CHECK=valgrind
+       RUN_INVASIVE_TESTS=true
 
 - job: macos
   displayName: 'macOS'
@@ -68,6 +72,7 @@ jobs:
         PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
         LEAK_CHECK: leaks
         CMAKE_OPTIONS: -G Ninja
+        RUN_INVASIVE_TESTS: true
 
 - job: windows_vs_amd64
   displayName: 'Windows (amd64; Visual Studio)'
@@ -77,6 +82,7 @@ jobs:
     parameters:
       environmentVariables:
         CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64"
+        RUN_INVASIVE_TESTS: true
 
 - job: windows_vs_x86
   displayName: 'Windows (x86; Visual Studio)'
@@ -86,6 +92,7 @@ jobs:
     parameters:
       environmentVariables:
         CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013"
+        RUN_INVASIVE_TESTS: true
 
 - job: windows_mingw_amd64
   displayName: 'Windows (amd64; MinGW)'
@@ -101,6 +108,7 @@ jobs:
       environmentVariables:
         CMAKE_OPTIONS: -G"MinGW Makefiles"
         PATH: $(Agent.TempDirectory)\mingw64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
+        RUN_INVASIVE_TESTS: true
 
 - job: windows_mingw_x86
   displayName: 'Windows (x86; MinGW)'
@@ -117,6 +125,7 @@ jobs:
       environmentVariables:
         CMAKE_OPTIONS: -G"MinGW Makefiles"
         PATH: $(Agent.TempDirectory)\mingw32\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin
+        RUN_INVASIVE_TESTS: true
 
 - job: linux_x86_bionic_gcc_openssl
   displayName: 'Linux (x86; Bionic; GCC; OpenSSL)'
@@ -131,6 +140,7 @@ jobs:
        CC=gcc
        CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL
        LEAK_CHECK=valgrind
+       RUN_INVASIVE_TESTS=true
 
 - job: linux_x86_bionic_clang_openssl
   displayName: 'Linux (x86; Bionic; Clang; OpenSSL)'
@@ -145,6 +155,7 @@ jobs:
        CC=clang
        CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL
        LEAK_CHECK=valgrind
+       RUN_INVASIVE_TESTS=true
 
 - job: linux_arm32_bionic_gcc_openssl
   displayName: 'Linux (arm32; Bionic; GCC; OpenSSL)'
@@ -158,6 +169,7 @@ jobs:
       environmentVariables: |
        CC=gcc
        CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL
+       RUN_INVASIVE_TESTS=true
        SKIP_PROXY_TESTS=true
 
 - job: linux_arm64_bionic_gcc_openssl
@@ -172,23 +184,5 @@ jobs:
       environmentVariables: |
        CC=gcc
        CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL
+       RUN_INVASIVE_TESTS=true
        SKIP_PROXY_TESTS=true
-
-- job: coverity
-  displayName: 'Coverity'
-  pool:
-    vmImage: 'Ubuntu 16.04'
-  steps:
-  - task: Docker@0
-    displayName: Build
-    inputs:
-      action: 'Run an image'
-      imageName: 'libgit2/trusty-openssl:latest'
-      volumes: |
-       $(Build.SourcesDirectory):/src
-       $(Build.BinariesDirectory):/build
-      envVars: |
-       COVERITY_TOKEN=$(COVERITY_TOKEN)
-      workDir: '/build'
-      containerCommand: '/src/ci/coverity.sh'
-      detached: false
diff --git a/ci/test.ps1 b/ci/test.ps1
index ed09633..dcce5f4 100644
--- a/ci/test.ps1
+++ b/ci/test.ps1
@@ -51,6 +51,21 @@ Write-Host "####################################################################
 
 run_test offline
 
+if ($Env:RUN_INVASIVE_TESTS) {
+	Write-Host ""
+	Write-Host "##############################################################################"
+	Write-Host "## Running (invasive) tests"
+	Write-Host "##############################################################################"
+
+	$Env:GITTEST_INVASIVE_FS_SIZE=1
+	$Env:GITTEST_INVASIVE_MEMORY=1
+	$Env:GITTEST_INVASIVE_SPEED=1
+	run_test invasive
+	$Env:GITTEST_INVASIVE_FS_SIZE=$null
+	$Env:GITTEST_INVASIVE_MEMORY=$null
+	$Env:GITTEST_INVASIVE_SPEED=$null
+}
+
 if (-not $Env:SKIP_ONLINE_TESTS) {
 	Write-Host ""
 	Write-Host "##############################################################################"
@@ -71,6 +86,10 @@ if (-not $Env:SKIP_PROXY_TESTS) {
 
 	run_test proxy
 
+	$Env:GITTEST_REMOTE_PROXY_HOST=$null
+	$Env:GITTEST_REMOTE_PROXY_USER=$null
+	$Env:GITTEST_REMOTE_PROXY_PASS=$null
+
 	taskkill /F /IM javaw.exe
 }
 
diff --git a/ci/test.sh b/ci/test.sh
index f3bf190..ebf6479 100755
--- a/ci/test.sh
+++ b/ci/test.sh
@@ -136,6 +136,20 @@ if [ -z "$SKIP_OFFLINE_TESTS" ]; then
 	run_test offline
 fi
 
+if [ -n "$RUN_INVASIVE_TESTS" ]; then
+	echo ""
+	echo "Running invasive tests"
+	echo ""
+
+	export GITTEST_INVASIVE_FS_SIZE=1
+	export GITTEST_INVASIVE_MEMORY=1
+	export GITTEST_INVASIVE_SPEED=1
+	run_test invasive
+	unset GITTEST_INVASIVE_FS_SIZE
+	unset GITTEST_INVASIVE_MEMORY
+	unset GITTEST_INVASIVE_SPEED
+fi
+
 if [ -z "$SKIP_ONLINE_TESTS" ]; then
 	# Run the various online tests.  The "online" test suite only includes the
 	# default online tests that do not require additional configuration.  The
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 9502504..6ce5ae0 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -55,6 +55,7 @@ IF (MSVC_IDE)
 ENDIF ()
 
 ADD_TEST(offline   "${libgit2_BINARY_DIR}/libgit2_clar" -v -xonline)
+ADD_TEST(invasive  "${libgit2_BINARY_DIR}/libgit2_clar" -v -score::ftruncate -sfilter::stream::bigfile -sodb::largefiles -siterator::workdir::filesystem_gunk -srepo::init -srepo::init::at_filesystem_root)
 ADD_TEST(online    "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline)
 ADD_TEST(gitdaemon "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::push)
 ADD_TEST(ssh       "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths)
diff --git a/tests/iterator/workdir.c b/tests/iterator/workdir.c
index 889fcd6..87ac1e5 100644
--- a/tests/iterator/workdir.c
+++ b/tests/iterator/workdir.c
@@ -661,10 +661,10 @@ void test_iterator_workdir__filesystem_gunk(void)
 
 	cl_git_pass(git_iterator_for_filesystem(&i, "testrepo/.git/refs", NULL));
 
-	/* should only have 13 items, since we're not asking for trees to be
+	/* should only have 16 items, since we're not asking for trees to be
 	 * returned.  the goal of this test is simply to not crash.
 	 */
-	expect_iterator_items(i, 15, NULL, 15, NULL);
+	expect_iterator_items(i, 16, NULL, 15, NULL);
 	git_iterator_free(i);
 	git_buf_dispose(&parent);
 }