1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
20 os.Args = append(os.Args, "-test.timeout=30m") // kludge
22 // This enables a hack to speed up repeated tests: hit "docker
23 // commit --pause {containername} checkpointtag" after the
24 // test container has downloaded/compiled some stuff, then run
25 // tests with "-test.buildimage=checkpointtag" next time to
26 // retry/resume/update from that point.
27 flag.StringVar(&buildimage, "test.buildimage", "debian:10", "docker image to use when running buildpackage")
30 type BuildSuite struct{}
32 var _ = check.Suite(&BuildSuite{})
34 func Test(t *testing.T) { check.TestingT(t) }
36 func (s *BuildSuite) TestBuildAndInstall(c *check.C) {
38 c.Skip("skipping docker tests in short mode")
39 } else if _, err := exec.Command("docker", "info").CombinedOutput(); err != nil {
40 c.Skip("skipping docker tests because docker is not available")
43 defer os.RemoveAll(tmpdir)
45 err := os.Mkdir(tmpdir+"/pkg", 0755)
46 c.Assert(err, check.IsNil)
47 err = os.Mkdir(tmpdir+"/bin", 0755)
48 c.Assert(err, check.IsNil)
50 cmd := exec.Command("go", "install")
51 cmd.Env = append(append([]string(nil), os.Environ()...), "GOPATH="+tmpdir)
52 cmd.Stdout = os.Stdout
53 cmd.Stderr = os.Stderr
55 c.Assert(err, check.IsNil)
57 srctree, err := filepath.Abs("../..")
58 c.Assert(err, check.IsNil)
60 cmd = exec.Command("docker", "run", "--rm",
61 "-v", tmpdir+"/pkg:/pkg",
62 "-v", tmpdir+"/bin/arvados-package:/arvados-package:ro",
63 "-v", srctree+":/usr/local/src/arvados:ro",
65 "/arvados-package", "build",
66 "-package-version", "0.9.99",
67 "-source", "/usr/local/src/arvados",
68 "-output-directory", "/pkg")
69 cmd.Stdout = os.Stdout
70 cmd.Stderr = os.Stderr
72 c.Assert(err, check.IsNil)
74 fi, err := os.Stat(tmpdir + "/pkg/arvados-server-easy_0.9.99_amd64.deb")
75 c.Assert(err, check.IsNil)