45 lines
		
	
	
		
			907 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			907 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2018 Mikhail Klementev. All rights reserved.
 | 
						|
// Use of this source code is governed by a AGPLv3 license
 | 
						|
// (or later) that can be found in the LICENSE file.
 | 
						|
 | 
						|
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"io/ioutil"
 | 
						|
	"os"
 | 
						|
	"strings"
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
func TestDockerRun(t *testing.T) {
 | 
						|
	tmp, err := ioutil.TempDir("/tmp/", "out-of-tree_test_")
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	defer os.RemoveAll(tmp)
 | 
						|
 | 
						|
	start := time.Now()
 | 
						|
 | 
						|
	timeout := time.Second
 | 
						|
 | 
						|
	_, err = dockerRun(timeout, "ubuntu", tmp, "sleep 5s")
 | 
						|
	if err == nil {
 | 
						|
		t.Fatal("docker is not killed by timeout")
 | 
						|
	}
 | 
						|
	if time.Since(start) > 3*time.Second {
 | 
						|
		t.Fatal(fmt.Sprintf("timeout failed (%v instead of %v)",
 | 
						|
			time.Since(start), time.Second))
 | 
						|
	}
 | 
						|
 | 
						|
	output, err := dockerRun(time.Minute, "ubuntu", tmp, "echo hello")
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if !strings.Contains(output, "hello") {
 | 
						|
		t.Fatal("wrong output (" + output + ")")
 | 
						|
	}
 | 
						|
}
 |