1 | ## Before testing make sure your Mantid.user.properties does not |
---|
2 | ## have a wrong definition for these variables: |
---|
3 | ## - UploaderWebServer |
---|
4 | ## - ScriptLocalRepository |
---|
5 | ## - ScriptRepository |
---|
6 | |
---|
7 | #creation of the ScriptRepository instance |
---|
8 | from mantid.api import ScriptRepositoryFactory as srf |
---|
9 | repo = srf.Instance().create("ScriptRepositoryImpl") |
---|
10 | |
---|
11 | REPO_PATH = '/tmp/myrep/' |
---|
12 | |
---|
13 | #double check what is available inside ScriptRepository |
---|
14 | # I hope you can use the script repository with this example and the |
---|
15 | #information on help |
---|
16 | help(repo) |
---|
17 | |
---|
18 | |
---|
19 | |
---|
20 | # In order to test the ScriptRepository we must check its requirements. |
---|
21 | |
---|
22 | |
---|
23 | # Requirement 1 : Be able to install without network problems |
---|
24 | # Requirement 2: Create a Local folder that will be the local repository |
---|
25 | repo.install(REPO_PATH) |
---|
26 | # TEST: check that a folder was created in REPO_PATH, and two files are there .local.json .repository.json (hidden files) |
---|
27 | |
---|
28 | # Requirement 3: List Files (remotelly and locally) |
---|
29 | list = repo.listFiles() |
---|
30 | print '\n'.join(list) |
---|
31 | #TEST: check that inside this list you find any file available at https://github.com/mantidproject/scripts.git |
---|
32 | #TEST: create a new file and folders inside the REPO_PATH, execute again repo.listFiles() and check |
---|
33 | # that these new files are listed as well. |
---|
34 | |
---|
35 | |
---|
36 | # Requirement 4: Ability to ignore some file patterns |
---|
37 | # By default we set to ignore pyc files, but the pattern is available at ScriptRepositoryIgnore inside the properties file. |
---|
38 | # You may override this property and check if it works well. |
---|
39 | # So, create a file pyc inside the REPO_PATH, execute repo.listFiles() and make sure it does not appear in the list |
---|
40 | print ('file.pyc' not in repo.listFiles() ) FAILED |
---|
41 | |
---|
42 | # Requirement 5: Download files or folders recursively |
---|
43 | repo.download('TofConv/TofConverter/Ui_MainWindow.py') |
---|
44 | # TEST: check REPO_PATH/TofConv/TofConverter/Ui_MainWindow.py was created |
---|
45 | repo.download('other') |
---|
46 | #TEST: check REPO_PATH/other/PyMcp/guassfit.py was created |
---|
47 | |
---|
48 | # Requirement 6: Provide general information for files (Description, Author, Last Modified date, version id) |
---|
49 | print repo.fileInfo('TofConv/TofConverter/Ui_MainWindow.py') |
---|
50 | #TEST: check that it provides the description, last modified date, version id, author is not implemented yet |
---|
51 | |
---|
52 | # Requirement 7: Manage the versions of a file instance: up-to-date, locally modified, new version available, new version available and locally modified, local only. |
---|
53 | # Any file may have the following states: |
---|
54 | # LOCAL_ONLY |
---|
55 | # REMOTE_ONLY |
---|
56 | # LOCAL_CHANGED |
---|
57 | # REMOTE_CHANGED |
---|
58 | # BOTH_UNCHANGED |
---|
59 | # BOTH_CHANGED |
---|
60 | # NOTE: after changing a file locally, or remotely, it is necessary to execute listFiles again. |
---|
61 | repo.listFiles() |
---|
62 | print repo.fileStatus('TofConv/TofConverter/Ui_MainWindow.py') |
---|
63 | #TEST: should be BOTH_UNCHANGED - we have just downloaded |
---|
64 | print repo.fileStatus('TofConv/TofConverter/converter.ui') |
---|
65 | #TEST: should be REMOTE_ONLY |
---|
66 | #TEST: open TofConv/TofConverter/Ui_MainWindow.py, make some changes, close it, run listFiles, and than |
---|
67 | # run print repo.fileInfo('TofConv/TofConverter/Ui_MainWindow.py'), should return LOCAL_CHANGED |
---|
68 | #TEST: test if a file is LOCAL_ONLY, |
---|
69 | # TEST: update a file at the repository, (wait at least one minute - time for the mantidweb to update), run listFiles, |
---|
70 | # check the status is REMOTE_CHANGED |
---|
71 | |
---|
72 | # Requirement 8: Allow files to be marked for automatically updates. (NOT IMPLEMENTED YET) |
---|
73 | |
---|
74 | # Requirement 9: Never override local changes. If the user decides to download a new version of a file he has changed, a backup of his own copy must be produced. |
---|
75 | # TEST: download one file repo.download('file') |
---|
76 | # change it locally (open it, and edit it) |
---|
77 | # change the same file remotelly (push your commit to the repository) |
---|
78 | # go, take one coffee (wait some minutes to mantidweb to recognize the change) |
---|
79 | # run listFiles() |
---|
80 | # check that the file is marked as BOTH_CHANGED repo.fileStatus('file') |
---|
81 | # execute download file : repo.download('file') |
---|
82 | # check that the file is inside your REPO_PATH and a backup file is created as well. |
---|
83 | #example: |
---|
84 | repo.download('README.md') |
---|
85 | f = open(REPO_PATH+ '/README.md','w') |
---|
86 | f.write("local change") |
---|
87 | f.close() |
---|
88 | import time |
---|
89 | time.sleep(1) |
---|
90 | repo.listFiles() |
---|
91 | print repo.fileStatus('README.md') #MUST BE LOCAL_CHANGED |
---|
92 | #chage the file and upload, wait , and check4update |
---|
93 | repo.update() |
---|
94 | print repo.fileStatus('README.md') #Wait till BOTH_CHANGED |
---|
95 | repo.download('README.md') |
---|
96 | #check taht README.md_bck was created. |
---|