Example #1
0
// 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
}
Example #2
0
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
}