Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: tools/gn/filesystem_utils_unittest.cc

Issue 2198433004: Make get_label_info take into account the toolchain for target_gen_dir (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unused static function Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/gn/filesystem_utils.cc ('k') | tools/gn/function_get_label_info.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/files/file_path.h" 5 #include "base/files/file_path.h"
6 #include "base/files/file_util.h" 6 #include "base/files/file_util.h"
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/threading/platform_thread.h" 10 #include "base/threading/platform_thread.h"
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 631
632 TEST(FilesystemUtils, GetToolchainDirs) { 632 TEST(FilesystemUtils, GetToolchainDirs) {
633 BuildSettings build_settings; 633 BuildSettings build_settings;
634 build_settings.SetBuildDir(SourceDir("//out/Debug/")); 634 build_settings.SetBuildDir(SourceDir("//out/Debug/"));
635 635
636 // The default toolchain. 636 // The default toolchain.
637 Settings default_settings(&build_settings, ""); 637 Settings default_settings(&build_settings, "");
638 Label default_toolchain_label(SourceDir("//toolchain/"), "default"); 638 Label default_toolchain_label(SourceDir("//toolchain/"), "default");
639 default_settings.set_toolchain_label(default_toolchain_label); 639 default_settings.set_toolchain_label(default_toolchain_label);
640 default_settings.set_default_toolchain_label(default_toolchain_label); 640 default_settings.set_default_toolchain_label(default_toolchain_label);
641 BuildDirContext default_context(&default_settings);
641 642
642 // Default toolchain out dir. 643 // Default toolchain out dir as source dirs.
643 EXPECT_EQ("//out/Debug/", 644 EXPECT_EQ("//out/Debug/",
644 GetToolchainOutputDir(&default_settings).value()); 645 GetBuildDirAsSourceDir(default_context,
645 EXPECT_EQ("//out/Debug/", 646 BuildDirType::TOOLCHAIN_ROOT).value());
646 GetToolchainOutputDir(&build_settings, default_toolchain_label, 647 EXPECT_EQ("//out/Debug/obj/",
647 true).value()); 648 GetBuildDirAsSourceDir(default_context,
649 BuildDirType::OBJ).value());
650 EXPECT_EQ("//out/Debug/gen/",
651 GetBuildDirAsSourceDir(default_context,
652 BuildDirType::GEN).value());
648 653
649 // Default toolchain gen dir. 654 // Default toolchain our dir as output files.
650 EXPECT_EQ("//out/Debug/gen/", 655 EXPECT_EQ("",
651 GetToolchainGenDir(&default_settings).value()); 656 GetBuildDirAsOutputFile(default_context,
657 BuildDirType::TOOLCHAIN_ROOT).value());
658 EXPECT_EQ("obj/",
659 GetBuildDirAsOutputFile(default_context,
660 BuildDirType::OBJ).value());
652 EXPECT_EQ("gen/", 661 EXPECT_EQ("gen/",
653 GetToolchainGenDirAsOutputFile(&default_settings).value()); 662 GetBuildDirAsOutputFile(default_context,
654 EXPECT_EQ("//out/Debug/gen/", 663 BuildDirType::GEN).value());
655 GetToolchainGenDir(&build_settings, default_toolchain_label,
656 true).value());
657 664
658 // Check a secondary toolchain. 665 // Check a secondary toolchain.
659 Settings other_settings(&build_settings, "two/"); 666 Settings other_settings(&build_settings, "two/");
660 Label other_toolchain_label(SourceDir("//toolchain/"), "two"); 667 Label other_toolchain_label(SourceDir("//toolchain/"), "two");
661 default_settings.set_toolchain_label(other_toolchain_label); 668 other_settings.set_toolchain_label(other_toolchain_label);
662 default_settings.set_default_toolchain_label(default_toolchain_label); 669 other_settings.set_default_toolchain_label(default_toolchain_label);
670 BuildDirContext other_context(&other_settings);
663 671
664 // Secondary toolchain out dir. 672 // Secondary toolchain out dir as source dirs.
665 EXPECT_EQ("//out/Debug/two/", 673 EXPECT_EQ("//out/Debug/two/",
666 GetToolchainOutputDir(&other_settings).value()); 674 GetBuildDirAsSourceDir(other_context,
667 EXPECT_EQ("//out/Debug/two/", 675 BuildDirType::TOOLCHAIN_ROOT).value());
668 GetToolchainOutputDir(&build_settings, other_toolchain_label, 676 EXPECT_EQ("//out/Debug/two/obj/",
669 false).value()); 677 GetBuildDirAsSourceDir(other_context,
678 BuildDirType::OBJ).value());
679 EXPECT_EQ("//out/Debug/two/gen/",
680 GetBuildDirAsSourceDir(other_context,
681 BuildDirType::GEN).value());
670 682
671 // Secondary toolchain gen dir. 683 // Secondary toolchain out dir as output files.
672 EXPECT_EQ("//out/Debug/two/gen/", 684 EXPECT_EQ("two/",
673 GetToolchainGenDir(&other_settings).value()); 685 GetBuildDirAsOutputFile(other_context,
686 BuildDirType::TOOLCHAIN_ROOT).value());
687 EXPECT_EQ("two/obj/",
688 GetBuildDirAsOutputFile(other_context,
689 BuildDirType::OBJ).value());
674 EXPECT_EQ("two/gen/", 690 EXPECT_EQ("two/gen/",
675 GetToolchainGenDirAsOutputFile(&other_settings).value()); 691 GetBuildDirAsOutputFile(other_context,
676 EXPECT_EQ("//out/Debug/two/gen/", 692 BuildDirType::GEN).value());
677 GetToolchainGenDir(&build_settings, other_toolchain_label,
678 false).value());
679 } 693 }
680 694
681 TEST(FilesystemUtils, GetOutDirForSourceDir) { 695 TEST(FilesystemUtils, GetSubBuildDir) {
682 BuildSettings build_settings; 696 BuildSettings build_settings;
683 build_settings.SetBuildDir(SourceDir("//out/Debug/")); 697 build_settings.SetBuildDir(SourceDir("//out/Debug/"));
684 698
685 // Test the default toolchain. 699 // Test the default toolchain.
686 Label default_toolchain_label(SourceDir("//toolchain/"), "default"); 700 Label default_toolchain_label(SourceDir("//toolchain/"), "default");
687 Settings default_settings(&build_settings, ""); 701 Settings default_settings(&build_settings, "");
688 default_settings.set_toolchain_label(default_toolchain_label); 702 default_settings.set_toolchain_label(default_toolchain_label);
689 default_settings.set_default_toolchain_label(default_toolchain_label); 703 default_settings.set_default_toolchain_label(default_toolchain_label);
704 BuildDirContext default_context(&default_settings);
705
706 // Target in the root.
690 EXPECT_EQ("//out/Debug/obj/", 707 EXPECT_EQ("//out/Debug/obj/",
691 GetOutputDirForSourceDir( 708 GetSubBuildDirAsSourceDir(
692 &default_settings, SourceDir("//")).value()); 709 default_context, SourceDir("//"), BuildDirType::OBJ).value());
693 EXPECT_EQ("obj/", 710 EXPECT_EQ("gen/",
694 GetOutputDirForSourceDirAsOutputFile( 711 GetSubBuildDirAsOutputFile(
695 &default_settings, SourceDir("//")).value()); 712 default_context, SourceDir("//"), BuildDirType::GEN).value());
696 713
714 // Target in another directory.
697 EXPECT_EQ("//out/Debug/obj/foo/bar/", 715 EXPECT_EQ("//out/Debug/obj/foo/bar/",
698 GetOutputDirForSourceDir( 716 GetSubBuildDirAsSourceDir(
699 &default_settings, SourceDir("//foo/bar/")).value()); 717 default_context, SourceDir("//foo/bar/"), BuildDirType::OBJ)
700 EXPECT_EQ("obj/foo/bar/", 718 .value());
701 GetOutputDirForSourceDirAsOutputFile( 719 EXPECT_EQ("gen/foo/bar/",
702 &default_settings, SourceDir("//foo/bar/")).value()); 720 GetSubBuildDirAsOutputFile(
721 default_context, SourceDir("//foo/bar/"), BuildDirType::GEN)
722 .value());
703 723
704 // Secondary toolchain. 724 // Secondary toolchain.
705 Settings other_settings(&build_settings, "two/"); 725 Settings other_settings(&build_settings, "two/");
706 other_settings.set_toolchain_label(Label(SourceDir("//toolchain/"), "two")); 726 other_settings.set_toolchain_label(Label(SourceDir("//toolchain/"), "two"));
707 other_settings.set_default_toolchain_label(default_toolchain_label); 727 other_settings.set_default_toolchain_label(default_toolchain_label);
728 BuildDirContext other_context(&other_settings);
729
730 // Target in the root.
708 EXPECT_EQ("//out/Debug/two/obj/", 731 EXPECT_EQ("//out/Debug/two/obj/",
709 GetOutputDirForSourceDir( 732 GetSubBuildDirAsSourceDir(
710 &other_settings, SourceDir("//")).value()); 733 other_context, SourceDir("//"), BuildDirType::OBJ).value());
711 EXPECT_EQ("two/obj/", 734 EXPECT_EQ("two/gen/",
712 GetOutputDirForSourceDirAsOutputFile( 735 GetSubBuildDirAsOutputFile(
713 &other_settings, SourceDir("//")).value()); 736 other_context, SourceDir("//"), BuildDirType::GEN).value());
714 737
738 // Target in another directory.
715 EXPECT_EQ("//out/Debug/two/obj/foo/bar/", 739 EXPECT_EQ("//out/Debug/two/obj/foo/bar/",
716 GetOutputDirForSourceDir(&other_settings, 740 GetSubBuildDirAsSourceDir(
717 SourceDir("//foo/bar/")).value()); 741 other_context, SourceDir("//foo/bar/"), BuildDirType::OBJ)
718 EXPECT_EQ("two/obj/foo/bar/", 742 .value());
719 GetOutputDirForSourceDirAsOutputFile( 743 EXPECT_EQ("two/gen/foo/bar/",
720 &other_settings, SourceDir("//foo/bar/")).value()); 744 GetSubBuildDirAsOutputFile(
745 other_context, SourceDir("//foo/bar/"), BuildDirType::GEN)
746 .value());
721 747
722 // Absolute source path 748 // Absolute source path
723 EXPECT_EQ("//out/Debug/obj/ABS_PATH/abs/", 749 EXPECT_EQ("//out/Debug/obj/ABS_PATH/abs/",
724 GetOutputDirForSourceDir( 750 GetSubBuildDirAsSourceDir(
725 &default_settings, SourceDir("/abs")).value()); 751 default_context, SourceDir("/abs"), BuildDirType::OBJ).value());
726 EXPECT_EQ("obj/ABS_PATH/abs/", 752 EXPECT_EQ("gen/ABS_PATH/abs/",
727 GetOutputDirForSourceDirAsOutputFile( 753 GetSubBuildDirAsOutputFile(
728 &default_settings, SourceDir("/abs")).value()); 754 default_context, SourceDir("/abs"), BuildDirType::GEN).value());
729 #if defined(OS_WIN) 755 #if defined(OS_WIN)
730 EXPECT_EQ("//out/Debug/obj/ABS_PATH/C/abs/", 756 EXPECT_EQ("//out/Debug/obj/ABS_PATH/C/abs/",
731 GetOutputDirForSourceDir( 757 GetSubBuildDirAsSourceDir(
732 &default_settings, SourceDir("/C:/abs")).value()); 758 default_context, SourceDir("/C:/abs"), BuildDirType::OBJ)
733 EXPECT_EQ("obj/ABS_PATH/C/abs/", 759 .value());
734 GetOutputDirForSourceDirAsOutputFile( 760 EXPECT_EQ("gen/ABS_PATH/C/abs/",
735 &default_settings, SourceDir("/C:/abs")).value()); 761 GetSubBuildDirAsOutputFile(
762 default_context, SourceDir("/C:/abs"), BuildDirType::GEN)
763 .value());
736 #endif 764 #endif
737 } 765 }
738 766
739 TEST(FilesystemUtils, GetGenDirForSourceDir) { 767 TEST(FilesystemUtils, GetBuildDirForTarget) {
740 BuildSettings build_settings;
741 build_settings.SetBuildDir(SourceDir("//out/Debug/"));
742
743 // Test the default toolchain.
744 Settings default_settings(&build_settings, "");
745 EXPECT_EQ("//out/Debug/gen/",
746 GetGenDirForSourceDir(
747 &default_settings, SourceDir("//")).value());
748 EXPECT_EQ("gen/",
749 GetGenDirForSourceDirAsOutputFile(
750 &default_settings, SourceDir("//")).value());
751
752 EXPECT_EQ("//out/Debug/gen/foo/bar/",
753 GetGenDirForSourceDir(
754 &default_settings, SourceDir("//foo/bar/")).value());
755 EXPECT_EQ("gen/foo/bar/",
756 GetGenDirForSourceDirAsOutputFile(
757 &default_settings, SourceDir("//foo/bar/")).value());
758
759 // Secondary toolchain.
760 Settings other_settings(&build_settings, "two/");
761 EXPECT_EQ("//out/Debug/two/gen/",
762 GetGenDirForSourceDir(
763 &other_settings, SourceDir("//")).value());
764 EXPECT_EQ("two/gen/",
765 GetGenDirForSourceDirAsOutputFile(
766 &other_settings, SourceDir("//")).value());
767
768 EXPECT_EQ("//out/Debug/two/gen/foo/bar/",
769 GetGenDirForSourceDir(
770 &other_settings, SourceDir("//foo/bar/")).value());
771 EXPECT_EQ("two/gen/foo/bar/",
772 GetGenDirForSourceDirAsOutputFile(
773 &other_settings, SourceDir("//foo/bar/")).value());
774 }
775
776 TEST(FilesystemUtils, GetTargetDirs) {
777 BuildSettings build_settings; 768 BuildSettings build_settings;
778 build_settings.SetBuildDir(SourceDir("//out/Debug/")); 769 build_settings.SetBuildDir(SourceDir("//out/Debug/"));
779 Settings settings(&build_settings, ""); 770 Settings settings(&build_settings, "");
780 771
781 Target a(&settings, Label(SourceDir("//foo/bar/"), "baz")); 772 Target a(&settings, Label(SourceDir("//foo/bar/"), "baz"));
782 EXPECT_EQ("//out/Debug/obj/foo/bar/", GetTargetOutputDir(&a).value()); 773 EXPECT_EQ("//out/Debug/obj/foo/bar/",
783 EXPECT_EQ("obj/foo/bar/", GetTargetOutputDirAsOutputFile(&a).value()); 774 GetBuildDirForTargetAsSourceDir(&a, BuildDirType::OBJ).value());
784 EXPECT_EQ("//out/Debug/gen/foo/bar/", GetTargetGenDir(&a).value()); 775 EXPECT_EQ("obj/foo/bar/",
785 EXPECT_EQ("gen/foo/bar/", GetTargetGenDirAsOutputFile(&a).value()); 776 GetBuildDirForTargetAsOutputFile(&a, BuildDirType::OBJ).value());
777 EXPECT_EQ("//out/Debug/gen/foo/bar/",
778 GetBuildDirForTargetAsSourceDir(&a, BuildDirType::GEN).value());
779 EXPECT_EQ("gen/foo/bar/",
780 GetBuildDirForTargetAsOutputFile(&a, BuildDirType::GEN).value());
786 } 781 }
787 782
788 // Tests handling of output dirs when build dir is the same as the root. 783 // Tests handling of output dirs when build dir is the same as the root.
789 TEST(FilesystemUtils, GetDirForEmptyBuildDir) { 784 TEST(FilesystemUtils, GetDirForEmptyBuildDir) {
790 BuildSettings build_settings; 785 BuildSettings build_settings;
791 build_settings.SetBuildDir(SourceDir("//")); 786 build_settings.SetBuildDir(SourceDir("//"));
792 Settings settings(&build_settings, ""); 787 Settings settings(&build_settings, "");
793 788
794 EXPECT_EQ("//", GetToolchainOutputDir(&settings).value()); 789 BuildDirContext context(&settings);
795 EXPECT_EQ("//gen/", GetToolchainGenDir(&settings).value()); 790
796 EXPECT_EQ("gen/", GetToolchainGenDirAsOutputFile(&settings).value()); 791 EXPECT_EQ("//",
792 GetBuildDirAsSourceDir(context, BuildDirType::TOOLCHAIN_ROOT)
793 .value());
794 EXPECT_EQ("//gen/",
795 GetBuildDirAsSourceDir(context, BuildDirType::GEN).value());
797 EXPECT_EQ("//obj/", 796 EXPECT_EQ("//obj/",
798 GetOutputDirForSourceDir(&settings, SourceDir("//")).value()); 797 GetBuildDirAsSourceDir(context, BuildDirType::OBJ).value());
798
799 EXPECT_EQ("",
800 GetBuildDirAsOutputFile(context, BuildDirType::TOOLCHAIN_ROOT)
801 .value());
802 EXPECT_EQ("gen/",
803 GetBuildDirAsOutputFile(context, BuildDirType::GEN).value());
799 EXPECT_EQ("obj/", 804 EXPECT_EQ("obj/",
800 GetOutputDirForSourceDirAsOutputFile( 805 GetBuildDirAsOutputFile(context, BuildDirType::OBJ).value());
801 &settings, SourceDir("//")).value());
802 EXPECT_EQ("gen/",
803 GetGenDirForSourceDirAsOutputFile(
804 &settings, SourceDir("//")).value());
805 } 806 }
OLDNEW
« no previous file with comments | « tools/gn/filesystem_utils.cc ('k') | tools/gn/function_get_label_info.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698