Commit Friday evening.
PDFA and EXFO Laser are now part of the family
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
function filename = hashTableName(suite)
|
||||
% determines the file name of a hash table
|
||||
%
|
||||
% The MD5 file is assumed to be in the same directory as the test suite.
|
||||
% It has a file name "$SUITE.$ENV.$VER.md5"
|
||||
% where the following fields are filled:
|
||||
% $ENV: the environment (either "MATLAB" or "Octave")
|
||||
% $VER: the version (e.g. "3.8.0" for Octave, "8.3" for MATLAB 2014a)
|
||||
% $SUITE: the name (and path) of the test suite
|
||||
%
|
||||
% For the $VER-part, a fall-back mechanism is present that prefers the exact
|
||||
% version but will use the closest available file if such file does not
|
||||
% exist.
|
||||
[pathstr,name, ext] = fileparts(which(func2str(suite)));
|
||||
[env, version] = getEnvironment();
|
||||
ext = sprintf('.%s.%s.md5', env, version);
|
||||
relFilename = [name ext];
|
||||
filename = fullfile(pathstr, relFilename);
|
||||
|
||||
if ~exist(filename,'file')
|
||||
% To avoid having to create a file for each release of the environment,
|
||||
% also other versions are tried. The file for different releases are checked
|
||||
% in the following order:
|
||||
% 1. the currently running version (handled above!)
|
||||
% 2. the newest older version (e.g. use R2014b's file in R2015a)
|
||||
% 3. the oldest newer version (e.g. use R2014a's file in R2013a)
|
||||
pattern = sprintf('%s.%s.*.md5', name, env);
|
||||
candidates = dir(fullfile(pathstr, pattern));
|
||||
|
||||
% We just need the file names.
|
||||
filenames = arrayfun(@(c)c.name, candidates, 'UniformOutput', false);
|
||||
|
||||
% Add the expected version to the results, and sort the names by
|
||||
% version (this is the same as alphabetically).
|
||||
filenames = sort([filenames; {relFilename}]);
|
||||
nFiles = numel(filenames);
|
||||
iCurrent = find(ismember(filenames, relFilename));
|
||||
% determine the fall-back candidates:
|
||||
iNewestOlder = iCurrent - 1;
|
||||
iOldestNewer = iCurrent + 1;
|
||||
|
||||
inRange = @(idx)(idx <= nFiles && idx >= 1);
|
||||
if inRange(iNewestOlder)
|
||||
% use the newest older version
|
||||
relFilename = filenames{iNewestOlder};
|
||||
elseif inRange(iOldestNewer)
|
||||
% use the oldest newer version
|
||||
relFilename = filenames{iOldestNewer};
|
||||
else
|
||||
% use the exact version anyhow
|
||||
end
|
||||
|
||||
filename = fullfile(pathstr, relFilename);
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user