@@ -2361,3 +2361,78 @@ func TestJobs_ScaleStatus(t *testing.T) {
2361
2361
func TestJobs_Services (t * testing.T ) {
2362
2362
// TODO(jrasell) add tests once registration process is in place.
2363
2363
}
2364
+
2365
+ // TestJobs_Parse asserts ParseHCL and ParseHCLOpts use the API to parse HCL.
2366
+ func TestJobs_Parse (t * testing.T ) {
2367
+ testutil .Parallel (t )
2368
+
2369
+ jobspec := `job "example" {}`
2370
+
2371
+ // Assert ParseHCL returns an error if Nomad is not running to ensure
2372
+ // that parsing is done server-side and not via the jobspec package.
2373
+ {
2374
+ c , err := NewClient (DefaultConfig ())
2375
+ require .NoError (t , err )
2376
+
2377
+ _ , err = c .Jobs ().ParseHCL (jobspec , false )
2378
+ require .Error (t , err )
2379
+ require .Contains (t , err .Error (), "Put" )
2380
+ }
2381
+
2382
+ c , s := makeClient (t , nil , nil )
2383
+ defer s .Stop ()
2384
+
2385
+ // Test ParseHCL
2386
+ job1 , err := c .Jobs ().ParseHCL (jobspec , false )
2387
+ require .NoError (t , err )
2388
+ require .Equal (t , "example" , * job1 .Name )
2389
+ require .Nil (t , job1 .Namespace )
2390
+
2391
+ job1Canonicalized , err := c .Jobs ().ParseHCL (jobspec , true )
2392
+ require .NoError (t , err )
2393
+ require .Equal (t , "example" , * job1Canonicalized .Name )
2394
+ require .Equal (t , "default" , * job1Canonicalized .Namespace )
2395
+ require .NotEqual (t , job1 , job1Canonicalized )
2396
+
2397
+ // Test ParseHCLOpts
2398
+ req := & JobsParseRequest {
2399
+ JobHCL : jobspec ,
2400
+ HCLv1 : false ,
2401
+ Canonicalize : false ,
2402
+ }
2403
+
2404
+ job2 , err := c .Jobs ().ParseHCLOpts (req )
2405
+ require .NoError (t , err )
2406
+ require .Equal (t , job1 , job2 )
2407
+
2408
+ // Test ParseHCLOpts with Canonicalize=true
2409
+ req = & JobsParseRequest {
2410
+ JobHCL : jobspec ,
2411
+ HCLv1 : false ,
2412
+ Canonicalize : true ,
2413
+ }
2414
+ job2Canonicalized , err := c .Jobs ().ParseHCLOpts (req )
2415
+ require .NoError (t , err )
2416
+ require .Equal (t , job1Canonicalized , job2Canonicalized )
2417
+
2418
+ // Test ParseHCLOpts with HCLv1=true
2419
+ req = & JobsParseRequest {
2420
+ JobHCL : jobspec ,
2421
+ HCLv1 : true ,
2422
+ Canonicalize : false ,
2423
+ }
2424
+
2425
+ job3 , err := c .Jobs ().ParseHCLOpts (req )
2426
+ require .NoError (t , err )
2427
+ require .Equal (t , job1 , job3 )
2428
+
2429
+ // Test ParseHCLOpts with HCLv1=true and Canonicalize=true
2430
+ req = & JobsParseRequest {
2431
+ JobHCL : jobspec ,
2432
+ HCLv1 : true ,
2433
+ Canonicalize : true ,
2434
+ }
2435
+ job3Canonicalized , err := c .Jobs ().ParseHCLOpts (req )
2436
+ require .NoError (t , err )
2437
+ require .Equal (t , job1Canonicalized , job3Canonicalized )
2438
+ }
0 commit comments