@@ -232,11 +232,108 @@ describe("solidity plugin config validation", () => {
232
232
) ;
233
233
} ) ;
234
234
235
- it . todo ( "Should reject invalid SingleVersionSolidityUserConfig values" ) ;
235
+ it ( "Should reject invalid SingleVersionSolidityUserConfig values" , ( ) => {
236
+ assert . deepEqual (
237
+ validateSolidityUserConfig ( {
238
+ solidity : {
239
+ version : 123 ,
240
+ npmFilesToBuild : { } ,
241
+ isolated : "false" ,
242
+ } ,
243
+ } ) ,
244
+ [
245
+ {
246
+ message : "Expected boolean, received string" ,
247
+ path : [ "solidity" , "isolated" ] ,
248
+ } ,
249
+ {
250
+ message : "Expected string, received number" ,
251
+ path : [ "solidity" , "version" ] ,
252
+ } ,
253
+ {
254
+ message : "Expected array, received object" ,
255
+ path : [ "solidity" , "npmFilesToBuild" ] ,
256
+ } ,
257
+ ] ,
258
+ ) ;
259
+ } ) ;
236
260
237
- it . todo ( "Should reject invalid MultiVersionSolidityUserConfig values" ) ;
261
+ it ( "Should reject invalid MultiVersionSolidityUserConfig values" , ( ) => {
262
+ assert . deepEqual (
263
+ validateSolidityUserConfig ( {
264
+ solidity : {
265
+ compilers : [
266
+ {
267
+ version : 123 ,
268
+ } ,
269
+ ] ,
270
+ overrides : [ ] ,
271
+ isolated : "false" ,
272
+ } ,
273
+ } ) ,
274
+ [
275
+ {
276
+ message : "Expected boolean, received string" ,
277
+ path : [ "solidity" , "isolated" ] ,
278
+ } ,
279
+ {
280
+ message : "Expected string, received number" ,
281
+ path : [ "solidity" , "compilers" , 0 , "version" ] ,
282
+ } ,
283
+ {
284
+ message : "Expected object, received array" ,
285
+ path : [ "solidity" , "overrides" ] ,
286
+ } ,
287
+ ] ,
288
+ ) ;
289
+ } ) ;
238
290
239
- it . todo ( "Should reject invalid BuildProfilesSolidityUserConfig values" ) ;
291
+ it ( "Should reject invalid BuildProfilesSolidityUserConfig values" , ( ) => {
292
+ assert . deepEqual (
293
+ validateSolidityUserConfig ( {
294
+ solidity : {
295
+ profiles : {
296
+ default : {
297
+ version : 123 ,
298
+ isolated : "false" ,
299
+ } ,
300
+ production : {
301
+ version : "0.8.0" ,
302
+ compilers : [
303
+ {
304
+ version : 123 ,
305
+ } ,
306
+ ] ,
307
+ overrides : [ ] ,
308
+ isolated : "true" ,
309
+ } ,
310
+ } ,
311
+ } ,
312
+ } ) ,
313
+ [
314
+ {
315
+ message : "Expected boolean, received string" ,
316
+ path : [ "solidity" , "profiles" , "default" , "isolated" ] ,
317
+ } ,
318
+ {
319
+ message : "Expected string, received number" ,
320
+ path : [ "solidity" , "profiles" , "default" , "version" ] ,
321
+ } ,
322
+ {
323
+ message : "Expected boolean, received string" ,
324
+ path : [ "solidity" , "profiles" , "production" , "isolated" ] ,
325
+ } ,
326
+ {
327
+ message : "This field is incompatible with `version`" ,
328
+ path : [ "solidity" , "profiles" , "production" , "compilers" ] ,
329
+ } ,
330
+ {
331
+ message : "This field is incompatible with `version`" ,
332
+ path : [ "solidity" , "profiles" , "production" , "overrides" ] ,
333
+ } ,
334
+ ] ,
335
+ ) ;
336
+ } ) ;
240
337
241
338
it ( "Should accept solidity version strings" , ( ) => {
242
339
assert . deepEqual ( validateSolidityUserConfig ( { solidity : "0.8.0" } ) , [ ] ) ;
@@ -249,11 +346,104 @@ describe("solidity plugin config validation", () => {
249
346
) ;
250
347
} ) ;
251
348
252
- it . todo ( "Should accept a SingleVersionSolidityUserConfig value" ) ;
349
+ it ( "Should accept a SingleVersionSolidityUserConfig value" , ( ) => {
350
+ assert . deepEqual (
351
+ validateSolidityUserConfig ( {
352
+ solidity : {
353
+ version : "0.8.0" ,
354
+ settings : {
355
+ optimizer : {
356
+ enabled : true ,
357
+ runs : 200 ,
358
+ } ,
359
+ } ,
360
+ npmFilesToBuild : [ "./build.js" ] ,
361
+ isolated : false ,
362
+ } ,
363
+ } ) ,
364
+ [ ] ,
365
+ ) ;
366
+ } ) ;
253
367
254
- it . todo ( "Should accept a MultiVersionSolidityUserConfig value" ) ;
368
+ it ( "Should accept a MultiVersionSolidityUserConfig value" , ( ) => {
369
+ assert . deepEqual (
370
+ validateSolidityUserConfig ( {
371
+ solidity : {
372
+ compilers : [
373
+ {
374
+ version : "0.8.0" ,
375
+ settings : {
376
+ optimizer : {
377
+ enabled : true ,
378
+ runs : 200 ,
379
+ } ,
380
+ } ,
381
+ } ,
382
+ ] ,
383
+ overrides : {
384
+ "contracts/Contract.sol" : {
385
+ version : "0.8.1" ,
386
+ settings : {
387
+ optimizer : {
388
+ enabled : false ,
389
+ runs : 100 ,
390
+ } ,
391
+ } ,
392
+ } ,
393
+ } ,
394
+ isolated : false ,
395
+ } ,
396
+ } ) ,
397
+ [ ] ,
398
+ ) ;
399
+ } ) ;
255
400
256
- it . todo ( "Should accept a BuildProfilesSolidityUserConfig value" ) ;
401
+ it ( "Should accept a BuildProfilesSolidityUserConfig value" , ( ) => {
402
+ assert . deepEqual (
403
+ validateSolidityUserConfig ( {
404
+ solidity : {
405
+ profiles : {
406
+ default : {
407
+ version : "0.8.0" ,
408
+ settings : {
409
+ optimizer : {
410
+ enabled : true ,
411
+ runs : 200 ,
412
+ } ,
413
+ } ,
414
+ isolated : false ,
415
+ } ,
416
+ production : {
417
+ compilers : [
418
+ {
419
+ version : "0.8.0" ,
420
+ settings : {
421
+ optimizer : {
422
+ enabled : true ,
423
+ runs : 200 ,
424
+ } ,
425
+ } ,
426
+ } ,
427
+ ] ,
428
+ overrides : {
429
+ "contracts/Contract.sol" : {
430
+ version : "0.8.1" ,
431
+ settings : {
432
+ optimizer : {
433
+ enabled : true ,
434
+ runs : 300 ,
435
+ } ,
436
+ } ,
437
+ } ,
438
+ } ,
439
+ isolated : true ,
440
+ } ,
441
+ } ,
442
+ } ,
443
+ } ) ,
444
+ [ ] ,
445
+ ) ;
446
+ } ) ;
257
447
} ) ;
258
448
} ) ;
259
449
0 commit comments