rscm-accurev 0.0 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +7 -76
- data/TODO +3 -17
- data/lib/rscm/accurev.rb +1 -13
- data/lib/rscm/scm/accurev/#command.rb# +95 -0
- data/lib/rscm/scm/accurev/api.rb +77 -258
- data/lib/rscm/scm/accurev/command.rb +40 -97
- data/lib/rscm/scm/accurev/filterio.rb +4 -6
- data/lib/rscm/scm/accurev/xml.rb +11 -199
- data/test/t_command.rb +11 -59
- data/test/t_load.rb +0 -1
- data/test/t_scrubio.rb +6 -1
- data/{apitest.rb → test.rb} +0 -1
- data/{test/eg/update-newwksp.xml → testing.log} +138 -0
- metadata +15 -57
- data/STATUS +0 -63
- data/bumprelease.sh +0 -13
- data/lib/rscm/scm/accurev/api.rb.mine +0 -382
- data/lib/rscm/scm/accurev/api.rb.r263 +0 -364
- data/lib/rscm/scm/accurev/api.rb.r265 +0 -393
- data/lib/rscm/scm/accurev/exception.rb +0 -38
- data/lib/test/unit/ui/xml/testrunner.rb +0 -165
- data/lib/test/unit/ui/xml/xmltestrunner.xslt +0 -79
- data/test/coverage/analyzer.rb +0 -127
- data/test/coverage/c_loader.rb +0 -34
- data/test/coverage/cover.rb +0 -91
- data/test/coverage/coverage_loader.rb +0 -21
- data/test/coverage/coveragetask.rb +0 -38
- data/test/coverage/index_tmpl.html +0 -42
- data/test/coverage/template.html +0 -36
- data/test/eg/ac-files.xml +0 -172
- data/test/eg/ac-pop.txt +0 -195
- data/test/eg/files-various-states.xml +0 -188
- data/test/eg/hist-oneweek-all.xml +0 -1483
- data/test/eg/hist-oneweek-external.xml +0 -246
- data/test/eg/hist-oneweek-promotes.xml +0 -1092
- data/test/eg/info.txt +0 -14
- data/test/eg/stat-a-various.xml +0 -1789
- data/test/eg/stat-m.xml +0 -13
- data/test/eg/stat-overlap.xml +0 -13
- data/test/eg/stat-x.xml +0 -20
- data/test/eg/update-i-mods-and-updates-and-overlap.xml +0 -73
- data/test/eg/update-i-nochanges.xml +0 -8
- data/test/eg/update-i-stale.xml +0 -0
- data/test/eg/update-i-updates.xml +0 -125
- data/test/eg/update-nochanges.xml +0 -7
- data/test/eg/update-stale.xml +0 -12
- data/test/eg/update-updates.xml +0 -147
- data/test/t_api.rb +0 -163
- data/test/t_xmlmapper.rb +0 -75
data/Rakefile
CHANGED
@@ -5,9 +5,8 @@ require 'rake/testtask'
|
|
5
5
|
require 'rake/rdoctask'
|
6
6
|
require 'rake/packagetask'
|
7
7
|
require 'rake/gempackagetask'
|
8
|
-
require 'tracer'
|
9
8
|
|
10
|
-
#
|
9
|
+
# rakefile borrowed shamelessly from rscm
|
11
10
|
|
12
11
|
PKG_NAME = 'rscm-accurev'
|
13
12
|
PKG_BUILD = ENV['PKG_BUILD'] ? '.'+ENV['PKG_BUILD'] : ''
|
@@ -18,68 +17,20 @@ PKG_SUMMARY = 'RSCM::Accurev - RSCM API for Accurev'
|
|
18
17
|
desc "Default Task"
|
19
18
|
task :default => [ :test, :gem ]
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
if rake_maj.to_f < 1 and rake_min.to_f <= 5 and rake_patch.to_f <= 4
|
24
|
-
# use this for rake <= 0.5.4:
|
25
|
-
task :test => [ :plaintest ]
|
26
|
-
HAVEXMLTEST = false
|
27
|
-
else
|
28
|
-
# rake 0.5.4.6+ (0.5.5)
|
29
|
-
task :test => [ :backup_testresults, :xmltest ]
|
30
|
-
HAVEXMLTEST = true
|
31
|
-
end
|
32
|
-
|
33
|
-
# define a task(s) to run tests
|
34
|
-
|
35
|
-
test_files = FileList.new( "test/**/t_*.rb" )
|
36
|
-
TEST_OUTPUT = "html/test"
|
37
|
-
|
38
|
-
Rake::TestTask.new( :plaintest ) do |t|
|
20
|
+
# define a task to run tests
|
21
|
+
Rake::TestTask.new do |t|
|
39
22
|
t.libs << "test"
|
40
|
-
t.test_files =
|
23
|
+
t.test_files = FileList.new( "test/**/t_*.rb" )
|
41
24
|
t.verbose = true
|
42
25
|
end
|
43
26
|
|
44
|
-
if HAVEXMLTEST
|
45
|
-
# rake<0.5.5 requires a patch to rake_test_loader.rb to exclude options
|
46
|
-
# rake<0.5.5 requires a patch to rake/testtask.rb to support ruby_opts
|
47
|
-
# (see doc/patches)
|
48
|
-
Rake::TestTask.new( :xmltest ) do |t|
|
49
|
-
t.libs << "test"
|
50
|
-
t.test_files = test_files
|
51
|
-
t.verbose = true
|
52
|
-
t.ruby_opts << '-rtest/unit/ui/xml/testrunner'
|
53
|
-
ENV['XMLTEST_OUTPUT'] = "#{TEST_OUTPUT}/testresults.xml"
|
54
|
-
t.options = "--runner=xml"
|
55
|
-
end
|
56
|
-
end # !HAVEXMLTEST
|
57
|
-
|
58
|
-
|
59
|
-
# backs up existing testresults.xml files in test target dir
|
60
|
-
task :backup_testresults do
|
61
|
-
unless File.exist?( TEST_OUTPUT )
|
62
|
-
mkdir_p( TEST_OUTPUT )
|
63
|
-
end
|
64
|
-
old = "#{TEST_OUTPUT}/testresults.xml"
|
65
|
-
if File.exist?( old )
|
66
|
-
stat = File.stat( old )
|
67
|
-
bak = stat.ctime.strftime('testresults-%Y%m%d-%H%M.xml')
|
68
|
-
new = "#{TEST_OUTPUT}/#{bak}"
|
69
|
-
#puts "...Backing up previous test results to #{new}"
|
70
|
-
mv( old, new )
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
27
|
# define a task to create rdocs
|
75
28
|
# keep a reference to it so we can reuse it in the gempkg task
|
76
|
-
rd_task = Rake::RDocTask.new
|
29
|
+
rd_task = Rake::RDocTask.new do |rdoc|
|
77
30
|
rdoc.title = PKG_SUMMARY
|
78
|
-
rdoc.template = "doc/jamis.rb" # so nice
|
79
31
|
rdoc.options << '--line-numbers' << '--inline-source'
|
80
|
-
rdoc.rdoc_files.include( '
|
32
|
+
#rdoc.rdoc_files.include( 'TODO' )
|
81
33
|
rdoc.rdoc_files.include( 'lib/**/*.rb' )
|
82
|
-
rdoc.rdoc_files.include( 'doc/*.rd' )
|
83
34
|
end
|
84
35
|
|
85
36
|
PKG_FILES = FileList[
|
@@ -113,25 +64,5 @@ else
|
|
113
64
|
end
|
114
65
|
end
|
115
66
|
|
116
|
-
desc "Delete all generated files (includes built packages)"
|
117
|
-
task :realclean do
|
118
|
-
f = FileList[ 'pkg', 'html', 'doc/test*.xml' ]
|
119
|
-
rm_rf f
|
120
|
-
end
|
121
|
-
|
122
|
-
desc "Coverage! (still a big hack)"
|
123
|
-
task :coverage => [ :test_coverage, :coverage_summary ]
|
124
67
|
|
125
|
-
|
126
|
-
t.libs << "test"
|
127
|
-
t.test_files = test_files
|
128
|
-
t.verbose = true
|
129
|
-
def t.rake_loader
|
130
|
-
'test/coverage/c_loader.rb'
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
task :coverage_summary do
|
135
|
-
# too many options!@
|
136
|
-
ruby "test/coverage/analyzer.rb xxx.trace html/coverage test/coverage/template.html test/coverage/index_tmpl.html"
|
137
|
-
end
|
68
|
+
|
data/TODO
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# todo for rscm/scm/accurev.rb
|
2
2
|
|
3
|
-
api - checkout
|
3
|
+
**api - checkout
|
4
4
|
- there is no rscm-api update() (only checkout-to-existing-ws)
|
5
5
|
- `pop`, `update`
|
6
6
|
|
7
7
|
**api - revisions
|
8
8
|
- `hist` (others?)
|
9
9
|
|
10
|
-
api - diff
|
10
|
+
**api - diff
|
11
11
|
- `diff` (yukx)
|
12
12
|
|
13
13
|
api - import_central, create_central
|
@@ -21,23 +21,9 @@ api - triggers?
|
|
21
21
|
**api - identifiers (Time or revision) to ac format
|
22
22
|
- is this even always applicable? does stat/update take limits?
|
23
23
|
|
24
|
-
|
24
|
+
xml - s/FileStatus/FileData/
|
25
25
|
|
26
26
|
api - checkout(Time.infinite) just does update
|
27
27
|
checkout(x) only works if ws not exist
|
28
28
|
unless it implies nuke-and-re-checkout (slow)
|
29
29
|
|
30
|
-
api - need ac_update which returns an acresponse
|
31
|
-
|
32
|
-
api - update: elements list should not contain directories
|
33
|
-
|
34
|
-
api - update: elements list should probably not include removed files
|
35
|
-
|
36
|
-
# command - Command.working_dir is bad: should use with_working_dir()
|
37
|
-
|
38
|
-
*** api - checkout() should use `pop` instead of `mkws`, unless
|
39
|
-
user *really* wants it
|
40
|
-
- yeargh... how does update work with pop? just nuke and/or overwrite?
|
41
|
-
|
42
|
-
ac pop -R -v orbitz-host-gt3-0-rc -L . . > ~/cheese/rscm-accurev/test/eg/ac-pop.txt
|
43
|
-
|
data/lib/rscm/accurev.rb
CHANGED
@@ -1,18 +1,6 @@
|
|
1
|
-
|
1
|
+
require 'rubygems'
|
2
2
|
require 'rscm/scm/accurev/api'
|
3
3
|
require 'rscm/scm/accurev/command'
|
4
4
|
require 'rscm/scm/accurev/xml'
|
5
5
|
require 'rscm/scm/accurev/filterio'
|
6
6
|
|
7
|
-
module RSCM
|
8
|
-
#
|
9
|
-
# == module RSCM::Accurev
|
10
|
-
#
|
11
|
-
# Namespace for accurev api classes and utils.
|
12
|
-
#
|
13
|
-
# See RSCM::Accurev::API.
|
14
|
-
#
|
15
|
-
module Accurev
|
16
|
-
VERSION = '0.0.5'
|
17
|
-
end
|
18
|
-
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'singleton'
|
4
|
+
|
5
|
+
module RSCM
|
6
|
+
module Accurev
|
7
|
+
|
8
|
+
class Command
|
9
|
+
include Singleton
|
10
|
+
#Thread.current[:foo]
|
11
|
+
|
12
|
+
attr_accessor :debug, :debug_to, :accurev, :working_dir
|
13
|
+
|
14
|
+
def initialize( working_dir="." )
|
15
|
+
@debug = false
|
16
|
+
@debug_to = STDOUT
|
17
|
+
@accurev = "accurev"
|
18
|
+
@working_dir = working_dir
|
19
|
+
end
|
20
|
+
|
21
|
+
def accurev_cmdline( cmd, *opts )
|
22
|
+
return "#{@accurev} #{cmd} #{opts.join(' ')}";
|
23
|
+
end
|
24
|
+
|
25
|
+
# Execute the given accurev subcommand, and return its
|
26
|
+
# output as a plain uninterpreted string.
|
27
|
+
# Not all accurev subcommands (eg, `accurev info`) support
|
28
|
+
# `-fx` for xml output.
|
29
|
+
def accurev_nofx( cmd, *opts )
|
30
|
+
# nativepath_to_filepath is actually generic to native
|
31
|
+
dir = PathConverter.nativepath_to_filepath( @working_dir )
|
32
|
+
dir = File.expand_path( dir )
|
33
|
+
with_working_dir( dir ) do
|
34
|
+
cmdline = self.accurev_cmdline( cmd, opts )
|
35
|
+
if @debug
|
36
|
+
@debug_to.puts("ac> #{cmdline}")
|
37
|
+
end
|
38
|
+
Better.popen( cmdline ) do |stdout|
|
39
|
+
return stdout.read()
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Execute the given accurev subcommand, and return its
|
45
|
+
# output as an REXML document. The options list to the command
|
46
|
+
# will automatically have `-fx` prepended, to specify xml output.
|
47
|
+
# Certain quirks in <AcResponse>-type documents will be
|
48
|
+
# corrected (see Accurev::AcXMLScrubIO).
|
49
|
+
def accurev( cmd, *opts )
|
50
|
+
# nativepath_to_filepath is actually generic to native
|
51
|
+
dir = PathConverter.nativepath_to_filepath( @working_dir )
|
52
|
+
dir = File.expand_path( dir )
|
53
|
+
opts << "-fx"
|
54
|
+
with_working_dir( dir ) do
|
55
|
+
cmdline = self.accurev_cmdline( cmd, opts )
|
56
|
+
if @debug
|
57
|
+
@debug_to.puts("ac> #{cmdline}")
|
58
|
+
end
|
59
|
+
Better.popen( cmdline ) do |stdout|
|
60
|
+
output = stdout.read()
|
61
|
+
if @debug
|
62
|
+
@debug_to.puts( "raw>\n#{output}" )
|
63
|
+
end
|
64
|
+
begin
|
65
|
+
return REXML::Document.new( AcXMLScrubIO.new( output ) )
|
66
|
+
rescue Exception => e
|
67
|
+
raise "Unexpected output from #{cmdline}: #{e}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Execute the given accurev subcommand using +accurev+,
|
74
|
+
# and return the <element> REXML elements from the
|
75
|
+
# resulting document.
|
76
|
+
# For ac commands which emit the common <elements> format.
|
77
|
+
def accurev_elements( mapclass, cmd, *opts )
|
78
|
+
doc = self.accurev( cmd, opts )
|
79
|
+
if @debug
|
80
|
+
@debug_to.puts( doc )
|
81
|
+
end
|
82
|
+
if doc.elements.size==0
|
83
|
+
raise "Unexpected output from #{cmd}: #{doc}"
|
84
|
+
end
|
85
|
+
doc.elements.each( "/AcResponse/element" ) do |e|
|
86
|
+
o = mapclass.new( e )
|
87
|
+
yield o
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
|