@@ -17,35 +17,43 @@ afterEach(() => {
1717
1818describe ( "install procedure" , ( ) => {
1919 let downloadAndRunScriptMock : jest . Mock < any , any > ;
20- let matlabGetVersionMock : jest . Mock < any , any > ;
20+ let matlabGetReleaseInfoMock : jest . Mock < any , any > ;
21+ let matlabMakeToolcacheDirMock : jest . Mock < any , any > ;
2122 let matlabSetupBatchMock : jest . Mock < any , any > ;
2223 let mpmSetupMock : jest . Mock < any , any > ;
2324 let mpmInstallMock : jest . Mock < any , any > ;
25+ let addPathMock : jest . Mock < any , any > ;
26+ let setOutputMock : jest . Mock < any , any > ;
2427
2528 const platform = "linux" ;
2629 const arch = "x64" ;
2730 const release = "latest" ;
28- const version = {
29- semantic : "9.13.0" ,
30- release : "r2022b"
31+ const releaseInfo = {
32+ name : "r2022b" ,
33+ version : "9.13.0" ,
34+ updateNumber : "latest"
3135 } ;
3236 const products = [ "MATLAB" , "Parallel_Computing_Toolbox" ] ;
3337
3438 const doInstall = ( ) => install . install ( platform , arch , release , products ) ;
3539
3640 beforeEach ( ( ) => {
3741 downloadAndRunScriptMock = script . downloadAndRunScript as jest . Mock ;
38- matlabGetVersionMock = matlab . getVersion as jest . Mock ;
42+ matlabGetReleaseInfoMock = matlab . getReleaseInfo as jest . Mock ;
43+ matlabMakeToolcacheDirMock = matlab . makeToolcacheDir as jest . Mock ;
3944 matlabSetupBatchMock = matlab . setupBatch as jest . Mock ;
4045 mpmSetupMock = mpm . setup as jest . Mock ;
4146 mpmInstallMock = mpm . install as jest . Mock ;
47+ addPathMock = core . addPath as jest . Mock ;
48+ setOutputMock = core . setOutput as jest . Mock ;
4249
4350 // Mock core.group to simply return the output of the func it gets from
4451 // the caller
4552 ( core . group as jest . Mock ) . mockImplementation ( async ( _ , func ) => {
4653 return func ( ) ;
4754 } ) ;
48- matlabGetVersionMock . mockResolvedValue ( version ) ;
55+ matlabGetReleaseInfoMock . mockResolvedValue ( releaseInfo ) ;
56+ matlabMakeToolcacheDirMock . mockResolvedValue ( [ "/opt/hostedtoolcache/MATLAB/9.13.0/x64" , false ] ) ;
4957 } ) ;
5058
5159 it ( "ideally works" , async ( ) => {
@@ -54,6 +62,8 @@ describe("install procedure", () => {
5462 expect ( matlabSetupBatchMock ) . toHaveBeenCalledTimes ( 1 ) ;
5563 expect ( mpmSetupMock ) . toHaveBeenCalledTimes ( 1 ) ;
5664 expect ( mpmInstallMock ) . toHaveBeenCalledTimes ( 1 ) ;
65+ expect ( addPathMock ) . toHaveBeenCalledTimes ( 1 ) ;
66+ expect ( setOutputMock ) . toHaveBeenCalledTimes ( 1 ) ;
5767 } ) ;
5868
5969 [ "darwin" , "win32" ] . forEach ( ( os ) => {
@@ -64,11 +74,21 @@ describe("install procedure", () => {
6474 expect ( matlabSetupBatchMock ) . toHaveBeenCalledTimes ( 1 ) ;
6575 expect ( mpmSetupMock ) . toHaveBeenCalledTimes ( 1 ) ;
6676 expect ( mpmInstallMock ) . toHaveBeenCalledTimes ( 1 ) ;
77+ expect ( addPathMock ) . toHaveBeenCalledTimes ( 1 ) ;
78+ expect ( setOutputMock ) . toHaveBeenCalledTimes ( 1 ) ;
6779 } ) ;
6880 } ) ;
6981
82+ it ( "NoOp on existing install" , async ( ) => {
83+ matlabMakeToolcacheDirMock . mockResolvedValue ( [ "/opt/hostedtoolcache/MATLAB/9.13.0/x64" , true ] ) ;
84+ await expect ( doInstall ( ) ) . resolves . toBeUndefined ( ) ;
85+ expect ( mpmInstallMock ) . toHaveBeenCalledTimes ( 0 ) ;
86+ expect ( addPathMock ) . toHaveBeenCalledTimes ( 1 ) ;
87+ expect ( setOutputMock ) . toHaveBeenCalledTimes ( 1 ) ;
88+ } ) ;
89+
7090 it ( "rejects for invalid MATLAB version" , async ( ) => {
71- matlabGetVersionMock . mockRejectedValue ( Error ( "oof" ) ) ;
91+ matlabGetReleaseInfoMock . mockRejectedValue ( Error ( "oof" ) ) ;
7292 await expect ( doInstall ( ) ) . rejects . toBeDefined ( ) ;
7393 } ) ;
7494
0 commit comments