...

Source file src/golang.conradwood.net/tests/ctx/test_renderer.go

Documentation: golang.conradwood.net/tests/ctx

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	//	"fmt"
     6  	"golang.conradwood.net/go-easyops/utils"
     7  	"html/template"
     8  	"os"
     9  )
    10  
    11  const (
    12  	h_template = `<html>
    13  <head>
    14  <style>
    15  .mytable {
    16    border: 1px;    
    17    outline: 1px solid #CCCCCC;
    18  }
    19  tr.desc {
    20      background-color: #F0F0F0;
    21      border-style: solid;
    22      border-colour: #000000;
    23      border-bottom: 1pt solid black;
    24      margin-top: 5px;
    25  }
    26  tr.details {
    27      background-color: #F0F0F0;
    28      border-style: solid;
    29      border-colour: #000000;
    30      border-bottom: 1pt solid black;
    31      margin-top: 5px;
    32     display:solid;
    33  }
    34  tr.invisible {
    35     display:none;
    36  }
    37  </style>
    38  
    39  <script>
    40  function togglevis(id) {
    41  let tgt="details_"+id;
    42  console.log("toggling ",tgt)
    43  if (document.getElementById("chk_"+id).checked) {
    44  document.getElementById(tgt).className="details";
    45  } else {
    46  document.getElementById(tgt).className="invisible";
    47  }
    48  
    49  }
    50  </script>
    51  </head>
    52  <body>
    53  <table class="mytable">
    54  <tr class="desc">
    55  <td>ID</td>
    56  <td>Name</td>
    57  <td>DC</td>
    58  <td>Builder</td>
    59  <td>Error</td>
    60  </tr>
    61  {{ range .Tests }}
    62  <tr class="desc">
    63  <td><input type="checkbox" id="chk_{{.ID}}" onclick="togglevis({{.ID}})">{{ .ID }}</td>
    64  <td> {{ .Name }} </td>
    65  <td> {{ .DCStart }} / {{ .DCError }} </td>
    66  <td> {{ .BuilderStart }} / {{ .BuilderError }} </td>
    67  <td> {{ .GetError }} </td>
    68  </tr>
    69  <tr id="details_{{.ID}}" class="invisible">
    70  <td colspan="5"> {{ .HtmlErrorDetails }}</td>
    71  </tr>
    72  {{ end }}
    73  </table>
    74  </body></html>
    75  `
    76  )
    77  
    78  var (
    79  	html_template *template.Template
    80  )
    81  
    82  func init() {
    83  	tpl := template.New("foo")
    84  	p, err := tpl.Parse(h_template)
    85  	utils.Bail("failed to parse", err)
    86  	html_template = p
    87  }
    88  
    89  type htmlrender struct {
    90  	Tests []*test
    91  }
    92  
    93  func render_tests_to_html(tests []*test) ([]byte, error) {
    94  	hr := &htmlrender{Tests: tests}
    95  	buf := &bytes.Buffer{}
    96  	err := html_template.Execute(buf, hr)
    97  	if err != nil {
    98  		return nil, err
    99  	}
   100  	return buf.Bytes(), nil
   101  }
   102  func testrenderer_rendertest() {
   103  	ts := []*test{
   104  		NewTest("foo1"),
   105  	}
   106  	t := NewTest("foo2")
   107  	t.id = 10
   108  	t.stdout_buf = &bytes.Buffer{}
   109  	t.stdout_buf.Write([]byte(`there is some stuff to see here
   110  but not too much
   111  `))
   112  	ts = append(ts, t)
   113  	for _, t := range ts {
   114  		t.Done()
   115  	}
   116  	PrintResult()
   117  	os.Exit(0)
   118  }
   119  

View as plain text