about summary refs log tree commit diff stats
path: root/cannot_write_tests_for
blob: 8b884ecf8aa763d53f23d4e0d98e58a220958311 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
1. screen background color
2. has-more-events?
3. hide/show screen
4. more touch event types
5. sandbox isolation
6. read/write files

termbox issues are implementation-specific and not worth testing:
  whether we clear junk from other processes
  latency in interpreting low-level escape characters
e4d462949c2631a88439886ed655'>a6c8162 ^
5e92b61 ^
c050730 ^
e10fc64 ^
6753171 ^
c050730 ^

e10fc64 ^

7f76158 ^
e10fc64 ^
5e92b61 ^
a6c8162 ^

e10fc64 ^





a6c8162 ^






6753171 ^
6753171 ^





6753171 ^
6753171 ^


6753171 ^

6753171 ^






7f76158 ^
6753171 ^

e10fc64 ^
6753171 ^

6753171 ^


6753171 ^

6753171 ^


45d6723 ^
6753171 ^




6753171 ^
2fd6b1a ^

e539d23 ^
2fd6b1a ^



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
                                                      



             
             
            
                 
              
 
                                     
                                

 




                              
 
                     
                                
                           
 
                            

                                       

                                  
                                          
                                                           
          

 





                              






                                         
 





                                      
                                            


                                                      

                                                      






                                                                                                          
                                 

                                                 
                                                                      

                                                                         


                                                                             

                                                                             


                                                                      
                                    




                                                                       
 

                     
                                        



                                                                                                             
package svc // import "github.com/getwtxt/getwtxt/svc"

import (
	"fmt"
	"log"
	"net"
	"os"
	"strings"
	"sync"

	"github.com/getwtxt/registry"
	"github.com/spf13/viper"
)

var (
	testport     string
	initTestOnce sync.Once
	initDBOnce   sync.Once
)

func initTestConf() {
	initTestOnce.Do(func() {
		logToNull()

		testConfig()
		tmpls = initTemplates()
		pingAssets()

		confObj.Mu.RLock()
		defer confObj.Mu.RUnlock()
		testport = fmt.Sprintf(":%v", confObj.Port)
	})
}

func initTestDB() {
	initDBOnce.Do(func() {
		initDatabase()
	})
}

func logToNull() {
	hush, err := os.Open("/dev/null")
	if err != nil {
		log.Printf("%v\n", err)
	}
	log.SetOutput(hush)
}

func testConfig() {

	viper.SetConfigName("getwtxt")
	viper.SetConfigType("yml")
	viper.AddConfigPath("..")

	viper.SetDefault("ListenPort", 9001)
	viper.SetDefault("DatabasePath", "getwtxt.db")
	viper.SetDefault("AssetsDirectory", "assets")
	viper.SetDefault("DatabaseType", "leveldb")
	viper.SetDefault("ReCacheInterval", "1h")
	viper.SetDefault("DatabasePushInterval", "5m")
	viper.SetDefault("Instance.SiteName", "getwtxt")
	viper.SetDefault("Instance.OwnerName", "Anonymous Microblogger")
	viper.SetDefault("Instance.Email", "nobody@knows")
	viper.SetDefault("Instance.URL", "https://twtxt.example.com")
	viper.SetDefault("Instance.Description", "A fast, resilient twtxt registry server written in Go!")

	confObj.Mu.Lock()
	defer confObj.Mu.Unlock()

	confObj.Port = viper.GetInt("ListenPort")
	confObj.AssetsDir = "../" + viper.GetString("AssetsDirectory")

	confObj.DBType = strings.ToLower(viper.GetString("DatabaseType"))
	confObj.DBPath = viper.GetString("DatabasePath")
	log.Printf("Using %v database: %v\n", confObj.DBType, confObj.DBPath)

	confObj.CacheInterval = viper.GetDuration("StatusFetchInterval")
	log.Printf("User status fetch interval: %v\n", confObj.CacheInterval)
	confObj.DBInterval = viper.GetDuration("DatabasePushInterval")
	log.Printf("Database push interval: %v\n", confObj.DBInterval)

	confObj.Instance.Vers = Vers
	confObj.Instance.Name = viper.GetString("Instance.SiteName")
	confObj.Instance.URL = viper.GetString("Instance.URL")
	confObj.Instance.Owner = viper.GetString("Instance.OwnerName")
	confObj.Instance.Mail = viper.GetString("Instance.Email")
	confObj.Instance.Desc = viper.GetString("Instance.Description")
}

func mockRegistry() {
	twtxtCache = registry.NewIndex()
	statuses, _, _ := registry.GetTwtxt("https://gbmor.dev/twtxt.txt")
	parsed, _ := registry.ParseUserTwtxt(statuses, "gbmor", "https://gbmor.dev/twtxt.txt")
	_ = twtxtCache.AddUser("gbmor", "https://gbmor.dev/twtxt.txt", "1", net.ParseIP("127.0.0.1"), parsed)
}