X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e1756a76e8c7fed496f513909bd2c295e24cf8ee..985ece13dd7147f153c7a59c5b3665570c5943c8:/cmd/arvados-package/build_test.go diff --git a/cmd/arvados-package/build_test.go b/cmd/arvados-package/build_test.go new file mode 100644 index 0000000000..abb54532d0 --- /dev/null +++ b/cmd/arvados-package/build_test.go @@ -0,0 +1,77 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +package main + +import ( + "flag" + "os" + "os/exec" + "path/filepath" + "testing" + + "gopkg.in/check.v1" +) + +var buildimage string + +func init() { + os.Args = append(os.Args, "-test.timeout=30m") // kludge + + // This enables a hack to speed up repeated tests: hit "docker + // commit --pause {containername} checkpointtag" after the + // test container has downloaded/compiled some stuff, then run + // tests with "-test.buildimage=checkpointtag" next time to + // retry/resume/update from that point. + flag.StringVar(&buildimage, "test.buildimage", "debian:10", "docker image to use when running buildpackage") +} + +type BuildSuite struct{} + +var _ = check.Suite(&BuildSuite{}) + +func Test(t *testing.T) { check.TestingT(t) } + +func (s *BuildSuite) TestBuildAndInstall(c *check.C) { + if testing.Short() { + c.Skip("skipping docker tests in short mode") + } else if _, err := exec.Command("docker", "info").CombinedOutput(); err != nil { + c.Skip("skipping docker tests because docker is not available") + } + tmpdir := c.MkDir() + defer os.RemoveAll(tmpdir) + + err := os.Mkdir(tmpdir+"/pkg", 0755) + c.Assert(err, check.IsNil) + err = os.Mkdir(tmpdir+"/bin", 0755) + c.Assert(err, check.IsNil) + + cmd := exec.Command("go", "install") + cmd.Env = append(append([]string(nil), os.Environ()...), "GOPATH="+tmpdir) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err = cmd.Run() + c.Assert(err, check.IsNil) + + srctree, err := filepath.Abs("../..") + c.Assert(err, check.IsNil) + + cmd = exec.Command("docker", "run", "--rm", + "-v", tmpdir+"/pkg:/pkg", + "-v", tmpdir+"/bin/arvados-package:/arvados-package:ro", + "-v", srctree+":/usr/local/src/arvados:ro", + buildimage, + "/arvados-package", "build", + "-package-version", "0.9.99", + "-source", "/usr/local/src/arvados", + "-output-directory", "/pkg") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err = cmd.Run() + c.Assert(err, check.IsNil) + + fi, err := os.Stat(tmpdir + "/pkg/arvados-server-easy_0.9.99_amd64.deb") + c.Assert(err, check.IsNil) + c.Logf("%#v", fi) +}