# ----------------------------------------------------------------
# This module defines metadata to be used by the batchSVN.py script.
#
# Copy this module as /class/csse/<courseName>/scripts/batchSVNData.py and 
# edit it to define the course metadata for <courseName>.  The sample data
# in the original file can be used by invoking the batchSVN.py script using
# "testing" as the course name argument, e.g.: ./batchSVN.py testing
# ----------------------------------------------------------------

import os
import sys

# ----------------------------------------------------------------
# Hacks the system path so the import of batchSVNTypes works for testing 
# individual course meta-data on the the server.
serverPathToBatchSVN = "/class/csse/resources/Grading"
# Change the following line to point to your local checkout of the CSSE
# resources trunk if you want to test this file on your local machine:
#localMachinePathToBatchSVN = "/Users/cclifton/Documents/Rose/Administrative/resources/Grading"
sys.path.append(serverPathToBatchSVN)
#sys.path.append(localMachinePathToBatchSVN)
from batchSVNTypes import *
# ----------------------------------------------------------------

# ----------------------------------------------------------------
# Local variables
# ----------------------------------------------------------------
repoNamePrefix = 'csse220-201210-'
# replace the following with a description of the course, like 'CSSE 120'
courseDescription = 'CSSE 220 - Object-Oriented Software Dev.'

# ----------------------------------------------------------------
# Defines repositories sets for this course.  Used by main script.
# ----------------------------------------------------------------
reposSets = []
# first set in the list is the default
reposSets.append(RepositorySet("Section1", repoNamePrefix, [
"adamscb",
"chens1",
"cohenj",
"collinka",
"dooleykh",
"heegerds",
"huangz",
"kleinerk",
"kowalsif",
"lius",
"manganpt",
"millerns",
"mitchesm",
"morrista",
"niz",
"niversme",
"pfeiffkm",
"richarsm",
"ryanlf",
"stopkadj",
"weil",
"yuhasmj",
]))

reposSets.append(RepositorySet("Small Set for Testing", repoNamePrefix, [
    "anderson",
]))

# ----------------------------------------------------------------
# Defines project names and unit tests for this course. 
# Used by main script.
# ----------------------------------------------------------------
projects = []
projects.append(Project("HW1", "FactorialTest", "SeriesSumTest"))
projects.append(Project("ObjectsAndMethods")) #HW2
projects.append(Project("UnitTesting", "StringMethodsPracticeTest", "JUnitMoveTester")) #HW3
projects.append(Project("WordGames")) #HW4 and HW5
projects.append(Project("IntroToJavaGraphics")) #not graded, part of HW6
projects.append(Project("Faces")) #HW6
projects.append(Project("Decisions")) #HW6
projects.append(Project("FundamentalDataTypes")) #HW7 for Boutell
projects.append(Project("Iteration", "AnnualInvestmentTest", "InvestmentTest")) #HW7
projects.append(Project("ArraysAndLists", "QuizScoresTest")) #HW8
projects.append(Project("TwoDArrays", "TicTacToeTest", "TicTacToeTestFromInstructors")) #HW10, individual
projects.append(Project("GameOfLife", "GameOfLifeTest")) #HW10, team0's
#projects.append(Project("Exam1", "ArrayFillerTest", "TriangleTest"))
projects.append(Project("Exam1"))
projects.append(Project("Recursion","examples.SentenceTest")) #HW12
projects.append(Project("SierpinskiTriangle")) #HW12
projects.append(Project("Recursion2")) #HW13
projects.append(Project("SortingAndSearching")) #HW14
#HW15, nothing to turn in
projects.append(Project("DesigningClasses")) #HW16
projects.append(Project("OnToInterfaces", "bigRational.BasicBigRationalTest", "bigRational.LargeBigRationalTest")) #HW17
projects.append(Project("EventBasedProgramming")) #HW18
projects.append(Project("Inheritance")) #HW19, LinearLightsOut
#projects.append(Project("Inheritance2")) #HW20, but nothing to grade
#projects.append(Project("SwingDemo2")) #HW16
projects.append(Project("BallWorlds")) #HW20
projects.append(Project("OODesign")) #HW21
projects.append(Project("Exam2", "problem1.CompareProblemTest", "problem2.MultiplierTest"))
projects.append(Project("VectorGraphics"))
projects.append(Project("TextTwisterMIDlet"))
projects.append(Project("LinkedLists")) #HW24
projects.append(Project("DataStructures")) #HW25
projects.append(Project("Exam2MakeUp"))
# projects.append(Project("FixedLengthQueue")) #HW25
projects.append(Project("Markov", "Milestone1Tests", "Milestone2Tests"))
projects.append(Project("FinalExam"))


# ----------------------------------------------------------------
# Defines any additional main menu commands for this course.
# Used by main script.
# ----------------------------------------------------------------
menuItems = []
# ----------------------------------------------------------------
# A couple of extra menu items that are useful in a pinch, but aren't yet 
# sufficiently abstracted for general use.
# def copyInExtras(data):
#     forEachRepo("cp ${scriptDir}/*.java ${shortName}/src/btwp/", data)
#     return False
# menuItems.append(MenuItem('Copy in Exam2 test files',copyInExtras))
# 
# def runTestsExtraMem(data):
#     forEachRepo("cd ${shortName} && java -Xmx2000m -cp '${scriptDir}/junit-4.5.jar:bin' org.junit.runner.JUnitCore ${testClasses}", data)
#     return False
# menuItems.append(MenuItem('Run JUnit tests with extra memory',runTestsExtraMem))
# ----------------------------------------------------------------
   


# ----------------------------------------------------------------
# Some test code, executed if this file is imported directly into
# a python shell.  Shouldn't need to change this when specifying
# course-specific data above.
# ----------------------------------------------------------------
if __name__ == '__main__':
    print "reposSets ==", reposSets
    print "Repositories from reposSets[0]:"
    for r in reposSets[0].repos():
        print "   ", r
    print "repository names: ", [r.name for r in reposSets]
    print
    print projects
    print "Test classes:"
    for p in projects:
        print "   %s: %s" % (p.name, p.testClasses)
    print "Additional Menu Items' Text:"
    for mi in menuItems:
        print "  ", mi.text