From c2040d5d4dcb2c0d92f4683537a09159d8c1862b Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Tue, 28 Nov 2017 14:40:08 +0100 Subject: [PATCH] Accept git 1.7.2 as the minimum version (#90) * Add an head ref for the sake of using self repo for testing * Add test for CommitCount * Add testing with git-1.7.2 * Add test for GetLatestCommitTime The test checks that latest commit time is before now and more recent than the commit this PR is based at Test no error is raised by time parsing and GetLatestCommitTime Print actual time when tests fail * Accept git 1.7.2 as the minimum version Debian old old (very old) distribution (6.0 aka Squeeze) ships version 1.7.10.4. The version requirement was raised in #46 supposedly for the need of "symbolic-ref" command, but that command is supported by the 1.7.2 version too, and possibly even older versions. * Reduce output from drone, add comments Reduce steps, concatenating them in logical steps * Interrupt step upon first failure * Add Dockerfile for use with ci * Use ad-hoc docker image for testing git-1.7.2 * Avoid running build/vet/clean twice * Set HEAD ref also in testing-1-7 step --- .drone.yml | 15 +++++++++++++-- commit_test.go | 15 +++++++++++++++ docker/ci/Dockerfile-git-1.7 | 11 +++++++++++ docker/ci/Makefile | 2 ++ git.go | 2 +- repo_test.go | 25 +++++++++++++++++++++++++ 6 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 commit_test.go create mode 100644 docker/ci/Dockerfile-git-1.7 create mode 100644 docker/ci/Makefile create mode 100644 repo_test.go diff --git a/.drone.yml b/.drone.yml index a4812caf92bc..b531bdb6be99 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,15 +10,26 @@ clone: tags: true pipeline: - testing: + test-general: image: webhippie/golang:edge pull: true commands: - make clean - make vet - make lint - - make test - make build + testing-git-latest: + image: webhippie/golang:edge + pull: true + commands: + - git update-ref refs/heads/test HEAD + - git --version && make test + testing-git-1.7: + image: docker.kbt.io/gitea-git-ci:1.7 + pull: true + commands: + - git update-ref refs/heads/test HEAD + - PATH=/opt/git-1.7.2/bin git --version && make test # coverage: # image: plugins/coverage:1 diff --git a/commit_test.go b/commit_test.go new file mode 100644 index 000000000000..a30f2b859dd5 --- /dev/null +++ b/commit_test.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package git + +import ( + "testing" + "github.com/stretchr/testify/assert" +) + +func TestCommitsCount(t *testing.T) { + commitsCount, _ := CommitsCount(".", "d86a90f801dbe279db095437a8c7ea42c60e8d98") + assert.Equal(t, int64(3), commitsCount) +} diff --git a/docker/ci/Dockerfile-git-1.7 b/docker/ci/Dockerfile-git-1.7 new file mode 100644 index 000000000000..82260020adb5 --- /dev/null +++ b/docker/ci/Dockerfile-git-1.7 @@ -0,0 +1,11 @@ +FROM webhippie/golang:edge +RUN apk add --update autoconf zlib-dev > /dev/null && \ + mkdir build && \ + curl -sL "https://github.com/git/git/archive/v1.7.2.tar.gz" -o git.tar.gz && \ + tar -C build -xzf git.tar.gz && \ + cd build/git-1.7.2 && \ + { autoconf 2> err || { cat err && false; } } && \ + ./configure --without-tcltk --prefix=/opt/git-1.7.2 > /dev/null && \ + { make install NO_PERL=please > /dev/null 2> err || { cat err && false; } } && \ + cd ../.. && \ + rm -rf build git.tar.gz \ diff --git a/docker/ci/Makefile b/docker/ci/Makefile new file mode 100644 index 000000000000..3d03767ca1f8 --- /dev/null +++ b/docker/ci/Makefile @@ -0,0 +1,2 @@ +git-1.7: + docker build -t gitea/ci:git-1.7 -f Dockerfile-git-1.7 . diff --git a/git.go b/git.go index 9ec20c97e13a..150b80fb076b 100644 --- a/git.go +++ b/git.go @@ -25,7 +25,7 @@ var ( // Prefix the log prefix Prefix = "[git-module] " // GitVersionRequired is the minimum Git version required - GitVersionRequired = "1.8.1.6" + GitVersionRequired = "1.7.2" ) func log(format string, args ...interface{}) { diff --git a/repo_test.go b/repo_test.go new file mode 100644 index 000000000000..971687f35a0c --- /dev/null +++ b/repo_test.go @@ -0,0 +1,25 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package git + +import ( + "testing" + "time" + "github.com/stretchr/testify/assert" +) + +func TestGetLatestCommitTime(t *testing.T) { + lct, err := GetLatestCommitTime(".") + assert.NoError(t, err) + // Time is in the past + now := time.Now() + assert.True(t, lct.Unix() < now.Unix(), "%d not smaller than %d", lct, now) + // Time is after Mon Oct 23 03:52:09 2017 +0300 + // which is the time of commit + // d47b98c44c9a6472e44ab80efe65235e11c6da2a + refTime, err := time.Parse("Mon Jan 02 15:04:05 2006 -0700", "Mon Oct 23 03:52:09 2017 +0300") + assert.NoError(t, err) + assert.True(t, lct.Unix() > refTime.Unix(), "%d not greater than %d", lct, refTime) +}