From 43dac390967e2e85da0b3fcd84043a77cfaddfd0 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Fri, 30 Oct 2026 15:15:04 +0100 Subject: treewide: Align the rest of the files with the server repository --- tests/README.md | 109 --- tests/by-name/le/less/data/test.file | 1001 -------------------- tests/by-name/le/less/data/test.file.license | 9 - tests/by-name/le/less/test.desc | 50 - tests/by-name/le/less/test.desc.license | 9 - tests/by-name/le/less/test.nix | 30 - tests/by-name/nv/nvim-checkhealth/test.desc | 10 - .../by-name/nv/nvim-checkhealth/test.desc.license | 9 - tests/by-name/nv/nvim-checkhealth/test.nix | 55 -- tests/by-name/nv/nvim-neorg/data/index.norg | 16 - .../by-name/nv/nvim-neorg/data/index.norg.license | 9 - tests/by-name/nv/nvim-neorg/data/reference.norg | 11 - .../nv/nvim-neorg/data/reference.norg.license | 9 - tests/by-name/nv/nvim-neorg/test.desc | 73 -- tests/by-name/nv/nvim-neorg/test.desc.license | 9 - tests/by-name/nv/nvim-neorg/test.nix | 55 -- tests/by-name/ya/yambar/test.desc | 5 - tests/by-name/ya/yambar/test.desc.license | 9 - tests/by-name/ya/yambar/test.nix | 33 - tests/default.nix | 50 - tests/infrastructure/clean.awk | 23 - tests/infrastructure/default.nix | 177 ---- tests/infrastructure/driver.sh | 176 ---- tests/infrastructure/run.nix | 54 -- tests/old/README.md | 109 +++ tests/old/by-name/le/less/data/test.file | 1001 ++++++++++++++++++++ tests/old/by-name/le/less/data/test.file.license | 9 + tests/old/by-name/le/less/test.desc | 50 + tests/old/by-name/le/less/test.desc.license | 9 + tests/old/by-name/le/less/test.nix | 30 + tests/old/by-name/nv/nvim-checkhealth/test.desc | 10 + .../by-name/nv/nvim-checkhealth/test.desc.license | 9 + tests/old/by-name/nv/nvim-checkhealth/test.nix | 55 ++ tests/old/by-name/nv/nvim-neorg/data/index.norg | 16 + .../by-name/nv/nvim-neorg/data/index.norg.license | 9 + .../old/by-name/nv/nvim-neorg/data/reference.norg | 11 + .../nv/nvim-neorg/data/reference.norg.license | 9 + tests/old/by-name/nv/nvim-neorg/test.desc | 73 ++ tests/old/by-name/nv/nvim-neorg/test.desc.license | 9 + tests/old/by-name/nv/nvim-neorg/test.nix | 55 ++ tests/old/by-name/ya/yambar/test.desc | 5 + tests/old/by-name/ya/yambar/test.desc.license | 9 + tests/old/by-name/ya/yambar/test.nix | 33 + tests/old/default.nix | 50 + tests/old/infrastructure/clean.awk | 23 + tests/old/infrastructure/default.nix | 177 ++++ tests/old/infrastructure/driver.sh | 176 ++++ tests/old/infrastructure/run.nix | 54 ++ 48 files changed, 1991 insertions(+), 1991 deletions(-) delete mode 100644 tests/README.md delete mode 100644 tests/by-name/le/less/data/test.file delete mode 100644 tests/by-name/le/less/data/test.file.license delete mode 100644 tests/by-name/le/less/test.desc delete mode 100644 tests/by-name/le/less/test.desc.license delete mode 100644 tests/by-name/le/less/test.nix delete mode 100644 tests/by-name/nv/nvim-checkhealth/test.desc delete mode 100644 tests/by-name/nv/nvim-checkhealth/test.desc.license delete mode 100644 tests/by-name/nv/nvim-checkhealth/test.nix delete mode 100644 tests/by-name/nv/nvim-neorg/data/index.norg delete mode 100644 tests/by-name/nv/nvim-neorg/data/index.norg.license delete mode 100644 tests/by-name/nv/nvim-neorg/data/reference.norg delete mode 100644 tests/by-name/nv/nvim-neorg/data/reference.norg.license delete mode 100644 tests/by-name/nv/nvim-neorg/test.desc delete mode 100644 tests/by-name/nv/nvim-neorg/test.desc.license delete mode 100644 tests/by-name/nv/nvim-neorg/test.nix delete mode 100644 tests/by-name/ya/yambar/test.desc delete mode 100644 tests/by-name/ya/yambar/test.desc.license delete mode 100644 tests/by-name/ya/yambar/test.nix delete mode 100644 tests/default.nix delete mode 100644 tests/infrastructure/clean.awk delete mode 100644 tests/infrastructure/default.nix delete mode 100644 tests/infrastructure/driver.sh delete mode 100644 tests/infrastructure/run.nix create mode 100644 tests/old/README.md create mode 100644 tests/old/by-name/le/less/data/test.file create mode 100644 tests/old/by-name/le/less/data/test.file.license create mode 100644 tests/old/by-name/le/less/test.desc create mode 100644 tests/old/by-name/le/less/test.desc.license create mode 100644 tests/old/by-name/le/less/test.nix create mode 100644 tests/old/by-name/nv/nvim-checkhealth/test.desc create mode 100644 tests/old/by-name/nv/nvim-checkhealth/test.desc.license create mode 100644 tests/old/by-name/nv/nvim-checkhealth/test.nix create mode 100644 tests/old/by-name/nv/nvim-neorg/data/index.norg create mode 100644 tests/old/by-name/nv/nvim-neorg/data/index.norg.license create mode 100644 tests/old/by-name/nv/nvim-neorg/data/reference.norg create mode 100644 tests/old/by-name/nv/nvim-neorg/data/reference.norg.license create mode 100644 tests/old/by-name/nv/nvim-neorg/test.desc create mode 100644 tests/old/by-name/nv/nvim-neorg/test.desc.license create mode 100644 tests/old/by-name/nv/nvim-neorg/test.nix create mode 100644 tests/old/by-name/ya/yambar/test.desc create mode 100644 tests/old/by-name/ya/yambar/test.desc.license create mode 100644 tests/old/by-name/ya/yambar/test.nix create mode 100644 tests/old/default.nix create mode 100644 tests/old/infrastructure/clean.awk create mode 100644 tests/old/infrastructure/default.nix create mode 100644 tests/old/infrastructure/driver.sh create mode 100644 tests/old/infrastructure/run.nix (limited to 'tests') diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index 34dc9255..00000000 --- a/tests/README.md +++ /dev/null @@ -1,109 +0,0 @@ - - -# How to write a test - -Test are simple derivations, put into the `by-name` directory. As you -often want to test configuration, the 'standard' nixos-vm-test function -starts a vm with the specified configuration and lets you run a python -test script. - -But, I've noticed, that most of my tests in this nixos-configuration are -actually testing the home-manager config of a program. As such I've built -a test infrastructure on top of the pre-existing nixos-vm-tests. It is -further described in the `mkTest` section. - -## `mkTest` - -A standard application test would look somewhat like this: - -```nix -{mkTest}: -mkTest { - name = "my-tests"; - - # The configuration to add. - # In this case, the less config is being tested. - configuration = { - imports = [ - ../../../../modules/by-name/le/less/module.nix - ]; - config.soispha.programs.less.enable = true; - }; - - # Files that are provided at the test directory. - # In this case, the test dir would have a `./data/test.file` - # path pre-populated with the - # contents of the file at the lhs. - testData = { - "data/test.file" = ./data/test.file; - }; - - # The description of what to do in the test. - description = ./test.desc; - - # A sha256 hashsum of the concatenated output of the program. - # This can be `null` to disable the checksum mechanism. - hash = "87901231393b51cdd45bbb4339a32db2894a3a5ab164cb5c7a8fa14721fdcba7"; -} -``` - -### The test description file - -All line starting with `#` or only containing white space are -ignored. Additionally, all leading and trailing white space is stripped -before evaluating. - -The general syntax is: - -``` -COMMAND ARGS -``` - -where `COMMAND` is one of the commands listed in [Commands](#commands) - -The `ARGS` are the verbatim content from the space after the `COMMAND` -to the end of line character. - -You can run the description file, similarly as in the tests via the `run_test_description` -package exported by the flake. - -#### Commands - -##### `Type` - -Send the `ARGS` to the application. This interprets `ARGS` as specified -by the TMUX (1) man page on `send-keys`. - -#### `Sleep` - -Sleep for `ARGS` seconds. - -#### `Expect` - -Grep the currently visible screen for the regex `ARGS`. This regex -must match. - -#### `ExpectNot` - -Does the same thing as [Expect](#expect), but enforces, that the -regex does not match. - -#### `SetGolden` - -Set the golden file (the file used for the hash generation) to `ARGS`. -`ARGS` must be a valid file path. - -#### `Exec` - -Executes the command (`ARGS`) and waits until it finishes. -This will hang forever, when the command that does not exit. diff --git a/tests/by-name/le/less/data/test.file b/tests/by-name/le/less/data/test.file deleted file mode 100644 index 9e9f8931..00000000 --- a/tests/by-name/le/less/data/test.file +++ /dev/null @@ -1,1001 +0,0 @@ -Line number 0. -Line number 1. -Line number 2. -Line number 3. -Line number 4. -Line number 5. -Line number 6. -Line number 7. -Line number 8. -Line number 9. -Line number 10. -Line number 11. -Line number 12. -Line number 13. -Line number 14. -Line number 15. -Line number 16. -Line number 17. -Line number 18. -Line number 19. -Line number 20. -Line number 21. -Line number 22. -Line number 23. -Line number 24. -Line number 25. -Line number 26. -Line number 27. -Line number 28. -Line number 29. -Line number 30. -Line number 31. -Line number 32. -Line number 33. -Line number 34. -Line number 35. -Line number 36. -Line number 37. -Line number 38. -Line number 39. -Line number 40. -Line number 41. -Line number 42. -Line number 43. -Line number 44. -Line number 45. -Line number 46. -Line number 47. -Line number 48. -Line number 49. -Line number 50. -Line number 51. -Line number 52. -Line number 53. -Line number 54. -Line number 55. -Line number 56. -Line number 57. -Line number 58. -Line number 59. -Line number 60. -Line number 61. -Line number 62. -Line number 63. -Line number 64. -Line number 65. -Line number 66. -Line number 67. -Line number 68. -Line number 69. -Line number 70. -Line number 71. -Line number 72. -Line number 73. -Line number 74. -Line number 75. -Line number 76. -Line number 77. -Line number 78. -Line number 79. -Line number 80. -Line number 81. -Line number 82. -Line number 83. -Line number 84. -Line number 85. -Line number 86. -Line number 87. -Line number 88. -Line number 89. -Line number 90. -Line number 91. -Line number 92. -Line number 93. -Line number 94. -Line number 95. -Line number 96. -Line number 97. -Line number 98. -Line number 99. -Line number 100. -Line number 101. -Line number 102. -Line number 103. -Line number 104. -Line number 105. -Line number 106. -Line number 107. -Line number 108. -Line number 109. -Line number 110. -Line number 111. -Line number 112. -Line number 113. -Line number 114. -Line number 115. -Line number 116. -Line number 117. -Line number 118. -Line number 119. -Line number 120. -Line number 121. -Line number 122. -Line number 123. -Line number 124. -Line number 125. -Line number 126. -Line number 127. -Line number 128. -Line number 129. -Line number 130. -Line number 131. -Line number 132. -Line number 133. -Line number 134. -Line number 135. -Line number 136. -Line number 137. -Line number 138. -Line number 139. -Line number 140. -Line number 141. -Line number 142. -Line number 143. -Line number 144. -Line number 145. -Line number 146. -Line number 147. -Line number 148. -Line number 149. -Line number 150. -Line number 151. -Line number 152. -Line number 153. -Line number 154. -Line number 155. -Line number 156. -Line number 157. -Line number 158. -Line number 159. -Line number 160. -Line number 161. -Line number 162. -Line number 163. -Line number 164. -Line number 165. -Line number 166. -Line number 167. -Line number 168. -Line number 169. -Line number 170. -Line number 171. -Line number 172. -Line number 173. -Line number 174. -Line number 175. -Line number 176. -Line number 177. -Line number 178. -Line number 179. -Line number 180. -Line number 181. -Line number 182. -Line number 183. -Line number 184. -Line number 185. -Line number 186. -Line number 187. -Line number 188. -Line number 189. -Line number 190. -Line number 191. -Line number 192. -Line number 193. -Line number 194. -Line number 195. -Line number 196. -Line number 197. -Line number 198. -Line number 199. -Line number 200. -Line number 201. -Line number 202. -Line number 203. -Line number 204. -Line number 205. -Line number 206. -Line number 207. -Line number 208. -Line number 209. -Line number 210. -Line number 211. -Line number 212. -Line number 213. -Line number 214. -Line number 215. -Line number 216. -Line number 217. -Line number 218. -Line number 219. -Line number 220. -Line number 221. -Line number 222. -Line number 223. -Line number 224. -Line number 225. -Line number 226. -Line number 227. -Line number 228. -Line number 229. -Line number 230. -Line number 231. -Line number 232. -Line number 233. -Line number 234. -Line number 235. -Line number 236. -Line number 237. -Line number 238. -Line number 239. -Line number 240. -Line number 241. -Line number 242. -Line number 243. -Line number 244. -Line number 245. -Line number 246. -Line number 247. -Line number 248. -Line number 249. -Line number 250. -Line number 251. -Line number 252. -Line number 253. -Line number 254. -Line number 255. -Line number 256. -Line number 257. -Line number 258. -Line number 259. -Line number 260. -Line number 261. -Line number 262. -Line number 263. -Line number 264. -Line number 265. -Line number 266. -Line number 267. -Line number 268. -Line number 269. -Line number 270. -Line number 271. -Line number 272. -Line number 273. -Line number 274. -Line number 275. -Line number 276. -Line number 277. -Line number 278. -Line number 279. -Line number 280. -Line number 281. -Line number 282. -Line number 283. -Line number 284. -Line number 285. -Line number 286. -Line number 287. -Line number 288. -Line number 289. -Line number 290. -Line number 291. -Line number 292. -Line number 293. -Line number 294. -Line number 295. -Line number 296. -Line number 297. -Line number 298. -Line number 299. -Line number 300. -Line number 301. -Line number 302. -Line number 303. -Line number 304. -Line number 305. -Line number 306. -Line number 307. -Line number 308. -Line number 309. -Line number 310. -Line number 311. -Line number 312. -Line number 313. -Line number 314. -Line number 315. -Line number 316. -Line number 317. -Line number 318. -Line number 319. -Line number 320. -Line number 321. -Line number 322. -Line number 323. -Line number 324. -Line number 325. -Line number 326. -Line number 327. -Line number 328. -Line number 329. -Line number 330. -Line number 331. -Line number 332. -Line number 333. -Line number 334. -Line number 335. -Line number 336. -Line number 337. -Line number 338. -Line number 339. -Line number 340. -Line number 341. -Line number 342. -Line number 343. -Line number 344. -Line number 345. -Line number 346. -Line number 347. -Line number 348. -Line number 349. -Line number 350. -Line number 351. -Line number 352. -Line number 353. -Line number 354. -Line number 355. -Line number 356. -Line number 357. -Line number 358. -Line number 359. -Line number 360. -Line number 361. -Line number 362. -Line number 363. -Line number 364. -Line number 365. -Line number 366. -Line number 367. -Line number 368. -Line number 369. -Line number 370. -Line number 371. -Line number 372. -Line number 373. -Line number 374. -Line number 375. -Line number 376. -Line number 377. -Line number 378. -Line number 379. -Line number 380. -Line number 381. -Line number 382. -Line number 383. -Line number 384. -Line number 385. -Line number 386. -Line number 387. -Line number 388. -Line number 389. -Line number 390. -Line number 391. -Line number 392. -Line number 393. -Line number 394. -Line number 395. -Line number 396. -Line number 397. -Line number 398. -Line number 399. -Line number 400. -Line number 401. -Line number 402. -Line number 403. -Line number 404. -Line number 405. -Line number 406. -Line number 407. -Line number 408. -Line number 409. -Line number 410. -Line number 411. -Line number 412. -Line number 413. -Line number 414. -Line number 415. -Line number 416. -Line number 417. -Line number 418. -Line number 419. -Line number 420. -Line number 421. -Line number 422. -Line number 423. -Line number 424. -Line number 425. -Line number 426. -Line number 427. -Line number 428. -Line number 429. -Line number 430. -Line number 431. -Line number 432. -Line number 433. -Line number 434. -Line number 435. -Line number 436. -Line number 437. -Line number 438. -Line number 439. -Line number 440. -Line number 441. -Line number 442. -Line number 443. -Line number 444. -Line number 445. -Line number 446. -Line number 447. -Line number 448. -Line number 449. -Line number 450. -Line number 451. -Line number 452. -Line number 453. -Line number 454. -Line number 455. -Line number 456. -Line number 457. -Line number 458. -Line number 459. -Line number 460. -Line number 461. -Line number 462. -Line number 463. -Line number 464. -Line number 465. -Line number 466. -Line number 467. -Line number 468. -Line number 469. -Line number 470. -Line number 471. -Line number 472. -Line number 473. -Line number 474. -Line number 475. -Line number 476. -Line number 477. -Line number 478. -Line number 479. -Line number 480. -Line number 481. -Line number 482. -Line number 483. -Line number 484. -Line number 485. -Line number 486. -Line number 487. -Line number 488. -Line number 489. -Line number 490. -Line number 491. -Line number 492. -Line number 493. -Line number 494. -Line number 495. -Line number 496. -Line number 497. -Line number 498. -Line number 499. -Line number 500. -Line number 501. -Line number 502. -Line number 503. -Line number 504. -Line number 505. -Line number 506. -Line number 507. -Line number 508. -Line number 509. -Line number 510. -Line number 511. -Line number 512. -Line number 513. -Line number 514. -Line number 515. -Line number 516. -Line number 517. -Line number 518. -Line number 519. -Line number 520. -Line number 521. -Line number 522. -Line number 523. -Line number 524. -Line number 525. -Line number 526. -Line number 527. -Line number 528. -Line number 529. -Line number 530. -Line number 531. -Line number 532. -Line number 533. -Line number 534. -Line number 535. -Line number 536. -Line number 537. -Line number 538. -Line number 539. -Line number 540. -Line number 541. -Line number 542. -Line number 543. -Line number 544. -Line number 545. -Line number 546. -Line number 547. -Line number 548. -Line number 549. -Line number 550. -Line number 551. -Line number 552. -Line number 553. -Line number 554. -Line number 555. -Line number 556. -Line number 557. -Line number 558. -Line number 559. -Line number 560. -Line number 561. -Line number 562. -Line number 563. -Line number 564. -Line number 565. -Line number 566. -Line number 567. -Line number 568. -Line number 569. -Line number 570. -Line number 571. -Line number 572. -Line number 573. -Line number 574. -Line number 575. -Line number 576. -Line number 577. -Line number 578. -Line number 579. -Line number 580. -Line number 581. -Line number 582. -Line number 583. -Line number 584. -Line number 585. -Line number 586. -Line number 587. -Line number 588. -Line number 589. -Line number 590. -Line number 591. -Line number 592. -Line number 593. -Line number 594. -Line number 595. -Line number 596. -Line number 597. -Line number 598. -Line number 599. -Line number 600. -Line number 601. -Line number 602. -Line number 603. -Line number 604. -Line number 605. -Line number 606. -Line number 607. -Line number 608. -Line number 609. -Line number 610. -Line number 611. -Line number 612. -Line number 613. -Line number 614. -Line number 615. -Line number 616. -Line number 617. -Line number 618. -Line number 619. -Line number 620. -Line number 621. -Line number 622. -Line number 623. -Line number 624. -Line number 625. -Line number 626. -Line number 627. -Line number 628. -Line number 629. -Line number 630. -Line number 631. -Line number 632. -Line number 633. -Line number 634. -Line number 635. -Line number 636. -Line number 637. -Line number 638. -Line number 639. -Line number 640. -Line number 641. -Line number 642. -Line number 643. -Line number 644. -Line number 645. -Line number 646. -Line number 647. -Line number 648. -Line number 649. -Line number 650. -Line number 651. -Line number 652. -Line number 653. -Line number 654. -Line number 655. -Line number 656. -Line number 657. -Line number 658. -Line number 659. -Line number 660. -Line number 661. -Line number 662. -Line number 663. -Line number 664. -Line number 665. -Line number 666. -Line number 667. -Line number 668. -Line number 669. -Line number 670. -Line number 671. -Line number 672. -Line number 673. -Line number 674. -Line number 675. -Line number 676. -Line number 677. -Line number 678. -Line number 679. -Line number 680. -Line number 681. -Line number 682. -Line number 683. -Line number 684. -Line number 685. -Line number 686. -Line number 687. -Line number 688. -Line number 689. -Line number 690. -Line number 691. -Line number 692. -Line number 693. -Line number 694. -Line number 695. -Line number 696. -Line number 697. -Line number 698. -Line number 699. -Line number 700. -Line number 701. -Line number 702. -Line number 703. -Line number 704. -Line number 705. -Line number 706. -Line number 707. -Line number 708. -Line number 709. -Line number 710. -Line number 711. -Line number 712. -Line number 713. -Line number 714. -Line number 715. -Line number 716. -Line number 717. -Line number 718. -Line number 719. -Line number 720. -Line number 721. -Line number 722. -Line number 723. -Line number 724. -Line number 725. -Line number 726. -Line number 727. -Line number 728. -Line number 729. -Line number 730. -Line number 731. -Line number 732. -Line number 733. -Line number 734. -Line number 735. -Line number 736. -Line number 737. -Line number 738. -Line number 739. -Line number 740. -Line number 741. -Line number 742. -Line number 743. -Line number 744. -Line number 745. -Line number 746. -Line number 747. -Line number 748. -Line number 749. -Line number 750. -Line number 751. -Line number 752. -Line number 753. -Line number 754. -Line number 755. -Line number 756. -Line number 757. -Line number 758. -Line number 759. -Line number 760. -Line number 761. -Line number 762. -Line number 763. -Line number 764. -Line number 765. -Line number 766. -Line number 767. -Line number 768. -Line number 769. -Line number 770. -Line number 771. -Line number 772. -Line number 773. -Line number 774. -Line number 775. -Line number 776. -Line number 777. -Line number 778. -Line number 779. -Line number 780. -Line number 781. -Line number 782. -Line number 783. -Line number 784. -Line number 785. -Line number 786. -Line number 787. -Line number 788. -Line number 789. -Line number 790. -Line number 791. -Line number 792. -Line number 793. -Line number 794. -Line number 795. -Line number 796. -Line number 797. -Line number 798. -Line number 799. -Line number 800. -Line number 801. -Line number 802. -Line number 803. -Line number 804. -Line number 805. -Line number 806. -Line number 807. -Line number 808. -Line number 809. -Line number 810. -Line number 811. -Line number 812. -Line number 813. -Line number 814. -Line number 815. -Line number 816. -Line number 817. -Line number 818. -Line number 819. -Line number 820. -Line number 821. -Line number 822. -Line number 823. -Line number 824. -Line number 825. -Line number 826. -Line number 827. -Line number 828. -Line number 829. -Line number 830. -Line number 831. -Line number 832. -Line number 833. -Line number 834. -Line number 835. -Line number 836. -Line number 837. -Line number 838. -Line number 839. -Line number 840. -Line number 841. -Line number 842. -Line number 843. -Line number 844. -Line number 845. -Line number 846. -Line number 847. -Line number 848. -Line number 849. -Line number 850. -Line number 851. -Line number 852. -Line number 853. -Line number 854. -Line number 855. -Line number 856. -Line number 857. -Line number 858. -Line number 859. -Line number 860. -Line number 861. -Line number 862. -Line number 863. -Line number 864. -Line number 865. -Line number 866. -Line number 867. -Line number 868. -Line number 869. -Line number 870. -Line number 871. -Line number 872. -Line number 873. -Line number 874. -Line number 875. -Line number 876. -Line number 877. -Line number 878. -Line number 879. -Line number 880. -Line number 881. -Line number 882. -Line number 883. -Line number 884. -Line number 885. -Line number 886. -Line number 887. -Line number 888. -Line number 889. -Line number 890. -Line number 891. -Line number 892. -Line number 893. -Line number 894. -Line number 895. -Line number 896. -Line number 897. -Line number 898. -Line number 899. -Line number 900. -Line number 901. -Line number 902. -Line number 903. -Line number 904. -Line number 905. -Line number 906. -Line number 907. -Line number 908. -Line number 909. -Line number 910. -Line number 911. -Line number 912. -Line number 913. -Line number 914. -Line number 915. -Line number 916. -Line number 917. -Line number 918. -Line number 919. -Line number 920. -Line number 921. -Line number 922. -Line number 923. -Line number 924. -Line number 925. -Line number 926. -Line number 927. -Line number 928. -Line number 929. -Line number 930. -Line number 931. -Line number 932. -Line number 933. -Line number 934. -Line number 935. -Line number 936. -Line number 937. -Line number 938. -Line number 939. -Line number 940. -Line number 941. -Line number 942. -Line number 943. -Line number 944. -Line number 945. -Line number 946. -Line number 947. -Line number 948. -Line number 949. -Line number 950. -Line number 951. -Line number 952. -Line number 953. -Line number 954. -Line number 955. -Line number 956. -Line number 957. -Line number 958. -Line number 959. -Line number 960. -Line number 961. -Line number 962. -Line number 963. -Line number 964. -Line number 965. -Line number 966. -Line number 967. -Line number 968. -Line number 969. -Line number 970. -Line number 971. -Line number 972. -Line number 973. -Line number 974. -Line number 975. -Line number 976. -Line number 977. -Line number 978. -Line number 979. -Line number 980. -Line number 981. -Line number 982. -Line number 983. -Line number 984. -Line number 985. -Line number 986. -Line number 987. -Line number 988. -Line number 989. -Line number 990. -Line number 991. -Line number 992. -Line number 993. -Line number 994. -Line number 995. -Line number 996. -Line number 997. -Line number 998. -Line number 999. -Line number 1000. diff --git a/tests/by-name/le/less/data/test.file.license b/tests/by-name/le/less/data/test.file.license deleted file mode 100644 index eae6a84c..00000000 --- a/tests/by-name/le/less/data/test.file.license +++ /dev/null @@ -1,9 +0,0 @@ -nixos-config - My current NixOS configuration - -Copyright (C) 2025 Benedikt Peetz -SPDX-License-Identifier: GPL-3.0-or-later - -This file is part of my nixos-config. - -You should have received a copy of the License along with this program. -If not, see . diff --git a/tests/by-name/le/less/test.desc b/tests/by-name/le/less/test.desc deleted file mode 100644 index a0c49e7b..00000000 --- a/tests/by-name/le/less/test.desc +++ /dev/null @@ -1,50 +0,0 @@ -# This is a specification of what to do in the test script. -# It is inspired by the syntax of vhs tapes. - -# Give everything time to start up -Sleep 2 - -Type less ./data/test.file -Sleep 1 -Type Enter -Sleep 2 - -Type G -Sleep 1 -Expect ^Line number 1000.$ - -Type gg -Sleep 1 -Expect ^Line number 1.$ - -Type Space -Sleep 1 -Expect ^Line number 23.$ -ExpectNot ^Line number 22.$ -ExpectNot ^Line number 46.$ - -Type tt -Sleep 1 -ExpectNot ^Line number 23.$ -ExpectNot ^Line number 24.$ -Expect ^Line number 25.$ -Expect ^Line number 47.$ - -Type Gn -Sleep 1 -Expect ^Line number 999.$ -ExpectNot ^Line number 1000.$ - -# Type Up -# Sleep 1 -# ExpectNot ^Line number 976.$ -# Expect ^Line number 999.$ -# -# Type Down -# Sleep 1 -# ExpectNot ^Line number 1000.$ -# Expect ^Line number 977.$ - -Type Escape - -# vim: ft=tape diff --git a/tests/by-name/le/less/test.desc.license b/tests/by-name/le/less/test.desc.license deleted file mode 100644 index eae6a84c..00000000 --- a/tests/by-name/le/less/test.desc.license +++ /dev/null @@ -1,9 +0,0 @@ -nixos-config - My current NixOS configuration - -Copyright (C) 2025 Benedikt Peetz -SPDX-License-Identifier: GPL-3.0-or-later - -This file is part of my nixos-config. - -You should have received a copy of the License along with this program. -If not, see . diff --git a/tests/by-name/le/less/test.nix b/tests/by-name/le/less/test.nix deleted file mode 100644 index c9716ffc..00000000 --- a/tests/by-name/le/less/test.nix +++ /dev/null @@ -1,30 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . -{mkTest, ...}: -mkTest { - name = "less"; - - configuration = { - imports = [ - ../../../../modules/by-name/le/less/module.nix - ]; - config.soispha.programs.less.enable = true; - }; - - testData = { - "data/test.file" = ./data/test.file; - }; - - description = ./test.desc; - - # FIXME: Currently the golden file is not reproducible. <2024-11-22> - hash = null; - # hash = "87901231393b51cdd45bbb4339a32db2894a3a5ab164cb5c7a8fa14721fdcba7"; -} diff --git a/tests/by-name/nv/nvim-checkhealth/test.desc b/tests/by-name/nv/nvim-checkhealth/test.desc deleted file mode 100644 index 169cf49f..00000000 --- a/tests/by-name/nv/nvim-checkhealth/test.desc +++ /dev/null @@ -1,10 +0,0 @@ -# We open a `*.norg` file to run the norg ftplugin. -Exec nvim test.norg --headless "+set nospell" "+checkhealth" "+w! health.log" +q +wa +qa - -# The `checkhealth` output is not reproducible. -# Thus only output the warnings/errors. -Exec batgrep --ignore-case 'warning|error' health.log > new_golden - -SetGolden new_golden - -# vim: ft=tape diff --git a/tests/by-name/nv/nvim-checkhealth/test.desc.license b/tests/by-name/nv/nvim-checkhealth/test.desc.license deleted file mode 100644 index eae6a84c..00000000 --- a/tests/by-name/nv/nvim-checkhealth/test.desc.license +++ /dev/null @@ -1,9 +0,0 @@ -nixos-config - My current NixOS configuration - -Copyright (C) 2025 Benedikt Peetz -SPDX-License-Identifier: GPL-3.0-or-later - -This file is part of my nixos-config. - -You should have received a copy of the License along with this program. -If not, see . diff --git a/tests/by-name/nv/nvim-checkhealth/test.nix b/tests/by-name/nv/nvim-checkhealth/test.nix deleted file mode 100644 index cb04e758..00000000 --- a/tests/by-name/nv/nvim-checkhealth/test.nix +++ /dev/null @@ -1,55 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . -{ - mkTest, - extraModules, - pkgs, - ... -}: -mkTest { - name = "nvim-checkhealth"; - - configuration = { - imports = [ - ../../../../modules/by-name/nv/nvim/module.nix - ../../../../modules/by-name/ni/nixpkgs/module.nix - ]; - config = { - soispha = { - nixpkgs = { - enable = true; - systemName = "x86_64-linux"; - }; - programs.nvim = { - enable = true; - shell = pkgs.zsh; - }; - }; - home-manager.users.soispha = { - home.packages = [ - pkgs.bat - pkgs.ripgrep - pkgs.bat-extras.batgrep - ]; - imports = [ - extraModules.nixvim.homeManagerModule - ]; - }; - }; - }; - - testData = {}; - - description = ./test.desc; - - # FIXME: This is not reproducible, but is also not checked via `Expect`s. As such this - # whole test is quite useless, but it might work some day. <2024-11-30> - hash = null; -} diff --git a/tests/by-name/nv/nvim-neorg/data/index.norg b/tests/by-name/nv/nvim-neorg/data/index.norg deleted file mode 100644 index 4d643019..00000000 --- a/tests/by-name/nv/nvim-neorg/data/index.norg +++ /dev/null @@ -1,16 +0,0 @@ -@document.meta -title: index -description: -authors: soispha -categories: -created: 2023-08-29 -updated: 2023-08-29 -version: 1.1.1 -@end - -* First heading -- {* Second heading}[Second] - - -* Second heading --- {:./reference.norg:}[References] diff --git a/tests/by-name/nv/nvim-neorg/data/index.norg.license b/tests/by-name/nv/nvim-neorg/data/index.norg.license deleted file mode 100644 index eae6a84c..00000000 --- a/tests/by-name/nv/nvim-neorg/data/index.norg.license +++ /dev/null @@ -1,9 +0,0 @@ -nixos-config - My current NixOS configuration - -Copyright (C) 2025 Benedikt Peetz -SPDX-License-Identifier: GPL-3.0-or-later - -This file is part of my nixos-config. - -You should have received a copy of the License along with this program. -If not, see . diff --git a/tests/by-name/nv/nvim-neorg/data/reference.norg b/tests/by-name/nv/nvim-neorg/data/reference.norg deleted file mode 100644 index b572a469..00000000 --- a/tests/by-name/nv/nvim-neorg/data/reference.norg +++ /dev/null @@ -1,11 +0,0 @@ -@document.meta -title: references -description: -authors: soispha -categories: -created: 2023-08-29 -updated: 2023-08-29 -version: 1.1.1 -@end - -* Some other content diff --git a/tests/by-name/nv/nvim-neorg/data/reference.norg.license b/tests/by-name/nv/nvim-neorg/data/reference.norg.license deleted file mode 100644 index eae6a84c..00000000 --- a/tests/by-name/nv/nvim-neorg/data/reference.norg.license +++ /dev/null @@ -1,9 +0,0 @@ -nixos-config - My current NixOS configuration - -Copyright (C) 2025 Benedikt Peetz -SPDX-License-Identifier: GPL-3.0-or-later - -This file is part of my nixos-config. - -You should have received a copy of the License along with this program. -If not, see . diff --git a/tests/by-name/nv/nvim-neorg/test.desc b/tests/by-name/nv/nvim-neorg/test.desc deleted file mode 100644 index bd1e8f49..00000000 --- a/tests/by-name/nv/nvim-neorg/test.desc +++ /dev/null @@ -1,73 +0,0 @@ -Type nvim -Sleep 3 -Type Enter -Sleep 9 -# Remove the spellfile download prompt -Type C-c -ExpectNot Warning: Cannot find word list -Expect Nvim is open source and freely distributable - -Type :NeorgStart -Sleep 1.5 -Type Enter -Sleep 4 - -Type :Neorg workspace general -Sleep 1.5 -Type Enter -Sleep 4 - - -Type 10t -Sleep 0.5 - -# Cursor is on the first heading -Type iMARKER -Sleep 0.5 -Type Escape -Sleep 2 -Expect ^11\s*MARKER◉ First heading$ - -# Now moves to the link to the second -Type t -Sleep 0.2 -Type $ -Sleep 0.2 -Type h -Sleep 0.2 -Type Enter -Sleep 0.5 - -# Should be on the second -Type iMARKER -Sleep 0.5 -Type Escape -Sleep 2 -Expect ^15\s*◉ MARKERSecond heading$ - -# Moves to the references file -Type t -Sleep 0.2 -Type $ -Sleep 0.2 -Type h -Sleep 0.2 -Type Enter -Sleep 0.5 - -# Skip another spell file prompt -Type Enter -Sleep 0.5 - - -Type 10t -Sleep 1.0 - -Expect ^11\s*◉ Some other content$ - -Type :q! -Sleep 0.5 -Type Enter -Sleep 1 - -# vim: ft=tape diff --git a/tests/by-name/nv/nvim-neorg/test.desc.license b/tests/by-name/nv/nvim-neorg/test.desc.license deleted file mode 100644 index eae6a84c..00000000 --- a/tests/by-name/nv/nvim-neorg/test.desc.license +++ /dev/null @@ -1,9 +0,0 @@ -nixos-config - My current NixOS configuration - -Copyright (C) 2025 Benedikt Peetz -SPDX-License-Identifier: GPL-3.0-or-later - -This file is part of my nixos-config. - -You should have received a copy of the License along with this program. -If not, see . diff --git a/tests/by-name/nv/nvim-neorg/test.nix b/tests/by-name/nv/nvim-neorg/test.nix deleted file mode 100644 index 9f160df5..00000000 --- a/tests/by-name/nv/nvim-neorg/test.nix +++ /dev/null @@ -1,55 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . -{ - mkTest, - extraModules, - pkgs, - ... -}: -mkTest { - name = "nvim-neorg"; - - configuration = { - imports = [ - ../../../../modules/by-name/nv/nvim/module.nix - ../../../../modules/by-name/ni/nixpkgs/module.nix - ]; - config = { - soispha = { - nixpkgs = { - enable = true; - systemName = "x86_64-linux"; - }; - programs.nvim = { - enable = true; - shell = pkgs.zsh; - }; - }; - home-manager.users.soispha = { - imports = [ - extraModules.nixvim.homeManagerModule - ]; - }; - }; - }; - - alternateScreen = false; - - testData = { - "/home/soispha/repos/notes/general/index.norg" = ./data/index.norg; - "/home/soispha/repos/notes/general/reference.norg" = ./data/reference.norg; - }; - - description = ./test.desc; - - # The golden file is just full of nvim's terminal control sequences. There is no point - # in trying to check it. - hash = null; -} diff --git a/tests/by-name/ya/yambar/test.desc b/tests/by-name/ya/yambar/test.desc deleted file mode 100644 index 067c201e..00000000 --- a/tests/by-name/ya/yambar/test.desc +++ /dev/null @@ -1,5 +0,0 @@ -Exec yambar --validate && echo "SUCCESS" - -Expect ^SUCCESS$ - -# vim: ft=tape diff --git a/tests/by-name/ya/yambar/test.desc.license b/tests/by-name/ya/yambar/test.desc.license deleted file mode 100644 index eae6a84c..00000000 --- a/tests/by-name/ya/yambar/test.desc.license +++ /dev/null @@ -1,9 +0,0 @@ -nixos-config - My current NixOS configuration - -Copyright (C) 2025 Benedikt Peetz -SPDX-License-Identifier: GPL-3.0-or-later - -This file is part of my nixos-config. - -You should have received a copy of the License along with this program. -If not, see . diff --git a/tests/by-name/ya/yambar/test.nix b/tests/by-name/ya/yambar/test.nix deleted file mode 100644 index 0e4d0033..00000000 --- a/tests/by-name/ya/yambar/test.nix +++ /dev/null @@ -1,33 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . -{mkTest, ...}: -mkTest { - name = "yambar"; - - configuration = { - imports = [ - ../../../../modules/by-name/ya/yambar/module.nix - ../../../../modules/by-name/ni/nixpkgs/module.nix - ]; - config.soispha = { - programs.yambar.enable = true; - nixpkgs = { - enable = true; - systemName = "x86_64-linux"; - }; - }; - }; - - testData = {}; - - description = ./test.desc; - - hash = "aa90e8898fa23c76299158415cb29db739165e94c252a447aff763ab24fbfc9c"; -} diff --git a/tests/default.nix b/tests/default.nix deleted file mode 100644 index d13723b4..00000000 --- a/tests/default.nix +++ /dev/null @@ -1,50 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . -{ - lib, - nixLib, - pkgs, - myPkgs, - nixpkgs_as_input, - sysLib, - extraModules, - nixpkgs_open_prs, - system, -}: let - mkTest = import ./infrastructure { - inherit - pkgs - lib - nixos-lib - myPkgs - extraModules - sysLib - nixpkgs_open_prs - system - ; - }; - - nixos-lib = import (nixpkgs_as_input + "/nixos/lib") {}; - - tests = nixLib.mkByName { - baseDirectory = ./by-name; - fileName = "test.nix"; - finalizeFunction = name: value: - import value { - inherit - mkTest - extraModules - pkgs - myPkgs - ; - }; - }; -in - tests diff --git a/tests/infrastructure/clean.awk b/tests/infrastructure/clean.awk deleted file mode 100644 index 0362d38b..00000000 --- a/tests/infrastructure/clean.awk +++ /dev/null @@ -1,23 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . - -{ - # Shell like comments - gsub(/^#.*$/, "", $0) - - # Strip leading and trailing white space - gsub(/^[[:blank:]]*/, "", $0) - gsub(/[[:blank:]]*$/, "", $0) - - # Only accept the line, if it contains something - if (NF) { - print $0 - } -} diff --git a/tests/infrastructure/default.nix b/tests/infrastructure/default.nix deleted file mode 100644 index cd21198c..00000000 --- a/tests/infrastructure/default.nix +++ /dev/null @@ -1,177 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . -{ - pkgs, - myPkgs, - lib, - nixos-lib, - extraModules, - sysLib, - nixpkgs_open_prs, - system, -}: { - name, - configuration, - description, - hash, - testData, - testShell ? pkgs.dash, - alternateScreen ? false, -}: -nixos-lib.runTest { - hostPkgs = pkgs; # the Nixpkgs package set used outside the VMs - - inherit name; - - node = { - specialArgs = { - inherit - myPkgs - sysLib - nixpkgs_open_prs - system - ; - }; - # Use the nixpkgs as constructed by the `nixpkgs.*` options - pkgs = null; - }; - - nodes = { - machine = {config, ...}: { - imports = - [ - extraModules.home-manager - ../../modules/by-name/us/users/module.nix - ] - ++ configuration.imports; - - config = lib.modules.mkMerge [ - { - soispha = { - users = { - enable = true; - - # The password is 'test'. - hashedPassword = "$y$j9T$yYYUpE9OaxmEO8MaPI2jr0$WGpYYWaLySakI.Mwqz4sljGSOetAp4s5CIUa1VUU1l2"; - }; - }; - home-manager.users.soispha.home.stateVersion = "24.11"; - } - configuration.config - ]; - }; - }; - - testScript = {nodes, ...}: let - testDir = "${nodes.machine.home-manager.users.soispha.home.homeDirectory}/test"; - goldenFile = "${testDir}/__test_golden"; - logFile = "${testDir}/__test_log"; - testTmux = lib.getExe pkgs.tmux; - in - /* - python - */ - '' - start_all() - - __TEST_TMUX="${testTmux}" - - machine.succeed("sudo -u soispha ${pkgs.writeShellScript "mkTestEnvironment" '' - set -e - - mkdir --parents "${testDir}" - cd "${testDir}" - - ${ - lib.strings.concatStringsSep "\n\n" ( - builtins.attrValues - (builtins.mapAttrs - (name: value: '' - mkdir --parents "$(dirname '${name}')" - cp --recursive '${value}' '${name}' - '') - testData) - ) - } - ''}") - - machine.succeed("sudo -u soispha ${pkgs.writeShellScript "mkGoldenRecord" '' - set -e - - # HACK: Prevent zsh from complaining about missing configuration. - # TODO: These tests should probably just run under bash. <2024-11-22> - touch ~soispha/.zshrc - - cd "${testDir}" - - __TEST_TMUX="${testTmux}" - __TEST_SHELL="${lib.getExe testShell}" - __TEST_TMUX_PANE="__TEST_TMUX_PANE" - - __TEST_EVAL_USE_ALTERNATE_SCREEN="${ - if alternateScreen - then "true" - else "false" - }" - __TEST_EVAL_AWK_CLEAN_FILE="${./clean.awk}" - __TEST_EVAL_LOG_FILE="${logFile}" - __TEST_EVAL_GOLDEN_FILE="$(mktemp)" - printf "%s" "${goldenFile}" >"$__TEST_EVAL_GOLDEN_FILE" - - . ${./driver.sh} - - "$__TEST_TMUX" new-session -d -s "$__TEST_TMUX_PANE" "$__TEST_SHELL" - - # Warm up the shell in the tmux sesssion - "$__TEST_TMUX" send-keys -t "$__TEST_TMUX_PANE" "echo hi" "Enter" "clear" "Enter" - sleep 2 - - "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" -o 'cat >>${goldenFile}' - - __test_eval "${description}" - - # Remove the pipe - "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" - - # Check if the golden file was changed. - if [ "$(cat "$__TEST_EVAL_GOLDEN_FILE")" != "${goldenFile}" ]; then - mv "$(cat "$__TEST_EVAL_GOLDEN_FILE")" "${goldenFile}" - fi - - rm "$__TEST_EVAL_GOLDEN_FILE" - ''}") - - machine.succeed("sudo -u soispha ${pkgs.writeShellScript "testHashOfGolden" ('' - set -e - - cd "${testDir}" - '' - + lib.optionalString (hash != null) - /* - bash - */ - '' - golden_hash="$(sha256sum ${goldenFile} | awk '{print $1}')" - - if [ "$golden_hash" != "${hash}" ]; then - echo "Hash mismatch." - echo "Expected '${hash}'," - echo "but got '$golden_hash'" - exit 1 - else - echo "Hash was successfully checked." - fi - '')}") - - - machine.copy_from_vm("${goldenFile}", "golden") - machine.copy_from_vm("${logFile}", "log") - ''; -} diff --git a/tests/infrastructure/driver.sh b/tests/infrastructure/driver.sh deleted file mode 100644 index a8b241d2..00000000 --- a/tests/infrastructure/driver.sh +++ /dev/null @@ -1,176 +0,0 @@ -#! /usr/bin/env bash - -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . - -set -e - -msg() { - if [ "$#" -ne 0 ]; then - echo "$@" | tee --append "$__TEST_EVAL_LOG_FILE" >&2 - else - cat | tee --append "$__TEST_EVAL_LOG_FILE" >&2 - fi -} - -# Use bash built-ins to trim a string -# source: https://stackoverflow.com/a/3352015 -trim() { - local var="$*" - # remove leading whitespace characters - var="${var#"${var%%[![:space:]]*}"}" - # remove trailing whitespace characters - var="${var%"${var##*[![:space:]]}"}" - printf '%s' "$var" -} - -# contains(string, substring) -# -# Returns 0 if the specified string contains the specified substring, -# otherwise returns 1. -contains() { - string="$1" - substring="$2" - if [ "${string#*"$substring"}" != "$string" ]; then - return 0 # $substring is in $string - else - return 1 # $substring is not in $string - fi -} - -__test_wait_for_pid() { - local pre_pids_file="$1" - - exec_pids="$(mktemp)" - ps -eo tty,pid | awk "--assign=tmuxTty=$tmux_tty" '{if ($1 == tmuxTty) {print $2}}' >"$exec_pids" - - while read -r pid; do - sed --in-place "s/$pid//" "$exec_pids" - done <"$pre_pids_file" - - gawk --include inplace '{if (NF) {print $0}}' "$exec_pids" - - if [ "$(wc -l <"$exec_pids")" -eq 0 ]; then - # No further spawned processes left - return 0 - else - # Some other program is still running - pid="$(tail -n 1 "$exec_pids")" - rm "$exec_pids" - name="$(trim "$(tr '\0' ' ' <"/proc/$pid/cmdline")")" - - msg "Waiting until command ('$name') finishes (has pid: $pid).." - - # This allows waiting for non-children of the current shell - # source: https://stackoverflow.com/a/76046235 - tail --pid "$pid" --follow /dev/null & - wait $! - - # Give the `testShell` some time, to process the next command from a chained command. - sleep 0.2 - __test_wait_for_pid "$pre_pids_file" - fi -} - -__test_eval() { - tmux="$__TEST_TMUX" - tpane="$__TEST_TMUX_PANE" - file="$1" - - awk --file "$__TEST_EVAL_AWK_CLEAN_FILE" "$file" | while read -r cmd args; do - case "$cmd" in - "Type") - msg "Sending keys to application '$args'.." - "$tmux" send-keys -t "$tpane": "$args" - ;; - "Sleep") - msg "Sleeping for '$args' seconds.." - sleep "$args" - ;; - "Exec") - local pre_exec_pids - local tmux_tty - - msg "Executing command '$args'.." - tmux_tty="$("$tmux" list-panes -t "$tpane" -F "#{pane_tty}" | sed 's|/dev/||')" - - pre_exec_pids="$(mktemp)" - ps -eo tty,pid | awk "--assign=tmuxTty=$tmux_tty" '{if ($1 == tmuxTty) {print $2}}' >"$pre_exec_pids" - - "$tmux" send-keys -t "$tpane": "$args" "Enter" - sleep 1 - - __test_wait_for_pid "$pre_exec_pids" - - rm "$pre_exec_pids" - msg "Finished command '$args'." - ;; - "Expect" | "ExpectNot") - msg "Trying to match regex ('$args') for currently visible content.." - - get_plane_text() { - alternate="" - [ "$__TEST_EVAL_USE_ALTERNATE_SCREEN" = "true" ] && alternate="-a" - - "$tmux" capture-pane -t "$tpane" -p $alternate -S 0 -E - - } - - matched="" - if get_plane_text | grep "$args"; then - matched=true - else - matched=false - fi - - case "$cmd" in - "Expect") - if [ "$matched" = true ]; then - msg "Regex matched." - else - msg "Failed to find string, matched by regex '$args' on the screen" - msg current screen: - get_plane_text | msg - - exit 1 - fi - ;; - "ExpectNot") - if [ "$matched" = false ]; then - msg "Regex successfully not matched." - else - msg "Found to find string, matched by regex '$args' on the screen. But expected none" - msg current screen: - get_plane_text | msg - - exit 1 - fi - ;; - *) - msg "Entered unrechable code. This is a bug." - exit 1 - ;; - esac - ;; - "SetGolden") - msg "Trying to set '$args' as golden file." - [ -f "$args" ] || { - msg "Argument is not a file!" - exit 1 - } - printf "%s" "$args" >"$__TEST_EVAL_GOLDEN_FILE" - msg "Set golden file to: '$args'" - ;; - *) - msg "Unrecognized command: '$cmd'" - exit 1 - ;; - esac - done -} diff --git a/tests/infrastructure/run.nix b/tests/infrastructure/run.nix deleted file mode 100644 index 3148a2d9..00000000 --- a/tests/infrastructure/run.nix +++ /dev/null @@ -1,54 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see . -{ - pkgs, - lib, -}: -pkgs.writeShellScriptBin "run_test_description" '' - set -eu - - [ "$#" -ne 1 ] && { - echo "Usage: $0 "; - exit 2 - } - description="$(realpath "$1")" - - base="$(mktemp -d)" - cd "$base" - - __TEST_TMUX="${lib.getExe pkgs.tmux}" - __TEST_SHELL="${lib.getExe pkgs.dash}" - __TEST_TMUX_PANE="__TEST_TMUX_PANE" - - __TEST_EVAL_USE_ALTERNATE_SCREEN="false" - __TEST_EVAL_AWK_CLEAN_FILE="${./clean.awk}" - __TEST_EVAL_LOG_FILE="__test_log" - __TEST_EVAL_GOLDEN_FILE="$(mktemp)" - printf "%s" "__test_golden" >"$__TEST_EVAL_GOLDEN_FILE" - - . ${./driver.sh} - - echo "Setting up a session.." - if "$__TEST_TMUX" has-session -t "$__TEST_TMUX_PANE"; then - echo "Killing old '$__TEST_TMUX_PANE' session." - "$__TEST_TMUX" kill-session -t "$__TEST_TMUX_PANE" - fi - "$__TEST_TMUX" new-session -d -s "$__TEST_TMUX_PANE" - - echo "Initializing pipe.." - "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" -o 'cat >>./test.golden' - - echo "Evaluating description.." - __test_eval "$description" - - "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" - - echo "Base dir: $base" -'' diff --git a/tests/old/README.md b/tests/old/README.md new file mode 100644 index 00000000..34dc9255 --- /dev/null +++ b/tests/old/README.md @@ -0,0 +1,109 @@ + + +# How to write a test + +Test are simple derivations, put into the `by-name` directory. As you +often want to test configuration, the 'standard' nixos-vm-test function +starts a vm with the specified configuration and lets you run a python +test script. + +But, I've noticed, that most of my tests in this nixos-configuration are +actually testing the home-manager config of a program. As such I've built +a test infrastructure on top of the pre-existing nixos-vm-tests. It is +further described in the `mkTest` section. + +## `mkTest` + +A standard application test would look somewhat like this: + +```nix +{mkTest}: +mkTest { + name = "my-tests"; + + # The configuration to add. + # In this case, the less config is being tested. + configuration = { + imports = [ + ../../../../modules/by-name/le/less/module.nix + ]; + config.soispha.programs.less.enable = true; + }; + + # Files that are provided at the test directory. + # In this case, the test dir would have a `./data/test.file` + # path pre-populated with the + # contents of the file at the lhs. + testData = { + "data/test.file" = ./data/test.file; + }; + + # The description of what to do in the test. + description = ./test.desc; + + # A sha256 hashsum of the concatenated output of the program. + # This can be `null` to disable the checksum mechanism. + hash = "87901231393b51cdd45bbb4339a32db2894a3a5ab164cb5c7a8fa14721fdcba7"; +} +``` + +### The test description file + +All line starting with `#` or only containing white space are +ignored. Additionally, all leading and trailing white space is stripped +before evaluating. + +The general syntax is: + +``` +COMMAND ARGS +``` + +where `COMMAND` is one of the commands listed in [Commands](#commands) + +The `ARGS` are the verbatim content from the space after the `COMMAND` +to the end of line character. + +You can run the description file, similarly as in the tests via the `run_test_description` +package exported by the flake. + +#### Commands + +##### `Type` + +Send the `ARGS` to the application. This interprets `ARGS` as specified +by the TMUX (1) man page on `send-keys`. + +#### `Sleep` + +Sleep for `ARGS` seconds. + +#### `Expect` + +Grep the currently visible screen for the regex `ARGS`. This regex +must match. + +#### `ExpectNot` + +Does the same thing as [Expect](#expect), but enforces, that the +regex does not match. + +#### `SetGolden` + +Set the golden file (the file used for the hash generation) to `ARGS`. +`ARGS` must be a valid file path. + +#### `Exec` + +Executes the command (`ARGS`) and waits until it finishes. +This will hang forever, when the command that does not exit. diff --git a/tests/old/by-name/le/less/data/test.file b/tests/old/by-name/le/less/data/test.file new file mode 100644 index 00000000..9e9f8931 --- /dev/null +++ b/tests/old/by-name/le/less/data/test.file @@ -0,0 +1,1001 @@ +Line number 0. +Line number 1. +Line number 2. +Line number 3. +Line number 4. +Line number 5. +Line number 6. +Line number 7. +Line number 8. +Line number 9. +Line number 10. +Line number 11. +Line number 12. +Line number 13. +Line number 14. +Line number 15. +Line number 16. +Line number 17. +Line number 18. +Line number 19. +Line number 20. +Line number 21. +Line number 22. +Line number 23. +Line number 24. +Line number 25. +Line number 26. +Line number 27. +Line number 28. +Line number 29. +Line number 30. +Line number 31. +Line number 32. +Line number 33. +Line number 34. +Line number 35. +Line number 36. +Line number 37. +Line number 38. +Line number 39. +Line number 40. +Line number 41. +Line number 42. +Line number 43. +Line number 44. +Line number 45. +Line number 46. +Line number 47. +Line number 48. +Line number 49. +Line number 50. +Line number 51. +Line number 52. +Line number 53. +Line number 54. +Line number 55. +Line number 56. +Line number 57. +Line number 58. +Line number 59. +Line number 60. +Line number 61. +Line number 62. +Line number 63. +Line number 64. +Line number 65. +Line number 66. +Line number 67. +Line number 68. +Line number 69. +Line number 70. +Line number 71. +Line number 72. +Line number 73. +Line number 74. +Line number 75. +Line number 76. +Line number 77. +Line number 78. +Line number 79. +Line number 80. +Line number 81. +Line number 82. +Line number 83. +Line number 84. +Line number 85. +Line number 86. +Line number 87. +Line number 88. +Line number 89. +Line number 90. +Line number 91. +Line number 92. +Line number 93. +Line number 94. +Line number 95. +Line number 96. +Line number 97. +Line number 98. +Line number 99. +Line number 100. +Line number 101. +Line number 102. +Line number 103. +Line number 104. +Line number 105. +Line number 106. +Line number 107. +Line number 108. +Line number 109. +Line number 110. +Line number 111. +Line number 112. +Line number 113. +Line number 114. +Line number 115. +Line number 116. +Line number 117. +Line number 118. +Line number 119. +Line number 120. +Line number 121. +Line number 122. +Line number 123. +Line number 124. +Line number 125. +Line number 126. +Line number 127. +Line number 128. +Line number 129. +Line number 130. +Line number 131. +Line number 132. +Line number 133. +Line number 134. +Line number 135. +Line number 136. +Line number 137. +Line number 138. +Line number 139. +Line number 140. +Line number 141. +Line number 142. +Line number 143. +Line number 144. +Line number 145. +Line number 146. +Line number 147. +Line number 148. +Line number 149. +Line number 150. +Line number 151. +Line number 152. +Line number 153. +Line number 154. +Line number 155. +Line number 156. +Line number 157. +Line number 158. +Line number 159. +Line number 160. +Line number 161. +Line number 162. +Line number 163. +Line number 164. +Line number 165. +Line number 166. +Line number 167. +Line number 168. +Line number 169. +Line number 170. +Line number 171. +Line number 172. +Line number 173. +Line number 174. +Line number 175. +Line number 176. +Line number 177. +Line number 178. +Line number 179. +Line number 180. +Line number 181. +Line number 182. +Line number 183. +Line number 184. +Line number 185. +Line number 186. +Line number 187. +Line number 188. +Line number 189. +Line number 190. +Line number 191. +Line number 192. +Line number 193. +Line number 194. +Line number 195. +Line number 196. +Line number 197. +Line number 198. +Line number 199. +Line number 200. +Line number 201. +Line number 202. +Line number 203. +Line number 204. +Line number 205. +Line number 206. +Line number 207. +Line number 208. +Line number 209. +Line number 210. +Line number 211. +Line number 212. +Line number 213. +Line number 214. +Line number 215. +Line number 216. +Line number 217. +Line number 218. +Line number 219. +Line number 220. +Line number 221. +Line number 222. +Line number 223. +Line number 224. +Line number 225. +Line number 226. +Line number 227. +Line number 228. +Line number 229. +Line number 230. +Line number 231. +Line number 232. +Line number 233. +Line number 234. +Line number 235. +Line number 236. +Line number 237. +Line number 238. +Line number 239. +Line number 240. +Line number 241. +Line number 242. +Line number 243. +Line number 244. +Line number 245. +Line number 246. +Line number 247. +Line number 248. +Line number 249. +Line number 250. +Line number 251. +Line number 252. +Line number 253. +Line number 254. +Line number 255. +Line number 256. +Line number 257. +Line number 258. +Line number 259. +Line number 260. +Line number 261. +Line number 262. +Line number 263. +Line number 264. +Line number 265. +Line number 266. +Line number 267. +Line number 268. +Line number 269. +Line number 270. +Line number 271. +Line number 272. +Line number 273. +Line number 274. +Line number 275. +Line number 276. +Line number 277. +Line number 278. +Line number 279. +Line number 280. +Line number 281. +Line number 282. +Line number 283. +Line number 284. +Line number 285. +Line number 286. +Line number 287. +Line number 288. +Line number 289. +Line number 290. +Line number 291. +Line number 292. +Line number 293. +Line number 294. +Line number 295. +Line number 296. +Line number 297. +Line number 298. +Line number 299. +Line number 300. +Line number 301. +Line number 302. +Line number 303. +Line number 304. +Line number 305. +Line number 306. +Line number 307. +Line number 308. +Line number 309. +Line number 310. +Line number 311. +Line number 312. +Line number 313. +Line number 314. +Line number 315. +Line number 316. +Line number 317. +Line number 318. +Line number 319. +Line number 320. +Line number 321. +Line number 322. +Line number 323. +Line number 324. +Line number 325. +Line number 326. +Line number 327. +Line number 328. +Line number 329. +Line number 330. +Line number 331. +Line number 332. +Line number 333. +Line number 334. +Line number 335. +Line number 336. +Line number 337. +Line number 338. +Line number 339. +Line number 340. +Line number 341. +Line number 342. +Line number 343. +Line number 344. +Line number 345. +Line number 346. +Line number 347. +Line number 348. +Line number 349. +Line number 350. +Line number 351. +Line number 352. +Line number 353. +Line number 354. +Line number 355. +Line number 356. +Line number 357. +Line number 358. +Line number 359. +Line number 360. +Line number 361. +Line number 362. +Line number 363. +Line number 364. +Line number 365. +Line number 366. +Line number 367. +Line number 368. +Line number 369. +Line number 370. +Line number 371. +Line number 372. +Line number 373. +Line number 374. +Line number 375. +Line number 376. +Line number 377. +Line number 378. +Line number 379. +Line number 380. +Line number 381. +Line number 382. +Line number 383. +Line number 384. +Line number 385. +Line number 386. +Line number 387. +Line number 388. +Line number 389. +Line number 390. +Line number 391. +Line number 392. +Line number 393. +Line number 394. +Line number 395. +Line number 396. +Line number 397. +Line number 398. +Line number 399. +Line number 400. +Line number 401. +Line number 402. +Line number 403. +Line number 404. +Line number 405. +Line number 406. +Line number 407. +Line number 408. +Line number 409. +Line number 410. +Line number 411. +Line number 412. +Line number 413. +Line number 414. +Line number 415. +Line number 416. +Line number 417. +Line number 418. +Line number 419. +Line number 420. +Line number 421. +Line number 422. +Line number 423. +Line number 424. +Line number 425. +Line number 426. +Line number 427. +Line number 428. +Line number 429. +Line number 430. +Line number 431. +Line number 432. +Line number 433. +Line number 434. +Line number 435. +Line number 436. +Line number 437. +Line number 438. +Line number 439. +Line number 440. +Line number 441. +Line number 442. +Line number 443. +Line number 444. +Line number 445. +Line number 446. +Line number 447. +Line number 448. +Line number 449. +Line number 450. +Line number 451. +Line number 452. +Line number 453. +Line number 454. +Line number 455. +Line number 456. +Line number 457. +Line number 458. +Line number 459. +Line number 460. +Line number 461. +Line number 462. +Line number 463. +Line number 464. +Line number 465. +Line number 466. +Line number 467. +Line number 468. +Line number 469. +Line number 470. +Line number 471. +Line number 472. +Line number 473. +Line number 474. +Line number 475. +Line number 476. +Line number 477. +Line number 478. +Line number 479. +Line number 480. +Line number 481. +Line number 482. +Line number 483. +Line number 484. +Line number 485. +Line number 486. +Line number 487. +Line number 488. +Line number 489. +Line number 490. +Line number 491. +Line number 492. +Line number 493. +Line number 494. +Line number 495. +Line number 496. +Line number 497. +Line number 498. +Line number 499. +Line number 500. +Line number 501. +Line number 502. +Line number 503. +Line number 504. +Line number 505. +Line number 506. +Line number 507. +Line number 508. +Line number 509. +Line number 510. +Line number 511. +Line number 512. +Line number 513. +Line number 514. +Line number 515. +Line number 516. +Line number 517. +Line number 518. +Line number 519. +Line number 520. +Line number 521. +Line number 522. +Line number 523. +Line number 524. +Line number 525. +Line number 526. +Line number 527. +Line number 528. +Line number 529. +Line number 530. +Line number 531. +Line number 532. +Line number 533. +Line number 534. +Line number 535. +Line number 536. +Line number 537. +Line number 538. +Line number 539. +Line number 540. +Line number 541. +Line number 542. +Line number 543. +Line number 544. +Line number 545. +Line number 546. +Line number 547. +Line number 548. +Line number 549. +Line number 550. +Line number 551. +Line number 552. +Line number 553. +Line number 554. +Line number 555. +Line number 556. +Line number 557. +Line number 558. +Line number 559. +Line number 560. +Line number 561. +Line number 562. +Line number 563. +Line number 564. +Line number 565. +Line number 566. +Line number 567. +Line number 568. +Line number 569. +Line number 570. +Line number 571. +Line number 572. +Line number 573. +Line number 574. +Line number 575. +Line number 576. +Line number 577. +Line number 578. +Line number 579. +Line number 580. +Line number 581. +Line number 582. +Line number 583. +Line number 584. +Line number 585. +Line number 586. +Line number 587. +Line number 588. +Line number 589. +Line number 590. +Line number 591. +Line number 592. +Line number 593. +Line number 594. +Line number 595. +Line number 596. +Line number 597. +Line number 598. +Line number 599. +Line number 600. +Line number 601. +Line number 602. +Line number 603. +Line number 604. +Line number 605. +Line number 606. +Line number 607. +Line number 608. +Line number 609. +Line number 610. +Line number 611. +Line number 612. +Line number 613. +Line number 614. +Line number 615. +Line number 616. +Line number 617. +Line number 618. +Line number 619. +Line number 620. +Line number 621. +Line number 622. +Line number 623. +Line number 624. +Line number 625. +Line number 626. +Line number 627. +Line number 628. +Line number 629. +Line number 630. +Line number 631. +Line number 632. +Line number 633. +Line number 634. +Line number 635. +Line number 636. +Line number 637. +Line number 638. +Line number 639. +Line number 640. +Line number 641. +Line number 642. +Line number 643. +Line number 644. +Line number 645. +Line number 646. +Line number 647. +Line number 648. +Line number 649. +Line number 650. +Line number 651. +Line number 652. +Line number 653. +Line number 654. +Line number 655. +Line number 656. +Line number 657. +Line number 658. +Line number 659. +Line number 660. +Line number 661. +Line number 662. +Line number 663. +Line number 664. +Line number 665. +Line number 666. +Line number 667. +Line number 668. +Line number 669. +Line number 670. +Line number 671. +Line number 672. +Line number 673. +Line number 674. +Line number 675. +Line number 676. +Line number 677. +Line number 678. +Line number 679. +Line number 680. +Line number 681. +Line number 682. +Line number 683. +Line number 684. +Line number 685. +Line number 686. +Line number 687. +Line number 688. +Line number 689. +Line number 690. +Line number 691. +Line number 692. +Line number 693. +Line number 694. +Line number 695. +Line number 696. +Line number 697. +Line number 698. +Line number 699. +Line number 700. +Line number 701. +Line number 702. +Line number 703. +Line number 704. +Line number 705. +Line number 706. +Line number 707. +Line number 708. +Line number 709. +Line number 710. +Line number 711. +Line number 712. +Line number 713. +Line number 714. +Line number 715. +Line number 716. +Line number 717. +Line number 718. +Line number 719. +Line number 720. +Line number 721. +Line number 722. +Line number 723. +Line number 724. +Line number 725. +Line number 726. +Line number 727. +Line number 728. +Line number 729. +Line number 730. +Line number 731. +Line number 732. +Line number 733. +Line number 734. +Line number 735. +Line number 736. +Line number 737. +Line number 738. +Line number 739. +Line number 740. +Line number 741. +Line number 742. +Line number 743. +Line number 744. +Line number 745. +Line number 746. +Line number 747. +Line number 748. +Line number 749. +Line number 750. +Line number 751. +Line number 752. +Line number 753. +Line number 754. +Line number 755. +Line number 756. +Line number 757. +Line number 758. +Line number 759. +Line number 760. +Line number 761. +Line number 762. +Line number 763. +Line number 764. +Line number 765. +Line number 766. +Line number 767. +Line number 768. +Line number 769. +Line number 770. +Line number 771. +Line number 772. +Line number 773. +Line number 774. +Line number 775. +Line number 776. +Line number 777. +Line number 778. +Line number 779. +Line number 780. +Line number 781. +Line number 782. +Line number 783. +Line number 784. +Line number 785. +Line number 786. +Line number 787. +Line number 788. +Line number 789. +Line number 790. +Line number 791. +Line number 792. +Line number 793. +Line number 794. +Line number 795. +Line number 796. +Line number 797. +Line number 798. +Line number 799. +Line number 800. +Line number 801. +Line number 802. +Line number 803. +Line number 804. +Line number 805. +Line number 806. +Line number 807. +Line number 808. +Line number 809. +Line number 810. +Line number 811. +Line number 812. +Line number 813. +Line number 814. +Line number 815. +Line number 816. +Line number 817. +Line number 818. +Line number 819. +Line number 820. +Line number 821. +Line number 822. +Line number 823. +Line number 824. +Line number 825. +Line number 826. +Line number 827. +Line number 828. +Line number 829. +Line number 830. +Line number 831. +Line number 832. +Line number 833. +Line number 834. +Line number 835. +Line number 836. +Line number 837. +Line number 838. +Line number 839. +Line number 840. +Line number 841. +Line number 842. +Line number 843. +Line number 844. +Line number 845. +Line number 846. +Line number 847. +Line number 848. +Line number 849. +Line number 850. +Line number 851. +Line number 852. +Line number 853. +Line number 854. +Line number 855. +Line number 856. +Line number 857. +Line number 858. +Line number 859. +Line number 860. +Line number 861. +Line number 862. +Line number 863. +Line number 864. +Line number 865. +Line number 866. +Line number 867. +Line number 868. +Line number 869. +Line number 870. +Line number 871. +Line number 872. +Line number 873. +Line number 874. +Line number 875. +Line number 876. +Line number 877. +Line number 878. +Line number 879. +Line number 880. +Line number 881. +Line number 882. +Line number 883. +Line number 884. +Line number 885. +Line number 886. +Line number 887. +Line number 888. +Line number 889. +Line number 890. +Line number 891. +Line number 892. +Line number 893. +Line number 894. +Line number 895. +Line number 896. +Line number 897. +Line number 898. +Line number 899. +Line number 900. +Line number 901. +Line number 902. +Line number 903. +Line number 904. +Line number 905. +Line number 906. +Line number 907. +Line number 908. +Line number 909. +Line number 910. +Line number 911. +Line number 912. +Line number 913. +Line number 914. +Line number 915. +Line number 916. +Line number 917. +Line number 918. +Line number 919. +Line number 920. +Line number 921. +Line number 922. +Line number 923. +Line number 924. +Line number 925. +Line number 926. +Line number 927. +Line number 928. +Line number 929. +Line number 930. +Line number 931. +Line number 932. +Line number 933. +Line number 934. +Line number 935. +Line number 936. +Line number 937. +Line number 938. +Line number 939. +Line number 940. +Line number 941. +Line number 942. +Line number 943. +Line number 944. +Line number 945. +Line number 946. +Line number 947. +Line number 948. +Line number 949. +Line number 950. +Line number 951. +Line number 952. +Line number 953. +Line number 954. +Line number 955. +Line number 956. +Line number 957. +Line number 958. +Line number 959. +Line number 960. +Line number 961. +Line number 962. +Line number 963. +Line number 964. +Line number 965. +Line number 966. +Line number 967. +Line number 968. +Line number 969. +Line number 970. +Line number 971. +Line number 972. +Line number 973. +Line number 974. +Line number 975. +Line number 976. +Line number 977. +Line number 978. +Line number 979. +Line number 980. +Line number 981. +Line number 982. +Line number 983. +Line number 984. +Line number 985. +Line number 986. +Line number 987. +Line number 988. +Line number 989. +Line number 990. +Line number 991. +Line number 992. +Line number 993. +Line number 994. +Line number 995. +Line number 996. +Line number 997. +Line number 998. +Line number 999. +Line number 1000. diff --git a/tests/old/by-name/le/less/data/test.file.license b/tests/old/by-name/le/less/data/test.file.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/tests/old/by-name/le/less/data/test.file.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see . diff --git a/tests/old/by-name/le/less/test.desc b/tests/old/by-name/le/less/test.desc new file mode 100644 index 00000000..a0c49e7b --- /dev/null +++ b/tests/old/by-name/le/less/test.desc @@ -0,0 +1,50 @@ +# This is a specification of what to do in the test script. +# It is inspired by the syntax of vhs tapes. + +# Give everything time to start up +Sleep 2 + +Type less ./data/test.file +Sleep 1 +Type Enter +Sleep 2 + +Type G +Sleep 1 +Expect ^Line number 1000.$ + +Type gg +Sleep 1 +Expect ^Line number 1.$ + +Type Space +Sleep 1 +Expect ^Line number 23.$ +ExpectNot ^Line number 22.$ +ExpectNot ^Line number 46.$ + +Type tt +Sleep 1 +ExpectNot ^Line number 23.$ +ExpectNot ^Line number 24.$ +Expect ^Line number 25.$ +Expect ^Line number 47.$ + +Type Gn +Sleep 1 +Expect ^Line number 999.$ +ExpectNot ^Line number 1000.$ + +# Type Up +# Sleep 1 +# ExpectNot ^Line number 976.$ +# Expect ^Line number 999.$ +# +# Type Down +# Sleep 1 +# ExpectNot ^Line number 1000.$ +# Expect ^Line number 977.$ + +Type Escape + +# vim: ft=tape diff --git a/tests/old/by-name/le/less/test.desc.license b/tests/old/by-name/le/less/test.desc.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/tests/old/by-name/le/less/test.desc.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see . diff --git a/tests/old/by-name/le/less/test.nix b/tests/old/by-name/le/less/test.nix new file mode 100644 index 00000000..c9716ffc --- /dev/null +++ b/tests/old/by-name/le/less/test.nix @@ -0,0 +1,30 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . +{mkTest, ...}: +mkTest { + name = "less"; + + configuration = { + imports = [ + ../../../../modules/by-name/le/less/module.nix + ]; + config.soispha.programs.less.enable = true; + }; + + testData = { + "data/test.file" = ./data/test.file; + }; + + description = ./test.desc; + + # FIXME: Currently the golden file is not reproducible. <2024-11-22> + hash = null; + # hash = "87901231393b51cdd45bbb4339a32db2894a3a5ab164cb5c7a8fa14721fdcba7"; +} diff --git a/tests/old/by-name/nv/nvim-checkhealth/test.desc b/tests/old/by-name/nv/nvim-checkhealth/test.desc new file mode 100644 index 00000000..169cf49f --- /dev/null +++ b/tests/old/by-name/nv/nvim-checkhealth/test.desc @@ -0,0 +1,10 @@ +# We open a `*.norg` file to run the norg ftplugin. +Exec nvim test.norg --headless "+set nospell" "+checkhealth" "+w! health.log" +q +wa +qa + +# The `checkhealth` output is not reproducible. +# Thus only output the warnings/errors. +Exec batgrep --ignore-case 'warning|error' health.log > new_golden + +SetGolden new_golden + +# vim: ft=tape diff --git a/tests/old/by-name/nv/nvim-checkhealth/test.desc.license b/tests/old/by-name/nv/nvim-checkhealth/test.desc.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/tests/old/by-name/nv/nvim-checkhealth/test.desc.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see . diff --git a/tests/old/by-name/nv/nvim-checkhealth/test.nix b/tests/old/by-name/nv/nvim-checkhealth/test.nix new file mode 100644 index 00000000..cb04e758 --- /dev/null +++ b/tests/old/by-name/nv/nvim-checkhealth/test.nix @@ -0,0 +1,55 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . +{ + mkTest, + extraModules, + pkgs, + ... +}: +mkTest { + name = "nvim-checkhealth"; + + configuration = { + imports = [ + ../../../../modules/by-name/nv/nvim/module.nix + ../../../../modules/by-name/ni/nixpkgs/module.nix + ]; + config = { + soispha = { + nixpkgs = { + enable = true; + systemName = "x86_64-linux"; + }; + programs.nvim = { + enable = true; + shell = pkgs.zsh; + }; + }; + home-manager.users.soispha = { + home.packages = [ + pkgs.bat + pkgs.ripgrep + pkgs.bat-extras.batgrep + ]; + imports = [ + extraModules.nixvim.homeManagerModule + ]; + }; + }; + }; + + testData = {}; + + description = ./test.desc; + + # FIXME: This is not reproducible, but is also not checked via `Expect`s. As such this + # whole test is quite useless, but it might work some day. <2024-11-30> + hash = null; +} diff --git a/tests/old/by-name/nv/nvim-neorg/data/index.norg b/tests/old/by-name/nv/nvim-neorg/data/index.norg new file mode 100644 index 00000000..4d643019 --- /dev/null +++ b/tests/old/by-name/nv/nvim-neorg/data/index.norg @@ -0,0 +1,16 @@ +@document.meta +title: index +description: +authors: soispha +categories: +created: 2023-08-29 +updated: 2023-08-29 +version: 1.1.1 +@end + +* First heading +- {* Second heading}[Second] + + +* Second heading +-- {:./reference.norg:}[References] diff --git a/tests/old/by-name/nv/nvim-neorg/data/index.norg.license b/tests/old/by-name/nv/nvim-neorg/data/index.norg.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/tests/old/by-name/nv/nvim-neorg/data/index.norg.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see . diff --git a/tests/old/by-name/nv/nvim-neorg/data/reference.norg b/tests/old/by-name/nv/nvim-neorg/data/reference.norg new file mode 100644 index 00000000..b572a469 --- /dev/null +++ b/tests/old/by-name/nv/nvim-neorg/data/reference.norg @@ -0,0 +1,11 @@ +@document.meta +title: references +description: +authors: soispha +categories: +created: 2023-08-29 +updated: 2023-08-29 +version: 1.1.1 +@end + +* Some other content diff --git a/tests/old/by-name/nv/nvim-neorg/data/reference.norg.license b/tests/old/by-name/nv/nvim-neorg/data/reference.norg.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/tests/old/by-name/nv/nvim-neorg/data/reference.norg.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see . diff --git a/tests/old/by-name/nv/nvim-neorg/test.desc b/tests/old/by-name/nv/nvim-neorg/test.desc new file mode 100644 index 00000000..bd1e8f49 --- /dev/null +++ b/tests/old/by-name/nv/nvim-neorg/test.desc @@ -0,0 +1,73 @@ +Type nvim +Sleep 3 +Type Enter +Sleep 9 +# Remove the spellfile download prompt +Type C-c +ExpectNot Warning: Cannot find word list +Expect Nvim is open source and freely distributable + +Type :NeorgStart +Sleep 1.5 +Type Enter +Sleep 4 + +Type :Neorg workspace general +Sleep 1.5 +Type Enter +Sleep 4 + + +Type 10t +Sleep 0.5 + +# Cursor is on the first heading +Type iMARKER +Sleep 0.5 +Type Escape +Sleep 2 +Expect ^11\s*MARKER◉ First heading$ + +# Now moves to the link to the second +Type t +Sleep 0.2 +Type $ +Sleep 0.2 +Type h +Sleep 0.2 +Type Enter +Sleep 0.5 + +# Should be on the second +Type iMARKER +Sleep 0.5 +Type Escape +Sleep 2 +Expect ^15\s*◉ MARKERSecond heading$ + +# Moves to the references file +Type t +Sleep 0.2 +Type $ +Sleep 0.2 +Type h +Sleep 0.2 +Type Enter +Sleep 0.5 + +# Skip another spell file prompt +Type Enter +Sleep 0.5 + + +Type 10t +Sleep 1.0 + +Expect ^11\s*◉ Some other content$ + +Type :q! +Sleep 0.5 +Type Enter +Sleep 1 + +# vim: ft=tape diff --git a/tests/old/by-name/nv/nvim-neorg/test.desc.license b/tests/old/by-name/nv/nvim-neorg/test.desc.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/tests/old/by-name/nv/nvim-neorg/test.desc.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see . diff --git a/tests/old/by-name/nv/nvim-neorg/test.nix b/tests/old/by-name/nv/nvim-neorg/test.nix new file mode 100644 index 00000000..9f160df5 --- /dev/null +++ b/tests/old/by-name/nv/nvim-neorg/test.nix @@ -0,0 +1,55 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . +{ + mkTest, + extraModules, + pkgs, + ... +}: +mkTest { + name = "nvim-neorg"; + + configuration = { + imports = [ + ../../../../modules/by-name/nv/nvim/module.nix + ../../../../modules/by-name/ni/nixpkgs/module.nix + ]; + config = { + soispha = { + nixpkgs = { + enable = true; + systemName = "x86_64-linux"; + }; + programs.nvim = { + enable = true; + shell = pkgs.zsh; + }; + }; + home-manager.users.soispha = { + imports = [ + extraModules.nixvim.homeManagerModule + ]; + }; + }; + }; + + alternateScreen = false; + + testData = { + "/home/soispha/repos/notes/general/index.norg" = ./data/index.norg; + "/home/soispha/repos/notes/general/reference.norg" = ./data/reference.norg; + }; + + description = ./test.desc; + + # The golden file is just full of nvim's terminal control sequences. There is no point + # in trying to check it. + hash = null; +} diff --git a/tests/old/by-name/ya/yambar/test.desc b/tests/old/by-name/ya/yambar/test.desc new file mode 100644 index 00000000..067c201e --- /dev/null +++ b/tests/old/by-name/ya/yambar/test.desc @@ -0,0 +1,5 @@ +Exec yambar --validate && echo "SUCCESS" + +Expect ^SUCCESS$ + +# vim: ft=tape diff --git a/tests/old/by-name/ya/yambar/test.desc.license b/tests/old/by-name/ya/yambar/test.desc.license new file mode 100644 index 00000000..eae6a84c --- /dev/null +++ b/tests/old/by-name/ya/yambar/test.desc.license @@ -0,0 +1,9 @@ +nixos-config - My current NixOS configuration + +Copyright (C) 2025 Benedikt Peetz +SPDX-License-Identifier: GPL-3.0-or-later + +This file is part of my nixos-config. + +You should have received a copy of the License along with this program. +If not, see . diff --git a/tests/old/by-name/ya/yambar/test.nix b/tests/old/by-name/ya/yambar/test.nix new file mode 100644 index 00000000..0e4d0033 --- /dev/null +++ b/tests/old/by-name/ya/yambar/test.nix @@ -0,0 +1,33 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . +{mkTest, ...}: +mkTest { + name = "yambar"; + + configuration = { + imports = [ + ../../../../modules/by-name/ya/yambar/module.nix + ../../../../modules/by-name/ni/nixpkgs/module.nix + ]; + config.soispha = { + programs.yambar.enable = true; + nixpkgs = { + enable = true; + systemName = "x86_64-linux"; + }; + }; + }; + + testData = {}; + + description = ./test.desc; + + hash = "aa90e8898fa23c76299158415cb29db739165e94c252a447aff763ab24fbfc9c"; +} diff --git a/tests/old/default.nix b/tests/old/default.nix new file mode 100644 index 00000000..d13723b4 --- /dev/null +++ b/tests/old/default.nix @@ -0,0 +1,50 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . +{ + lib, + nixLib, + pkgs, + myPkgs, + nixpkgs_as_input, + sysLib, + extraModules, + nixpkgs_open_prs, + system, +}: let + mkTest = import ./infrastructure { + inherit + pkgs + lib + nixos-lib + myPkgs + extraModules + sysLib + nixpkgs_open_prs + system + ; + }; + + nixos-lib = import (nixpkgs_as_input + "/nixos/lib") {}; + + tests = nixLib.mkByName { + baseDirectory = ./by-name; + fileName = "test.nix"; + finalizeFunction = name: value: + import value { + inherit + mkTest + extraModules + pkgs + myPkgs + ; + }; + }; +in + tests diff --git a/tests/old/infrastructure/clean.awk b/tests/old/infrastructure/clean.awk new file mode 100644 index 00000000..0362d38b --- /dev/null +++ b/tests/old/infrastructure/clean.awk @@ -0,0 +1,23 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . + +{ + # Shell like comments + gsub(/^#.*$/, "", $0) + + # Strip leading and trailing white space + gsub(/^[[:blank:]]*/, "", $0) + gsub(/[[:blank:]]*$/, "", $0) + + # Only accept the line, if it contains something + if (NF) { + print $0 + } +} diff --git a/tests/old/infrastructure/default.nix b/tests/old/infrastructure/default.nix new file mode 100644 index 00000000..cd21198c --- /dev/null +++ b/tests/old/infrastructure/default.nix @@ -0,0 +1,177 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . +{ + pkgs, + myPkgs, + lib, + nixos-lib, + extraModules, + sysLib, + nixpkgs_open_prs, + system, +}: { + name, + configuration, + description, + hash, + testData, + testShell ? pkgs.dash, + alternateScreen ? false, +}: +nixos-lib.runTest { + hostPkgs = pkgs; # the Nixpkgs package set used outside the VMs + + inherit name; + + node = { + specialArgs = { + inherit + myPkgs + sysLib + nixpkgs_open_prs + system + ; + }; + # Use the nixpkgs as constructed by the `nixpkgs.*` options + pkgs = null; + }; + + nodes = { + machine = {config, ...}: { + imports = + [ + extraModules.home-manager + ../../modules/by-name/us/users/module.nix + ] + ++ configuration.imports; + + config = lib.modules.mkMerge [ + { + soispha = { + users = { + enable = true; + + # The password is 'test'. + hashedPassword = "$y$j9T$yYYUpE9OaxmEO8MaPI2jr0$WGpYYWaLySakI.Mwqz4sljGSOetAp4s5CIUa1VUU1l2"; + }; + }; + home-manager.users.soispha.home.stateVersion = "24.11"; + } + configuration.config + ]; + }; + }; + + testScript = {nodes, ...}: let + testDir = "${nodes.machine.home-manager.users.soispha.home.homeDirectory}/test"; + goldenFile = "${testDir}/__test_golden"; + logFile = "${testDir}/__test_log"; + testTmux = lib.getExe pkgs.tmux; + in + /* + python + */ + '' + start_all() + + __TEST_TMUX="${testTmux}" + + machine.succeed("sudo -u soispha ${pkgs.writeShellScript "mkTestEnvironment" '' + set -e + + mkdir --parents "${testDir}" + cd "${testDir}" + + ${ + lib.strings.concatStringsSep "\n\n" ( + builtins.attrValues + (builtins.mapAttrs + (name: value: '' + mkdir --parents "$(dirname '${name}')" + cp --recursive '${value}' '${name}' + '') + testData) + ) + } + ''}") + + machine.succeed("sudo -u soispha ${pkgs.writeShellScript "mkGoldenRecord" '' + set -e + + # HACK: Prevent zsh from complaining about missing configuration. + # TODO: These tests should probably just run under bash. <2024-11-22> + touch ~soispha/.zshrc + + cd "${testDir}" + + __TEST_TMUX="${testTmux}" + __TEST_SHELL="${lib.getExe testShell}" + __TEST_TMUX_PANE="__TEST_TMUX_PANE" + + __TEST_EVAL_USE_ALTERNATE_SCREEN="${ + if alternateScreen + then "true" + else "false" + }" + __TEST_EVAL_AWK_CLEAN_FILE="${./clean.awk}" + __TEST_EVAL_LOG_FILE="${logFile}" + __TEST_EVAL_GOLDEN_FILE="$(mktemp)" + printf "%s" "${goldenFile}" >"$__TEST_EVAL_GOLDEN_FILE" + + . ${./driver.sh} + + "$__TEST_TMUX" new-session -d -s "$__TEST_TMUX_PANE" "$__TEST_SHELL" + + # Warm up the shell in the tmux sesssion + "$__TEST_TMUX" send-keys -t "$__TEST_TMUX_PANE" "echo hi" "Enter" "clear" "Enter" + sleep 2 + + "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" -o 'cat >>${goldenFile}' + + __test_eval "${description}" + + # Remove the pipe + "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" + + # Check if the golden file was changed. + if [ "$(cat "$__TEST_EVAL_GOLDEN_FILE")" != "${goldenFile}" ]; then + mv "$(cat "$__TEST_EVAL_GOLDEN_FILE")" "${goldenFile}" + fi + + rm "$__TEST_EVAL_GOLDEN_FILE" + ''}") + + machine.succeed("sudo -u soispha ${pkgs.writeShellScript "testHashOfGolden" ('' + set -e + + cd "${testDir}" + '' + + lib.optionalString (hash != null) + /* + bash + */ + '' + golden_hash="$(sha256sum ${goldenFile} | awk '{print $1}')" + + if [ "$golden_hash" != "${hash}" ]; then + echo "Hash mismatch." + echo "Expected '${hash}'," + echo "but got '$golden_hash'" + exit 1 + else + echo "Hash was successfully checked." + fi + '')}") + + + machine.copy_from_vm("${goldenFile}", "golden") + machine.copy_from_vm("${logFile}", "log") + ''; +} diff --git a/tests/old/infrastructure/driver.sh b/tests/old/infrastructure/driver.sh new file mode 100644 index 00000000..a8b241d2 --- /dev/null +++ b/tests/old/infrastructure/driver.sh @@ -0,0 +1,176 @@ +#! /usr/bin/env bash + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . + +set -e + +msg() { + if [ "$#" -ne 0 ]; then + echo "$@" | tee --append "$__TEST_EVAL_LOG_FILE" >&2 + else + cat | tee --append "$__TEST_EVAL_LOG_FILE" >&2 + fi +} + +# Use bash built-ins to trim a string +# source: https://stackoverflow.com/a/3352015 +trim() { + local var="$*" + # remove leading whitespace characters + var="${var#"${var%%[![:space:]]*}"}" + # remove trailing whitespace characters + var="${var%"${var##*[![:space:]]}"}" + printf '%s' "$var" +} + +# contains(string, substring) +# +# Returns 0 if the specified string contains the specified substring, +# otherwise returns 1. +contains() { + string="$1" + substring="$2" + if [ "${string#*"$substring"}" != "$string" ]; then + return 0 # $substring is in $string + else + return 1 # $substring is not in $string + fi +} + +__test_wait_for_pid() { + local pre_pids_file="$1" + + exec_pids="$(mktemp)" + ps -eo tty,pid | awk "--assign=tmuxTty=$tmux_tty" '{if ($1 == tmuxTty) {print $2}}' >"$exec_pids" + + while read -r pid; do + sed --in-place "s/$pid//" "$exec_pids" + done <"$pre_pids_file" + + gawk --include inplace '{if (NF) {print $0}}' "$exec_pids" + + if [ "$(wc -l <"$exec_pids")" -eq 0 ]; then + # No further spawned processes left + return 0 + else + # Some other program is still running + pid="$(tail -n 1 "$exec_pids")" + rm "$exec_pids" + name="$(trim "$(tr '\0' ' ' <"/proc/$pid/cmdline")")" + + msg "Waiting until command ('$name') finishes (has pid: $pid).." + + # This allows waiting for non-children of the current shell + # source: https://stackoverflow.com/a/76046235 + tail --pid "$pid" --follow /dev/null & + wait $! + + # Give the `testShell` some time, to process the next command from a chained command. + sleep 0.2 + __test_wait_for_pid "$pre_pids_file" + fi +} + +__test_eval() { + tmux="$__TEST_TMUX" + tpane="$__TEST_TMUX_PANE" + file="$1" + + awk --file "$__TEST_EVAL_AWK_CLEAN_FILE" "$file" | while read -r cmd args; do + case "$cmd" in + "Type") + msg "Sending keys to application '$args'.." + "$tmux" send-keys -t "$tpane": "$args" + ;; + "Sleep") + msg "Sleeping for '$args' seconds.." + sleep "$args" + ;; + "Exec") + local pre_exec_pids + local tmux_tty + + msg "Executing command '$args'.." + tmux_tty="$("$tmux" list-panes -t "$tpane" -F "#{pane_tty}" | sed 's|/dev/||')" + + pre_exec_pids="$(mktemp)" + ps -eo tty,pid | awk "--assign=tmuxTty=$tmux_tty" '{if ($1 == tmuxTty) {print $2}}' >"$pre_exec_pids" + + "$tmux" send-keys -t "$tpane": "$args" "Enter" + sleep 1 + + __test_wait_for_pid "$pre_exec_pids" + + rm "$pre_exec_pids" + msg "Finished command '$args'." + ;; + "Expect" | "ExpectNot") + msg "Trying to match regex ('$args') for currently visible content.." + + get_plane_text() { + alternate="" + [ "$__TEST_EVAL_USE_ALTERNATE_SCREEN" = "true" ] && alternate="-a" + + "$tmux" capture-pane -t "$tpane" -p $alternate -S 0 -E - + } + + matched="" + if get_plane_text | grep "$args"; then + matched=true + else + matched=false + fi + + case "$cmd" in + "Expect") + if [ "$matched" = true ]; then + msg "Regex matched." + else + msg "Failed to find string, matched by regex '$args' on the screen" + msg current screen: + get_plane_text | msg + + exit 1 + fi + ;; + "ExpectNot") + if [ "$matched" = false ]; then + msg "Regex successfully not matched." + else + msg "Found to find string, matched by regex '$args' on the screen. But expected none" + msg current screen: + get_plane_text | msg + + exit 1 + fi + ;; + *) + msg "Entered unrechable code. This is a bug." + exit 1 + ;; + esac + ;; + "SetGolden") + msg "Trying to set '$args' as golden file." + [ -f "$args" ] || { + msg "Argument is not a file!" + exit 1 + } + printf "%s" "$args" >"$__TEST_EVAL_GOLDEN_FILE" + msg "Set golden file to: '$args'" + ;; + *) + msg "Unrecognized command: '$cmd'" + exit 1 + ;; + esac + done +} diff --git a/tests/old/infrastructure/run.nix b/tests/old/infrastructure/run.nix new file mode 100644 index 00000000..3148a2d9 --- /dev/null +++ b/tests/old/infrastructure/run.nix @@ -0,0 +1,54 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see . +{ + pkgs, + lib, +}: +pkgs.writeShellScriptBin "run_test_description" '' + set -eu + + [ "$#" -ne 1 ] && { + echo "Usage: $0 "; + exit 2 + } + description="$(realpath "$1")" + + base="$(mktemp -d)" + cd "$base" + + __TEST_TMUX="${lib.getExe pkgs.tmux}" + __TEST_SHELL="${lib.getExe pkgs.dash}" + __TEST_TMUX_PANE="__TEST_TMUX_PANE" + + __TEST_EVAL_USE_ALTERNATE_SCREEN="false" + __TEST_EVAL_AWK_CLEAN_FILE="${./clean.awk}" + __TEST_EVAL_LOG_FILE="__test_log" + __TEST_EVAL_GOLDEN_FILE="$(mktemp)" + printf "%s" "__test_golden" >"$__TEST_EVAL_GOLDEN_FILE" + + . ${./driver.sh} + + echo "Setting up a session.." + if "$__TEST_TMUX" has-session -t "$__TEST_TMUX_PANE"; then + echo "Killing old '$__TEST_TMUX_PANE' session." + "$__TEST_TMUX" kill-session -t "$__TEST_TMUX_PANE" + fi + "$__TEST_TMUX" new-session -d -s "$__TEST_TMUX_PANE" + + echo "Initializing pipe.." + "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" -o 'cat >>./test.golden' + + echo "Evaluating description.." + __test_eval "$description" + + "$__TEST_TMUX" pipe-pane -t "$__TEST_TMUX_PANE" + + echo "Base dir: $base" +'' -- cgit v1.3.1