// Save stores the session back to the same location it was loaded from func (s *Session) Save() error { sessPath := path.Join(s.SessionDir, SESSION_FILE) if _, err := os.Stat(sessPath); err == nil { // If the session file already exists then back it up first backupPath := path.Join(s.SessionDir, SESSION_FILE_BCK) if err := fs.CopyFileContents(sessPath, backupPath); err != nil { return err } } fd, err := os.Create(sessPath) if err != nil { return err } defer fd.Close() if jsonData, err := json.Marshal(*s); err != nil { return err } else { if _, err := fd.Write(jsonData); err != nil { return err } } return nil }
func Create(sessDir string, configPath string) (*Session, error) { var err error var cfg *config.Config if cfg, err = config.Load(configPath); err != nil { return nil, err } if err = os.Mkdir(sessDir, DIR_PERMS); err != nil { return nil, err } test_cases_path := path.Join(sessDir, TEST_CASES_DIR) if err = os.Mkdir(test_cases_path, DIR_PERMS); err != nil { return nil, err } preservation_path := path.Join(sessDir, PRESERVATION_DIR) if err = os.Mkdir(preservation_path, DIR_PERMS); err != nil { return nil, err } testCounts := make(map[string]int) exitCodes := make(map[string]int) stats := Stats{0, 0, 0, exitCodes, testCounts} s := Session{sessDir, test_cases_path, preservation_path, cfg, stats} s.Save() newConfigPath := path.Join(sessDir, CONFIG_FILE) if err := fs.CopyFileContents(configPath, newConfigPath); err != nil { return nil, err } return &s, nil }